diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e45158c..7460cc2 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -45,7 +45,9 @@ + + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e45158c..7460cc2 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -45,7 +45,9 @@ + + diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt index cba0198..e7ec8d8 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt @@ -25,7 +25,7 @@ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { val imageView = ImageView(context) val layoutWidth: Int = - SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 20f) + SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f) val margins: Int = QMUIDisplayHelper.dp2px(context, 3) val itemSize = (layoutWidth - 6 * margins) / 3 val params = LinearLayout.LayoutParams(itemSize, itemSize) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e45158c..7460cc2 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -45,7 +45,9 @@ + + diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt index cba0198..e7ec8d8 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt @@ -25,7 +25,7 @@ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { val imageView = ImageView(context) val layoutWidth: Int = - SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 20f) + SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f) val margins: Int = QMUIDisplayHelper.dp2px(context, 3) val itemSize = (layoutWidth - 6 * margins) / 3 val params = LinearLayout.LayoutParams(itemSize, itemSize) diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt index 7780aaa..ad90885 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt @@ -17,4 +17,12 @@ } } return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e45158c..7460cc2 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -45,7 +45,9 @@ + + diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt index cba0198..e7ec8d8 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt @@ -25,7 +25,7 @@ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { val imageView = ImageView(context) val layoutWidth: Int = - SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 20f) + SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f) val margins: Int = QMUIDisplayHelper.dp2px(context, 3) val itemSize = (layoutWidth - 6 * margins) / 3 val params = LinearLayout.LayoutParams(itemSize, itemSize) diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt index 7780aaa..ad90885 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt @@ -17,4 +17,12 @@ } } return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt index de1c6c1..84ae8a8 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt @@ -33,10 +33,16 @@ startActivity(intent) } +fun Context.navigatePageTo(clazz: Class, values: ArrayList) { + val intent = Intent(this, clazz) + intent.putStringArrayListExtra(Constant.INTENT_PARAM, values) + startActivity(intent) +} + fun Context.navigatePageTo( clazz: Class, index: Int, - imageList: ArrayList? + imageList: ArrayList ) { val intent = Intent(this, clazz) intent.putExtra("index", index) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e45158c..7460cc2 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -45,7 +45,9 @@ + + diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt index cba0198..e7ec8d8 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt @@ -25,7 +25,7 @@ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { val imageView = ImageView(context) val layoutWidth: Int = - SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 20f) + SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f) val margins: Int = QMUIDisplayHelper.dp2px(context, 3) val itemSize = (layoutWidth - 6 * margins) / 3 val params = LinearLayout.LayoutParams(itemSize, itemSize) diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt index 7780aaa..ad90885 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt @@ -17,4 +17,12 @@ } } return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt index de1c6c1..84ae8a8 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt @@ -33,10 +33,16 @@ startActivity(intent) } +fun Context.navigatePageTo(clazz: Class, values: ArrayList) { + val intent = Intent(this, clazz) + intent.putStringArrayListExtra(Constant.INTENT_PARAM, values) + startActivity(intent) +} + fun Context.navigatePageTo( clazz: Class, index: Int, - imageList: ArrayList? + imageList: ArrayList ) { val intent = Intent(this, clazz) intent.putExtra("index", index) 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 5f9ce7c..8ed51f4 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 @@ -23,4 +23,12 @@ "未知类型" } } +} + +fun Int.toLevel(): String { + return if (this == 0) { + "" + } else { + this.toString() + } } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e45158c..7460cc2 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -45,7 +45,9 @@ + + diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt index cba0198..e7ec8d8 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt @@ -25,7 +25,7 @@ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { val imageView = ImageView(context) val layoutWidth: Int = - SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 20f) + SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f) val margins: Int = QMUIDisplayHelper.dp2px(context, 3) val itemSize = (layoutWidth - 6 * margins) / 3 val params = LinearLayout.LayoutParams(itemSize, itemSize) diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt index 7780aaa..ad90885 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt @@ -17,4 +17,12 @@ } } return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt index de1c6c1..84ae8a8 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt @@ -33,10 +33,16 @@ startActivity(intent) } +fun Context.navigatePageTo(clazz: Class, values: ArrayList) { + val intent = Intent(this, clazz) + intent.putStringArrayListExtra(Constant.INTENT_PARAM, values) + startActivity(intent) +} + fun Context.navigatePageTo( clazz: Class, index: Int, - imageList: ArrayList? + imageList: ArrayList ) { val intent = Intent(this, clazz) intent.putExtra("index", index) 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 5f9ce7c..8ed51f4 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 @@ -23,4 +23,12 @@ "未知类型" } } +} + +fun Int.toLevel(): String { + return if (this == 0) { + "" + } else { + this.toString() + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt index ee3685d..3bc5d96 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt @@ -1,6 +1,20 @@ package com.casic.app.smartwell.extensions +import java.text.ParseException import java.text.SimpleDateFormat import java.util.* -fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) \ No newline at end of file +fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) + +fun Long.isEarlierThanStart(date: String): Boolean { + if (date.isBlank()) { + return false + } + val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA) + try { + return this < dateFormat.parse(date)!!.time + } catch (e: ParseException) { + + } + return true +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e45158c..7460cc2 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -45,7 +45,9 @@ + + diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt index cba0198..e7ec8d8 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt @@ -25,7 +25,7 @@ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { val imageView = ImageView(context) val layoutWidth: Int = - SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 20f) + SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f) val margins: Int = QMUIDisplayHelper.dp2px(context, 3) val itemSize = (layoutWidth - 6 * margins) / 3 val params = LinearLayout.LayoutParams(itemSize, itemSize) diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt index 7780aaa..ad90885 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt @@ -17,4 +17,12 @@ } } return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt index de1c6c1..84ae8a8 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt @@ -33,10 +33,16 @@ startActivity(intent) } +fun Context.navigatePageTo(clazz: Class, values: ArrayList) { + val intent = Intent(this, clazz) + intent.putStringArrayListExtra(Constant.INTENT_PARAM, values) + startActivity(intent) +} + fun Context.navigatePageTo( clazz: Class, index: Int, - imageList: ArrayList? + imageList: ArrayList ) { val intent = Intent(this, clazz) intent.putExtra("index", index) 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 5f9ce7c..8ed51f4 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 @@ -23,4 +23,12 @@ "未知类型" } } +} + +fun Int.toLevel(): String { + return if (this == 0) { + "" + } else { + this.toString() + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt index ee3685d..3bc5d96 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt @@ -1,6 +1,20 @@ package com.casic.app.smartwell.extensions +import java.text.ParseException import java.text.SimpleDateFormat import java.util.* -fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) \ No newline at end of file +fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) + +fun Long.isEarlierThanStart(date: String): Boolean { + if (date.isBlank()) { + return false + } + val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA) + try { + return this < dateFormat.parse(date)!!.time + } catch (e: ParseException) { + + } + return true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt new file mode 100644 index 0000000..bd9cfa7 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt @@ -0,0 +1,12 @@ +package com.casic.app.smartwell.extensions + +import android.view.View +import com.qmuiteam.qmui.widget.QMUIEmptyView + +fun QMUIEmptyView.showEmptyPage(onButtonClickListener: View.OnClickListener) { + this.show(false, "抱歉,无法查询到相关记录", null, "重试", onButtonClickListener) +} + +fun QMUIEmptyView.showEmptyPage(title: String, onButtonClickListener: View.OnClickListener) { + this.show(false, title, null, "刷新", onButtonClickListener) +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e45158c..7460cc2 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -45,7 +45,9 @@ + + diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt index cba0198..e7ec8d8 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt @@ -25,7 +25,7 @@ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { val imageView = ImageView(context) val layoutWidth: Int = - SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 20f) + SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f) val margins: Int = QMUIDisplayHelper.dp2px(context, 3) val itemSize = (layoutWidth - 6 * margins) / 3 val params = LinearLayout.LayoutParams(itemSize, itemSize) diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt index 7780aaa..ad90885 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt @@ -17,4 +17,12 @@ } } return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt index de1c6c1..84ae8a8 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt @@ -33,10 +33,16 @@ startActivity(intent) } +fun Context.navigatePageTo(clazz: Class, values: ArrayList) { + val intent = Intent(this, clazz) + intent.putStringArrayListExtra(Constant.INTENT_PARAM, values) + startActivity(intent) +} + fun Context.navigatePageTo( clazz: Class, index: Int, - imageList: ArrayList? + imageList: ArrayList ) { val intent = Intent(this, clazz) intent.putExtra("index", index) 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 5f9ce7c..8ed51f4 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 @@ -23,4 +23,12 @@ "未知类型" } } +} + +fun Int.toLevel(): String { + return if (this == 0) { + "" + } else { + this.toString() + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt index ee3685d..3bc5d96 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt @@ -1,6 +1,20 @@ package com.casic.app.smartwell.extensions +import java.text.ParseException import java.text.SimpleDateFormat import java.util.* -fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) \ No newline at end of file +fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) + +fun Long.isEarlierThanStart(date: String): Boolean { + if (date.isBlank()) { + return false + } + val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA) + try { + return this < dateFormat.parse(date)!!.time + } catch (e: ParseException) { + + } + return true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt new file mode 100644 index 0000000..bd9cfa7 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt @@ -0,0 +1,12 @@ +package com.casic.app.smartwell.extensions + +import android.view.View +import com.qmuiteam.qmui.widget.QMUIEmptyView + +fun QMUIEmptyView.showEmptyPage(onButtonClickListener: View.OnClickListener) { + this.show(false, "抱歉,无法查询到相关记录", null, "重试", onButtonClickListener) +} + +fun QMUIEmptyView.showEmptyPage(title: String, onButtonClickListener: View.OnClickListener) { + this.show(false, title, null, "刷新", onButtonClickListener) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt index 7358b1c..2cdd63d 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt @@ -60,6 +60,7 @@ //窨井类型转换 fun String.toChinese(): String { return when (this) { + "0" -> "全部" "1" -> "一级" "2" -> "二级" "3" -> "三级" diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e45158c..7460cc2 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -45,7 +45,9 @@ + + diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt index cba0198..e7ec8d8 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt @@ -25,7 +25,7 @@ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { val imageView = ImageView(context) val layoutWidth: Int = - SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 20f) + SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f) val margins: Int = QMUIDisplayHelper.dp2px(context, 3) val itemSize = (layoutWidth - 6 * margins) / 3 val params = LinearLayout.LayoutParams(itemSize, itemSize) diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt index 7780aaa..ad90885 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt @@ -17,4 +17,12 @@ } } return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt index de1c6c1..84ae8a8 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt @@ -33,10 +33,16 @@ startActivity(intent) } +fun Context.navigatePageTo(clazz: Class, values: ArrayList) { + val intent = Intent(this, clazz) + intent.putStringArrayListExtra(Constant.INTENT_PARAM, values) + startActivity(intent) +} + fun Context.navigatePageTo( clazz: Class, index: Int, - imageList: ArrayList? + imageList: ArrayList ) { val intent = Intent(this, clazz) intent.putExtra("index", index) 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 5f9ce7c..8ed51f4 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 @@ -23,4 +23,12 @@ "未知类型" } } +} + +fun Int.toLevel(): String { + return if (this == 0) { + "" + } else { + this.toString() + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt index ee3685d..3bc5d96 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt @@ -1,6 +1,20 @@ package com.casic.app.smartwell.extensions +import java.text.ParseException import java.text.SimpleDateFormat import java.util.* -fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) \ No newline at end of file +fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) + +fun Long.isEarlierThanStart(date: String): Boolean { + if (date.isBlank()) { + return false + } + val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA) + try { + return this < dateFormat.parse(date)!!.time + } catch (e: ParseException) { + + } + return true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt new file mode 100644 index 0000000..bd9cfa7 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt @@ -0,0 +1,12 @@ +package com.casic.app.smartwell.extensions + +import android.view.View +import com.qmuiteam.qmui.widget.QMUIEmptyView + +fun QMUIEmptyView.showEmptyPage(onButtonClickListener: View.OnClickListener) { + this.show(false, "抱歉,无法查询到相关记录", null, "重试", onButtonClickListener) +} + +fun QMUIEmptyView.showEmptyPage(title: String, onButtonClickListener: View.OnClickListener) { + this.show(false, title, null, "刷新", onButtonClickListener) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt index 7358b1c..2cdd63d 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt @@ -60,6 +60,7 @@ //窨井类型转换 fun String.toChinese(): String { return when (this) { + "0" -> "全部" "1" -> "一级" "2" -> "二级" "3" -> "三级" diff --git a/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt b/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt new file mode 100644 index 0000000..af7fd13 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt @@ -0,0 +1,52 @@ +package com.casic.app.smartwell.model + +class SearchResultModel { + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var rows: MutableList? = null + var total = 0 + + class RowsBean { + var alarmContent = 0 + var deptName: String? = null + var jobStatus: String? = null + var handleJobPerson: String? = null + var alarmContentName: String? = null + var shouldGetTime: String? = null + var wellCode: String? = null + var deptid: String? = null + var alarmTypeName: String? = null + var jobCode: String? = null + var jobBelongTo: String? = null + var jobFlag: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var jobStatusName: String? = null + var alarmValue: String? = null + var alarmId: String? = null + var alarmLevel: String? = null + var handleJobTime: String? = null + var tel: String? = null + var id: String? = null + var wellId: String? = null + var jobType: String? = null + var editable = 0 + var alarmTime: String? = null + var alarmMessage: String? = null + var staff: String? = null + var getJobTime: String? = null + var getJobPerson: String? = null + var shouldHandleTime: String? = null + var jobId: String? = null + var alarmType: String? = null + var alarmStatus: String? = null + var devcode: String? = null + var createTime: String? = null + var position: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e45158c..7460cc2 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -45,7 +45,9 @@ + + diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt index cba0198..e7ec8d8 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt @@ -25,7 +25,7 @@ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { val imageView = ImageView(context) val layoutWidth: Int = - SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 20f) + SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f) val margins: Int = QMUIDisplayHelper.dp2px(context, 3) val itemSize = (layoutWidth - 6 * margins) / 3 val params = LinearLayout.LayoutParams(itemSize, itemSize) diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt index 7780aaa..ad90885 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt @@ -17,4 +17,12 @@ } } return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt index de1c6c1..84ae8a8 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt @@ -33,10 +33,16 @@ startActivity(intent) } +fun Context.navigatePageTo(clazz: Class, values: ArrayList) { + val intent = Intent(this, clazz) + intent.putStringArrayListExtra(Constant.INTENT_PARAM, values) + startActivity(intent) +} + fun Context.navigatePageTo( clazz: Class, index: Int, - imageList: ArrayList? + imageList: ArrayList ) { val intent = Intent(this, clazz) intent.putExtra("index", index) 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 5f9ce7c..8ed51f4 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 @@ -23,4 +23,12 @@ "未知类型" } } +} + +fun Int.toLevel(): String { + return if (this == 0) { + "" + } else { + this.toString() + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt index ee3685d..3bc5d96 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt @@ -1,6 +1,20 @@ package com.casic.app.smartwell.extensions +import java.text.ParseException import java.text.SimpleDateFormat import java.util.* -fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) \ No newline at end of file +fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) + +fun Long.isEarlierThanStart(date: String): Boolean { + if (date.isBlank()) { + return false + } + val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA) + try { + return this < dateFormat.parse(date)!!.time + } catch (e: ParseException) { + + } + return true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt new file mode 100644 index 0000000..bd9cfa7 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt @@ -0,0 +1,12 @@ +package com.casic.app.smartwell.extensions + +import android.view.View +import com.qmuiteam.qmui.widget.QMUIEmptyView + +fun QMUIEmptyView.showEmptyPage(onButtonClickListener: View.OnClickListener) { + this.show(false, "抱歉,无法查询到相关记录", null, "重试", onButtonClickListener) +} + +fun QMUIEmptyView.showEmptyPage(title: String, onButtonClickListener: View.OnClickListener) { + this.show(false, title, null, "刷新", onButtonClickListener) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt index 7358b1c..2cdd63d 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt @@ -60,6 +60,7 @@ //窨井类型转换 fun String.toChinese(): String { return when (this) { + "0" -> "全部" "1" -> "一级" "2" -> "二级" "3" -> "三级" diff --git a/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt b/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt new file mode 100644 index 0000000..af7fd13 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt @@ -0,0 +1,52 @@ +package com.casic.app.smartwell.model + +class SearchResultModel { + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var rows: MutableList? = null + var total = 0 + + class RowsBean { + var alarmContent = 0 + var deptName: String? = null + var jobStatus: String? = null + var handleJobPerson: String? = null + var alarmContentName: String? = null + var shouldGetTime: String? = null + var wellCode: String? = null + var deptid: String? = null + var alarmTypeName: String? = null + var jobCode: String? = null + var jobBelongTo: String? = null + var jobFlag: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var jobStatusName: String? = null + var alarmValue: String? = null + var alarmId: String? = null + var alarmLevel: String? = null + var handleJobTime: String? = null + var tel: String? = null + var id: String? = null + var wellId: String? = null + var jobType: String? = null + var editable = 0 + var alarmTime: String? = null + var alarmMessage: String? = null + var staff: String? = null + var getJobTime: String? = null + var getJobPerson: String? = null + var shouldHandleTime: String? = null + var jobId: String? = null + var alarmType: String? = null + var alarmStatus: String? = null + var devcode: String? = null + var createTime: String? = null + var position: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index fd4e603..c342334 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -41,7 +41,7 @@ const val USER_DETAIL_MODEL = "userDetailModel" const val INTENT_PARAM = "intentParam" - val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher) - val HOME_ITEMS = arrayOf("闸井管理", "布防撤防") + val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher) + val HOME_ITEMS = arrayOf("闸井管理", "超时工单", "布防撤防") val SUB_PAGE_TITLES = arrayOf("待处理", "待确认", "处理中", "已完成") } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e45158c..7460cc2 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -45,7 +45,9 @@ + + diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt index cba0198..e7ec8d8 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt @@ -25,7 +25,7 @@ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { val imageView = ImageView(context) val layoutWidth: Int = - SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 20f) + SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f) val margins: Int = QMUIDisplayHelper.dp2px(context, 3) val itemSize = (layoutWidth - 6 * margins) / 3 val params = LinearLayout.LayoutParams(itemSize, itemSize) diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt index 7780aaa..ad90885 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt @@ -17,4 +17,12 @@ } } return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt index de1c6c1..84ae8a8 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt @@ -33,10 +33,16 @@ startActivity(intent) } +fun Context.navigatePageTo(clazz: Class, values: ArrayList) { + val intent = Intent(this, clazz) + intent.putStringArrayListExtra(Constant.INTENT_PARAM, values) + startActivity(intent) +} + fun Context.navigatePageTo( clazz: Class, index: Int, - imageList: ArrayList? + imageList: ArrayList ) { val intent = Intent(this, clazz) intent.putExtra("index", index) 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 5f9ce7c..8ed51f4 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 @@ -23,4 +23,12 @@ "未知类型" } } +} + +fun Int.toLevel(): String { + return if (this == 0) { + "" + } else { + this.toString() + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt index ee3685d..3bc5d96 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt @@ -1,6 +1,20 @@ package com.casic.app.smartwell.extensions +import java.text.ParseException import java.text.SimpleDateFormat import java.util.* -fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) \ No newline at end of file +fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) + +fun Long.isEarlierThanStart(date: String): Boolean { + if (date.isBlank()) { + return false + } + val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA) + try { + return this < dateFormat.parse(date)!!.time + } catch (e: ParseException) { + + } + return true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt new file mode 100644 index 0000000..bd9cfa7 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt @@ -0,0 +1,12 @@ +package com.casic.app.smartwell.extensions + +import android.view.View +import com.qmuiteam.qmui.widget.QMUIEmptyView + +fun QMUIEmptyView.showEmptyPage(onButtonClickListener: View.OnClickListener) { + this.show(false, "抱歉,无法查询到相关记录", null, "重试", onButtonClickListener) +} + +fun QMUIEmptyView.showEmptyPage(title: String, onButtonClickListener: View.OnClickListener) { + this.show(false, title, null, "刷新", onButtonClickListener) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt index 7358b1c..2cdd63d 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt @@ -60,6 +60,7 @@ //窨井类型转换 fun String.toChinese(): String { return when (this) { + "0" -> "全部" "1" -> "一级" "2" -> "二级" "3" -> "三级" diff --git a/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt b/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt new file mode 100644 index 0000000..af7fd13 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt @@ -0,0 +1,52 @@ +package com.casic.app.smartwell.model + +class SearchResultModel { + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var rows: MutableList? = null + var total = 0 + + class RowsBean { + var alarmContent = 0 + var deptName: String? = null + var jobStatus: String? = null + var handleJobPerson: String? = null + var alarmContentName: String? = null + var shouldGetTime: String? = null + var wellCode: String? = null + var deptid: String? = null + var alarmTypeName: String? = null + var jobCode: String? = null + var jobBelongTo: String? = null + var jobFlag: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var jobStatusName: String? = null + var alarmValue: String? = null + var alarmId: String? = null + var alarmLevel: String? = null + var handleJobTime: String? = null + var tel: String? = null + var id: String? = null + var wellId: String? = null + var jobType: String? = null + var editable = 0 + var alarmTime: String? = null + var alarmMessage: String? = null + var staff: String? = null + var getJobTime: String? = null + var getJobPerson: String? = null + var shouldHandleTime: String? = null + var jobId: String? = null + var alarmType: String? = null + var alarmStatus: String? = null + var devcode: String? = null + var createTime: String? = null + var position: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index fd4e603..c342334 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -41,7 +41,7 @@ const val USER_DETAIL_MODEL = "userDetailModel" const val INTENT_PARAM = "intentParam" - val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher) - val HOME_ITEMS = arrayOf("闸井管理", "布防撤防") + val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher) + val HOME_ITEMS = arrayOf("闸井管理", "超时工单", "布防撤防") val SUB_PAGE_TITLES = arrayOf("待处理", "待确认", "处理中", "已完成") } \ 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 9c34038..7a5ca39 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 @@ -234,6 +234,22 @@ ): OrderStatusModel /** + * 查询工单 + * */ + @GET("/job/searchList") + suspend fun obtainSearchResult( + @Header("token") token: String, + @Query("keywords") keywords: String?, + @Query("alarmContent") alarmContent: String?, + @Query("alarmLevel") alarmLevel: String?, + @Query("jobStatus") jobStatus: String?, + @Query("beginTime") beginTime: String?, + @Query("endTime") endTime: String?, + @Query("limit") limit: Int, + @Query("offset") offset: Int + ): SearchResultModel + + /** * 获取用户信息 */ @GET("/user/info") diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e45158c..7460cc2 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -45,7 +45,9 @@ + + diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt index cba0198..e7ec8d8 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt @@ -25,7 +25,7 @@ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { val imageView = ImageView(context) val layoutWidth: Int = - SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 20f) + SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f) val margins: Int = QMUIDisplayHelper.dp2px(context, 3) val itemSize = (layoutWidth - 6 * margins) / 3 val params = LinearLayout.LayoutParams(itemSize, itemSize) diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt index 7780aaa..ad90885 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt @@ -17,4 +17,12 @@ } } return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt index de1c6c1..84ae8a8 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt @@ -33,10 +33,16 @@ startActivity(intent) } +fun Context.navigatePageTo(clazz: Class, values: ArrayList) { + val intent = Intent(this, clazz) + intent.putStringArrayListExtra(Constant.INTENT_PARAM, values) + startActivity(intent) +} + fun Context.navigatePageTo( clazz: Class, index: Int, - imageList: ArrayList? + imageList: ArrayList ) { val intent = Intent(this, clazz) intent.putExtra("index", index) 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 5f9ce7c..8ed51f4 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 @@ -23,4 +23,12 @@ "未知类型" } } +} + +fun Int.toLevel(): String { + return if (this == 0) { + "" + } else { + this.toString() + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt index ee3685d..3bc5d96 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt @@ -1,6 +1,20 @@ package com.casic.app.smartwell.extensions +import java.text.ParseException import java.text.SimpleDateFormat import java.util.* -fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) \ No newline at end of file +fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) + +fun Long.isEarlierThanStart(date: String): Boolean { + if (date.isBlank()) { + return false + } + val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA) + try { + return this < dateFormat.parse(date)!!.time + } catch (e: ParseException) { + + } + return true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt new file mode 100644 index 0000000..bd9cfa7 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt @@ -0,0 +1,12 @@ +package com.casic.app.smartwell.extensions + +import android.view.View +import com.qmuiteam.qmui.widget.QMUIEmptyView + +fun QMUIEmptyView.showEmptyPage(onButtonClickListener: View.OnClickListener) { + this.show(false, "抱歉,无法查询到相关记录", null, "重试", onButtonClickListener) +} + +fun QMUIEmptyView.showEmptyPage(title: String, onButtonClickListener: View.OnClickListener) { + this.show(false, title, null, "刷新", onButtonClickListener) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt index 7358b1c..2cdd63d 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt @@ -60,6 +60,7 @@ //窨井类型转换 fun String.toChinese(): String { return when (this) { + "0" -> "全部" "1" -> "一级" "2" -> "二级" "3" -> "三级" diff --git a/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt b/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt new file mode 100644 index 0000000..af7fd13 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt @@ -0,0 +1,52 @@ +package com.casic.app.smartwell.model + +class SearchResultModel { + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var rows: MutableList? = null + var total = 0 + + class RowsBean { + var alarmContent = 0 + var deptName: String? = null + var jobStatus: String? = null + var handleJobPerson: String? = null + var alarmContentName: String? = null + var shouldGetTime: String? = null + var wellCode: String? = null + var deptid: String? = null + var alarmTypeName: String? = null + var jobCode: String? = null + var jobBelongTo: String? = null + var jobFlag: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var jobStatusName: String? = null + var alarmValue: String? = null + var alarmId: String? = null + var alarmLevel: String? = null + var handleJobTime: String? = null + var tel: String? = null + var id: String? = null + var wellId: String? = null + var jobType: String? = null + var editable = 0 + var alarmTime: String? = null + var alarmMessage: String? = null + var staff: String? = null + var getJobTime: String? = null + var getJobPerson: String? = null + var shouldHandleTime: String? = null + var jobId: String? = null + var alarmType: String? = null + var alarmStatus: String? = null + var devcode: String? = null + var createTime: String? = null + var position: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index fd4e603..c342334 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -41,7 +41,7 @@ const val USER_DETAIL_MODEL = "userDetailModel" const val INTENT_PARAM = "intentParam" - val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher) - val HOME_ITEMS = arrayOf("闸井管理", "布防撤防") + val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher) + val HOME_ITEMS = arrayOf("闸井管理", "超时工单", "布防撤防") val SUB_PAGE_TITLES = arrayOf("待处理", "待确认", "处理中", "已完成") } \ 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 9c34038..7a5ca39 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 @@ -234,6 +234,22 @@ ): OrderStatusModel /** + * 查询工单 + * */ + @GET("/job/searchList") + suspend fun obtainSearchResult( + @Header("token") token: String, + @Query("keywords") keywords: String?, + @Query("alarmContent") alarmContent: String?, + @Query("alarmLevel") alarmLevel: String?, + @Query("jobStatus") jobStatus: String?, + @Query("beginTime") beginTime: String?, + @Query("endTime") endTime: String?, + @Query("limit") limit: Int, + @Query("offset") offset: Int + ): SearchResultModel + + /** * 获取用户信息 */ @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 a7106b5..945f6a3 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 @@ -175,6 +175,31 @@ } /** + * 查询工单 + */ + suspend fun obtainSearchResult( + keywords: String?, + alarmContent: String?, + alarmLevel: String?, + jobStatus: String?, + beginTime: String?, + endTime: String?, + page: Int + ): SearchResultModel { + return api.obtainSearchResult( + AuthenticationHelper.token!!, + keywords, + alarmContent, + alarmLevel, + jobStatus, + beginTime, + endTime, + Constant.PAGE_LIMIT, + page + ) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): String { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e45158c..7460cc2 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -45,7 +45,9 @@ + + diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt index cba0198..e7ec8d8 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt @@ -25,7 +25,7 @@ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { val imageView = ImageView(context) val layoutWidth: Int = - SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 20f) + SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f) val margins: Int = QMUIDisplayHelper.dp2px(context, 3) val itemSize = (layoutWidth - 6 * margins) / 3 val params = LinearLayout.LayoutParams(itemSize, itemSize) diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt index 7780aaa..ad90885 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt @@ -17,4 +17,12 @@ } } return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt index de1c6c1..84ae8a8 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt @@ -33,10 +33,16 @@ startActivity(intent) } +fun Context.navigatePageTo(clazz: Class, values: ArrayList) { + val intent = Intent(this, clazz) + intent.putStringArrayListExtra(Constant.INTENT_PARAM, values) + startActivity(intent) +} + fun Context.navigatePageTo( clazz: Class, index: Int, - imageList: ArrayList? + imageList: ArrayList ) { val intent = Intent(this, clazz) intent.putExtra("index", index) 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 5f9ce7c..8ed51f4 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 @@ -23,4 +23,12 @@ "未知类型" } } +} + +fun Int.toLevel(): String { + return if (this == 0) { + "" + } else { + this.toString() + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt index ee3685d..3bc5d96 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt @@ -1,6 +1,20 @@ package com.casic.app.smartwell.extensions +import java.text.ParseException import java.text.SimpleDateFormat import java.util.* -fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) \ No newline at end of file +fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) + +fun Long.isEarlierThanStart(date: String): Boolean { + if (date.isBlank()) { + return false + } + val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA) + try { + return this < dateFormat.parse(date)!!.time + } catch (e: ParseException) { + + } + return true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt new file mode 100644 index 0000000..bd9cfa7 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt @@ -0,0 +1,12 @@ +package com.casic.app.smartwell.extensions + +import android.view.View +import com.qmuiteam.qmui.widget.QMUIEmptyView + +fun QMUIEmptyView.showEmptyPage(onButtonClickListener: View.OnClickListener) { + this.show(false, "抱歉,无法查询到相关记录", null, "重试", onButtonClickListener) +} + +fun QMUIEmptyView.showEmptyPage(title: String, onButtonClickListener: View.OnClickListener) { + this.show(false, title, null, "刷新", onButtonClickListener) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt index 7358b1c..2cdd63d 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt @@ -60,6 +60,7 @@ //窨井类型转换 fun String.toChinese(): String { return when (this) { + "0" -> "全部" "1" -> "一级" "2" -> "二级" "3" -> "三级" diff --git a/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt b/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt new file mode 100644 index 0000000..af7fd13 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt @@ -0,0 +1,52 @@ +package com.casic.app.smartwell.model + +class SearchResultModel { + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var rows: MutableList? = null + var total = 0 + + class RowsBean { + var alarmContent = 0 + var deptName: String? = null + var jobStatus: String? = null + var handleJobPerson: String? = null + var alarmContentName: String? = null + var shouldGetTime: String? = null + var wellCode: String? = null + var deptid: String? = null + var alarmTypeName: String? = null + var jobCode: String? = null + var jobBelongTo: String? = null + var jobFlag: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var jobStatusName: String? = null + var alarmValue: String? = null + var alarmId: String? = null + var alarmLevel: String? = null + var handleJobTime: String? = null + var tel: String? = null + var id: String? = null + var wellId: String? = null + var jobType: String? = null + var editable = 0 + var alarmTime: String? = null + var alarmMessage: String? = null + var staff: String? = null + var getJobTime: String? = null + var getJobPerson: String? = null + var shouldHandleTime: String? = null + var jobId: String? = null + var alarmType: String? = null + var alarmStatus: String? = null + var devcode: String? = null + var createTime: String? = null + var position: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index fd4e603..c342334 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -41,7 +41,7 @@ const val USER_DETAIL_MODEL = "userDetailModel" const val INTENT_PARAM = "intentParam" - val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher) - val HOME_ITEMS = arrayOf("闸井管理", "布防撤防") + val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher) + val HOME_ITEMS = arrayOf("闸井管理", "超时工单", "布防撤防") val SUB_PAGE_TITLES = arrayOf("待处理", "待确认", "处理中", "已完成") } \ 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 9c34038..7a5ca39 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 @@ -234,6 +234,22 @@ ): OrderStatusModel /** + * 查询工单 + * */ + @GET("/job/searchList") + suspend fun obtainSearchResult( + @Header("token") token: String, + @Query("keywords") keywords: String?, + @Query("alarmContent") alarmContent: String?, + @Query("alarmLevel") alarmLevel: String?, + @Query("jobStatus") jobStatus: String?, + @Query("beginTime") beginTime: String?, + @Query("endTime") endTime: String?, + @Query("limit") limit: Int, + @Query("offset") offset: Int + ): SearchResultModel + + /** * 获取用户信息 */ @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 a7106b5..945f6a3 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 @@ -175,6 +175,31 @@ } /** + * 查询工单 + */ + suspend fun obtainSearchResult( + keywords: String?, + alarmContent: String?, + alarmLevel: String?, + jobStatus: String?, + beginTime: String?, + endTime: String?, + page: Int + ): SearchResultModel { + return api.obtainSearchResult( + AuthenticationHelper.token!!, + keywords, + alarmContent, + alarmLevel, + jobStatus, + beginTime, + endTime, + Constant.PAGE_LIMIT, + page + ) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): String { diff --git a/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt index cfc4e0f..45af48a 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt @@ -98,7 +98,7 @@ imageRecyclerView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() - val imageArray = orderDetail.firstStatePhotos.toString().split(";") + val imageArray = orderDetail.firstStatePhotos.toString().split(",") imageArray.forEach { path -> if (path != "") { urls.add(path.combineImagePath()) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e45158c..7460cc2 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -45,7 +45,9 @@ + + diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt index cba0198..e7ec8d8 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt @@ -25,7 +25,7 @@ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { val imageView = ImageView(context) val layoutWidth: Int = - SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 20f) + SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f) val margins: Int = QMUIDisplayHelper.dp2px(context, 3) val itemSize = (layoutWidth - 6 * margins) / 3 val params = LinearLayout.LayoutParams(itemSize, itemSize) diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt index 7780aaa..ad90885 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt @@ -17,4 +17,12 @@ } } return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt index de1c6c1..84ae8a8 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt @@ -33,10 +33,16 @@ startActivity(intent) } +fun Context.navigatePageTo(clazz: Class, values: ArrayList) { + val intent = Intent(this, clazz) + intent.putStringArrayListExtra(Constant.INTENT_PARAM, values) + startActivity(intent) +} + fun Context.navigatePageTo( clazz: Class, index: Int, - imageList: ArrayList? + imageList: ArrayList ) { val intent = Intent(this, clazz) intent.putExtra("index", index) 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 5f9ce7c..8ed51f4 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 @@ -23,4 +23,12 @@ "未知类型" } } +} + +fun Int.toLevel(): String { + return if (this == 0) { + "" + } else { + this.toString() + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt index ee3685d..3bc5d96 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt @@ -1,6 +1,20 @@ package com.casic.app.smartwell.extensions +import java.text.ParseException import java.text.SimpleDateFormat import java.util.* -fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) \ No newline at end of file +fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) + +fun Long.isEarlierThanStart(date: String): Boolean { + if (date.isBlank()) { + return false + } + val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA) + try { + return this < dateFormat.parse(date)!!.time + } catch (e: ParseException) { + + } + return true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt new file mode 100644 index 0000000..bd9cfa7 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt @@ -0,0 +1,12 @@ +package com.casic.app.smartwell.extensions + +import android.view.View +import com.qmuiteam.qmui.widget.QMUIEmptyView + +fun QMUIEmptyView.showEmptyPage(onButtonClickListener: View.OnClickListener) { + this.show(false, "抱歉,无法查询到相关记录", null, "重试", onButtonClickListener) +} + +fun QMUIEmptyView.showEmptyPage(title: String, onButtonClickListener: View.OnClickListener) { + this.show(false, title, null, "刷新", onButtonClickListener) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt index 7358b1c..2cdd63d 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt @@ -60,6 +60,7 @@ //窨井类型转换 fun String.toChinese(): String { return when (this) { + "0" -> "全部" "1" -> "一级" "2" -> "二级" "3" -> "三级" diff --git a/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt b/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt new file mode 100644 index 0000000..af7fd13 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt @@ -0,0 +1,52 @@ +package com.casic.app.smartwell.model + +class SearchResultModel { + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var rows: MutableList? = null + var total = 0 + + class RowsBean { + var alarmContent = 0 + var deptName: String? = null + var jobStatus: String? = null + var handleJobPerson: String? = null + var alarmContentName: String? = null + var shouldGetTime: String? = null + var wellCode: String? = null + var deptid: String? = null + var alarmTypeName: String? = null + var jobCode: String? = null + var jobBelongTo: String? = null + var jobFlag: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var jobStatusName: String? = null + var alarmValue: String? = null + var alarmId: String? = null + var alarmLevel: String? = null + var handleJobTime: String? = null + var tel: String? = null + var id: String? = null + var wellId: String? = null + var jobType: String? = null + var editable = 0 + var alarmTime: String? = null + var alarmMessage: String? = null + var staff: String? = null + var getJobTime: String? = null + var getJobPerson: String? = null + var shouldHandleTime: String? = null + var jobId: String? = null + var alarmType: String? = null + var alarmStatus: String? = null + var devcode: String? = null + var createTime: String? = null + var position: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index fd4e603..c342334 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -41,7 +41,7 @@ const val USER_DETAIL_MODEL = "userDetailModel" const val INTENT_PARAM = "intentParam" - val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher) - val HOME_ITEMS = arrayOf("闸井管理", "布防撤防") + val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher) + val HOME_ITEMS = arrayOf("闸井管理", "超时工单", "布防撤防") val SUB_PAGE_TITLES = arrayOf("待处理", "待确认", "处理中", "已完成") } \ 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 9c34038..7a5ca39 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 @@ -234,6 +234,22 @@ ): OrderStatusModel /** + * 查询工单 + * */ + @GET("/job/searchList") + suspend fun obtainSearchResult( + @Header("token") token: String, + @Query("keywords") keywords: String?, + @Query("alarmContent") alarmContent: String?, + @Query("alarmLevel") alarmLevel: String?, + @Query("jobStatus") jobStatus: String?, + @Query("beginTime") beginTime: String?, + @Query("endTime") endTime: String?, + @Query("limit") limit: Int, + @Query("offset") offset: Int + ): SearchResultModel + + /** * 获取用户信息 */ @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 a7106b5..945f6a3 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 @@ -175,6 +175,31 @@ } /** + * 查询工单 + */ + suspend fun obtainSearchResult( + keywords: String?, + alarmContent: String?, + alarmLevel: String?, + jobStatus: String?, + beginTime: String?, + endTime: String?, + page: Int + ): SearchResultModel { + return api.obtainSearchResult( + AuthenticationHelper.token!!, + keywords, + alarmContent, + alarmLevel, + jobStatus, + beginTime, + endTime, + Constant.PAGE_LIMIT, + page + ) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): String { diff --git a/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt index cfc4e0f..45af48a 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt @@ -98,7 +98,7 @@ imageRecyclerView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() - val imageArray = orderDetail.firstStatePhotos.toString().split(";") + val imageArray = orderDetail.firstStatePhotos.toString().split(",") imageArray.forEach { path -> if (path != "") { urls.add(path.combineImagePath()) diff --git a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt index 1a3e670..36075bd 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt @@ -197,7 +197,7 @@ return@setOnClickListener } val state = sceneEditView.text.toString().trim() - if (state == "") { + if (state.isBlank()) { "请输入现场情况".show(this) return@setOnClickListener } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e45158c..7460cc2 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -45,7 +45,9 @@ + + diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt index cba0198..e7ec8d8 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt @@ -25,7 +25,7 @@ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { val imageView = ImageView(context) val layoutWidth: Int = - SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 20f) + SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f) val margins: Int = QMUIDisplayHelper.dp2px(context, 3) val itemSize = (layoutWidth - 6 * margins) / 3 val params = LinearLayout.LayoutParams(itemSize, itemSize) diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt index 7780aaa..ad90885 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt @@ -17,4 +17,12 @@ } } return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt index de1c6c1..84ae8a8 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt @@ -33,10 +33,16 @@ startActivity(intent) } +fun Context.navigatePageTo(clazz: Class, values: ArrayList) { + val intent = Intent(this, clazz) + intent.putStringArrayListExtra(Constant.INTENT_PARAM, values) + startActivity(intent) +} + fun Context.navigatePageTo( clazz: Class, index: Int, - imageList: ArrayList? + imageList: ArrayList ) { val intent = Intent(this, clazz) intent.putExtra("index", index) 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 5f9ce7c..8ed51f4 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 @@ -23,4 +23,12 @@ "未知类型" } } +} + +fun Int.toLevel(): String { + return if (this == 0) { + "" + } else { + this.toString() + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt index ee3685d..3bc5d96 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt @@ -1,6 +1,20 @@ package com.casic.app.smartwell.extensions +import java.text.ParseException import java.text.SimpleDateFormat import java.util.* -fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) \ No newline at end of file +fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) + +fun Long.isEarlierThanStart(date: String): Boolean { + if (date.isBlank()) { + return false + } + val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA) + try { + return this < dateFormat.parse(date)!!.time + } catch (e: ParseException) { + + } + return true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt new file mode 100644 index 0000000..bd9cfa7 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt @@ -0,0 +1,12 @@ +package com.casic.app.smartwell.extensions + +import android.view.View +import com.qmuiteam.qmui.widget.QMUIEmptyView + +fun QMUIEmptyView.showEmptyPage(onButtonClickListener: View.OnClickListener) { + this.show(false, "抱歉,无法查询到相关记录", null, "重试", onButtonClickListener) +} + +fun QMUIEmptyView.showEmptyPage(title: String, onButtonClickListener: View.OnClickListener) { + this.show(false, title, null, "刷新", onButtonClickListener) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt index 7358b1c..2cdd63d 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt @@ -60,6 +60,7 @@ //窨井类型转换 fun String.toChinese(): String { return when (this) { + "0" -> "全部" "1" -> "一级" "2" -> "二级" "3" -> "三级" diff --git a/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt b/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt new file mode 100644 index 0000000..af7fd13 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt @@ -0,0 +1,52 @@ +package com.casic.app.smartwell.model + +class SearchResultModel { + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var rows: MutableList? = null + var total = 0 + + class RowsBean { + var alarmContent = 0 + var deptName: String? = null + var jobStatus: String? = null + var handleJobPerson: String? = null + var alarmContentName: String? = null + var shouldGetTime: String? = null + var wellCode: String? = null + var deptid: String? = null + var alarmTypeName: String? = null + var jobCode: String? = null + var jobBelongTo: String? = null + var jobFlag: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var jobStatusName: String? = null + var alarmValue: String? = null + var alarmId: String? = null + var alarmLevel: String? = null + var handleJobTime: String? = null + var tel: String? = null + var id: String? = null + var wellId: String? = null + var jobType: String? = null + var editable = 0 + var alarmTime: String? = null + var alarmMessage: String? = null + var staff: String? = null + var getJobTime: String? = null + var getJobPerson: String? = null + var shouldHandleTime: String? = null + var jobId: String? = null + var alarmType: String? = null + var alarmStatus: String? = null + var devcode: String? = null + var createTime: String? = null + var position: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index fd4e603..c342334 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -41,7 +41,7 @@ const val USER_DETAIL_MODEL = "userDetailModel" const val INTENT_PARAM = "intentParam" - val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher) - val HOME_ITEMS = arrayOf("闸井管理", "布防撤防") + val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher) + val HOME_ITEMS = arrayOf("闸井管理", "超时工单", "布防撤防") val SUB_PAGE_TITLES = arrayOf("待处理", "待确认", "处理中", "已完成") } \ 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 9c34038..7a5ca39 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 @@ -234,6 +234,22 @@ ): OrderStatusModel /** + * 查询工单 + * */ + @GET("/job/searchList") + suspend fun obtainSearchResult( + @Header("token") token: String, + @Query("keywords") keywords: String?, + @Query("alarmContent") alarmContent: String?, + @Query("alarmLevel") alarmLevel: String?, + @Query("jobStatus") jobStatus: String?, + @Query("beginTime") beginTime: String?, + @Query("endTime") endTime: String?, + @Query("limit") limit: Int, + @Query("offset") offset: Int + ): SearchResultModel + + /** * 获取用户信息 */ @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 a7106b5..945f6a3 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 @@ -175,6 +175,31 @@ } /** + * 查询工单 + */ + suspend fun obtainSearchResult( + keywords: String?, + alarmContent: String?, + alarmLevel: String?, + jobStatus: String?, + beginTime: String?, + endTime: String?, + page: Int + ): SearchResultModel { + return api.obtainSearchResult( + AuthenticationHelper.token!!, + keywords, + alarmContent, + alarmLevel, + jobStatus, + beginTime, + endTime, + Constant.PAGE_LIMIT, + page + ) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): String { diff --git a/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt index cfc4e0f..45af48a 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt @@ -98,7 +98,7 @@ imageRecyclerView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() - val imageArray = orderDetail.firstStatePhotos.toString().split(";") + val imageArray = orderDetail.firstStatePhotos.toString().split(",") imageArray.forEach { path -> if (path != "") { urls.add(path.combineImagePath()) diff --git a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt index 1a3e670..36075bd 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt @@ -197,7 +197,7 @@ return@setOnClickListener } val state = sceneEditView.text.toString().trim() - if (state == "") { + if (state.isBlank()) { "请输入现场情况".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt index b7a51ce..97e1f59 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt @@ -161,7 +161,7 @@ imageRecyclerView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() - val imageArray = orderDetail.firstStatePhotos.toString().split(";") + val imageArray = orderDetail.firstStatePhotos.toString().split(",") imageArray.forEach { path -> if (path != "") { urls.add(path.combineImagePath()) @@ -247,7 +247,7 @@ return@setOnClickListener } val state = sceneEditView.text.toString().trim() - if (state == "") { + if (state.isBlank()) { "请输入维护情况".show(this) return@setOnClickListener } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e45158c..7460cc2 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -45,7 +45,9 @@ + + diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt index cba0198..e7ec8d8 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt @@ -25,7 +25,7 @@ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { val imageView = ImageView(context) val layoutWidth: Int = - SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 20f) + SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f) val margins: Int = QMUIDisplayHelper.dp2px(context, 3) val itemSize = (layoutWidth - 6 * margins) / 3 val params = LinearLayout.LayoutParams(itemSize, itemSize) diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt index 7780aaa..ad90885 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt @@ -17,4 +17,12 @@ } } return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt index de1c6c1..84ae8a8 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt @@ -33,10 +33,16 @@ startActivity(intent) } +fun Context.navigatePageTo(clazz: Class, values: ArrayList) { + val intent = Intent(this, clazz) + intent.putStringArrayListExtra(Constant.INTENT_PARAM, values) + startActivity(intent) +} + fun Context.navigatePageTo( clazz: Class, index: Int, - imageList: ArrayList? + imageList: ArrayList ) { val intent = Intent(this, clazz) intent.putExtra("index", index) 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 5f9ce7c..8ed51f4 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 @@ -23,4 +23,12 @@ "未知类型" } } +} + +fun Int.toLevel(): String { + return if (this == 0) { + "" + } else { + this.toString() + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt index ee3685d..3bc5d96 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt @@ -1,6 +1,20 @@ package com.casic.app.smartwell.extensions +import java.text.ParseException import java.text.SimpleDateFormat import java.util.* -fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) \ No newline at end of file +fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) + +fun Long.isEarlierThanStart(date: String): Boolean { + if (date.isBlank()) { + return false + } + val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA) + try { + return this < dateFormat.parse(date)!!.time + } catch (e: ParseException) { + + } + return true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt new file mode 100644 index 0000000..bd9cfa7 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt @@ -0,0 +1,12 @@ +package com.casic.app.smartwell.extensions + +import android.view.View +import com.qmuiteam.qmui.widget.QMUIEmptyView + +fun QMUIEmptyView.showEmptyPage(onButtonClickListener: View.OnClickListener) { + this.show(false, "抱歉,无法查询到相关记录", null, "重试", onButtonClickListener) +} + +fun QMUIEmptyView.showEmptyPage(title: String, onButtonClickListener: View.OnClickListener) { + this.show(false, title, null, "刷新", onButtonClickListener) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt index 7358b1c..2cdd63d 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt @@ -60,6 +60,7 @@ //窨井类型转换 fun String.toChinese(): String { return when (this) { + "0" -> "全部" "1" -> "一级" "2" -> "二级" "3" -> "三级" diff --git a/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt b/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt new file mode 100644 index 0000000..af7fd13 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt @@ -0,0 +1,52 @@ +package com.casic.app.smartwell.model + +class SearchResultModel { + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var rows: MutableList? = null + var total = 0 + + class RowsBean { + var alarmContent = 0 + var deptName: String? = null + var jobStatus: String? = null + var handleJobPerson: String? = null + var alarmContentName: String? = null + var shouldGetTime: String? = null + var wellCode: String? = null + var deptid: String? = null + var alarmTypeName: String? = null + var jobCode: String? = null + var jobBelongTo: String? = null + var jobFlag: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var jobStatusName: String? = null + var alarmValue: String? = null + var alarmId: String? = null + var alarmLevel: String? = null + var handleJobTime: String? = null + var tel: String? = null + var id: String? = null + var wellId: String? = null + var jobType: String? = null + var editable = 0 + var alarmTime: String? = null + var alarmMessage: String? = null + var staff: String? = null + var getJobTime: String? = null + var getJobPerson: String? = null + var shouldHandleTime: String? = null + var jobId: String? = null + var alarmType: String? = null + var alarmStatus: String? = null + var devcode: String? = null + var createTime: String? = null + var position: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index fd4e603..c342334 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -41,7 +41,7 @@ const val USER_DETAIL_MODEL = "userDetailModel" const val INTENT_PARAM = "intentParam" - val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher) - val HOME_ITEMS = arrayOf("闸井管理", "布防撤防") + val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher) + val HOME_ITEMS = arrayOf("闸井管理", "超时工单", "布防撤防") val SUB_PAGE_TITLES = arrayOf("待处理", "待确认", "处理中", "已完成") } \ 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 9c34038..7a5ca39 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 @@ -234,6 +234,22 @@ ): OrderStatusModel /** + * 查询工单 + * */ + @GET("/job/searchList") + suspend fun obtainSearchResult( + @Header("token") token: String, + @Query("keywords") keywords: String?, + @Query("alarmContent") alarmContent: String?, + @Query("alarmLevel") alarmLevel: String?, + @Query("jobStatus") jobStatus: String?, + @Query("beginTime") beginTime: String?, + @Query("endTime") endTime: String?, + @Query("limit") limit: Int, + @Query("offset") offset: Int + ): SearchResultModel + + /** * 获取用户信息 */ @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 a7106b5..945f6a3 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 @@ -175,6 +175,31 @@ } /** + * 查询工单 + */ + suspend fun obtainSearchResult( + keywords: String?, + alarmContent: String?, + alarmLevel: String?, + jobStatus: String?, + beginTime: String?, + endTime: String?, + page: Int + ): SearchResultModel { + return api.obtainSearchResult( + AuthenticationHelper.token!!, + keywords, + alarmContent, + alarmLevel, + jobStatus, + beginTime, + endTime, + Constant.PAGE_LIMIT, + page + ) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): String { diff --git a/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt index cfc4e0f..45af48a 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt @@ -98,7 +98,7 @@ imageRecyclerView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() - val imageArray = orderDetail.firstStatePhotos.toString().split(";") + val imageArray = orderDetail.firstStatePhotos.toString().split(",") imageArray.forEach { path -> if (path != "") { urls.add(path.combineImagePath()) diff --git a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt index 1a3e670..36075bd 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt @@ -197,7 +197,7 @@ return@setOnClickListener } val state = sceneEditView.text.toString().trim() - if (state == "") { + if (state.isBlank()) { "请输入现场情况".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt index b7a51ce..97e1f59 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt @@ -161,7 +161,7 @@ imageRecyclerView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() - val imageArray = orderDetail.firstStatePhotos.toString().split(";") + val imageArray = orderDetail.firstStatePhotos.toString().split(",") imageArray.forEach { path -> if (path != "") { urls.add(path.combineImagePath()) @@ -247,7 +247,7 @@ return@setOnClickListener } val state = sceneEditView.text.toString().trim() - if (state == "") { + if (state.isBlank()) { "请输入维护情况".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt index e5698a1..cd4fdff 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt @@ -1,7 +1,6 @@ package com.casic.app.smartwell.view import android.text.Editable -import android.text.TextUtils import android.text.TextWatcher import android.view.KeyEvent import android.view.inputmethod.EditorInfo @@ -67,13 +66,13 @@ false } loginButton.setOnClickListener { - val account = userNameView.text.toString() - val userPassword = userPasswordView.text.toString() - if (TextUtils.isEmpty(account)) { + val account = userNameView.text.toString().trim() + val userPassword = userPasswordView.text.toString().trim() + if (account.isBlank()) { "用户名不能为空".show(this) return@setOnClickListener } - if (TextUtils.isEmpty(userPassword)) { + if (userPassword.isBlank()) { "密码不能为空".show(this) return@setOnClickListener } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e45158c..7460cc2 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -45,7 +45,9 @@ + + diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt index cba0198..e7ec8d8 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt @@ -25,7 +25,7 @@ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { val imageView = ImageView(context) val layoutWidth: Int = - SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 20f) + SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f) val margins: Int = QMUIDisplayHelper.dp2px(context, 3) val itemSize = (layoutWidth - 6 * margins) / 3 val params = LinearLayout.LayoutParams(itemSize, itemSize) diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt index 7780aaa..ad90885 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt @@ -17,4 +17,12 @@ } } return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt index de1c6c1..84ae8a8 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt @@ -33,10 +33,16 @@ startActivity(intent) } +fun Context.navigatePageTo(clazz: Class, values: ArrayList) { + val intent = Intent(this, clazz) + intent.putStringArrayListExtra(Constant.INTENT_PARAM, values) + startActivity(intent) +} + fun Context.navigatePageTo( clazz: Class, index: Int, - imageList: ArrayList? + imageList: ArrayList ) { val intent = Intent(this, clazz) intent.putExtra("index", index) 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 5f9ce7c..8ed51f4 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 @@ -23,4 +23,12 @@ "未知类型" } } +} + +fun Int.toLevel(): String { + return if (this == 0) { + "" + } else { + this.toString() + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt index ee3685d..3bc5d96 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt @@ -1,6 +1,20 @@ package com.casic.app.smartwell.extensions +import java.text.ParseException import java.text.SimpleDateFormat import java.util.* -fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) \ No newline at end of file +fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) + +fun Long.isEarlierThanStart(date: String): Boolean { + if (date.isBlank()) { + return false + } + val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA) + try { + return this < dateFormat.parse(date)!!.time + } catch (e: ParseException) { + + } + return true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt new file mode 100644 index 0000000..bd9cfa7 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt @@ -0,0 +1,12 @@ +package com.casic.app.smartwell.extensions + +import android.view.View +import com.qmuiteam.qmui.widget.QMUIEmptyView + +fun QMUIEmptyView.showEmptyPage(onButtonClickListener: View.OnClickListener) { + this.show(false, "抱歉,无法查询到相关记录", null, "重试", onButtonClickListener) +} + +fun QMUIEmptyView.showEmptyPage(title: String, onButtonClickListener: View.OnClickListener) { + this.show(false, title, null, "刷新", onButtonClickListener) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt index 7358b1c..2cdd63d 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt @@ -60,6 +60,7 @@ //窨井类型转换 fun String.toChinese(): String { return when (this) { + "0" -> "全部" "1" -> "一级" "2" -> "二级" "3" -> "三级" diff --git a/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt b/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt new file mode 100644 index 0000000..af7fd13 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt @@ -0,0 +1,52 @@ +package com.casic.app.smartwell.model + +class SearchResultModel { + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var rows: MutableList? = null + var total = 0 + + class RowsBean { + var alarmContent = 0 + var deptName: String? = null + var jobStatus: String? = null + var handleJobPerson: String? = null + var alarmContentName: String? = null + var shouldGetTime: String? = null + var wellCode: String? = null + var deptid: String? = null + var alarmTypeName: String? = null + var jobCode: String? = null + var jobBelongTo: String? = null + var jobFlag: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var jobStatusName: String? = null + var alarmValue: String? = null + var alarmId: String? = null + var alarmLevel: String? = null + var handleJobTime: String? = null + var tel: String? = null + var id: String? = null + var wellId: String? = null + var jobType: String? = null + var editable = 0 + var alarmTime: String? = null + var alarmMessage: String? = null + var staff: String? = null + var getJobTime: String? = null + var getJobPerson: String? = null + var shouldHandleTime: String? = null + var jobId: String? = null + var alarmType: String? = null + var alarmStatus: String? = null + var devcode: String? = null + var createTime: String? = null + var position: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index fd4e603..c342334 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -41,7 +41,7 @@ const val USER_DETAIL_MODEL = "userDetailModel" const val INTENT_PARAM = "intentParam" - val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher) - val HOME_ITEMS = arrayOf("闸井管理", "布防撤防") + val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher) + val HOME_ITEMS = arrayOf("闸井管理", "超时工单", "布防撤防") val SUB_PAGE_TITLES = arrayOf("待处理", "待确认", "处理中", "已完成") } \ 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 9c34038..7a5ca39 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 @@ -234,6 +234,22 @@ ): OrderStatusModel /** + * 查询工单 + * */ + @GET("/job/searchList") + suspend fun obtainSearchResult( + @Header("token") token: String, + @Query("keywords") keywords: String?, + @Query("alarmContent") alarmContent: String?, + @Query("alarmLevel") alarmLevel: String?, + @Query("jobStatus") jobStatus: String?, + @Query("beginTime") beginTime: String?, + @Query("endTime") endTime: String?, + @Query("limit") limit: Int, + @Query("offset") offset: Int + ): SearchResultModel + + /** * 获取用户信息 */ @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 a7106b5..945f6a3 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 @@ -175,6 +175,31 @@ } /** + * 查询工单 + */ + suspend fun obtainSearchResult( + keywords: String?, + alarmContent: String?, + alarmLevel: String?, + jobStatus: String?, + beginTime: String?, + endTime: String?, + page: Int + ): SearchResultModel { + return api.obtainSearchResult( + AuthenticationHelper.token!!, + keywords, + alarmContent, + alarmLevel, + jobStatus, + beginTime, + endTime, + Constant.PAGE_LIMIT, + page + ) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): String { diff --git a/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt index cfc4e0f..45af48a 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt @@ -98,7 +98,7 @@ imageRecyclerView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() - val imageArray = orderDetail.firstStatePhotos.toString().split(";") + val imageArray = orderDetail.firstStatePhotos.toString().split(",") imageArray.forEach { path -> if (path != "") { urls.add(path.combineImagePath()) diff --git a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt index 1a3e670..36075bd 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt @@ -197,7 +197,7 @@ return@setOnClickListener } val state = sceneEditView.text.toString().trim() - if (state == "") { + if (state.isBlank()) { "请输入现场情况".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt index b7a51ce..97e1f59 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt @@ -161,7 +161,7 @@ imageRecyclerView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() - val imageArray = orderDetail.firstStatePhotos.toString().split(";") + val imageArray = orderDetail.firstStatePhotos.toString().split(",") imageArray.forEach { path -> if (path != "") { urls.add(path.combineImagePath()) @@ -247,7 +247,7 @@ return@setOnClickListener } val state = sceneEditView.text.toString().trim() - if (state == "") { + if (state.isBlank()) { "请输入维护情况".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt index e5698a1..cd4fdff 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt @@ -1,7 +1,6 @@ package com.casic.app.smartwell.view import android.text.Editable -import android.text.TextUtils import android.text.TextWatcher import android.view.KeyEvent import android.view.inputmethod.EditorInfo @@ -67,13 +66,13 @@ false } loginButton.setOnClickListener { - val account = userNameView.text.toString() - val userPassword = userPasswordView.text.toString() - if (TextUtils.isEmpty(account)) { + val account = userNameView.text.toString().trim() + val userPassword = userPasswordView.text.toString().trim() + if (account.isBlank()) { "用户名不能为空".show(this) return@setOnClickListener } - if (TextUtils.isEmpty(userPassword)) { + if (userPassword.isBlank()) { "密码不能为空".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt new file mode 100644 index 0000000..453a2c9 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt @@ -0,0 +1,21 @@ +package com.casic.app.smartwell.view + +import com.casic.app.smartwell.R +import com.casic.app.smartwell.base.BaseActivity + +class OvertimeOrderActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_order_overtime + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e45158c..7460cc2 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -45,7 +45,9 @@ + + diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt index cba0198..e7ec8d8 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt @@ -25,7 +25,7 @@ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { val imageView = ImageView(context) val layoutWidth: Int = - SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 20f) + SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f) val margins: Int = QMUIDisplayHelper.dp2px(context, 3) val itemSize = (layoutWidth - 6 * margins) / 3 val params = LinearLayout.LayoutParams(itemSize, itemSize) diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt index 7780aaa..ad90885 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt @@ -17,4 +17,12 @@ } } return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt index de1c6c1..84ae8a8 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt @@ -33,10 +33,16 @@ startActivity(intent) } +fun Context.navigatePageTo(clazz: Class, values: ArrayList) { + val intent = Intent(this, clazz) + intent.putStringArrayListExtra(Constant.INTENT_PARAM, values) + startActivity(intent) +} + fun Context.navigatePageTo( clazz: Class, index: Int, - imageList: ArrayList? + imageList: ArrayList ) { val intent = Intent(this, clazz) intent.putExtra("index", index) 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 5f9ce7c..8ed51f4 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 @@ -23,4 +23,12 @@ "未知类型" } } +} + +fun Int.toLevel(): String { + return if (this == 0) { + "" + } else { + this.toString() + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt index ee3685d..3bc5d96 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt @@ -1,6 +1,20 @@ package com.casic.app.smartwell.extensions +import java.text.ParseException import java.text.SimpleDateFormat import java.util.* -fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) \ No newline at end of file +fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) + +fun Long.isEarlierThanStart(date: String): Boolean { + if (date.isBlank()) { + return false + } + val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA) + try { + return this < dateFormat.parse(date)!!.time + } catch (e: ParseException) { + + } + return true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt new file mode 100644 index 0000000..bd9cfa7 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt @@ -0,0 +1,12 @@ +package com.casic.app.smartwell.extensions + +import android.view.View +import com.qmuiteam.qmui.widget.QMUIEmptyView + +fun QMUIEmptyView.showEmptyPage(onButtonClickListener: View.OnClickListener) { + this.show(false, "抱歉,无法查询到相关记录", null, "重试", onButtonClickListener) +} + +fun QMUIEmptyView.showEmptyPage(title: String, onButtonClickListener: View.OnClickListener) { + this.show(false, title, null, "刷新", onButtonClickListener) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt index 7358b1c..2cdd63d 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt @@ -60,6 +60,7 @@ //窨井类型转换 fun String.toChinese(): String { return when (this) { + "0" -> "全部" "1" -> "一级" "2" -> "二级" "3" -> "三级" diff --git a/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt b/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt new file mode 100644 index 0000000..af7fd13 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt @@ -0,0 +1,52 @@ +package com.casic.app.smartwell.model + +class SearchResultModel { + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var rows: MutableList? = null + var total = 0 + + class RowsBean { + var alarmContent = 0 + var deptName: String? = null + var jobStatus: String? = null + var handleJobPerson: String? = null + var alarmContentName: String? = null + var shouldGetTime: String? = null + var wellCode: String? = null + var deptid: String? = null + var alarmTypeName: String? = null + var jobCode: String? = null + var jobBelongTo: String? = null + var jobFlag: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var jobStatusName: String? = null + var alarmValue: String? = null + var alarmId: String? = null + var alarmLevel: String? = null + var handleJobTime: String? = null + var tel: String? = null + var id: String? = null + var wellId: String? = null + var jobType: String? = null + var editable = 0 + var alarmTime: String? = null + var alarmMessage: String? = null + var staff: String? = null + var getJobTime: String? = null + var getJobPerson: String? = null + var shouldHandleTime: String? = null + var jobId: String? = null + var alarmType: String? = null + var alarmStatus: String? = null + var devcode: String? = null + var createTime: String? = null + var position: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index fd4e603..c342334 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -41,7 +41,7 @@ const val USER_DETAIL_MODEL = "userDetailModel" const val INTENT_PARAM = "intentParam" - val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher) - val HOME_ITEMS = arrayOf("闸井管理", "布防撤防") + val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher) + val HOME_ITEMS = arrayOf("闸井管理", "超时工单", "布防撤防") val SUB_PAGE_TITLES = arrayOf("待处理", "待确认", "处理中", "已完成") } \ 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 9c34038..7a5ca39 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 @@ -234,6 +234,22 @@ ): OrderStatusModel /** + * 查询工单 + * */ + @GET("/job/searchList") + suspend fun obtainSearchResult( + @Header("token") token: String, + @Query("keywords") keywords: String?, + @Query("alarmContent") alarmContent: String?, + @Query("alarmLevel") alarmLevel: String?, + @Query("jobStatus") jobStatus: String?, + @Query("beginTime") beginTime: String?, + @Query("endTime") endTime: String?, + @Query("limit") limit: Int, + @Query("offset") offset: Int + ): SearchResultModel + + /** * 获取用户信息 */ @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 a7106b5..945f6a3 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 @@ -175,6 +175,31 @@ } /** + * 查询工单 + */ + suspend fun obtainSearchResult( + keywords: String?, + alarmContent: String?, + alarmLevel: String?, + jobStatus: String?, + beginTime: String?, + endTime: String?, + page: Int + ): SearchResultModel { + return api.obtainSearchResult( + AuthenticationHelper.token!!, + keywords, + alarmContent, + alarmLevel, + jobStatus, + beginTime, + endTime, + Constant.PAGE_LIMIT, + page + ) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): String { diff --git a/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt index cfc4e0f..45af48a 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt @@ -98,7 +98,7 @@ imageRecyclerView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() - val imageArray = orderDetail.firstStatePhotos.toString().split(";") + val imageArray = orderDetail.firstStatePhotos.toString().split(",") imageArray.forEach { path -> if (path != "") { urls.add(path.combineImagePath()) diff --git a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt index 1a3e670..36075bd 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt @@ -197,7 +197,7 @@ return@setOnClickListener } val state = sceneEditView.text.toString().trim() - if (state == "") { + if (state.isBlank()) { "请输入现场情况".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt index b7a51ce..97e1f59 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt @@ -161,7 +161,7 @@ imageRecyclerView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() - val imageArray = orderDetail.firstStatePhotos.toString().split(";") + val imageArray = orderDetail.firstStatePhotos.toString().split(",") imageArray.forEach { path -> if (path != "") { urls.add(path.combineImagePath()) @@ -247,7 +247,7 @@ return@setOnClickListener } val state = sceneEditView.text.toString().trim() - if (state == "") { + if (state.isBlank()) { "请输入维护情况".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt index e5698a1..cd4fdff 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt @@ -1,7 +1,6 @@ package com.casic.app.smartwell.view import android.text.Editable -import android.text.TextUtils import android.text.TextWatcher import android.view.KeyEvent import android.view.inputmethod.EditorInfo @@ -67,13 +66,13 @@ false } loginButton.setOnClickListener { - val account = userNameView.text.toString() - val userPassword = userPasswordView.text.toString() - if (TextUtils.isEmpty(account)) { + val account = userNameView.text.toString().trim() + val userPassword = userPasswordView.text.toString().trim() + if (account.isBlank()) { "用户名不能为空".show(this) return@setOnClickListener } - if (TextUtils.isEmpty(userPassword)) { + if (userPassword.isBlank()) { "密码不能为空".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt new file mode 100644 index 0000000..453a2c9 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt @@ -0,0 +1,21 @@ +package com.casic.app.smartwell.view + +import com.casic.app.smartwell.R +import com.casic.app.smartwell.base.BaseActivity + +class OvertimeOrderActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_order_overtime + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt new file mode 100644 index 0000000..8228673 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt @@ -0,0 +1,129 @@ +package com.casic.app.smartwell.view + +import android.os.Handler +import android.os.Looper +import android.os.Message +import android.view.View +import androidx.lifecycle.ViewModelProvider +import com.casic.app.smartwell.R +import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage +import com.casic.app.smartwell.model.SearchResultModel +import com.casic.app.smartwell.utils.Constant +import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.vm.SearchOrderViewModel +import kotlinx.android.synthetic.main.activity_order_search_result.* +import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* +import java.lang.ref.WeakReference + +class SearchResultActivity : BaseActivity() { + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var searchOrderViewModel: SearchOrderViewModel + private lateinit var args: ArrayList + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initLayoutView(): Int = R.layout.activity_order_search_result + + override fun setupTopBarLayout() { + titleView.text = "查询结果" + leftBackView.visibility = View.VISIBLE + leftBackView.setOnClickListener { finish() } + } + + override fun initData() { + args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! + weakReferenceHandler = WeakReferenceHandler(this) + searchOrderViewModel = ViewModelProvider(this).get(SearchOrderViewModel::class.java) + } + + override fun initEvent() { + obtainSearchResult(args, pageIndex) + searchOrderViewModel.listModel.observe(this, { + if (it.code == 200) { + val dataRows = it.data?.rows + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows!! + resultRefreshLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows?.size == 0) { + "到底了,别拉了".show(this) + } + dataBeans.addAll(dataRows!!) + resultRefreshLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows!! + } + } + weakReferenceHandler.sendEmptyMessage(2022040101) + } + }) + searchOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } + }) + resultRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainSearchResult(args, pageIndex) + } + resultRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainSearchResult(args, pageIndex) + } + } + + private fun obtainSearchResult(args: ArrayList, pageIndex: Int) { + searchOrderViewModel.obtainSearchResult( + keywords = args[0], + alarmContent = args[1], + alarmLevel = args[2], + jobStatus = args[3], + beginTime = args[4], + endTime = args[5], + page = pageIndex + ) + } + + private class WeakReferenceHandler(activity: SearchResultActivity) : + Handler(Looper.getMainLooper()) { + private val reference: WeakReference = WeakReference(activity) + + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val activity = reference.get()!! + if (msg.what == 2022040101) { + if (activity.isRefresh || activity.isLoadMore) { +// activity.wellOperationAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (activity.dataBeans.size == 0) { + activity.emptyView!!.showEmptyPage { + activity.obtainSearchResult(activity.args, activity.pageIndex) + } + } else { + activity.emptyView!!.hide() + } + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e45158c..7460cc2 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -45,7 +45,9 @@ + + diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt index cba0198..e7ec8d8 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt @@ -25,7 +25,7 @@ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { val imageView = ImageView(context) val layoutWidth: Int = - SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 20f) + SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f) val margins: Int = QMUIDisplayHelper.dp2px(context, 3) val itemSize = (layoutWidth - 6 * margins) / 3 val params = LinearLayout.LayoutParams(itemSize, itemSize) diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt index 7780aaa..ad90885 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt @@ -17,4 +17,12 @@ } } return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt index de1c6c1..84ae8a8 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt @@ -33,10 +33,16 @@ startActivity(intent) } +fun Context.navigatePageTo(clazz: Class, values: ArrayList) { + val intent = Intent(this, clazz) + intent.putStringArrayListExtra(Constant.INTENT_PARAM, values) + startActivity(intent) +} + fun Context.navigatePageTo( clazz: Class, index: Int, - imageList: ArrayList? + imageList: ArrayList ) { val intent = Intent(this, clazz) intent.putExtra("index", index) 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 5f9ce7c..8ed51f4 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 @@ -23,4 +23,12 @@ "未知类型" } } +} + +fun Int.toLevel(): String { + return if (this == 0) { + "" + } else { + this.toString() + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt index ee3685d..3bc5d96 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt @@ -1,6 +1,20 @@ package com.casic.app.smartwell.extensions +import java.text.ParseException import java.text.SimpleDateFormat import java.util.* -fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) \ No newline at end of file +fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) + +fun Long.isEarlierThanStart(date: String): Boolean { + if (date.isBlank()) { + return false + } + val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA) + try { + return this < dateFormat.parse(date)!!.time + } catch (e: ParseException) { + + } + return true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt new file mode 100644 index 0000000..bd9cfa7 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt @@ -0,0 +1,12 @@ +package com.casic.app.smartwell.extensions + +import android.view.View +import com.qmuiteam.qmui.widget.QMUIEmptyView + +fun QMUIEmptyView.showEmptyPage(onButtonClickListener: View.OnClickListener) { + this.show(false, "抱歉,无法查询到相关记录", null, "重试", onButtonClickListener) +} + +fun QMUIEmptyView.showEmptyPage(title: String, onButtonClickListener: View.OnClickListener) { + this.show(false, title, null, "刷新", onButtonClickListener) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt index 7358b1c..2cdd63d 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt @@ -60,6 +60,7 @@ //窨井类型转换 fun String.toChinese(): String { return when (this) { + "0" -> "全部" "1" -> "一级" "2" -> "二级" "3" -> "三级" diff --git a/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt b/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt new file mode 100644 index 0000000..af7fd13 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt @@ -0,0 +1,52 @@ +package com.casic.app.smartwell.model + +class SearchResultModel { + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var rows: MutableList? = null + var total = 0 + + class RowsBean { + var alarmContent = 0 + var deptName: String? = null + var jobStatus: String? = null + var handleJobPerson: String? = null + var alarmContentName: String? = null + var shouldGetTime: String? = null + var wellCode: String? = null + var deptid: String? = null + var alarmTypeName: String? = null + var jobCode: String? = null + var jobBelongTo: String? = null + var jobFlag: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var jobStatusName: String? = null + var alarmValue: String? = null + var alarmId: String? = null + var alarmLevel: String? = null + var handleJobTime: String? = null + var tel: String? = null + var id: String? = null + var wellId: String? = null + var jobType: String? = null + var editable = 0 + var alarmTime: String? = null + var alarmMessage: String? = null + var staff: String? = null + var getJobTime: String? = null + var getJobPerson: String? = null + var shouldHandleTime: String? = null + var jobId: String? = null + var alarmType: String? = null + var alarmStatus: String? = null + var devcode: String? = null + var createTime: String? = null + var position: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index fd4e603..c342334 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -41,7 +41,7 @@ const val USER_DETAIL_MODEL = "userDetailModel" const val INTENT_PARAM = "intentParam" - val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher) - val HOME_ITEMS = arrayOf("闸井管理", "布防撤防") + val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher) + val HOME_ITEMS = arrayOf("闸井管理", "超时工单", "布防撤防") val SUB_PAGE_TITLES = arrayOf("待处理", "待确认", "处理中", "已完成") } \ 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 9c34038..7a5ca39 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 @@ -234,6 +234,22 @@ ): OrderStatusModel /** + * 查询工单 + * */ + @GET("/job/searchList") + suspend fun obtainSearchResult( + @Header("token") token: String, + @Query("keywords") keywords: String?, + @Query("alarmContent") alarmContent: String?, + @Query("alarmLevel") alarmLevel: String?, + @Query("jobStatus") jobStatus: String?, + @Query("beginTime") beginTime: String?, + @Query("endTime") endTime: String?, + @Query("limit") limit: Int, + @Query("offset") offset: Int + ): SearchResultModel + + /** * 获取用户信息 */ @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 a7106b5..945f6a3 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 @@ -175,6 +175,31 @@ } /** + * 查询工单 + */ + suspend fun obtainSearchResult( + keywords: String?, + alarmContent: String?, + alarmLevel: String?, + jobStatus: String?, + beginTime: String?, + endTime: String?, + page: Int + ): SearchResultModel { + return api.obtainSearchResult( + AuthenticationHelper.token!!, + keywords, + alarmContent, + alarmLevel, + jobStatus, + beginTime, + endTime, + Constant.PAGE_LIMIT, + page + ) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): String { diff --git a/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt index cfc4e0f..45af48a 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt @@ -98,7 +98,7 @@ imageRecyclerView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() - val imageArray = orderDetail.firstStatePhotos.toString().split(";") + val imageArray = orderDetail.firstStatePhotos.toString().split(",") imageArray.forEach { path -> if (path != "") { urls.add(path.combineImagePath()) diff --git a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt index 1a3e670..36075bd 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt @@ -197,7 +197,7 @@ return@setOnClickListener } val state = sceneEditView.text.toString().trim() - if (state == "") { + if (state.isBlank()) { "请输入现场情况".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt index b7a51ce..97e1f59 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt @@ -161,7 +161,7 @@ imageRecyclerView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() - val imageArray = orderDetail.firstStatePhotos.toString().split(";") + val imageArray = orderDetail.firstStatePhotos.toString().split(",") imageArray.forEach { path -> if (path != "") { urls.add(path.combineImagePath()) @@ -247,7 +247,7 @@ return@setOnClickListener } val state = sceneEditView.text.toString().trim() - if (state == "") { + if (state.isBlank()) { "请输入维护情况".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt index e5698a1..cd4fdff 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt @@ -1,7 +1,6 @@ package com.casic.app.smartwell.view import android.text.Editable -import android.text.TextUtils import android.text.TextWatcher import android.view.KeyEvent import android.view.inputmethod.EditorInfo @@ -67,13 +66,13 @@ false } loginButton.setOnClickListener { - val account = userNameView.text.toString() - val userPassword = userPasswordView.text.toString() - if (TextUtils.isEmpty(account)) { + val account = userNameView.text.toString().trim() + val userPassword = userPasswordView.text.toString().trim() + if (account.isBlank()) { "用户名不能为空".show(this) return@setOnClickListener } - if (TextUtils.isEmpty(userPassword)) { + if (userPassword.isBlank()) { "密码不能为空".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt new file mode 100644 index 0000000..453a2c9 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt @@ -0,0 +1,21 @@ +package com.casic.app.smartwell.view + +import com.casic.app.smartwell.R +import com.casic.app.smartwell.base.BaseActivity + +class OvertimeOrderActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_order_overtime + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt new file mode 100644 index 0000000..8228673 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt @@ -0,0 +1,129 @@ +package com.casic.app.smartwell.view + +import android.os.Handler +import android.os.Looper +import android.os.Message +import android.view.View +import androidx.lifecycle.ViewModelProvider +import com.casic.app.smartwell.R +import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage +import com.casic.app.smartwell.model.SearchResultModel +import com.casic.app.smartwell.utils.Constant +import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.vm.SearchOrderViewModel +import kotlinx.android.synthetic.main.activity_order_search_result.* +import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* +import java.lang.ref.WeakReference + +class SearchResultActivity : BaseActivity() { + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var searchOrderViewModel: SearchOrderViewModel + private lateinit var args: ArrayList + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initLayoutView(): Int = R.layout.activity_order_search_result + + override fun setupTopBarLayout() { + titleView.text = "查询结果" + leftBackView.visibility = View.VISIBLE + leftBackView.setOnClickListener { finish() } + } + + override fun initData() { + args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! + weakReferenceHandler = WeakReferenceHandler(this) + searchOrderViewModel = ViewModelProvider(this).get(SearchOrderViewModel::class.java) + } + + override fun initEvent() { + obtainSearchResult(args, pageIndex) + searchOrderViewModel.listModel.observe(this, { + if (it.code == 200) { + val dataRows = it.data?.rows + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows!! + resultRefreshLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows?.size == 0) { + "到底了,别拉了".show(this) + } + dataBeans.addAll(dataRows!!) + resultRefreshLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows!! + } + } + weakReferenceHandler.sendEmptyMessage(2022040101) + } + }) + searchOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } + }) + resultRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainSearchResult(args, pageIndex) + } + resultRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainSearchResult(args, pageIndex) + } + } + + private fun obtainSearchResult(args: ArrayList, pageIndex: Int) { + searchOrderViewModel.obtainSearchResult( + keywords = args[0], + alarmContent = args[1], + alarmLevel = args[2], + jobStatus = args[3], + beginTime = args[4], + endTime = args[5], + page = pageIndex + ) + } + + private class WeakReferenceHandler(activity: SearchResultActivity) : + Handler(Looper.getMainLooper()) { + private val reference: WeakReference = WeakReference(activity) + + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val activity = reference.get()!! + if (msg.what == 2022040101) { + if (activity.isRefresh || activity.isLoadMore) { +// activity.wellOperationAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (activity.dataBeans.size == 0) { + activity.emptyView!!.showEmptyPage { + activity.obtainSearchResult(activity.args, activity.pageIndex) + } + } else { + activity.emptyView!!.hide() + } + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt index af88541..dc68caa 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt @@ -1,15 +1,12 @@ package com.casic.app.smartwell.view -import android.content.Context import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.base.BaseActivity -import com.casic.app.smartwell.extensions.show -import com.casic.app.smartwell.extensions.timestampToDate +import com.casic.app.smartwell.extensions.* import com.casic.app.smartwell.model.AlarmContentTypeModel import com.casic.app.smartwell.model.OrderStatusModel import com.casic.app.smartwell.utils.Constant @@ -25,13 +22,16 @@ class SearchWorkOrderActivity : BaseActivity() { - private val kTag = "SearchWorkOrderActivity" private lateinit var contentTypeViewModel: AlarmContentTypeViewModel private lateinit var orderStatusViewModel: OrderStatusViewModel private lateinit var inflater: LayoutInflater - private var alarmTypeModels: MutableList = ArrayList() + private lateinit var contentTypeAdapter: TagAdapter + private lateinit var orderStatusAdapter: TagAdapter + private var contentModels: MutableList = ArrayList() private var orderStatusModels: MutableList = ArrayList() - private val context: Context = this@SearchWorkOrderActivity + private var alarmContentType = "" + private var alarmLevel = "" + private var orderState = "" override fun initLayoutView(): Int = R.layout.activity_order_search @@ -45,7 +45,6 @@ inflater = LayoutInflater.from(this) //告警内容 contentTypeViewModel = ViewModelProvider(this).get(AlarmContentTypeViewModel::class.java) - //工单状态 orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java) } @@ -65,11 +64,10 @@ } else { bean = dataBean } - alarmTypeModels.add(bean) + contentModels.add(bean) } - - alarmContentLayout.adapter = - object : TagAdapter(alarmTypeModels) { + contentTypeAdapter = + object : TagAdapter(contentModels) { override fun getView( parent: FlowLayout?, position: Int, bean: AlarmContentTypeModel.DataBean.ListBean? @@ -78,19 +76,46 @@ R.layout.item_tag_flowlayout, orderStatusLayout, false ) as TextView - tagView.text = alarmTypeModels[position].name + tagView.text = contentModels[position].name return tagView } } - + alarmContentLayout.adapter = contentTypeAdapter + contentTypeAdapter.setSelectedList(0) alarmContentLayout.setOnTagClickListener { _, position, _ -> - //TODO - alarmTypeModels[position].name!!.show(context) + this.alarmContentType = contentModels[position].value.toString() true } } }) + val levelMaps: MutableList> = ArrayList() + for (i in 0..3) { + val map = HashMap() + map["name"] = i.toString().toChinese() + map["value"] = i.toLevel() + levelMaps.add(map) + } + val levelAdapter = object : TagAdapter>(levelMaps) { + override fun getView( + parent: FlowLayout?, + position: Int, map: Map? + ): View { + val tagView = inflater.inflate( + R.layout.item_tag_flowlayout, + orderStatusLayout, false + ) as TextView + tagView.text = levelMaps[position]["name"] + return tagView + } + } + alarmLevelLayout.adapter = levelAdapter + levelAdapter.setSelectedList(0) + alarmLevelLayout.setOnTagClickListener { _, position, _ -> + this.alarmLevel = levelMaps[position]["value"].toString() + true + } + orderStatusViewModel.obtainOrderStatus() orderStatusViewModel.listModel.observe(this, { if (it.code == 200) { @@ -106,8 +131,7 @@ } orderStatusModels.add(bean) } - - orderStatusLayout.adapter = + orderStatusAdapter = object : TagAdapter(orderStatusModels) { override fun getView( parent: FlowLayout?, @@ -121,18 +145,18 @@ return tagView } } - + orderStatusLayout.adapter = orderStatusAdapter + orderStatusAdapter.setSelectedList(0) orderStatusLayout.setOnTagClickListener { _, position, _ -> - //TODO - orderStatusModels[position].name!!.show(context) + this.orderState = orderStatusModels[position].value.toString() true } } }) - selectStartTimeView.setOnClickListener { + startTimeView.setOnClickListener { TimePickerDialog.Builder() - .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setThemeColor(R.color.mainThemeColor.convertColor(this)) .setTitleStringId("请选择开始时间") .setWheelItemTextSize(16) .setCyclic(false) @@ -140,13 +164,13 @@ .setMaxMillseconds(System.currentTimeMillis()) .setType(Type.YEAR_MONTH_DAY) .setCallBack { _: TimePickerDialog?, millSeconds: Long -> - selectStartTimeView.text = millSeconds.timestampToDate() + startTimeView.text = millSeconds.timestampToDate() }.build().show(supportFragmentManager, "year_month_day") } - selectEndTimeView.setOnClickListener { + endTimeView.setOnClickListener { TimePickerDialog.Builder() - .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setThemeColor(R.color.mainThemeColor.convertColor(this)) .setTitleStringId("请选择结束时间") .setWheelItemTextSize(16) .setCyclic(false) @@ -154,18 +178,42 @@ .setMaxMillseconds(System.currentTimeMillis()) .setType(Type.YEAR_MONTH_DAY) .setCallBack { _: TimePickerDialog?, millSeconds: Long -> - selectEndTimeView.text = millSeconds.timestampToDate() + if (millSeconds.isEarlierThanStart(startTimeView.text.toString())) { + "结束时间不合法,不能早于开始时间".show(this) + return@setCallBack + } + endTimeView.text = millSeconds.timestampToDate() }.build().show(supportFragmentManager, "year_month_day") } searchButton.setChangeAlphaWhenPress(true) searchButton.setOnClickListener { - + val wellCode = wellCodeView.text.toString().trim() + if (wellCode.isBlank()) { + "请输入窨井编号".show(this) + return@setOnClickListener + } + //页面跳转,将查询参数传过去 + navigatePageTo( + SearchResultActivity::class.java, addAll( + wellCode, + alarmContentType, + alarmLevel, + orderState, + startTimeView.text.toString(), + endTimeView.text.toString() + ) + ) } clearButton.setChangeAlphaWhenPress(true) clearButton.setOnClickListener { - + wellCodeView.text.clear() + contentTypeAdapter.setSelectedList(0) + levelAdapter.setSelectedList(0) + orderStatusAdapter.setSelectedList(0) + startTimeView.text = "" + endTimeView.text = "" } } } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e45158c..7460cc2 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -45,7 +45,9 @@ + + diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt index cba0198..e7ec8d8 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt @@ -25,7 +25,7 @@ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { val imageView = ImageView(context) val layoutWidth: Int = - SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 20f) + SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f) val margins: Int = QMUIDisplayHelper.dp2px(context, 3) val itemSize = (layoutWidth - 6 * margins) / 3 val params = LinearLayout.LayoutParams(itemSize, itemSize) diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt index 7780aaa..ad90885 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt @@ -17,4 +17,12 @@ } } return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt index de1c6c1..84ae8a8 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt @@ -33,10 +33,16 @@ startActivity(intent) } +fun Context.navigatePageTo(clazz: Class, values: ArrayList) { + val intent = Intent(this, clazz) + intent.putStringArrayListExtra(Constant.INTENT_PARAM, values) + startActivity(intent) +} + fun Context.navigatePageTo( clazz: Class, index: Int, - imageList: ArrayList? + imageList: ArrayList ) { val intent = Intent(this, clazz) intent.putExtra("index", index) 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 5f9ce7c..8ed51f4 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 @@ -23,4 +23,12 @@ "未知类型" } } +} + +fun Int.toLevel(): String { + return if (this == 0) { + "" + } else { + this.toString() + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt index ee3685d..3bc5d96 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt @@ -1,6 +1,20 @@ package com.casic.app.smartwell.extensions +import java.text.ParseException import java.text.SimpleDateFormat import java.util.* -fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) \ No newline at end of file +fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) + +fun Long.isEarlierThanStart(date: String): Boolean { + if (date.isBlank()) { + return false + } + val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA) + try { + return this < dateFormat.parse(date)!!.time + } catch (e: ParseException) { + + } + return true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt new file mode 100644 index 0000000..bd9cfa7 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt @@ -0,0 +1,12 @@ +package com.casic.app.smartwell.extensions + +import android.view.View +import com.qmuiteam.qmui.widget.QMUIEmptyView + +fun QMUIEmptyView.showEmptyPage(onButtonClickListener: View.OnClickListener) { + this.show(false, "抱歉,无法查询到相关记录", null, "重试", onButtonClickListener) +} + +fun QMUIEmptyView.showEmptyPage(title: String, onButtonClickListener: View.OnClickListener) { + this.show(false, title, null, "刷新", onButtonClickListener) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt index 7358b1c..2cdd63d 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt @@ -60,6 +60,7 @@ //窨井类型转换 fun String.toChinese(): String { return when (this) { + "0" -> "全部" "1" -> "一级" "2" -> "二级" "3" -> "三级" diff --git a/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt b/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt new file mode 100644 index 0000000..af7fd13 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt @@ -0,0 +1,52 @@ +package com.casic.app.smartwell.model + +class SearchResultModel { + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var rows: MutableList? = null + var total = 0 + + class RowsBean { + var alarmContent = 0 + var deptName: String? = null + var jobStatus: String? = null + var handleJobPerson: String? = null + var alarmContentName: String? = null + var shouldGetTime: String? = null + var wellCode: String? = null + var deptid: String? = null + var alarmTypeName: String? = null + var jobCode: String? = null + var jobBelongTo: String? = null + var jobFlag: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var jobStatusName: String? = null + var alarmValue: String? = null + var alarmId: String? = null + var alarmLevel: String? = null + var handleJobTime: String? = null + var tel: String? = null + var id: String? = null + var wellId: String? = null + var jobType: String? = null + var editable = 0 + var alarmTime: String? = null + var alarmMessage: String? = null + var staff: String? = null + var getJobTime: String? = null + var getJobPerson: String? = null + var shouldHandleTime: String? = null + var jobId: String? = null + var alarmType: String? = null + var alarmStatus: String? = null + var devcode: String? = null + var createTime: String? = null + var position: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index fd4e603..c342334 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -41,7 +41,7 @@ const val USER_DETAIL_MODEL = "userDetailModel" const val INTENT_PARAM = "intentParam" - val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher) - val HOME_ITEMS = arrayOf("闸井管理", "布防撤防") + val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher) + val HOME_ITEMS = arrayOf("闸井管理", "超时工单", "布防撤防") val SUB_PAGE_TITLES = arrayOf("待处理", "待确认", "处理中", "已完成") } \ 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 9c34038..7a5ca39 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 @@ -234,6 +234,22 @@ ): OrderStatusModel /** + * 查询工单 + * */ + @GET("/job/searchList") + suspend fun obtainSearchResult( + @Header("token") token: String, + @Query("keywords") keywords: String?, + @Query("alarmContent") alarmContent: String?, + @Query("alarmLevel") alarmLevel: String?, + @Query("jobStatus") jobStatus: String?, + @Query("beginTime") beginTime: String?, + @Query("endTime") endTime: String?, + @Query("limit") limit: Int, + @Query("offset") offset: Int + ): SearchResultModel + + /** * 获取用户信息 */ @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 a7106b5..945f6a3 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 @@ -175,6 +175,31 @@ } /** + * 查询工单 + */ + suspend fun obtainSearchResult( + keywords: String?, + alarmContent: String?, + alarmLevel: String?, + jobStatus: String?, + beginTime: String?, + endTime: String?, + page: Int + ): SearchResultModel { + return api.obtainSearchResult( + AuthenticationHelper.token!!, + keywords, + alarmContent, + alarmLevel, + jobStatus, + beginTime, + endTime, + Constant.PAGE_LIMIT, + page + ) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): String { diff --git a/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt index cfc4e0f..45af48a 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt @@ -98,7 +98,7 @@ imageRecyclerView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() - val imageArray = orderDetail.firstStatePhotos.toString().split(";") + val imageArray = orderDetail.firstStatePhotos.toString().split(",") imageArray.forEach { path -> if (path != "") { urls.add(path.combineImagePath()) diff --git a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt index 1a3e670..36075bd 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt @@ -197,7 +197,7 @@ return@setOnClickListener } val state = sceneEditView.text.toString().trim() - if (state == "") { + if (state.isBlank()) { "请输入现场情况".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt index b7a51ce..97e1f59 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt @@ -161,7 +161,7 @@ imageRecyclerView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() - val imageArray = orderDetail.firstStatePhotos.toString().split(";") + val imageArray = orderDetail.firstStatePhotos.toString().split(",") imageArray.forEach { path -> if (path != "") { urls.add(path.combineImagePath()) @@ -247,7 +247,7 @@ return@setOnClickListener } val state = sceneEditView.text.toString().trim() - if (state == "") { + if (state.isBlank()) { "请输入维护情况".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt index e5698a1..cd4fdff 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt @@ -1,7 +1,6 @@ package com.casic.app.smartwell.view import android.text.Editable -import android.text.TextUtils import android.text.TextWatcher import android.view.KeyEvent import android.view.inputmethod.EditorInfo @@ -67,13 +66,13 @@ false } loginButton.setOnClickListener { - val account = userNameView.text.toString() - val userPassword = userPasswordView.text.toString() - if (TextUtils.isEmpty(account)) { + val account = userNameView.text.toString().trim() + val userPassword = userPasswordView.text.toString().trim() + if (account.isBlank()) { "用户名不能为空".show(this) return@setOnClickListener } - if (TextUtils.isEmpty(userPassword)) { + if (userPassword.isBlank()) { "密码不能为空".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt new file mode 100644 index 0000000..453a2c9 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt @@ -0,0 +1,21 @@ +package com.casic.app.smartwell.view + +import com.casic.app.smartwell.R +import com.casic.app.smartwell.base.BaseActivity + +class OvertimeOrderActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_order_overtime + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt new file mode 100644 index 0000000..8228673 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt @@ -0,0 +1,129 @@ +package com.casic.app.smartwell.view + +import android.os.Handler +import android.os.Looper +import android.os.Message +import android.view.View +import androidx.lifecycle.ViewModelProvider +import com.casic.app.smartwell.R +import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage +import com.casic.app.smartwell.model.SearchResultModel +import com.casic.app.smartwell.utils.Constant +import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.vm.SearchOrderViewModel +import kotlinx.android.synthetic.main.activity_order_search_result.* +import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* +import java.lang.ref.WeakReference + +class SearchResultActivity : BaseActivity() { + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var searchOrderViewModel: SearchOrderViewModel + private lateinit var args: ArrayList + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initLayoutView(): Int = R.layout.activity_order_search_result + + override fun setupTopBarLayout() { + titleView.text = "查询结果" + leftBackView.visibility = View.VISIBLE + leftBackView.setOnClickListener { finish() } + } + + override fun initData() { + args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! + weakReferenceHandler = WeakReferenceHandler(this) + searchOrderViewModel = ViewModelProvider(this).get(SearchOrderViewModel::class.java) + } + + override fun initEvent() { + obtainSearchResult(args, pageIndex) + searchOrderViewModel.listModel.observe(this, { + if (it.code == 200) { + val dataRows = it.data?.rows + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows!! + resultRefreshLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows?.size == 0) { + "到底了,别拉了".show(this) + } + dataBeans.addAll(dataRows!!) + resultRefreshLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows!! + } + } + weakReferenceHandler.sendEmptyMessage(2022040101) + } + }) + searchOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } + }) + resultRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainSearchResult(args, pageIndex) + } + resultRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainSearchResult(args, pageIndex) + } + } + + private fun obtainSearchResult(args: ArrayList, pageIndex: Int) { + searchOrderViewModel.obtainSearchResult( + keywords = args[0], + alarmContent = args[1], + alarmLevel = args[2], + jobStatus = args[3], + beginTime = args[4], + endTime = args[5], + page = pageIndex + ) + } + + private class WeakReferenceHandler(activity: SearchResultActivity) : + Handler(Looper.getMainLooper()) { + private val reference: WeakReference = WeakReference(activity) + + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val activity = reference.get()!! + if (msg.what == 2022040101) { + if (activity.isRefresh || activity.isLoadMore) { +// activity.wellOperationAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (activity.dataBeans.size == 0) { + activity.emptyView!!.showEmptyPage { + activity.obtainSearchResult(activity.args, activity.pageIndex) + } + } else { + activity.emptyView!!.hide() + } + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt index af88541..dc68caa 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt @@ -1,15 +1,12 @@ package com.casic.app.smartwell.view -import android.content.Context import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.base.BaseActivity -import com.casic.app.smartwell.extensions.show -import com.casic.app.smartwell.extensions.timestampToDate +import com.casic.app.smartwell.extensions.* import com.casic.app.smartwell.model.AlarmContentTypeModel import com.casic.app.smartwell.model.OrderStatusModel import com.casic.app.smartwell.utils.Constant @@ -25,13 +22,16 @@ class SearchWorkOrderActivity : BaseActivity() { - private val kTag = "SearchWorkOrderActivity" private lateinit var contentTypeViewModel: AlarmContentTypeViewModel private lateinit var orderStatusViewModel: OrderStatusViewModel private lateinit var inflater: LayoutInflater - private var alarmTypeModels: MutableList = ArrayList() + private lateinit var contentTypeAdapter: TagAdapter + private lateinit var orderStatusAdapter: TagAdapter + private var contentModels: MutableList = ArrayList() private var orderStatusModels: MutableList = ArrayList() - private val context: Context = this@SearchWorkOrderActivity + private var alarmContentType = "" + private var alarmLevel = "" + private var orderState = "" override fun initLayoutView(): Int = R.layout.activity_order_search @@ -45,7 +45,6 @@ inflater = LayoutInflater.from(this) //告警内容 contentTypeViewModel = ViewModelProvider(this).get(AlarmContentTypeViewModel::class.java) - //工单状态 orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java) } @@ -65,11 +64,10 @@ } else { bean = dataBean } - alarmTypeModels.add(bean) + contentModels.add(bean) } - - alarmContentLayout.adapter = - object : TagAdapter(alarmTypeModels) { + contentTypeAdapter = + object : TagAdapter(contentModels) { override fun getView( parent: FlowLayout?, position: Int, bean: AlarmContentTypeModel.DataBean.ListBean? @@ -78,19 +76,46 @@ R.layout.item_tag_flowlayout, orderStatusLayout, false ) as TextView - tagView.text = alarmTypeModels[position].name + tagView.text = contentModels[position].name return tagView } } - + alarmContentLayout.adapter = contentTypeAdapter + contentTypeAdapter.setSelectedList(0) alarmContentLayout.setOnTagClickListener { _, position, _ -> - //TODO - alarmTypeModels[position].name!!.show(context) + this.alarmContentType = contentModels[position].value.toString() true } } }) + val levelMaps: MutableList> = ArrayList() + for (i in 0..3) { + val map = HashMap() + map["name"] = i.toString().toChinese() + map["value"] = i.toLevel() + levelMaps.add(map) + } + val levelAdapter = object : TagAdapter>(levelMaps) { + override fun getView( + parent: FlowLayout?, + position: Int, map: Map? + ): View { + val tagView = inflater.inflate( + R.layout.item_tag_flowlayout, + orderStatusLayout, false + ) as TextView + tagView.text = levelMaps[position]["name"] + return tagView + } + } + alarmLevelLayout.adapter = levelAdapter + levelAdapter.setSelectedList(0) + alarmLevelLayout.setOnTagClickListener { _, position, _ -> + this.alarmLevel = levelMaps[position]["value"].toString() + true + } + orderStatusViewModel.obtainOrderStatus() orderStatusViewModel.listModel.observe(this, { if (it.code == 200) { @@ -106,8 +131,7 @@ } orderStatusModels.add(bean) } - - orderStatusLayout.adapter = + orderStatusAdapter = object : TagAdapter(orderStatusModels) { override fun getView( parent: FlowLayout?, @@ -121,18 +145,18 @@ return tagView } } - + orderStatusLayout.adapter = orderStatusAdapter + orderStatusAdapter.setSelectedList(0) orderStatusLayout.setOnTagClickListener { _, position, _ -> - //TODO - orderStatusModels[position].name!!.show(context) + this.orderState = orderStatusModels[position].value.toString() true } } }) - selectStartTimeView.setOnClickListener { + startTimeView.setOnClickListener { TimePickerDialog.Builder() - .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setThemeColor(R.color.mainThemeColor.convertColor(this)) .setTitleStringId("请选择开始时间") .setWheelItemTextSize(16) .setCyclic(false) @@ -140,13 +164,13 @@ .setMaxMillseconds(System.currentTimeMillis()) .setType(Type.YEAR_MONTH_DAY) .setCallBack { _: TimePickerDialog?, millSeconds: Long -> - selectStartTimeView.text = millSeconds.timestampToDate() + startTimeView.text = millSeconds.timestampToDate() }.build().show(supportFragmentManager, "year_month_day") } - selectEndTimeView.setOnClickListener { + endTimeView.setOnClickListener { TimePickerDialog.Builder() - .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setThemeColor(R.color.mainThemeColor.convertColor(this)) .setTitleStringId("请选择结束时间") .setWheelItemTextSize(16) .setCyclic(false) @@ -154,18 +178,42 @@ .setMaxMillseconds(System.currentTimeMillis()) .setType(Type.YEAR_MONTH_DAY) .setCallBack { _: TimePickerDialog?, millSeconds: Long -> - selectEndTimeView.text = millSeconds.timestampToDate() + if (millSeconds.isEarlierThanStart(startTimeView.text.toString())) { + "结束时间不合法,不能早于开始时间".show(this) + return@setCallBack + } + endTimeView.text = millSeconds.timestampToDate() }.build().show(supportFragmentManager, "year_month_day") } searchButton.setChangeAlphaWhenPress(true) searchButton.setOnClickListener { - + val wellCode = wellCodeView.text.toString().trim() + if (wellCode.isBlank()) { + "请输入窨井编号".show(this) + return@setOnClickListener + } + //页面跳转,将查询参数传过去 + navigatePageTo( + SearchResultActivity::class.java, addAll( + wellCode, + alarmContentType, + alarmLevel, + orderState, + startTimeView.text.toString(), + endTimeView.text.toString() + ) + ) } clearButton.setChangeAlphaWhenPress(true) clearButton.setOnClickListener { - + wellCodeView.text.clear() + contentTypeAdapter.setSelectedList(0) + levelAdapter.setSelectedList(0) + orderStatusAdapter.setSelectedList(0) + startTimeView.text = "" + endTimeView.text = "" } } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt index e907ca4..e0cc32f 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt @@ -15,6 +15,7 @@ import com.casic.app.smartwell.base.BaseActivity import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.extensions.showRouteOnMap import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel @@ -23,6 +24,7 @@ import com.casic.app.smartwell.widgets.EasyPopupWindow import kotlinx.android.synthetic.main.activity_well_management.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* import kotlinx.android.synthetic.main.include_search_bar.* import java.lang.ref.WeakReference @@ -168,7 +170,13 @@ activity.wellListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (activity.dataBeans.size == 0) { - activity.emptyView!!.show("抱歉,无法查询到相关记录", null) + activity.emptyView!!.showEmptyPage { + activity.obtainWellList( + activity.keywords, + activity.wellType, + activity.pageIndex + ) + } } else { activity.emptyView!!.hide() activity.wellListAdapter = WellListAdapter(activity, activity.dataBeans) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e45158c..7460cc2 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -45,7 +45,9 @@ + + diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt index cba0198..e7ec8d8 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt @@ -25,7 +25,7 @@ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { val imageView = ImageView(context) val layoutWidth: Int = - SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 20f) + SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f) val margins: Int = QMUIDisplayHelper.dp2px(context, 3) val itemSize = (layoutWidth - 6 * margins) / 3 val params = LinearLayout.LayoutParams(itemSize, itemSize) diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt index 7780aaa..ad90885 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt @@ -17,4 +17,12 @@ } } return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt index de1c6c1..84ae8a8 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt @@ -33,10 +33,16 @@ startActivity(intent) } +fun Context.navigatePageTo(clazz: Class, values: ArrayList) { + val intent = Intent(this, clazz) + intent.putStringArrayListExtra(Constant.INTENT_PARAM, values) + startActivity(intent) +} + fun Context.navigatePageTo( clazz: Class, index: Int, - imageList: ArrayList? + imageList: ArrayList ) { val intent = Intent(this, clazz) intent.putExtra("index", index) 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 5f9ce7c..8ed51f4 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 @@ -23,4 +23,12 @@ "未知类型" } } +} + +fun Int.toLevel(): String { + return if (this == 0) { + "" + } else { + this.toString() + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt index ee3685d..3bc5d96 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt @@ -1,6 +1,20 @@ package com.casic.app.smartwell.extensions +import java.text.ParseException import java.text.SimpleDateFormat import java.util.* -fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) \ No newline at end of file +fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) + +fun Long.isEarlierThanStart(date: String): Boolean { + if (date.isBlank()) { + return false + } + val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA) + try { + return this < dateFormat.parse(date)!!.time + } catch (e: ParseException) { + + } + return true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt new file mode 100644 index 0000000..bd9cfa7 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt @@ -0,0 +1,12 @@ +package com.casic.app.smartwell.extensions + +import android.view.View +import com.qmuiteam.qmui.widget.QMUIEmptyView + +fun QMUIEmptyView.showEmptyPage(onButtonClickListener: View.OnClickListener) { + this.show(false, "抱歉,无法查询到相关记录", null, "重试", onButtonClickListener) +} + +fun QMUIEmptyView.showEmptyPage(title: String, onButtonClickListener: View.OnClickListener) { + this.show(false, title, null, "刷新", onButtonClickListener) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt index 7358b1c..2cdd63d 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt @@ -60,6 +60,7 @@ //窨井类型转换 fun String.toChinese(): String { return when (this) { + "0" -> "全部" "1" -> "一级" "2" -> "二级" "3" -> "三级" diff --git a/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt b/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt new file mode 100644 index 0000000..af7fd13 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt @@ -0,0 +1,52 @@ +package com.casic.app.smartwell.model + +class SearchResultModel { + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var rows: MutableList? = null + var total = 0 + + class RowsBean { + var alarmContent = 0 + var deptName: String? = null + var jobStatus: String? = null + var handleJobPerson: String? = null + var alarmContentName: String? = null + var shouldGetTime: String? = null + var wellCode: String? = null + var deptid: String? = null + var alarmTypeName: String? = null + var jobCode: String? = null + var jobBelongTo: String? = null + var jobFlag: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var jobStatusName: String? = null + var alarmValue: String? = null + var alarmId: String? = null + var alarmLevel: String? = null + var handleJobTime: String? = null + var tel: String? = null + var id: String? = null + var wellId: String? = null + var jobType: String? = null + var editable = 0 + var alarmTime: String? = null + var alarmMessage: String? = null + var staff: String? = null + var getJobTime: String? = null + var getJobPerson: String? = null + var shouldHandleTime: String? = null + var jobId: String? = null + var alarmType: String? = null + var alarmStatus: String? = null + var devcode: String? = null + var createTime: String? = null + var position: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index fd4e603..c342334 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -41,7 +41,7 @@ const val USER_DETAIL_MODEL = "userDetailModel" const val INTENT_PARAM = "intentParam" - val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher) - val HOME_ITEMS = arrayOf("闸井管理", "布防撤防") + val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher) + val HOME_ITEMS = arrayOf("闸井管理", "超时工单", "布防撤防") val SUB_PAGE_TITLES = arrayOf("待处理", "待确认", "处理中", "已完成") } \ 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 9c34038..7a5ca39 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 @@ -234,6 +234,22 @@ ): OrderStatusModel /** + * 查询工单 + * */ + @GET("/job/searchList") + suspend fun obtainSearchResult( + @Header("token") token: String, + @Query("keywords") keywords: String?, + @Query("alarmContent") alarmContent: String?, + @Query("alarmLevel") alarmLevel: String?, + @Query("jobStatus") jobStatus: String?, + @Query("beginTime") beginTime: String?, + @Query("endTime") endTime: String?, + @Query("limit") limit: Int, + @Query("offset") offset: Int + ): SearchResultModel + + /** * 获取用户信息 */ @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 a7106b5..945f6a3 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 @@ -175,6 +175,31 @@ } /** + * 查询工单 + */ + suspend fun obtainSearchResult( + keywords: String?, + alarmContent: String?, + alarmLevel: String?, + jobStatus: String?, + beginTime: String?, + endTime: String?, + page: Int + ): SearchResultModel { + return api.obtainSearchResult( + AuthenticationHelper.token!!, + keywords, + alarmContent, + alarmLevel, + jobStatus, + beginTime, + endTime, + Constant.PAGE_LIMIT, + page + ) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): String { diff --git a/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt index cfc4e0f..45af48a 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt @@ -98,7 +98,7 @@ imageRecyclerView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() - val imageArray = orderDetail.firstStatePhotos.toString().split(";") + val imageArray = orderDetail.firstStatePhotos.toString().split(",") imageArray.forEach { path -> if (path != "") { urls.add(path.combineImagePath()) diff --git a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt index 1a3e670..36075bd 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt @@ -197,7 +197,7 @@ return@setOnClickListener } val state = sceneEditView.text.toString().trim() - if (state == "") { + if (state.isBlank()) { "请输入现场情况".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt index b7a51ce..97e1f59 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt @@ -161,7 +161,7 @@ imageRecyclerView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() - val imageArray = orderDetail.firstStatePhotos.toString().split(";") + val imageArray = orderDetail.firstStatePhotos.toString().split(",") imageArray.forEach { path -> if (path != "") { urls.add(path.combineImagePath()) @@ -247,7 +247,7 @@ return@setOnClickListener } val state = sceneEditView.text.toString().trim() - if (state == "") { + if (state.isBlank()) { "请输入维护情况".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt index e5698a1..cd4fdff 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt @@ -1,7 +1,6 @@ package com.casic.app.smartwell.view import android.text.Editable -import android.text.TextUtils import android.text.TextWatcher import android.view.KeyEvent import android.view.inputmethod.EditorInfo @@ -67,13 +66,13 @@ false } loginButton.setOnClickListener { - val account = userNameView.text.toString() - val userPassword = userPasswordView.text.toString() - if (TextUtils.isEmpty(account)) { + val account = userNameView.text.toString().trim() + val userPassword = userPasswordView.text.toString().trim() + if (account.isBlank()) { "用户名不能为空".show(this) return@setOnClickListener } - if (TextUtils.isEmpty(userPassword)) { + if (userPassword.isBlank()) { "密码不能为空".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt new file mode 100644 index 0000000..453a2c9 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt @@ -0,0 +1,21 @@ +package com.casic.app.smartwell.view + +import com.casic.app.smartwell.R +import com.casic.app.smartwell.base.BaseActivity + +class OvertimeOrderActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_order_overtime + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt new file mode 100644 index 0000000..8228673 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt @@ -0,0 +1,129 @@ +package com.casic.app.smartwell.view + +import android.os.Handler +import android.os.Looper +import android.os.Message +import android.view.View +import androidx.lifecycle.ViewModelProvider +import com.casic.app.smartwell.R +import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage +import com.casic.app.smartwell.model.SearchResultModel +import com.casic.app.smartwell.utils.Constant +import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.vm.SearchOrderViewModel +import kotlinx.android.synthetic.main.activity_order_search_result.* +import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* +import java.lang.ref.WeakReference + +class SearchResultActivity : BaseActivity() { + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var searchOrderViewModel: SearchOrderViewModel + private lateinit var args: ArrayList + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initLayoutView(): Int = R.layout.activity_order_search_result + + override fun setupTopBarLayout() { + titleView.text = "查询结果" + leftBackView.visibility = View.VISIBLE + leftBackView.setOnClickListener { finish() } + } + + override fun initData() { + args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! + weakReferenceHandler = WeakReferenceHandler(this) + searchOrderViewModel = ViewModelProvider(this).get(SearchOrderViewModel::class.java) + } + + override fun initEvent() { + obtainSearchResult(args, pageIndex) + searchOrderViewModel.listModel.observe(this, { + if (it.code == 200) { + val dataRows = it.data?.rows + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows!! + resultRefreshLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows?.size == 0) { + "到底了,别拉了".show(this) + } + dataBeans.addAll(dataRows!!) + resultRefreshLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows!! + } + } + weakReferenceHandler.sendEmptyMessage(2022040101) + } + }) + searchOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } + }) + resultRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainSearchResult(args, pageIndex) + } + resultRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainSearchResult(args, pageIndex) + } + } + + private fun obtainSearchResult(args: ArrayList, pageIndex: Int) { + searchOrderViewModel.obtainSearchResult( + keywords = args[0], + alarmContent = args[1], + alarmLevel = args[2], + jobStatus = args[3], + beginTime = args[4], + endTime = args[5], + page = pageIndex + ) + } + + private class WeakReferenceHandler(activity: SearchResultActivity) : + Handler(Looper.getMainLooper()) { + private val reference: WeakReference = WeakReference(activity) + + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val activity = reference.get()!! + if (msg.what == 2022040101) { + if (activity.isRefresh || activity.isLoadMore) { +// activity.wellOperationAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (activity.dataBeans.size == 0) { + activity.emptyView!!.showEmptyPage { + activity.obtainSearchResult(activity.args, activity.pageIndex) + } + } else { + activity.emptyView!!.hide() + } + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt index af88541..dc68caa 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt @@ -1,15 +1,12 @@ package com.casic.app.smartwell.view -import android.content.Context import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.base.BaseActivity -import com.casic.app.smartwell.extensions.show -import com.casic.app.smartwell.extensions.timestampToDate +import com.casic.app.smartwell.extensions.* import com.casic.app.smartwell.model.AlarmContentTypeModel import com.casic.app.smartwell.model.OrderStatusModel import com.casic.app.smartwell.utils.Constant @@ -25,13 +22,16 @@ class SearchWorkOrderActivity : BaseActivity() { - private val kTag = "SearchWorkOrderActivity" private lateinit var contentTypeViewModel: AlarmContentTypeViewModel private lateinit var orderStatusViewModel: OrderStatusViewModel private lateinit var inflater: LayoutInflater - private var alarmTypeModels: MutableList = ArrayList() + private lateinit var contentTypeAdapter: TagAdapter + private lateinit var orderStatusAdapter: TagAdapter + private var contentModels: MutableList = ArrayList() private var orderStatusModels: MutableList = ArrayList() - private val context: Context = this@SearchWorkOrderActivity + private var alarmContentType = "" + private var alarmLevel = "" + private var orderState = "" override fun initLayoutView(): Int = R.layout.activity_order_search @@ -45,7 +45,6 @@ inflater = LayoutInflater.from(this) //告警内容 contentTypeViewModel = ViewModelProvider(this).get(AlarmContentTypeViewModel::class.java) - //工单状态 orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java) } @@ -65,11 +64,10 @@ } else { bean = dataBean } - alarmTypeModels.add(bean) + contentModels.add(bean) } - - alarmContentLayout.adapter = - object : TagAdapter(alarmTypeModels) { + contentTypeAdapter = + object : TagAdapter(contentModels) { override fun getView( parent: FlowLayout?, position: Int, bean: AlarmContentTypeModel.DataBean.ListBean? @@ -78,19 +76,46 @@ R.layout.item_tag_flowlayout, orderStatusLayout, false ) as TextView - tagView.text = alarmTypeModels[position].name + tagView.text = contentModels[position].name return tagView } } - + alarmContentLayout.adapter = contentTypeAdapter + contentTypeAdapter.setSelectedList(0) alarmContentLayout.setOnTagClickListener { _, position, _ -> - //TODO - alarmTypeModels[position].name!!.show(context) + this.alarmContentType = contentModels[position].value.toString() true } } }) + val levelMaps: MutableList> = ArrayList() + for (i in 0..3) { + val map = HashMap() + map["name"] = i.toString().toChinese() + map["value"] = i.toLevel() + levelMaps.add(map) + } + val levelAdapter = object : TagAdapter>(levelMaps) { + override fun getView( + parent: FlowLayout?, + position: Int, map: Map? + ): View { + val tagView = inflater.inflate( + R.layout.item_tag_flowlayout, + orderStatusLayout, false + ) as TextView + tagView.text = levelMaps[position]["name"] + return tagView + } + } + alarmLevelLayout.adapter = levelAdapter + levelAdapter.setSelectedList(0) + alarmLevelLayout.setOnTagClickListener { _, position, _ -> + this.alarmLevel = levelMaps[position]["value"].toString() + true + } + orderStatusViewModel.obtainOrderStatus() orderStatusViewModel.listModel.observe(this, { if (it.code == 200) { @@ -106,8 +131,7 @@ } orderStatusModels.add(bean) } - - orderStatusLayout.adapter = + orderStatusAdapter = object : TagAdapter(orderStatusModels) { override fun getView( parent: FlowLayout?, @@ -121,18 +145,18 @@ return tagView } } - + orderStatusLayout.adapter = orderStatusAdapter + orderStatusAdapter.setSelectedList(0) orderStatusLayout.setOnTagClickListener { _, position, _ -> - //TODO - orderStatusModels[position].name!!.show(context) + this.orderState = orderStatusModels[position].value.toString() true } } }) - selectStartTimeView.setOnClickListener { + startTimeView.setOnClickListener { TimePickerDialog.Builder() - .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setThemeColor(R.color.mainThemeColor.convertColor(this)) .setTitleStringId("请选择开始时间") .setWheelItemTextSize(16) .setCyclic(false) @@ -140,13 +164,13 @@ .setMaxMillseconds(System.currentTimeMillis()) .setType(Type.YEAR_MONTH_DAY) .setCallBack { _: TimePickerDialog?, millSeconds: Long -> - selectStartTimeView.text = millSeconds.timestampToDate() + startTimeView.text = millSeconds.timestampToDate() }.build().show(supportFragmentManager, "year_month_day") } - selectEndTimeView.setOnClickListener { + endTimeView.setOnClickListener { TimePickerDialog.Builder() - .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setThemeColor(R.color.mainThemeColor.convertColor(this)) .setTitleStringId("请选择结束时间") .setWheelItemTextSize(16) .setCyclic(false) @@ -154,18 +178,42 @@ .setMaxMillseconds(System.currentTimeMillis()) .setType(Type.YEAR_MONTH_DAY) .setCallBack { _: TimePickerDialog?, millSeconds: Long -> - selectEndTimeView.text = millSeconds.timestampToDate() + if (millSeconds.isEarlierThanStart(startTimeView.text.toString())) { + "结束时间不合法,不能早于开始时间".show(this) + return@setCallBack + } + endTimeView.text = millSeconds.timestampToDate() }.build().show(supportFragmentManager, "year_month_day") } searchButton.setChangeAlphaWhenPress(true) searchButton.setOnClickListener { - + val wellCode = wellCodeView.text.toString().trim() + if (wellCode.isBlank()) { + "请输入窨井编号".show(this) + return@setOnClickListener + } + //页面跳转,将查询参数传过去 + navigatePageTo( + SearchResultActivity::class.java, addAll( + wellCode, + alarmContentType, + alarmLevel, + orderState, + startTimeView.text.toString(), + endTimeView.text.toString() + ) + ) } clearButton.setChangeAlphaWhenPress(true) clearButton.setOnClickListener { - + wellCodeView.text.clear() + contentTypeAdapter.setSelectedList(0) + levelAdapter.setSelectedList(0) + orderStatusAdapter.setSelectedList(0) + startTimeView.text = "" + endTimeView.text = "" } } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt index e907ca4..e0cc32f 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt @@ -15,6 +15,7 @@ import com.casic.app.smartwell.base.BaseActivity import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.extensions.showRouteOnMap import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel @@ -23,6 +24,7 @@ import com.casic.app.smartwell.widgets.EasyPopupWindow import kotlinx.android.synthetic.main.activity_well_management.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* import kotlinx.android.synthetic.main.include_search_bar.* import java.lang.ref.WeakReference @@ -168,7 +170,13 @@ activity.wellListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (activity.dataBeans.size == 0) { - activity.emptyView!!.show("抱歉,无法查询到相关记录", null) + activity.emptyView!!.showEmptyPage { + activity.obtainWellList( + activity.keywords, + activity.wellType, + activity.pageIndex + ) + } } else { activity.emptyView!!.hide() activity.wellListAdapter = WellListAdapter(activity, activity.dataBeans) diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt index 1259b72..2137a40 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt @@ -6,12 +6,14 @@ import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.SensorListAdapter import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.utils.DialogHelper import com.casic.app.smartwell.utils.LoadState import com.casic.app.smartwell.vm.WellMonitorViewModel import kotlinx.android.synthetic.main.activity_well_monitor.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* class WellMonitorActivity : BaseActivity() { @@ -36,7 +38,9 @@ wellMonitorViewModel.monitorModel.observe(this, { if (it.code == 200) { if (it.data?.size == 0) { - emptyView!!.show("该井下无设备,或设备已离线,请检查", null) + emptyView!!.showEmptyPage("抱歉,该井下无设备,或设备已离线") { + wellMonitorViewModel.obtainMonitorResult(id = wellId) + } } else { emptyView!!.hide() val sensorListAdapter = SensorListAdapter(this, it.data!!) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e45158c..7460cc2 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -45,7 +45,9 @@ + + diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt index cba0198..e7ec8d8 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt @@ -25,7 +25,7 @@ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { val imageView = ImageView(context) val layoutWidth: Int = - SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 20f) + SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f) val margins: Int = QMUIDisplayHelper.dp2px(context, 3) val itemSize = (layoutWidth - 6 * margins) / 3 val params = LinearLayout.LayoutParams(itemSize, itemSize) diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt index 7780aaa..ad90885 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt @@ -17,4 +17,12 @@ } } return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt index de1c6c1..84ae8a8 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt @@ -33,10 +33,16 @@ startActivity(intent) } +fun Context.navigatePageTo(clazz: Class, values: ArrayList) { + val intent = Intent(this, clazz) + intent.putStringArrayListExtra(Constant.INTENT_PARAM, values) + startActivity(intent) +} + fun Context.navigatePageTo( clazz: Class, index: Int, - imageList: ArrayList? + imageList: ArrayList ) { val intent = Intent(this, clazz) intent.putExtra("index", index) 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 5f9ce7c..8ed51f4 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 @@ -23,4 +23,12 @@ "未知类型" } } +} + +fun Int.toLevel(): String { + return if (this == 0) { + "" + } else { + this.toString() + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt index ee3685d..3bc5d96 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt @@ -1,6 +1,20 @@ package com.casic.app.smartwell.extensions +import java.text.ParseException import java.text.SimpleDateFormat import java.util.* -fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) \ No newline at end of file +fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) + +fun Long.isEarlierThanStart(date: String): Boolean { + if (date.isBlank()) { + return false + } + val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA) + try { + return this < dateFormat.parse(date)!!.time + } catch (e: ParseException) { + + } + return true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt new file mode 100644 index 0000000..bd9cfa7 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt @@ -0,0 +1,12 @@ +package com.casic.app.smartwell.extensions + +import android.view.View +import com.qmuiteam.qmui.widget.QMUIEmptyView + +fun QMUIEmptyView.showEmptyPage(onButtonClickListener: View.OnClickListener) { + this.show(false, "抱歉,无法查询到相关记录", null, "重试", onButtonClickListener) +} + +fun QMUIEmptyView.showEmptyPage(title: String, onButtonClickListener: View.OnClickListener) { + this.show(false, title, null, "刷新", onButtonClickListener) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt index 7358b1c..2cdd63d 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt @@ -60,6 +60,7 @@ //窨井类型转换 fun String.toChinese(): String { return when (this) { + "0" -> "全部" "1" -> "一级" "2" -> "二级" "3" -> "三级" diff --git a/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt b/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt new file mode 100644 index 0000000..af7fd13 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt @@ -0,0 +1,52 @@ +package com.casic.app.smartwell.model + +class SearchResultModel { + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var rows: MutableList? = null + var total = 0 + + class RowsBean { + var alarmContent = 0 + var deptName: String? = null + var jobStatus: String? = null + var handleJobPerson: String? = null + var alarmContentName: String? = null + var shouldGetTime: String? = null + var wellCode: String? = null + var deptid: String? = null + var alarmTypeName: String? = null + var jobCode: String? = null + var jobBelongTo: String? = null + var jobFlag: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var jobStatusName: String? = null + var alarmValue: String? = null + var alarmId: String? = null + var alarmLevel: String? = null + var handleJobTime: String? = null + var tel: String? = null + var id: String? = null + var wellId: String? = null + var jobType: String? = null + var editable = 0 + var alarmTime: String? = null + var alarmMessage: String? = null + var staff: String? = null + var getJobTime: String? = null + var getJobPerson: String? = null + var shouldHandleTime: String? = null + var jobId: String? = null + var alarmType: String? = null + var alarmStatus: String? = null + var devcode: String? = null + var createTime: String? = null + var position: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index fd4e603..c342334 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -41,7 +41,7 @@ const val USER_DETAIL_MODEL = "userDetailModel" const val INTENT_PARAM = "intentParam" - val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher) - val HOME_ITEMS = arrayOf("闸井管理", "布防撤防") + val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher) + val HOME_ITEMS = arrayOf("闸井管理", "超时工单", "布防撤防") val SUB_PAGE_TITLES = arrayOf("待处理", "待确认", "处理中", "已完成") } \ 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 9c34038..7a5ca39 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 @@ -234,6 +234,22 @@ ): OrderStatusModel /** + * 查询工单 + * */ + @GET("/job/searchList") + suspend fun obtainSearchResult( + @Header("token") token: String, + @Query("keywords") keywords: String?, + @Query("alarmContent") alarmContent: String?, + @Query("alarmLevel") alarmLevel: String?, + @Query("jobStatus") jobStatus: String?, + @Query("beginTime") beginTime: String?, + @Query("endTime") endTime: String?, + @Query("limit") limit: Int, + @Query("offset") offset: Int + ): SearchResultModel + + /** * 获取用户信息 */ @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 a7106b5..945f6a3 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 @@ -175,6 +175,31 @@ } /** + * 查询工单 + */ + suspend fun obtainSearchResult( + keywords: String?, + alarmContent: String?, + alarmLevel: String?, + jobStatus: String?, + beginTime: String?, + endTime: String?, + page: Int + ): SearchResultModel { + return api.obtainSearchResult( + AuthenticationHelper.token!!, + keywords, + alarmContent, + alarmLevel, + jobStatus, + beginTime, + endTime, + Constant.PAGE_LIMIT, + page + ) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): String { diff --git a/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt index cfc4e0f..45af48a 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt @@ -98,7 +98,7 @@ imageRecyclerView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() - val imageArray = orderDetail.firstStatePhotos.toString().split(";") + val imageArray = orderDetail.firstStatePhotos.toString().split(",") imageArray.forEach { path -> if (path != "") { urls.add(path.combineImagePath()) diff --git a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt index 1a3e670..36075bd 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt @@ -197,7 +197,7 @@ return@setOnClickListener } val state = sceneEditView.text.toString().trim() - if (state == "") { + if (state.isBlank()) { "请输入现场情况".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt index b7a51ce..97e1f59 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt @@ -161,7 +161,7 @@ imageRecyclerView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() - val imageArray = orderDetail.firstStatePhotos.toString().split(";") + val imageArray = orderDetail.firstStatePhotos.toString().split(",") imageArray.forEach { path -> if (path != "") { urls.add(path.combineImagePath()) @@ -247,7 +247,7 @@ return@setOnClickListener } val state = sceneEditView.text.toString().trim() - if (state == "") { + if (state.isBlank()) { "请输入维护情况".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt index e5698a1..cd4fdff 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt @@ -1,7 +1,6 @@ package com.casic.app.smartwell.view import android.text.Editable -import android.text.TextUtils import android.text.TextWatcher import android.view.KeyEvent import android.view.inputmethod.EditorInfo @@ -67,13 +66,13 @@ false } loginButton.setOnClickListener { - val account = userNameView.text.toString() - val userPassword = userPasswordView.text.toString() - if (TextUtils.isEmpty(account)) { + val account = userNameView.text.toString().trim() + val userPassword = userPasswordView.text.toString().trim() + if (account.isBlank()) { "用户名不能为空".show(this) return@setOnClickListener } - if (TextUtils.isEmpty(userPassword)) { + if (userPassword.isBlank()) { "密码不能为空".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt new file mode 100644 index 0000000..453a2c9 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt @@ -0,0 +1,21 @@ +package com.casic.app.smartwell.view + +import com.casic.app.smartwell.R +import com.casic.app.smartwell.base.BaseActivity + +class OvertimeOrderActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_order_overtime + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt new file mode 100644 index 0000000..8228673 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt @@ -0,0 +1,129 @@ +package com.casic.app.smartwell.view + +import android.os.Handler +import android.os.Looper +import android.os.Message +import android.view.View +import androidx.lifecycle.ViewModelProvider +import com.casic.app.smartwell.R +import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage +import com.casic.app.smartwell.model.SearchResultModel +import com.casic.app.smartwell.utils.Constant +import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.vm.SearchOrderViewModel +import kotlinx.android.synthetic.main.activity_order_search_result.* +import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* +import java.lang.ref.WeakReference + +class SearchResultActivity : BaseActivity() { + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var searchOrderViewModel: SearchOrderViewModel + private lateinit var args: ArrayList + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initLayoutView(): Int = R.layout.activity_order_search_result + + override fun setupTopBarLayout() { + titleView.text = "查询结果" + leftBackView.visibility = View.VISIBLE + leftBackView.setOnClickListener { finish() } + } + + override fun initData() { + args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! + weakReferenceHandler = WeakReferenceHandler(this) + searchOrderViewModel = ViewModelProvider(this).get(SearchOrderViewModel::class.java) + } + + override fun initEvent() { + obtainSearchResult(args, pageIndex) + searchOrderViewModel.listModel.observe(this, { + if (it.code == 200) { + val dataRows = it.data?.rows + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows!! + resultRefreshLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows?.size == 0) { + "到底了,别拉了".show(this) + } + dataBeans.addAll(dataRows!!) + resultRefreshLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows!! + } + } + weakReferenceHandler.sendEmptyMessage(2022040101) + } + }) + searchOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } + }) + resultRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainSearchResult(args, pageIndex) + } + resultRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainSearchResult(args, pageIndex) + } + } + + private fun obtainSearchResult(args: ArrayList, pageIndex: Int) { + searchOrderViewModel.obtainSearchResult( + keywords = args[0], + alarmContent = args[1], + alarmLevel = args[2], + jobStatus = args[3], + beginTime = args[4], + endTime = args[5], + page = pageIndex + ) + } + + private class WeakReferenceHandler(activity: SearchResultActivity) : + Handler(Looper.getMainLooper()) { + private val reference: WeakReference = WeakReference(activity) + + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val activity = reference.get()!! + if (msg.what == 2022040101) { + if (activity.isRefresh || activity.isLoadMore) { +// activity.wellOperationAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (activity.dataBeans.size == 0) { + activity.emptyView!!.showEmptyPage { + activity.obtainSearchResult(activity.args, activity.pageIndex) + } + } else { + activity.emptyView!!.hide() + } + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt index af88541..dc68caa 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt @@ -1,15 +1,12 @@ package com.casic.app.smartwell.view -import android.content.Context import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.base.BaseActivity -import com.casic.app.smartwell.extensions.show -import com.casic.app.smartwell.extensions.timestampToDate +import com.casic.app.smartwell.extensions.* import com.casic.app.smartwell.model.AlarmContentTypeModel import com.casic.app.smartwell.model.OrderStatusModel import com.casic.app.smartwell.utils.Constant @@ -25,13 +22,16 @@ class SearchWorkOrderActivity : BaseActivity() { - private val kTag = "SearchWorkOrderActivity" private lateinit var contentTypeViewModel: AlarmContentTypeViewModel private lateinit var orderStatusViewModel: OrderStatusViewModel private lateinit var inflater: LayoutInflater - private var alarmTypeModels: MutableList = ArrayList() + private lateinit var contentTypeAdapter: TagAdapter + private lateinit var orderStatusAdapter: TagAdapter + private var contentModels: MutableList = ArrayList() private var orderStatusModels: MutableList = ArrayList() - private val context: Context = this@SearchWorkOrderActivity + private var alarmContentType = "" + private var alarmLevel = "" + private var orderState = "" override fun initLayoutView(): Int = R.layout.activity_order_search @@ -45,7 +45,6 @@ inflater = LayoutInflater.from(this) //告警内容 contentTypeViewModel = ViewModelProvider(this).get(AlarmContentTypeViewModel::class.java) - //工单状态 orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java) } @@ -65,11 +64,10 @@ } else { bean = dataBean } - alarmTypeModels.add(bean) + contentModels.add(bean) } - - alarmContentLayout.adapter = - object : TagAdapter(alarmTypeModels) { + contentTypeAdapter = + object : TagAdapter(contentModels) { override fun getView( parent: FlowLayout?, position: Int, bean: AlarmContentTypeModel.DataBean.ListBean? @@ -78,19 +76,46 @@ R.layout.item_tag_flowlayout, orderStatusLayout, false ) as TextView - tagView.text = alarmTypeModels[position].name + tagView.text = contentModels[position].name return tagView } } - + alarmContentLayout.adapter = contentTypeAdapter + contentTypeAdapter.setSelectedList(0) alarmContentLayout.setOnTagClickListener { _, position, _ -> - //TODO - alarmTypeModels[position].name!!.show(context) + this.alarmContentType = contentModels[position].value.toString() true } } }) + val levelMaps: MutableList> = ArrayList() + for (i in 0..3) { + val map = HashMap() + map["name"] = i.toString().toChinese() + map["value"] = i.toLevel() + levelMaps.add(map) + } + val levelAdapter = object : TagAdapter>(levelMaps) { + override fun getView( + parent: FlowLayout?, + position: Int, map: Map? + ): View { + val tagView = inflater.inflate( + R.layout.item_tag_flowlayout, + orderStatusLayout, false + ) as TextView + tagView.text = levelMaps[position]["name"] + return tagView + } + } + alarmLevelLayout.adapter = levelAdapter + levelAdapter.setSelectedList(0) + alarmLevelLayout.setOnTagClickListener { _, position, _ -> + this.alarmLevel = levelMaps[position]["value"].toString() + true + } + orderStatusViewModel.obtainOrderStatus() orderStatusViewModel.listModel.observe(this, { if (it.code == 200) { @@ -106,8 +131,7 @@ } orderStatusModels.add(bean) } - - orderStatusLayout.adapter = + orderStatusAdapter = object : TagAdapter(orderStatusModels) { override fun getView( parent: FlowLayout?, @@ -121,18 +145,18 @@ return tagView } } - + orderStatusLayout.adapter = orderStatusAdapter + orderStatusAdapter.setSelectedList(0) orderStatusLayout.setOnTagClickListener { _, position, _ -> - //TODO - orderStatusModels[position].name!!.show(context) + this.orderState = orderStatusModels[position].value.toString() true } } }) - selectStartTimeView.setOnClickListener { + startTimeView.setOnClickListener { TimePickerDialog.Builder() - .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setThemeColor(R.color.mainThemeColor.convertColor(this)) .setTitleStringId("请选择开始时间") .setWheelItemTextSize(16) .setCyclic(false) @@ -140,13 +164,13 @@ .setMaxMillseconds(System.currentTimeMillis()) .setType(Type.YEAR_MONTH_DAY) .setCallBack { _: TimePickerDialog?, millSeconds: Long -> - selectStartTimeView.text = millSeconds.timestampToDate() + startTimeView.text = millSeconds.timestampToDate() }.build().show(supportFragmentManager, "year_month_day") } - selectEndTimeView.setOnClickListener { + endTimeView.setOnClickListener { TimePickerDialog.Builder() - .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setThemeColor(R.color.mainThemeColor.convertColor(this)) .setTitleStringId("请选择结束时间") .setWheelItemTextSize(16) .setCyclic(false) @@ -154,18 +178,42 @@ .setMaxMillseconds(System.currentTimeMillis()) .setType(Type.YEAR_MONTH_DAY) .setCallBack { _: TimePickerDialog?, millSeconds: Long -> - selectEndTimeView.text = millSeconds.timestampToDate() + if (millSeconds.isEarlierThanStart(startTimeView.text.toString())) { + "结束时间不合法,不能早于开始时间".show(this) + return@setCallBack + } + endTimeView.text = millSeconds.timestampToDate() }.build().show(supportFragmentManager, "year_month_day") } searchButton.setChangeAlphaWhenPress(true) searchButton.setOnClickListener { - + val wellCode = wellCodeView.text.toString().trim() + if (wellCode.isBlank()) { + "请输入窨井编号".show(this) + return@setOnClickListener + } + //页面跳转,将查询参数传过去 + navigatePageTo( + SearchResultActivity::class.java, addAll( + wellCode, + alarmContentType, + alarmLevel, + orderState, + startTimeView.text.toString(), + endTimeView.text.toString() + ) + ) } clearButton.setChangeAlphaWhenPress(true) clearButton.setOnClickListener { - + wellCodeView.text.clear() + contentTypeAdapter.setSelectedList(0) + levelAdapter.setSelectedList(0) + orderStatusAdapter.setSelectedList(0) + startTimeView.text = "" + endTimeView.text = "" } } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt index e907ca4..e0cc32f 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt @@ -15,6 +15,7 @@ import com.casic.app.smartwell.base.BaseActivity import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.extensions.showRouteOnMap import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel @@ -23,6 +24,7 @@ import com.casic.app.smartwell.widgets.EasyPopupWindow import kotlinx.android.synthetic.main.activity_well_management.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* import kotlinx.android.synthetic.main.include_search_bar.* import java.lang.ref.WeakReference @@ -168,7 +170,13 @@ activity.wellListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (activity.dataBeans.size == 0) { - activity.emptyView!!.show("抱歉,无法查询到相关记录", null) + activity.emptyView!!.showEmptyPage { + activity.obtainWellList( + activity.keywords, + activity.wellType, + activity.pageIndex + ) + } } else { activity.emptyView!!.hide() activity.wellListAdapter = WellListAdapter(activity, activity.dataBeans) diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt index 1259b72..2137a40 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt @@ -6,12 +6,14 @@ import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.SensorListAdapter import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.utils.DialogHelper import com.casic.app.smartwell.utils.LoadState import com.casic.app.smartwell.vm.WellMonitorViewModel import kotlinx.android.synthetic.main.activity_well_monitor.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* class WellMonitorActivity : BaseActivity() { @@ -36,7 +38,9 @@ wellMonitorViewModel.monitorModel.observe(this, { if (it.code == 200) { if (it.data?.size == 0) { - emptyView!!.show("该井下无设备,或设备已离线,请检查", null) + emptyView!!.showEmptyPage("抱歉,该井下无设备,或设备已离线") { + wellMonitorViewModel.obtainMonitorResult(id = wellId) + } } else { emptyView!!.hide() val sensorListAdapter = SensorListAdapter(this, it.data!!) 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 c6cbe78..0121426 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 @@ -15,6 +15,7 @@ import com.casic.app.smartwell.base.BaseActivity import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.extensions.showRouteOnMap import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel @@ -27,6 +28,7 @@ import com.pengxh.app.multilib.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.activity_well_operation.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* import kotlinx.android.synthetic.main.include_search_bar.* import java.lang.ref.WeakReference @@ -204,7 +206,13 @@ activity.wellOperationAdapter.notifyDataSetChanged() } else { //首次加载数据 if (activity.dataBeans.size == 0) { - activity.emptyView!!.show("抱歉,无法查询到相关记录", null) + activity.emptyView!!.showEmptyPage { + activity.obtainWellList( + activity.keywords, + activity.wellType, + activity.pageIndex + ) + } } else { activity.emptyView!!.hide() activity.wellOperationAdapter = diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e45158c..7460cc2 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -45,7 +45,9 @@ + + diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt index cba0198..e7ec8d8 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt @@ -25,7 +25,7 @@ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { val imageView = ImageView(context) val layoutWidth: Int = - SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 20f) + SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f) val margins: Int = QMUIDisplayHelper.dp2px(context, 3) val itemSize = (layoutWidth - 6 * margins) / 3 val params = LinearLayout.LayoutParams(itemSize, itemSize) diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt index 7780aaa..ad90885 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt @@ -17,4 +17,12 @@ } } return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt index de1c6c1..84ae8a8 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt @@ -33,10 +33,16 @@ startActivity(intent) } +fun Context.navigatePageTo(clazz: Class, values: ArrayList) { + val intent = Intent(this, clazz) + intent.putStringArrayListExtra(Constant.INTENT_PARAM, values) + startActivity(intent) +} + fun Context.navigatePageTo( clazz: Class, index: Int, - imageList: ArrayList? + imageList: ArrayList ) { val intent = Intent(this, clazz) intent.putExtra("index", index) 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 5f9ce7c..8ed51f4 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 @@ -23,4 +23,12 @@ "未知类型" } } +} + +fun Int.toLevel(): String { + return if (this == 0) { + "" + } else { + this.toString() + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt index ee3685d..3bc5d96 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt @@ -1,6 +1,20 @@ package com.casic.app.smartwell.extensions +import java.text.ParseException import java.text.SimpleDateFormat import java.util.* -fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) \ No newline at end of file +fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) + +fun Long.isEarlierThanStart(date: String): Boolean { + if (date.isBlank()) { + return false + } + val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA) + try { + return this < dateFormat.parse(date)!!.time + } catch (e: ParseException) { + + } + return true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt new file mode 100644 index 0000000..bd9cfa7 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt @@ -0,0 +1,12 @@ +package com.casic.app.smartwell.extensions + +import android.view.View +import com.qmuiteam.qmui.widget.QMUIEmptyView + +fun QMUIEmptyView.showEmptyPage(onButtonClickListener: View.OnClickListener) { + this.show(false, "抱歉,无法查询到相关记录", null, "重试", onButtonClickListener) +} + +fun QMUIEmptyView.showEmptyPage(title: String, onButtonClickListener: View.OnClickListener) { + this.show(false, title, null, "刷新", onButtonClickListener) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt index 7358b1c..2cdd63d 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt @@ -60,6 +60,7 @@ //窨井类型转换 fun String.toChinese(): String { return when (this) { + "0" -> "全部" "1" -> "一级" "2" -> "二级" "3" -> "三级" diff --git a/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt b/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt new file mode 100644 index 0000000..af7fd13 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt @@ -0,0 +1,52 @@ +package com.casic.app.smartwell.model + +class SearchResultModel { + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var rows: MutableList? = null + var total = 0 + + class RowsBean { + var alarmContent = 0 + var deptName: String? = null + var jobStatus: String? = null + var handleJobPerson: String? = null + var alarmContentName: String? = null + var shouldGetTime: String? = null + var wellCode: String? = null + var deptid: String? = null + var alarmTypeName: String? = null + var jobCode: String? = null + var jobBelongTo: String? = null + var jobFlag: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var jobStatusName: String? = null + var alarmValue: String? = null + var alarmId: String? = null + var alarmLevel: String? = null + var handleJobTime: String? = null + var tel: String? = null + var id: String? = null + var wellId: String? = null + var jobType: String? = null + var editable = 0 + var alarmTime: String? = null + var alarmMessage: String? = null + var staff: String? = null + var getJobTime: String? = null + var getJobPerson: String? = null + var shouldHandleTime: String? = null + var jobId: String? = null + var alarmType: String? = null + var alarmStatus: String? = null + var devcode: String? = null + var createTime: String? = null + var position: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index fd4e603..c342334 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -41,7 +41,7 @@ const val USER_DETAIL_MODEL = "userDetailModel" const val INTENT_PARAM = "intentParam" - val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher) - val HOME_ITEMS = arrayOf("闸井管理", "布防撤防") + val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher) + val HOME_ITEMS = arrayOf("闸井管理", "超时工单", "布防撤防") val SUB_PAGE_TITLES = arrayOf("待处理", "待确认", "处理中", "已完成") } \ 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 9c34038..7a5ca39 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 @@ -234,6 +234,22 @@ ): OrderStatusModel /** + * 查询工单 + * */ + @GET("/job/searchList") + suspend fun obtainSearchResult( + @Header("token") token: String, + @Query("keywords") keywords: String?, + @Query("alarmContent") alarmContent: String?, + @Query("alarmLevel") alarmLevel: String?, + @Query("jobStatus") jobStatus: String?, + @Query("beginTime") beginTime: String?, + @Query("endTime") endTime: String?, + @Query("limit") limit: Int, + @Query("offset") offset: Int + ): SearchResultModel + + /** * 获取用户信息 */ @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 a7106b5..945f6a3 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 @@ -175,6 +175,31 @@ } /** + * 查询工单 + */ + suspend fun obtainSearchResult( + keywords: String?, + alarmContent: String?, + alarmLevel: String?, + jobStatus: String?, + beginTime: String?, + endTime: String?, + page: Int + ): SearchResultModel { + return api.obtainSearchResult( + AuthenticationHelper.token!!, + keywords, + alarmContent, + alarmLevel, + jobStatus, + beginTime, + endTime, + Constant.PAGE_LIMIT, + page + ) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): String { diff --git a/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt index cfc4e0f..45af48a 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt @@ -98,7 +98,7 @@ imageRecyclerView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() - val imageArray = orderDetail.firstStatePhotos.toString().split(";") + val imageArray = orderDetail.firstStatePhotos.toString().split(",") imageArray.forEach { path -> if (path != "") { urls.add(path.combineImagePath()) diff --git a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt index 1a3e670..36075bd 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt @@ -197,7 +197,7 @@ return@setOnClickListener } val state = sceneEditView.text.toString().trim() - if (state == "") { + if (state.isBlank()) { "请输入现场情况".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt index b7a51ce..97e1f59 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt @@ -161,7 +161,7 @@ imageRecyclerView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() - val imageArray = orderDetail.firstStatePhotos.toString().split(";") + val imageArray = orderDetail.firstStatePhotos.toString().split(",") imageArray.forEach { path -> if (path != "") { urls.add(path.combineImagePath()) @@ -247,7 +247,7 @@ return@setOnClickListener } val state = sceneEditView.text.toString().trim() - if (state == "") { + if (state.isBlank()) { "请输入维护情况".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt index e5698a1..cd4fdff 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt @@ -1,7 +1,6 @@ package com.casic.app.smartwell.view import android.text.Editable -import android.text.TextUtils import android.text.TextWatcher import android.view.KeyEvent import android.view.inputmethod.EditorInfo @@ -67,13 +66,13 @@ false } loginButton.setOnClickListener { - val account = userNameView.text.toString() - val userPassword = userPasswordView.text.toString() - if (TextUtils.isEmpty(account)) { + val account = userNameView.text.toString().trim() + val userPassword = userPasswordView.text.toString().trim() + if (account.isBlank()) { "用户名不能为空".show(this) return@setOnClickListener } - if (TextUtils.isEmpty(userPassword)) { + if (userPassword.isBlank()) { "密码不能为空".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt new file mode 100644 index 0000000..453a2c9 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt @@ -0,0 +1,21 @@ +package com.casic.app.smartwell.view + +import com.casic.app.smartwell.R +import com.casic.app.smartwell.base.BaseActivity + +class OvertimeOrderActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_order_overtime + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt new file mode 100644 index 0000000..8228673 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt @@ -0,0 +1,129 @@ +package com.casic.app.smartwell.view + +import android.os.Handler +import android.os.Looper +import android.os.Message +import android.view.View +import androidx.lifecycle.ViewModelProvider +import com.casic.app.smartwell.R +import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage +import com.casic.app.smartwell.model.SearchResultModel +import com.casic.app.smartwell.utils.Constant +import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.vm.SearchOrderViewModel +import kotlinx.android.synthetic.main.activity_order_search_result.* +import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* +import java.lang.ref.WeakReference + +class SearchResultActivity : BaseActivity() { + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var searchOrderViewModel: SearchOrderViewModel + private lateinit var args: ArrayList + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initLayoutView(): Int = R.layout.activity_order_search_result + + override fun setupTopBarLayout() { + titleView.text = "查询结果" + leftBackView.visibility = View.VISIBLE + leftBackView.setOnClickListener { finish() } + } + + override fun initData() { + args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! + weakReferenceHandler = WeakReferenceHandler(this) + searchOrderViewModel = ViewModelProvider(this).get(SearchOrderViewModel::class.java) + } + + override fun initEvent() { + obtainSearchResult(args, pageIndex) + searchOrderViewModel.listModel.observe(this, { + if (it.code == 200) { + val dataRows = it.data?.rows + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows!! + resultRefreshLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows?.size == 0) { + "到底了,别拉了".show(this) + } + dataBeans.addAll(dataRows!!) + resultRefreshLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows!! + } + } + weakReferenceHandler.sendEmptyMessage(2022040101) + } + }) + searchOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } + }) + resultRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainSearchResult(args, pageIndex) + } + resultRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainSearchResult(args, pageIndex) + } + } + + private fun obtainSearchResult(args: ArrayList, pageIndex: Int) { + searchOrderViewModel.obtainSearchResult( + keywords = args[0], + alarmContent = args[1], + alarmLevel = args[2], + jobStatus = args[3], + beginTime = args[4], + endTime = args[5], + page = pageIndex + ) + } + + private class WeakReferenceHandler(activity: SearchResultActivity) : + Handler(Looper.getMainLooper()) { + private val reference: WeakReference = WeakReference(activity) + + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val activity = reference.get()!! + if (msg.what == 2022040101) { + if (activity.isRefresh || activity.isLoadMore) { +// activity.wellOperationAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (activity.dataBeans.size == 0) { + activity.emptyView!!.showEmptyPage { + activity.obtainSearchResult(activity.args, activity.pageIndex) + } + } else { + activity.emptyView!!.hide() + } + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt index af88541..dc68caa 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt @@ -1,15 +1,12 @@ package com.casic.app.smartwell.view -import android.content.Context import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.base.BaseActivity -import com.casic.app.smartwell.extensions.show -import com.casic.app.smartwell.extensions.timestampToDate +import com.casic.app.smartwell.extensions.* import com.casic.app.smartwell.model.AlarmContentTypeModel import com.casic.app.smartwell.model.OrderStatusModel import com.casic.app.smartwell.utils.Constant @@ -25,13 +22,16 @@ class SearchWorkOrderActivity : BaseActivity() { - private val kTag = "SearchWorkOrderActivity" private lateinit var contentTypeViewModel: AlarmContentTypeViewModel private lateinit var orderStatusViewModel: OrderStatusViewModel private lateinit var inflater: LayoutInflater - private var alarmTypeModels: MutableList = ArrayList() + private lateinit var contentTypeAdapter: TagAdapter + private lateinit var orderStatusAdapter: TagAdapter + private var contentModels: MutableList = ArrayList() private var orderStatusModels: MutableList = ArrayList() - private val context: Context = this@SearchWorkOrderActivity + private var alarmContentType = "" + private var alarmLevel = "" + private var orderState = "" override fun initLayoutView(): Int = R.layout.activity_order_search @@ -45,7 +45,6 @@ inflater = LayoutInflater.from(this) //告警内容 contentTypeViewModel = ViewModelProvider(this).get(AlarmContentTypeViewModel::class.java) - //工单状态 orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java) } @@ -65,11 +64,10 @@ } else { bean = dataBean } - alarmTypeModels.add(bean) + contentModels.add(bean) } - - alarmContentLayout.adapter = - object : TagAdapter(alarmTypeModels) { + contentTypeAdapter = + object : TagAdapter(contentModels) { override fun getView( parent: FlowLayout?, position: Int, bean: AlarmContentTypeModel.DataBean.ListBean? @@ -78,19 +76,46 @@ R.layout.item_tag_flowlayout, orderStatusLayout, false ) as TextView - tagView.text = alarmTypeModels[position].name + tagView.text = contentModels[position].name return tagView } } - + alarmContentLayout.adapter = contentTypeAdapter + contentTypeAdapter.setSelectedList(0) alarmContentLayout.setOnTagClickListener { _, position, _ -> - //TODO - alarmTypeModels[position].name!!.show(context) + this.alarmContentType = contentModels[position].value.toString() true } } }) + val levelMaps: MutableList> = ArrayList() + for (i in 0..3) { + val map = HashMap() + map["name"] = i.toString().toChinese() + map["value"] = i.toLevel() + levelMaps.add(map) + } + val levelAdapter = object : TagAdapter>(levelMaps) { + override fun getView( + parent: FlowLayout?, + position: Int, map: Map? + ): View { + val tagView = inflater.inflate( + R.layout.item_tag_flowlayout, + orderStatusLayout, false + ) as TextView + tagView.text = levelMaps[position]["name"] + return tagView + } + } + alarmLevelLayout.adapter = levelAdapter + levelAdapter.setSelectedList(0) + alarmLevelLayout.setOnTagClickListener { _, position, _ -> + this.alarmLevel = levelMaps[position]["value"].toString() + true + } + orderStatusViewModel.obtainOrderStatus() orderStatusViewModel.listModel.observe(this, { if (it.code == 200) { @@ -106,8 +131,7 @@ } orderStatusModels.add(bean) } - - orderStatusLayout.adapter = + orderStatusAdapter = object : TagAdapter(orderStatusModels) { override fun getView( parent: FlowLayout?, @@ -121,18 +145,18 @@ return tagView } } - + orderStatusLayout.adapter = orderStatusAdapter + orderStatusAdapter.setSelectedList(0) orderStatusLayout.setOnTagClickListener { _, position, _ -> - //TODO - orderStatusModels[position].name!!.show(context) + this.orderState = orderStatusModels[position].value.toString() true } } }) - selectStartTimeView.setOnClickListener { + startTimeView.setOnClickListener { TimePickerDialog.Builder() - .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setThemeColor(R.color.mainThemeColor.convertColor(this)) .setTitleStringId("请选择开始时间") .setWheelItemTextSize(16) .setCyclic(false) @@ -140,13 +164,13 @@ .setMaxMillseconds(System.currentTimeMillis()) .setType(Type.YEAR_MONTH_DAY) .setCallBack { _: TimePickerDialog?, millSeconds: Long -> - selectStartTimeView.text = millSeconds.timestampToDate() + startTimeView.text = millSeconds.timestampToDate() }.build().show(supportFragmentManager, "year_month_day") } - selectEndTimeView.setOnClickListener { + endTimeView.setOnClickListener { TimePickerDialog.Builder() - .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setThemeColor(R.color.mainThemeColor.convertColor(this)) .setTitleStringId("请选择结束时间") .setWheelItemTextSize(16) .setCyclic(false) @@ -154,18 +178,42 @@ .setMaxMillseconds(System.currentTimeMillis()) .setType(Type.YEAR_MONTH_DAY) .setCallBack { _: TimePickerDialog?, millSeconds: Long -> - selectEndTimeView.text = millSeconds.timestampToDate() + if (millSeconds.isEarlierThanStart(startTimeView.text.toString())) { + "结束时间不合法,不能早于开始时间".show(this) + return@setCallBack + } + endTimeView.text = millSeconds.timestampToDate() }.build().show(supportFragmentManager, "year_month_day") } searchButton.setChangeAlphaWhenPress(true) searchButton.setOnClickListener { - + val wellCode = wellCodeView.text.toString().trim() + if (wellCode.isBlank()) { + "请输入窨井编号".show(this) + return@setOnClickListener + } + //页面跳转,将查询参数传过去 + navigatePageTo( + SearchResultActivity::class.java, addAll( + wellCode, + alarmContentType, + alarmLevel, + orderState, + startTimeView.text.toString(), + endTimeView.text.toString() + ) + ) } clearButton.setChangeAlphaWhenPress(true) clearButton.setOnClickListener { - + wellCodeView.text.clear() + contentTypeAdapter.setSelectedList(0) + levelAdapter.setSelectedList(0) + orderStatusAdapter.setSelectedList(0) + startTimeView.text = "" + endTimeView.text = "" } } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt index e907ca4..e0cc32f 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt @@ -15,6 +15,7 @@ import com.casic.app.smartwell.base.BaseActivity import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.extensions.showRouteOnMap import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel @@ -23,6 +24,7 @@ import com.casic.app.smartwell.widgets.EasyPopupWindow import kotlinx.android.synthetic.main.activity_well_management.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* import kotlinx.android.synthetic.main.include_search_bar.* import java.lang.ref.WeakReference @@ -168,7 +170,13 @@ activity.wellListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (activity.dataBeans.size == 0) { - activity.emptyView!!.show("抱歉,无法查询到相关记录", null) + activity.emptyView!!.showEmptyPage { + activity.obtainWellList( + activity.keywords, + activity.wellType, + activity.pageIndex + ) + } } else { activity.emptyView!!.hide() activity.wellListAdapter = WellListAdapter(activity, activity.dataBeans) diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt index 1259b72..2137a40 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt @@ -6,12 +6,14 @@ import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.SensorListAdapter import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.utils.DialogHelper import com.casic.app.smartwell.utils.LoadState import com.casic.app.smartwell.vm.WellMonitorViewModel import kotlinx.android.synthetic.main.activity_well_monitor.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* class WellMonitorActivity : BaseActivity() { @@ -36,7 +38,9 @@ wellMonitorViewModel.monitorModel.observe(this, { if (it.code == 200) { if (it.data?.size == 0) { - emptyView!!.show("该井下无设备,或设备已离线,请检查", null) + emptyView!!.showEmptyPage("抱歉,该井下无设备,或设备已离线") { + wellMonitorViewModel.obtainMonitorResult(id = wellId) + } } else { emptyView!!.hide() val sensorListAdapter = SensorListAdapter(this, it.data!!) 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 c6cbe78..0121426 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 @@ -15,6 +15,7 @@ import com.casic.app.smartwell.base.BaseActivity import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.extensions.showRouteOnMap import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel @@ -27,6 +28,7 @@ import com.pengxh.app.multilib.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.activity_well_operation.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* import kotlinx.android.synthetic.main.include_search_bar.* import java.lang.ref.WeakReference @@ -204,7 +206,13 @@ activity.wellOperationAdapter.notifyDataSetChanged() } else { //首次加载数据 if (activity.dataBeans.size == 0) { - activity.emptyView!!.show("抱歉,无法查询到相关记录", null) + activity.emptyView!!.showEmptyPage { + activity.obtainWellList( + activity.keywords, + activity.wellType, + activity.pageIndex + ) + } } else { activity.emptyView!!.hide() activity.wellOperationAdapter = 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 c9ca964..d7d8269 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 @@ -10,6 +10,7 @@ import com.casic.app.smartwell.adapter.CompletedOrderAdapter import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.CompletedDetailActivity @@ -18,6 +19,7 @@ import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_completed.* +import kotlinx.android.synthetic.main.include_empty_view.* import java.lang.ref.WeakReference class CompletedOrderFragment : BaseFragment() { @@ -126,7 +128,9 @@ fragment.completedAdapter.notifyDataSetChanged() } else { if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("您还没有处理完成过任何工单", null) + fragment.emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { + fragment.obtainWorkOrderList(fragment.pageIndex) + } } else { fragment.emptyView!!.hide() fragment.completedAdapter = CompletedOrderAdapter( diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e45158c..7460cc2 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -45,7 +45,9 @@ + + diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt index cba0198..e7ec8d8 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt @@ -25,7 +25,7 @@ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { val imageView = ImageView(context) val layoutWidth: Int = - SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 20f) + SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f) val margins: Int = QMUIDisplayHelper.dp2px(context, 3) val itemSize = (layoutWidth - 6 * margins) / 3 val params = LinearLayout.LayoutParams(itemSize, itemSize) diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt index 7780aaa..ad90885 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt @@ -17,4 +17,12 @@ } } return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt index de1c6c1..84ae8a8 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt @@ -33,10 +33,16 @@ startActivity(intent) } +fun Context.navigatePageTo(clazz: Class, values: ArrayList) { + val intent = Intent(this, clazz) + intent.putStringArrayListExtra(Constant.INTENT_PARAM, values) + startActivity(intent) +} + fun Context.navigatePageTo( clazz: Class, index: Int, - imageList: ArrayList? + imageList: ArrayList ) { val intent = Intent(this, clazz) intent.putExtra("index", index) 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 5f9ce7c..8ed51f4 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 @@ -23,4 +23,12 @@ "未知类型" } } +} + +fun Int.toLevel(): String { + return if (this == 0) { + "" + } else { + this.toString() + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt index ee3685d..3bc5d96 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt @@ -1,6 +1,20 @@ package com.casic.app.smartwell.extensions +import java.text.ParseException import java.text.SimpleDateFormat import java.util.* -fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) \ No newline at end of file +fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) + +fun Long.isEarlierThanStart(date: String): Boolean { + if (date.isBlank()) { + return false + } + val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA) + try { + return this < dateFormat.parse(date)!!.time + } catch (e: ParseException) { + + } + return true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt new file mode 100644 index 0000000..bd9cfa7 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt @@ -0,0 +1,12 @@ +package com.casic.app.smartwell.extensions + +import android.view.View +import com.qmuiteam.qmui.widget.QMUIEmptyView + +fun QMUIEmptyView.showEmptyPage(onButtonClickListener: View.OnClickListener) { + this.show(false, "抱歉,无法查询到相关记录", null, "重试", onButtonClickListener) +} + +fun QMUIEmptyView.showEmptyPage(title: String, onButtonClickListener: View.OnClickListener) { + this.show(false, title, null, "刷新", onButtonClickListener) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt index 7358b1c..2cdd63d 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt @@ -60,6 +60,7 @@ //窨井类型转换 fun String.toChinese(): String { return when (this) { + "0" -> "全部" "1" -> "一级" "2" -> "二级" "3" -> "三级" diff --git a/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt b/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt new file mode 100644 index 0000000..af7fd13 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt @@ -0,0 +1,52 @@ +package com.casic.app.smartwell.model + +class SearchResultModel { + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var rows: MutableList? = null + var total = 0 + + class RowsBean { + var alarmContent = 0 + var deptName: String? = null + var jobStatus: String? = null + var handleJobPerson: String? = null + var alarmContentName: String? = null + var shouldGetTime: String? = null + var wellCode: String? = null + var deptid: String? = null + var alarmTypeName: String? = null + var jobCode: String? = null + var jobBelongTo: String? = null + var jobFlag: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var jobStatusName: String? = null + var alarmValue: String? = null + var alarmId: String? = null + var alarmLevel: String? = null + var handleJobTime: String? = null + var tel: String? = null + var id: String? = null + var wellId: String? = null + var jobType: String? = null + var editable = 0 + var alarmTime: String? = null + var alarmMessage: String? = null + var staff: String? = null + var getJobTime: String? = null + var getJobPerson: String? = null + var shouldHandleTime: String? = null + var jobId: String? = null + var alarmType: String? = null + var alarmStatus: String? = null + var devcode: String? = null + var createTime: String? = null + var position: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index fd4e603..c342334 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -41,7 +41,7 @@ const val USER_DETAIL_MODEL = "userDetailModel" const val INTENT_PARAM = "intentParam" - val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher) - val HOME_ITEMS = arrayOf("闸井管理", "布防撤防") + val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher) + val HOME_ITEMS = arrayOf("闸井管理", "超时工单", "布防撤防") val SUB_PAGE_TITLES = arrayOf("待处理", "待确认", "处理中", "已完成") } \ 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 9c34038..7a5ca39 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 @@ -234,6 +234,22 @@ ): OrderStatusModel /** + * 查询工单 + * */ + @GET("/job/searchList") + suspend fun obtainSearchResult( + @Header("token") token: String, + @Query("keywords") keywords: String?, + @Query("alarmContent") alarmContent: String?, + @Query("alarmLevel") alarmLevel: String?, + @Query("jobStatus") jobStatus: String?, + @Query("beginTime") beginTime: String?, + @Query("endTime") endTime: String?, + @Query("limit") limit: Int, + @Query("offset") offset: Int + ): SearchResultModel + + /** * 获取用户信息 */ @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 a7106b5..945f6a3 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 @@ -175,6 +175,31 @@ } /** + * 查询工单 + */ + suspend fun obtainSearchResult( + keywords: String?, + alarmContent: String?, + alarmLevel: String?, + jobStatus: String?, + beginTime: String?, + endTime: String?, + page: Int + ): SearchResultModel { + return api.obtainSearchResult( + AuthenticationHelper.token!!, + keywords, + alarmContent, + alarmLevel, + jobStatus, + beginTime, + endTime, + Constant.PAGE_LIMIT, + page + ) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): String { diff --git a/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt index cfc4e0f..45af48a 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt @@ -98,7 +98,7 @@ imageRecyclerView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() - val imageArray = orderDetail.firstStatePhotos.toString().split(";") + val imageArray = orderDetail.firstStatePhotos.toString().split(",") imageArray.forEach { path -> if (path != "") { urls.add(path.combineImagePath()) diff --git a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt index 1a3e670..36075bd 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt @@ -197,7 +197,7 @@ return@setOnClickListener } val state = sceneEditView.text.toString().trim() - if (state == "") { + if (state.isBlank()) { "请输入现场情况".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt index b7a51ce..97e1f59 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt @@ -161,7 +161,7 @@ imageRecyclerView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() - val imageArray = orderDetail.firstStatePhotos.toString().split(";") + val imageArray = orderDetail.firstStatePhotos.toString().split(",") imageArray.forEach { path -> if (path != "") { urls.add(path.combineImagePath()) @@ -247,7 +247,7 @@ return@setOnClickListener } val state = sceneEditView.text.toString().trim() - if (state == "") { + if (state.isBlank()) { "请输入维护情况".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt index e5698a1..cd4fdff 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt @@ -1,7 +1,6 @@ package com.casic.app.smartwell.view import android.text.Editable -import android.text.TextUtils import android.text.TextWatcher import android.view.KeyEvent import android.view.inputmethod.EditorInfo @@ -67,13 +66,13 @@ false } loginButton.setOnClickListener { - val account = userNameView.text.toString() - val userPassword = userPasswordView.text.toString() - if (TextUtils.isEmpty(account)) { + val account = userNameView.text.toString().trim() + val userPassword = userPasswordView.text.toString().trim() + if (account.isBlank()) { "用户名不能为空".show(this) return@setOnClickListener } - if (TextUtils.isEmpty(userPassword)) { + if (userPassword.isBlank()) { "密码不能为空".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt new file mode 100644 index 0000000..453a2c9 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt @@ -0,0 +1,21 @@ +package com.casic.app.smartwell.view + +import com.casic.app.smartwell.R +import com.casic.app.smartwell.base.BaseActivity + +class OvertimeOrderActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_order_overtime + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt new file mode 100644 index 0000000..8228673 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt @@ -0,0 +1,129 @@ +package com.casic.app.smartwell.view + +import android.os.Handler +import android.os.Looper +import android.os.Message +import android.view.View +import androidx.lifecycle.ViewModelProvider +import com.casic.app.smartwell.R +import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage +import com.casic.app.smartwell.model.SearchResultModel +import com.casic.app.smartwell.utils.Constant +import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.vm.SearchOrderViewModel +import kotlinx.android.synthetic.main.activity_order_search_result.* +import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* +import java.lang.ref.WeakReference + +class SearchResultActivity : BaseActivity() { + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var searchOrderViewModel: SearchOrderViewModel + private lateinit var args: ArrayList + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initLayoutView(): Int = R.layout.activity_order_search_result + + override fun setupTopBarLayout() { + titleView.text = "查询结果" + leftBackView.visibility = View.VISIBLE + leftBackView.setOnClickListener { finish() } + } + + override fun initData() { + args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! + weakReferenceHandler = WeakReferenceHandler(this) + searchOrderViewModel = ViewModelProvider(this).get(SearchOrderViewModel::class.java) + } + + override fun initEvent() { + obtainSearchResult(args, pageIndex) + searchOrderViewModel.listModel.observe(this, { + if (it.code == 200) { + val dataRows = it.data?.rows + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows!! + resultRefreshLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows?.size == 0) { + "到底了,别拉了".show(this) + } + dataBeans.addAll(dataRows!!) + resultRefreshLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows!! + } + } + weakReferenceHandler.sendEmptyMessage(2022040101) + } + }) + searchOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } + }) + resultRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainSearchResult(args, pageIndex) + } + resultRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainSearchResult(args, pageIndex) + } + } + + private fun obtainSearchResult(args: ArrayList, pageIndex: Int) { + searchOrderViewModel.obtainSearchResult( + keywords = args[0], + alarmContent = args[1], + alarmLevel = args[2], + jobStatus = args[3], + beginTime = args[4], + endTime = args[5], + page = pageIndex + ) + } + + private class WeakReferenceHandler(activity: SearchResultActivity) : + Handler(Looper.getMainLooper()) { + private val reference: WeakReference = WeakReference(activity) + + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val activity = reference.get()!! + if (msg.what == 2022040101) { + if (activity.isRefresh || activity.isLoadMore) { +// activity.wellOperationAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (activity.dataBeans.size == 0) { + activity.emptyView!!.showEmptyPage { + activity.obtainSearchResult(activity.args, activity.pageIndex) + } + } else { + activity.emptyView!!.hide() + } + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt index af88541..dc68caa 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt @@ -1,15 +1,12 @@ package com.casic.app.smartwell.view -import android.content.Context import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.base.BaseActivity -import com.casic.app.smartwell.extensions.show -import com.casic.app.smartwell.extensions.timestampToDate +import com.casic.app.smartwell.extensions.* import com.casic.app.smartwell.model.AlarmContentTypeModel import com.casic.app.smartwell.model.OrderStatusModel import com.casic.app.smartwell.utils.Constant @@ -25,13 +22,16 @@ class SearchWorkOrderActivity : BaseActivity() { - private val kTag = "SearchWorkOrderActivity" private lateinit var contentTypeViewModel: AlarmContentTypeViewModel private lateinit var orderStatusViewModel: OrderStatusViewModel private lateinit var inflater: LayoutInflater - private var alarmTypeModels: MutableList = ArrayList() + private lateinit var contentTypeAdapter: TagAdapter + private lateinit var orderStatusAdapter: TagAdapter + private var contentModels: MutableList = ArrayList() private var orderStatusModels: MutableList = ArrayList() - private val context: Context = this@SearchWorkOrderActivity + private var alarmContentType = "" + private var alarmLevel = "" + private var orderState = "" override fun initLayoutView(): Int = R.layout.activity_order_search @@ -45,7 +45,6 @@ inflater = LayoutInflater.from(this) //告警内容 contentTypeViewModel = ViewModelProvider(this).get(AlarmContentTypeViewModel::class.java) - //工单状态 orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java) } @@ -65,11 +64,10 @@ } else { bean = dataBean } - alarmTypeModels.add(bean) + contentModels.add(bean) } - - alarmContentLayout.adapter = - object : TagAdapter(alarmTypeModels) { + contentTypeAdapter = + object : TagAdapter(contentModels) { override fun getView( parent: FlowLayout?, position: Int, bean: AlarmContentTypeModel.DataBean.ListBean? @@ -78,19 +76,46 @@ R.layout.item_tag_flowlayout, orderStatusLayout, false ) as TextView - tagView.text = alarmTypeModels[position].name + tagView.text = contentModels[position].name return tagView } } - + alarmContentLayout.adapter = contentTypeAdapter + contentTypeAdapter.setSelectedList(0) alarmContentLayout.setOnTagClickListener { _, position, _ -> - //TODO - alarmTypeModels[position].name!!.show(context) + this.alarmContentType = contentModels[position].value.toString() true } } }) + val levelMaps: MutableList> = ArrayList() + for (i in 0..3) { + val map = HashMap() + map["name"] = i.toString().toChinese() + map["value"] = i.toLevel() + levelMaps.add(map) + } + val levelAdapter = object : TagAdapter>(levelMaps) { + override fun getView( + parent: FlowLayout?, + position: Int, map: Map? + ): View { + val tagView = inflater.inflate( + R.layout.item_tag_flowlayout, + orderStatusLayout, false + ) as TextView + tagView.text = levelMaps[position]["name"] + return tagView + } + } + alarmLevelLayout.adapter = levelAdapter + levelAdapter.setSelectedList(0) + alarmLevelLayout.setOnTagClickListener { _, position, _ -> + this.alarmLevel = levelMaps[position]["value"].toString() + true + } + orderStatusViewModel.obtainOrderStatus() orderStatusViewModel.listModel.observe(this, { if (it.code == 200) { @@ -106,8 +131,7 @@ } orderStatusModels.add(bean) } - - orderStatusLayout.adapter = + orderStatusAdapter = object : TagAdapter(orderStatusModels) { override fun getView( parent: FlowLayout?, @@ -121,18 +145,18 @@ return tagView } } - + orderStatusLayout.adapter = orderStatusAdapter + orderStatusAdapter.setSelectedList(0) orderStatusLayout.setOnTagClickListener { _, position, _ -> - //TODO - orderStatusModels[position].name!!.show(context) + this.orderState = orderStatusModels[position].value.toString() true } } }) - selectStartTimeView.setOnClickListener { + startTimeView.setOnClickListener { TimePickerDialog.Builder() - .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setThemeColor(R.color.mainThemeColor.convertColor(this)) .setTitleStringId("请选择开始时间") .setWheelItemTextSize(16) .setCyclic(false) @@ -140,13 +164,13 @@ .setMaxMillseconds(System.currentTimeMillis()) .setType(Type.YEAR_MONTH_DAY) .setCallBack { _: TimePickerDialog?, millSeconds: Long -> - selectStartTimeView.text = millSeconds.timestampToDate() + startTimeView.text = millSeconds.timestampToDate() }.build().show(supportFragmentManager, "year_month_day") } - selectEndTimeView.setOnClickListener { + endTimeView.setOnClickListener { TimePickerDialog.Builder() - .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setThemeColor(R.color.mainThemeColor.convertColor(this)) .setTitleStringId("请选择结束时间") .setWheelItemTextSize(16) .setCyclic(false) @@ -154,18 +178,42 @@ .setMaxMillseconds(System.currentTimeMillis()) .setType(Type.YEAR_MONTH_DAY) .setCallBack { _: TimePickerDialog?, millSeconds: Long -> - selectEndTimeView.text = millSeconds.timestampToDate() + if (millSeconds.isEarlierThanStart(startTimeView.text.toString())) { + "结束时间不合法,不能早于开始时间".show(this) + return@setCallBack + } + endTimeView.text = millSeconds.timestampToDate() }.build().show(supportFragmentManager, "year_month_day") } searchButton.setChangeAlphaWhenPress(true) searchButton.setOnClickListener { - + val wellCode = wellCodeView.text.toString().trim() + if (wellCode.isBlank()) { + "请输入窨井编号".show(this) + return@setOnClickListener + } + //页面跳转,将查询参数传过去 + navigatePageTo( + SearchResultActivity::class.java, addAll( + wellCode, + alarmContentType, + alarmLevel, + orderState, + startTimeView.text.toString(), + endTimeView.text.toString() + ) + ) } clearButton.setChangeAlphaWhenPress(true) clearButton.setOnClickListener { - + wellCodeView.text.clear() + contentTypeAdapter.setSelectedList(0) + levelAdapter.setSelectedList(0) + orderStatusAdapter.setSelectedList(0) + startTimeView.text = "" + endTimeView.text = "" } } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt index e907ca4..e0cc32f 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt @@ -15,6 +15,7 @@ import com.casic.app.smartwell.base.BaseActivity import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.extensions.showRouteOnMap import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel @@ -23,6 +24,7 @@ import com.casic.app.smartwell.widgets.EasyPopupWindow import kotlinx.android.synthetic.main.activity_well_management.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* import kotlinx.android.synthetic.main.include_search_bar.* import java.lang.ref.WeakReference @@ -168,7 +170,13 @@ activity.wellListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (activity.dataBeans.size == 0) { - activity.emptyView!!.show("抱歉,无法查询到相关记录", null) + activity.emptyView!!.showEmptyPage { + activity.obtainWellList( + activity.keywords, + activity.wellType, + activity.pageIndex + ) + } } else { activity.emptyView!!.hide() activity.wellListAdapter = WellListAdapter(activity, activity.dataBeans) diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt index 1259b72..2137a40 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt @@ -6,12 +6,14 @@ import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.SensorListAdapter import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.utils.DialogHelper import com.casic.app.smartwell.utils.LoadState import com.casic.app.smartwell.vm.WellMonitorViewModel import kotlinx.android.synthetic.main.activity_well_monitor.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* class WellMonitorActivity : BaseActivity() { @@ -36,7 +38,9 @@ wellMonitorViewModel.monitorModel.observe(this, { if (it.code == 200) { if (it.data?.size == 0) { - emptyView!!.show("该井下无设备,或设备已离线,请检查", null) + emptyView!!.showEmptyPage("抱歉,该井下无设备,或设备已离线") { + wellMonitorViewModel.obtainMonitorResult(id = wellId) + } } else { emptyView!!.hide() val sensorListAdapter = SensorListAdapter(this, it.data!!) 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 c6cbe78..0121426 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 @@ -15,6 +15,7 @@ import com.casic.app.smartwell.base.BaseActivity import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.extensions.showRouteOnMap import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel @@ -27,6 +28,7 @@ import com.pengxh.app.multilib.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.activity_well_operation.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* import kotlinx.android.synthetic.main.include_search_bar.* import java.lang.ref.WeakReference @@ -204,7 +206,13 @@ activity.wellOperationAdapter.notifyDataSetChanged() } else { //首次加载数据 if (activity.dataBeans.size == 0) { - activity.emptyView!!.show("抱歉,无法查询到相关记录", null) + activity.emptyView!!.showEmptyPage { + activity.obtainWellList( + activity.keywords, + activity.wellType, + activity.pageIndex + ) + } } else { activity.emptyView!!.hide() activity.wellOperationAdapter = 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 c9ca964..d7d8269 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 @@ -10,6 +10,7 @@ import com.casic.app.smartwell.adapter.CompletedOrderAdapter import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.CompletedDetailActivity @@ -18,6 +19,7 @@ import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_completed.* +import kotlinx.android.synthetic.main.include_empty_view.* import java.lang.ref.WeakReference class CompletedOrderFragment : BaseFragment() { @@ -126,7 +128,9 @@ fragment.completedAdapter.notifyDataSetChanged() } else { if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("您还没有处理完成过任何工单", null) + fragment.emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { + fragment.obtainWorkOrderList(fragment.pageIndex) + } } else { fragment.emptyView!!.hide() fragment.completedAdapter = CompletedOrderAdapter( diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt index 1b4126e..04654dc 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt @@ -5,6 +5,7 @@ import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.navigatePageTo +import com.casic.app.smartwell.view.OvertimeOrderActivity import com.casic.app.smartwell.view.WellManagementActivity import com.casic.app.smartwell.view.WellOperationActivity import com.casic.app.smartwell.vm.WellCountViewModel @@ -24,14 +25,15 @@ titleView.text = "首页" //首页功能块 val homeRecycleAdapter = HomeRecycleAdapter(requireContext()) - homeRecyclerView.layoutManager = GridLayoutManager(requireContext(), 2) + homeRecyclerView.layoutManager = GridLayoutManager(requireContext(), 3) homeRecyclerView.adapter = homeRecycleAdapter homeRecycleAdapter.setOnGridItemClickListener(object : HomeRecycleAdapter.OnGridItemClickListener { override fun onClick(position: Int) { when (position) { 0 -> requireContext().navigatePageTo(WellManagementActivity::class.java) - 1 -> requireContext().navigatePageTo(WellOperationActivity::class.java) + 1 -> requireContext().navigatePageTo(OvertimeOrderActivity::class.java) + 2 -> requireContext().navigatePageTo(WellOperationActivity::class.java) } } }) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e45158c..7460cc2 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -45,7 +45,9 @@ + + diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt index cba0198..e7ec8d8 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt @@ -25,7 +25,7 @@ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { val imageView = ImageView(context) val layoutWidth: Int = - SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 20f) + SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f) val margins: Int = QMUIDisplayHelper.dp2px(context, 3) val itemSize = (layoutWidth - 6 * margins) / 3 val params = LinearLayout.LayoutParams(itemSize, itemSize) diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt index 7780aaa..ad90885 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt @@ -17,4 +17,12 @@ } } return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt index de1c6c1..84ae8a8 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt @@ -33,10 +33,16 @@ startActivity(intent) } +fun Context.navigatePageTo(clazz: Class, values: ArrayList) { + val intent = Intent(this, clazz) + intent.putStringArrayListExtra(Constant.INTENT_PARAM, values) + startActivity(intent) +} + fun Context.navigatePageTo( clazz: Class, index: Int, - imageList: ArrayList? + imageList: ArrayList ) { val intent = Intent(this, clazz) intent.putExtra("index", index) 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 5f9ce7c..8ed51f4 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 @@ -23,4 +23,12 @@ "未知类型" } } +} + +fun Int.toLevel(): String { + return if (this == 0) { + "" + } else { + this.toString() + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt index ee3685d..3bc5d96 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt @@ -1,6 +1,20 @@ package com.casic.app.smartwell.extensions +import java.text.ParseException import java.text.SimpleDateFormat import java.util.* -fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) \ No newline at end of file +fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) + +fun Long.isEarlierThanStart(date: String): Boolean { + if (date.isBlank()) { + return false + } + val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA) + try { + return this < dateFormat.parse(date)!!.time + } catch (e: ParseException) { + + } + return true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt new file mode 100644 index 0000000..bd9cfa7 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt @@ -0,0 +1,12 @@ +package com.casic.app.smartwell.extensions + +import android.view.View +import com.qmuiteam.qmui.widget.QMUIEmptyView + +fun QMUIEmptyView.showEmptyPage(onButtonClickListener: View.OnClickListener) { + this.show(false, "抱歉,无法查询到相关记录", null, "重试", onButtonClickListener) +} + +fun QMUIEmptyView.showEmptyPage(title: String, onButtonClickListener: View.OnClickListener) { + this.show(false, title, null, "刷新", onButtonClickListener) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt index 7358b1c..2cdd63d 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt @@ -60,6 +60,7 @@ //窨井类型转换 fun String.toChinese(): String { return when (this) { + "0" -> "全部" "1" -> "一级" "2" -> "二级" "3" -> "三级" diff --git a/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt b/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt new file mode 100644 index 0000000..af7fd13 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt @@ -0,0 +1,52 @@ +package com.casic.app.smartwell.model + +class SearchResultModel { + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var rows: MutableList? = null + var total = 0 + + class RowsBean { + var alarmContent = 0 + var deptName: String? = null + var jobStatus: String? = null + var handleJobPerson: String? = null + var alarmContentName: String? = null + var shouldGetTime: String? = null + var wellCode: String? = null + var deptid: String? = null + var alarmTypeName: String? = null + var jobCode: String? = null + var jobBelongTo: String? = null + var jobFlag: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var jobStatusName: String? = null + var alarmValue: String? = null + var alarmId: String? = null + var alarmLevel: String? = null + var handleJobTime: String? = null + var tel: String? = null + var id: String? = null + var wellId: String? = null + var jobType: String? = null + var editable = 0 + var alarmTime: String? = null + var alarmMessage: String? = null + var staff: String? = null + var getJobTime: String? = null + var getJobPerson: String? = null + var shouldHandleTime: String? = null + var jobId: String? = null + var alarmType: String? = null + var alarmStatus: String? = null + var devcode: String? = null + var createTime: String? = null + var position: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index fd4e603..c342334 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -41,7 +41,7 @@ const val USER_DETAIL_MODEL = "userDetailModel" const val INTENT_PARAM = "intentParam" - val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher) - val HOME_ITEMS = arrayOf("闸井管理", "布防撤防") + val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher) + val HOME_ITEMS = arrayOf("闸井管理", "超时工单", "布防撤防") val SUB_PAGE_TITLES = arrayOf("待处理", "待确认", "处理中", "已完成") } \ 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 9c34038..7a5ca39 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 @@ -234,6 +234,22 @@ ): OrderStatusModel /** + * 查询工单 + * */ + @GET("/job/searchList") + suspend fun obtainSearchResult( + @Header("token") token: String, + @Query("keywords") keywords: String?, + @Query("alarmContent") alarmContent: String?, + @Query("alarmLevel") alarmLevel: String?, + @Query("jobStatus") jobStatus: String?, + @Query("beginTime") beginTime: String?, + @Query("endTime") endTime: String?, + @Query("limit") limit: Int, + @Query("offset") offset: Int + ): SearchResultModel + + /** * 获取用户信息 */ @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 a7106b5..945f6a3 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 @@ -175,6 +175,31 @@ } /** + * 查询工单 + */ + suspend fun obtainSearchResult( + keywords: String?, + alarmContent: String?, + alarmLevel: String?, + jobStatus: String?, + beginTime: String?, + endTime: String?, + page: Int + ): SearchResultModel { + return api.obtainSearchResult( + AuthenticationHelper.token!!, + keywords, + alarmContent, + alarmLevel, + jobStatus, + beginTime, + endTime, + Constant.PAGE_LIMIT, + page + ) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): String { diff --git a/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt index cfc4e0f..45af48a 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt @@ -98,7 +98,7 @@ imageRecyclerView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() - val imageArray = orderDetail.firstStatePhotos.toString().split(";") + val imageArray = orderDetail.firstStatePhotos.toString().split(",") imageArray.forEach { path -> if (path != "") { urls.add(path.combineImagePath()) diff --git a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt index 1a3e670..36075bd 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt @@ -197,7 +197,7 @@ return@setOnClickListener } val state = sceneEditView.text.toString().trim() - if (state == "") { + if (state.isBlank()) { "请输入现场情况".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt index b7a51ce..97e1f59 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt @@ -161,7 +161,7 @@ imageRecyclerView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() - val imageArray = orderDetail.firstStatePhotos.toString().split(";") + val imageArray = orderDetail.firstStatePhotos.toString().split(",") imageArray.forEach { path -> if (path != "") { urls.add(path.combineImagePath()) @@ -247,7 +247,7 @@ return@setOnClickListener } val state = sceneEditView.text.toString().trim() - if (state == "") { + if (state.isBlank()) { "请输入维护情况".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt index e5698a1..cd4fdff 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt @@ -1,7 +1,6 @@ package com.casic.app.smartwell.view import android.text.Editable -import android.text.TextUtils import android.text.TextWatcher import android.view.KeyEvent import android.view.inputmethod.EditorInfo @@ -67,13 +66,13 @@ false } loginButton.setOnClickListener { - val account = userNameView.text.toString() - val userPassword = userPasswordView.text.toString() - if (TextUtils.isEmpty(account)) { + val account = userNameView.text.toString().trim() + val userPassword = userPasswordView.text.toString().trim() + if (account.isBlank()) { "用户名不能为空".show(this) return@setOnClickListener } - if (TextUtils.isEmpty(userPassword)) { + if (userPassword.isBlank()) { "密码不能为空".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt new file mode 100644 index 0000000..453a2c9 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt @@ -0,0 +1,21 @@ +package com.casic.app.smartwell.view + +import com.casic.app.smartwell.R +import com.casic.app.smartwell.base.BaseActivity + +class OvertimeOrderActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_order_overtime + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt new file mode 100644 index 0000000..8228673 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt @@ -0,0 +1,129 @@ +package com.casic.app.smartwell.view + +import android.os.Handler +import android.os.Looper +import android.os.Message +import android.view.View +import androidx.lifecycle.ViewModelProvider +import com.casic.app.smartwell.R +import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage +import com.casic.app.smartwell.model.SearchResultModel +import com.casic.app.smartwell.utils.Constant +import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.vm.SearchOrderViewModel +import kotlinx.android.synthetic.main.activity_order_search_result.* +import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* +import java.lang.ref.WeakReference + +class SearchResultActivity : BaseActivity() { + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var searchOrderViewModel: SearchOrderViewModel + private lateinit var args: ArrayList + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initLayoutView(): Int = R.layout.activity_order_search_result + + override fun setupTopBarLayout() { + titleView.text = "查询结果" + leftBackView.visibility = View.VISIBLE + leftBackView.setOnClickListener { finish() } + } + + override fun initData() { + args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! + weakReferenceHandler = WeakReferenceHandler(this) + searchOrderViewModel = ViewModelProvider(this).get(SearchOrderViewModel::class.java) + } + + override fun initEvent() { + obtainSearchResult(args, pageIndex) + searchOrderViewModel.listModel.observe(this, { + if (it.code == 200) { + val dataRows = it.data?.rows + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows!! + resultRefreshLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows?.size == 0) { + "到底了,别拉了".show(this) + } + dataBeans.addAll(dataRows!!) + resultRefreshLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows!! + } + } + weakReferenceHandler.sendEmptyMessage(2022040101) + } + }) + searchOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } + }) + resultRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainSearchResult(args, pageIndex) + } + resultRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainSearchResult(args, pageIndex) + } + } + + private fun obtainSearchResult(args: ArrayList, pageIndex: Int) { + searchOrderViewModel.obtainSearchResult( + keywords = args[0], + alarmContent = args[1], + alarmLevel = args[2], + jobStatus = args[3], + beginTime = args[4], + endTime = args[5], + page = pageIndex + ) + } + + private class WeakReferenceHandler(activity: SearchResultActivity) : + Handler(Looper.getMainLooper()) { + private val reference: WeakReference = WeakReference(activity) + + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val activity = reference.get()!! + if (msg.what == 2022040101) { + if (activity.isRefresh || activity.isLoadMore) { +// activity.wellOperationAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (activity.dataBeans.size == 0) { + activity.emptyView!!.showEmptyPage { + activity.obtainSearchResult(activity.args, activity.pageIndex) + } + } else { + activity.emptyView!!.hide() + } + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt index af88541..dc68caa 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt @@ -1,15 +1,12 @@ package com.casic.app.smartwell.view -import android.content.Context import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.base.BaseActivity -import com.casic.app.smartwell.extensions.show -import com.casic.app.smartwell.extensions.timestampToDate +import com.casic.app.smartwell.extensions.* import com.casic.app.smartwell.model.AlarmContentTypeModel import com.casic.app.smartwell.model.OrderStatusModel import com.casic.app.smartwell.utils.Constant @@ -25,13 +22,16 @@ class SearchWorkOrderActivity : BaseActivity() { - private val kTag = "SearchWorkOrderActivity" private lateinit var contentTypeViewModel: AlarmContentTypeViewModel private lateinit var orderStatusViewModel: OrderStatusViewModel private lateinit var inflater: LayoutInflater - private var alarmTypeModels: MutableList = ArrayList() + private lateinit var contentTypeAdapter: TagAdapter + private lateinit var orderStatusAdapter: TagAdapter + private var contentModels: MutableList = ArrayList() private var orderStatusModels: MutableList = ArrayList() - private val context: Context = this@SearchWorkOrderActivity + private var alarmContentType = "" + private var alarmLevel = "" + private var orderState = "" override fun initLayoutView(): Int = R.layout.activity_order_search @@ -45,7 +45,6 @@ inflater = LayoutInflater.from(this) //告警内容 contentTypeViewModel = ViewModelProvider(this).get(AlarmContentTypeViewModel::class.java) - //工单状态 orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java) } @@ -65,11 +64,10 @@ } else { bean = dataBean } - alarmTypeModels.add(bean) + contentModels.add(bean) } - - alarmContentLayout.adapter = - object : TagAdapter(alarmTypeModels) { + contentTypeAdapter = + object : TagAdapter(contentModels) { override fun getView( parent: FlowLayout?, position: Int, bean: AlarmContentTypeModel.DataBean.ListBean? @@ -78,19 +76,46 @@ R.layout.item_tag_flowlayout, orderStatusLayout, false ) as TextView - tagView.text = alarmTypeModels[position].name + tagView.text = contentModels[position].name return tagView } } - + alarmContentLayout.adapter = contentTypeAdapter + contentTypeAdapter.setSelectedList(0) alarmContentLayout.setOnTagClickListener { _, position, _ -> - //TODO - alarmTypeModels[position].name!!.show(context) + this.alarmContentType = contentModels[position].value.toString() true } } }) + val levelMaps: MutableList> = ArrayList() + for (i in 0..3) { + val map = HashMap() + map["name"] = i.toString().toChinese() + map["value"] = i.toLevel() + levelMaps.add(map) + } + val levelAdapter = object : TagAdapter>(levelMaps) { + override fun getView( + parent: FlowLayout?, + position: Int, map: Map? + ): View { + val tagView = inflater.inflate( + R.layout.item_tag_flowlayout, + orderStatusLayout, false + ) as TextView + tagView.text = levelMaps[position]["name"] + return tagView + } + } + alarmLevelLayout.adapter = levelAdapter + levelAdapter.setSelectedList(0) + alarmLevelLayout.setOnTagClickListener { _, position, _ -> + this.alarmLevel = levelMaps[position]["value"].toString() + true + } + orderStatusViewModel.obtainOrderStatus() orderStatusViewModel.listModel.observe(this, { if (it.code == 200) { @@ -106,8 +131,7 @@ } orderStatusModels.add(bean) } - - orderStatusLayout.adapter = + orderStatusAdapter = object : TagAdapter(orderStatusModels) { override fun getView( parent: FlowLayout?, @@ -121,18 +145,18 @@ return tagView } } - + orderStatusLayout.adapter = orderStatusAdapter + orderStatusAdapter.setSelectedList(0) orderStatusLayout.setOnTagClickListener { _, position, _ -> - //TODO - orderStatusModels[position].name!!.show(context) + this.orderState = orderStatusModels[position].value.toString() true } } }) - selectStartTimeView.setOnClickListener { + startTimeView.setOnClickListener { TimePickerDialog.Builder() - .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setThemeColor(R.color.mainThemeColor.convertColor(this)) .setTitleStringId("请选择开始时间") .setWheelItemTextSize(16) .setCyclic(false) @@ -140,13 +164,13 @@ .setMaxMillseconds(System.currentTimeMillis()) .setType(Type.YEAR_MONTH_DAY) .setCallBack { _: TimePickerDialog?, millSeconds: Long -> - selectStartTimeView.text = millSeconds.timestampToDate() + startTimeView.text = millSeconds.timestampToDate() }.build().show(supportFragmentManager, "year_month_day") } - selectEndTimeView.setOnClickListener { + endTimeView.setOnClickListener { TimePickerDialog.Builder() - .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setThemeColor(R.color.mainThemeColor.convertColor(this)) .setTitleStringId("请选择结束时间") .setWheelItemTextSize(16) .setCyclic(false) @@ -154,18 +178,42 @@ .setMaxMillseconds(System.currentTimeMillis()) .setType(Type.YEAR_MONTH_DAY) .setCallBack { _: TimePickerDialog?, millSeconds: Long -> - selectEndTimeView.text = millSeconds.timestampToDate() + if (millSeconds.isEarlierThanStart(startTimeView.text.toString())) { + "结束时间不合法,不能早于开始时间".show(this) + return@setCallBack + } + endTimeView.text = millSeconds.timestampToDate() }.build().show(supportFragmentManager, "year_month_day") } searchButton.setChangeAlphaWhenPress(true) searchButton.setOnClickListener { - + val wellCode = wellCodeView.text.toString().trim() + if (wellCode.isBlank()) { + "请输入窨井编号".show(this) + return@setOnClickListener + } + //页面跳转,将查询参数传过去 + navigatePageTo( + SearchResultActivity::class.java, addAll( + wellCode, + alarmContentType, + alarmLevel, + orderState, + startTimeView.text.toString(), + endTimeView.text.toString() + ) + ) } clearButton.setChangeAlphaWhenPress(true) clearButton.setOnClickListener { - + wellCodeView.text.clear() + contentTypeAdapter.setSelectedList(0) + levelAdapter.setSelectedList(0) + orderStatusAdapter.setSelectedList(0) + startTimeView.text = "" + endTimeView.text = "" } } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt index e907ca4..e0cc32f 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt @@ -15,6 +15,7 @@ import com.casic.app.smartwell.base.BaseActivity import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.extensions.showRouteOnMap import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel @@ -23,6 +24,7 @@ import com.casic.app.smartwell.widgets.EasyPopupWindow import kotlinx.android.synthetic.main.activity_well_management.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* import kotlinx.android.synthetic.main.include_search_bar.* import java.lang.ref.WeakReference @@ -168,7 +170,13 @@ activity.wellListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (activity.dataBeans.size == 0) { - activity.emptyView!!.show("抱歉,无法查询到相关记录", null) + activity.emptyView!!.showEmptyPage { + activity.obtainWellList( + activity.keywords, + activity.wellType, + activity.pageIndex + ) + } } else { activity.emptyView!!.hide() activity.wellListAdapter = WellListAdapter(activity, activity.dataBeans) diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt index 1259b72..2137a40 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt @@ -6,12 +6,14 @@ import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.SensorListAdapter import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.utils.DialogHelper import com.casic.app.smartwell.utils.LoadState import com.casic.app.smartwell.vm.WellMonitorViewModel import kotlinx.android.synthetic.main.activity_well_monitor.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* class WellMonitorActivity : BaseActivity() { @@ -36,7 +38,9 @@ wellMonitorViewModel.monitorModel.observe(this, { if (it.code == 200) { if (it.data?.size == 0) { - emptyView!!.show("该井下无设备,或设备已离线,请检查", null) + emptyView!!.showEmptyPage("抱歉,该井下无设备,或设备已离线") { + wellMonitorViewModel.obtainMonitorResult(id = wellId) + } } else { emptyView!!.hide() val sensorListAdapter = SensorListAdapter(this, it.data!!) 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 c6cbe78..0121426 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 @@ -15,6 +15,7 @@ import com.casic.app.smartwell.base.BaseActivity import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.extensions.showRouteOnMap import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel @@ -27,6 +28,7 @@ import com.pengxh.app.multilib.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.activity_well_operation.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* import kotlinx.android.synthetic.main.include_search_bar.* import java.lang.ref.WeakReference @@ -204,7 +206,13 @@ activity.wellOperationAdapter.notifyDataSetChanged() } else { //首次加载数据 if (activity.dataBeans.size == 0) { - activity.emptyView!!.show("抱歉,无法查询到相关记录", null) + activity.emptyView!!.showEmptyPage { + activity.obtainWellList( + activity.keywords, + activity.wellType, + activity.pageIndex + ) + } } else { activity.emptyView!!.hide() activity.wellOperationAdapter = 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 c9ca964..d7d8269 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 @@ -10,6 +10,7 @@ import com.casic.app.smartwell.adapter.CompletedOrderAdapter import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.CompletedDetailActivity @@ -18,6 +19,7 @@ import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_completed.* +import kotlinx.android.synthetic.main.include_empty_view.* import java.lang.ref.WeakReference class CompletedOrderFragment : BaseFragment() { @@ -126,7 +128,9 @@ fragment.completedAdapter.notifyDataSetChanged() } else { if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("您还没有处理完成过任何工单", null) + fragment.emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { + fragment.obtainWorkOrderList(fragment.pageIndex) + } } else { fragment.emptyView!!.hide() fragment.completedAdapter = CompletedOrderAdapter( diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt index 1b4126e..04654dc 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt @@ -5,6 +5,7 @@ import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.navigatePageTo +import com.casic.app.smartwell.view.OvertimeOrderActivity import com.casic.app.smartwell.view.WellManagementActivity import com.casic.app.smartwell.view.WellOperationActivity import com.casic.app.smartwell.vm.WellCountViewModel @@ -24,14 +25,15 @@ titleView.text = "首页" //首页功能块 val homeRecycleAdapter = HomeRecycleAdapter(requireContext()) - homeRecyclerView.layoutManager = GridLayoutManager(requireContext(), 2) + homeRecyclerView.layoutManager = GridLayoutManager(requireContext(), 3) homeRecyclerView.adapter = homeRecycleAdapter homeRecycleAdapter.setOnGridItemClickListener(object : HomeRecycleAdapter.OnGridItemClickListener { override fun onClick(position: Int) { when (position) { 0 -> requireContext().navigatePageTo(WellManagementActivity::class.java) - 1 -> requireContext().navigatePageTo(WellOperationActivity::class.java) + 1 -> requireContext().navigatePageTo(OvertimeOrderActivity::class.java) + 2 -> requireContext().navigatePageTo(WellOperationActivity::class.java) } } }) diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt index d4791bf..cafc40f 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt @@ -10,6 +10,7 @@ import com.casic.app.smartwell.adapter.InHandleOrderAdapter import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.InHandleDetailActivity @@ -18,6 +19,7 @@ import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_inhandle.* +import kotlinx.android.synthetic.main.include_empty_view.* import java.lang.ref.WeakReference class InHandleOrderFragment : BaseFragment() { @@ -126,7 +128,9 @@ fragment.inHandleAdapter.notifyDataSetChanged() } else { //首次加载数据 if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("真不错,您已经处理完所有工单", null) + fragment.emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + fragment.obtainWorkOrderList(fragment.pageIndex) + } } else { fragment.emptyView!!.hide() fragment.inHandleAdapter = InHandleOrderAdapter( diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e45158c..7460cc2 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -45,7 +45,9 @@ + + diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt index cba0198..e7ec8d8 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt @@ -25,7 +25,7 @@ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { val imageView = ImageView(context) val layoutWidth: Int = - SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 20f) + SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f) val margins: Int = QMUIDisplayHelper.dp2px(context, 3) val itemSize = (layoutWidth - 6 * margins) / 3 val params = LinearLayout.LayoutParams(itemSize, itemSize) diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt index 7780aaa..ad90885 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt @@ -17,4 +17,12 @@ } } return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt index de1c6c1..84ae8a8 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt @@ -33,10 +33,16 @@ startActivity(intent) } +fun Context.navigatePageTo(clazz: Class, values: ArrayList) { + val intent = Intent(this, clazz) + intent.putStringArrayListExtra(Constant.INTENT_PARAM, values) + startActivity(intent) +} + fun Context.navigatePageTo( clazz: Class, index: Int, - imageList: ArrayList? + imageList: ArrayList ) { val intent = Intent(this, clazz) intent.putExtra("index", index) 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 5f9ce7c..8ed51f4 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 @@ -23,4 +23,12 @@ "未知类型" } } +} + +fun Int.toLevel(): String { + return if (this == 0) { + "" + } else { + this.toString() + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt index ee3685d..3bc5d96 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt @@ -1,6 +1,20 @@ package com.casic.app.smartwell.extensions +import java.text.ParseException import java.text.SimpleDateFormat import java.util.* -fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) \ No newline at end of file +fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) + +fun Long.isEarlierThanStart(date: String): Boolean { + if (date.isBlank()) { + return false + } + val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA) + try { + return this < dateFormat.parse(date)!!.time + } catch (e: ParseException) { + + } + return true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt new file mode 100644 index 0000000..bd9cfa7 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt @@ -0,0 +1,12 @@ +package com.casic.app.smartwell.extensions + +import android.view.View +import com.qmuiteam.qmui.widget.QMUIEmptyView + +fun QMUIEmptyView.showEmptyPage(onButtonClickListener: View.OnClickListener) { + this.show(false, "抱歉,无法查询到相关记录", null, "重试", onButtonClickListener) +} + +fun QMUIEmptyView.showEmptyPage(title: String, onButtonClickListener: View.OnClickListener) { + this.show(false, title, null, "刷新", onButtonClickListener) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt index 7358b1c..2cdd63d 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt @@ -60,6 +60,7 @@ //窨井类型转换 fun String.toChinese(): String { return when (this) { + "0" -> "全部" "1" -> "一级" "2" -> "二级" "3" -> "三级" diff --git a/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt b/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt new file mode 100644 index 0000000..af7fd13 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt @@ -0,0 +1,52 @@ +package com.casic.app.smartwell.model + +class SearchResultModel { + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var rows: MutableList? = null + var total = 0 + + class RowsBean { + var alarmContent = 0 + var deptName: String? = null + var jobStatus: String? = null + var handleJobPerson: String? = null + var alarmContentName: String? = null + var shouldGetTime: String? = null + var wellCode: String? = null + var deptid: String? = null + var alarmTypeName: String? = null + var jobCode: String? = null + var jobBelongTo: String? = null + var jobFlag: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var jobStatusName: String? = null + var alarmValue: String? = null + var alarmId: String? = null + var alarmLevel: String? = null + var handleJobTime: String? = null + var tel: String? = null + var id: String? = null + var wellId: String? = null + var jobType: String? = null + var editable = 0 + var alarmTime: String? = null + var alarmMessage: String? = null + var staff: String? = null + var getJobTime: String? = null + var getJobPerson: String? = null + var shouldHandleTime: String? = null + var jobId: String? = null + var alarmType: String? = null + var alarmStatus: String? = null + var devcode: String? = null + var createTime: String? = null + var position: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index fd4e603..c342334 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -41,7 +41,7 @@ const val USER_DETAIL_MODEL = "userDetailModel" const val INTENT_PARAM = "intentParam" - val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher) - val HOME_ITEMS = arrayOf("闸井管理", "布防撤防") + val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher) + val HOME_ITEMS = arrayOf("闸井管理", "超时工单", "布防撤防") val SUB_PAGE_TITLES = arrayOf("待处理", "待确认", "处理中", "已完成") } \ 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 9c34038..7a5ca39 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 @@ -234,6 +234,22 @@ ): OrderStatusModel /** + * 查询工单 + * */ + @GET("/job/searchList") + suspend fun obtainSearchResult( + @Header("token") token: String, + @Query("keywords") keywords: String?, + @Query("alarmContent") alarmContent: String?, + @Query("alarmLevel") alarmLevel: String?, + @Query("jobStatus") jobStatus: String?, + @Query("beginTime") beginTime: String?, + @Query("endTime") endTime: String?, + @Query("limit") limit: Int, + @Query("offset") offset: Int + ): SearchResultModel + + /** * 获取用户信息 */ @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 a7106b5..945f6a3 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 @@ -175,6 +175,31 @@ } /** + * 查询工单 + */ + suspend fun obtainSearchResult( + keywords: String?, + alarmContent: String?, + alarmLevel: String?, + jobStatus: String?, + beginTime: String?, + endTime: String?, + page: Int + ): SearchResultModel { + return api.obtainSearchResult( + AuthenticationHelper.token!!, + keywords, + alarmContent, + alarmLevel, + jobStatus, + beginTime, + endTime, + Constant.PAGE_LIMIT, + page + ) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): String { diff --git a/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt index cfc4e0f..45af48a 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt @@ -98,7 +98,7 @@ imageRecyclerView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() - val imageArray = orderDetail.firstStatePhotos.toString().split(";") + val imageArray = orderDetail.firstStatePhotos.toString().split(",") imageArray.forEach { path -> if (path != "") { urls.add(path.combineImagePath()) diff --git a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt index 1a3e670..36075bd 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt @@ -197,7 +197,7 @@ return@setOnClickListener } val state = sceneEditView.text.toString().trim() - if (state == "") { + if (state.isBlank()) { "请输入现场情况".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt index b7a51ce..97e1f59 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt @@ -161,7 +161,7 @@ imageRecyclerView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() - val imageArray = orderDetail.firstStatePhotos.toString().split(";") + val imageArray = orderDetail.firstStatePhotos.toString().split(",") imageArray.forEach { path -> if (path != "") { urls.add(path.combineImagePath()) @@ -247,7 +247,7 @@ return@setOnClickListener } val state = sceneEditView.text.toString().trim() - if (state == "") { + if (state.isBlank()) { "请输入维护情况".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt index e5698a1..cd4fdff 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt @@ -1,7 +1,6 @@ package com.casic.app.smartwell.view import android.text.Editable -import android.text.TextUtils import android.text.TextWatcher import android.view.KeyEvent import android.view.inputmethod.EditorInfo @@ -67,13 +66,13 @@ false } loginButton.setOnClickListener { - val account = userNameView.text.toString() - val userPassword = userPasswordView.text.toString() - if (TextUtils.isEmpty(account)) { + val account = userNameView.text.toString().trim() + val userPassword = userPasswordView.text.toString().trim() + if (account.isBlank()) { "用户名不能为空".show(this) return@setOnClickListener } - if (TextUtils.isEmpty(userPassword)) { + if (userPassword.isBlank()) { "密码不能为空".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt new file mode 100644 index 0000000..453a2c9 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt @@ -0,0 +1,21 @@ +package com.casic.app.smartwell.view + +import com.casic.app.smartwell.R +import com.casic.app.smartwell.base.BaseActivity + +class OvertimeOrderActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_order_overtime + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt new file mode 100644 index 0000000..8228673 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt @@ -0,0 +1,129 @@ +package com.casic.app.smartwell.view + +import android.os.Handler +import android.os.Looper +import android.os.Message +import android.view.View +import androidx.lifecycle.ViewModelProvider +import com.casic.app.smartwell.R +import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage +import com.casic.app.smartwell.model.SearchResultModel +import com.casic.app.smartwell.utils.Constant +import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.vm.SearchOrderViewModel +import kotlinx.android.synthetic.main.activity_order_search_result.* +import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* +import java.lang.ref.WeakReference + +class SearchResultActivity : BaseActivity() { + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var searchOrderViewModel: SearchOrderViewModel + private lateinit var args: ArrayList + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initLayoutView(): Int = R.layout.activity_order_search_result + + override fun setupTopBarLayout() { + titleView.text = "查询结果" + leftBackView.visibility = View.VISIBLE + leftBackView.setOnClickListener { finish() } + } + + override fun initData() { + args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! + weakReferenceHandler = WeakReferenceHandler(this) + searchOrderViewModel = ViewModelProvider(this).get(SearchOrderViewModel::class.java) + } + + override fun initEvent() { + obtainSearchResult(args, pageIndex) + searchOrderViewModel.listModel.observe(this, { + if (it.code == 200) { + val dataRows = it.data?.rows + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows!! + resultRefreshLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows?.size == 0) { + "到底了,别拉了".show(this) + } + dataBeans.addAll(dataRows!!) + resultRefreshLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows!! + } + } + weakReferenceHandler.sendEmptyMessage(2022040101) + } + }) + searchOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } + }) + resultRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainSearchResult(args, pageIndex) + } + resultRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainSearchResult(args, pageIndex) + } + } + + private fun obtainSearchResult(args: ArrayList, pageIndex: Int) { + searchOrderViewModel.obtainSearchResult( + keywords = args[0], + alarmContent = args[1], + alarmLevel = args[2], + jobStatus = args[3], + beginTime = args[4], + endTime = args[5], + page = pageIndex + ) + } + + private class WeakReferenceHandler(activity: SearchResultActivity) : + Handler(Looper.getMainLooper()) { + private val reference: WeakReference = WeakReference(activity) + + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val activity = reference.get()!! + if (msg.what == 2022040101) { + if (activity.isRefresh || activity.isLoadMore) { +// activity.wellOperationAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (activity.dataBeans.size == 0) { + activity.emptyView!!.showEmptyPage { + activity.obtainSearchResult(activity.args, activity.pageIndex) + } + } else { + activity.emptyView!!.hide() + } + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt index af88541..dc68caa 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt @@ -1,15 +1,12 @@ package com.casic.app.smartwell.view -import android.content.Context import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.base.BaseActivity -import com.casic.app.smartwell.extensions.show -import com.casic.app.smartwell.extensions.timestampToDate +import com.casic.app.smartwell.extensions.* import com.casic.app.smartwell.model.AlarmContentTypeModel import com.casic.app.smartwell.model.OrderStatusModel import com.casic.app.smartwell.utils.Constant @@ -25,13 +22,16 @@ class SearchWorkOrderActivity : BaseActivity() { - private val kTag = "SearchWorkOrderActivity" private lateinit var contentTypeViewModel: AlarmContentTypeViewModel private lateinit var orderStatusViewModel: OrderStatusViewModel private lateinit var inflater: LayoutInflater - private var alarmTypeModels: MutableList = ArrayList() + private lateinit var contentTypeAdapter: TagAdapter + private lateinit var orderStatusAdapter: TagAdapter + private var contentModels: MutableList = ArrayList() private var orderStatusModels: MutableList = ArrayList() - private val context: Context = this@SearchWorkOrderActivity + private var alarmContentType = "" + private var alarmLevel = "" + private var orderState = "" override fun initLayoutView(): Int = R.layout.activity_order_search @@ -45,7 +45,6 @@ inflater = LayoutInflater.from(this) //告警内容 contentTypeViewModel = ViewModelProvider(this).get(AlarmContentTypeViewModel::class.java) - //工单状态 orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java) } @@ -65,11 +64,10 @@ } else { bean = dataBean } - alarmTypeModels.add(bean) + contentModels.add(bean) } - - alarmContentLayout.adapter = - object : TagAdapter(alarmTypeModels) { + contentTypeAdapter = + object : TagAdapter(contentModels) { override fun getView( parent: FlowLayout?, position: Int, bean: AlarmContentTypeModel.DataBean.ListBean? @@ -78,19 +76,46 @@ R.layout.item_tag_flowlayout, orderStatusLayout, false ) as TextView - tagView.text = alarmTypeModels[position].name + tagView.text = contentModels[position].name return tagView } } - + alarmContentLayout.adapter = contentTypeAdapter + contentTypeAdapter.setSelectedList(0) alarmContentLayout.setOnTagClickListener { _, position, _ -> - //TODO - alarmTypeModels[position].name!!.show(context) + this.alarmContentType = contentModels[position].value.toString() true } } }) + val levelMaps: MutableList> = ArrayList() + for (i in 0..3) { + val map = HashMap() + map["name"] = i.toString().toChinese() + map["value"] = i.toLevel() + levelMaps.add(map) + } + val levelAdapter = object : TagAdapter>(levelMaps) { + override fun getView( + parent: FlowLayout?, + position: Int, map: Map? + ): View { + val tagView = inflater.inflate( + R.layout.item_tag_flowlayout, + orderStatusLayout, false + ) as TextView + tagView.text = levelMaps[position]["name"] + return tagView + } + } + alarmLevelLayout.adapter = levelAdapter + levelAdapter.setSelectedList(0) + alarmLevelLayout.setOnTagClickListener { _, position, _ -> + this.alarmLevel = levelMaps[position]["value"].toString() + true + } + orderStatusViewModel.obtainOrderStatus() orderStatusViewModel.listModel.observe(this, { if (it.code == 200) { @@ -106,8 +131,7 @@ } orderStatusModels.add(bean) } - - orderStatusLayout.adapter = + orderStatusAdapter = object : TagAdapter(orderStatusModels) { override fun getView( parent: FlowLayout?, @@ -121,18 +145,18 @@ return tagView } } - + orderStatusLayout.adapter = orderStatusAdapter + orderStatusAdapter.setSelectedList(0) orderStatusLayout.setOnTagClickListener { _, position, _ -> - //TODO - orderStatusModels[position].name!!.show(context) + this.orderState = orderStatusModels[position].value.toString() true } } }) - selectStartTimeView.setOnClickListener { + startTimeView.setOnClickListener { TimePickerDialog.Builder() - .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setThemeColor(R.color.mainThemeColor.convertColor(this)) .setTitleStringId("请选择开始时间") .setWheelItemTextSize(16) .setCyclic(false) @@ -140,13 +164,13 @@ .setMaxMillseconds(System.currentTimeMillis()) .setType(Type.YEAR_MONTH_DAY) .setCallBack { _: TimePickerDialog?, millSeconds: Long -> - selectStartTimeView.text = millSeconds.timestampToDate() + startTimeView.text = millSeconds.timestampToDate() }.build().show(supportFragmentManager, "year_month_day") } - selectEndTimeView.setOnClickListener { + endTimeView.setOnClickListener { TimePickerDialog.Builder() - .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setThemeColor(R.color.mainThemeColor.convertColor(this)) .setTitleStringId("请选择结束时间") .setWheelItemTextSize(16) .setCyclic(false) @@ -154,18 +178,42 @@ .setMaxMillseconds(System.currentTimeMillis()) .setType(Type.YEAR_MONTH_DAY) .setCallBack { _: TimePickerDialog?, millSeconds: Long -> - selectEndTimeView.text = millSeconds.timestampToDate() + if (millSeconds.isEarlierThanStart(startTimeView.text.toString())) { + "结束时间不合法,不能早于开始时间".show(this) + return@setCallBack + } + endTimeView.text = millSeconds.timestampToDate() }.build().show(supportFragmentManager, "year_month_day") } searchButton.setChangeAlphaWhenPress(true) searchButton.setOnClickListener { - + val wellCode = wellCodeView.text.toString().trim() + if (wellCode.isBlank()) { + "请输入窨井编号".show(this) + return@setOnClickListener + } + //页面跳转,将查询参数传过去 + navigatePageTo( + SearchResultActivity::class.java, addAll( + wellCode, + alarmContentType, + alarmLevel, + orderState, + startTimeView.text.toString(), + endTimeView.text.toString() + ) + ) } clearButton.setChangeAlphaWhenPress(true) clearButton.setOnClickListener { - + wellCodeView.text.clear() + contentTypeAdapter.setSelectedList(0) + levelAdapter.setSelectedList(0) + orderStatusAdapter.setSelectedList(0) + startTimeView.text = "" + endTimeView.text = "" } } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt index e907ca4..e0cc32f 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt @@ -15,6 +15,7 @@ import com.casic.app.smartwell.base.BaseActivity import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.extensions.showRouteOnMap import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel @@ -23,6 +24,7 @@ import com.casic.app.smartwell.widgets.EasyPopupWindow import kotlinx.android.synthetic.main.activity_well_management.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* import kotlinx.android.synthetic.main.include_search_bar.* import java.lang.ref.WeakReference @@ -168,7 +170,13 @@ activity.wellListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (activity.dataBeans.size == 0) { - activity.emptyView!!.show("抱歉,无法查询到相关记录", null) + activity.emptyView!!.showEmptyPage { + activity.obtainWellList( + activity.keywords, + activity.wellType, + activity.pageIndex + ) + } } else { activity.emptyView!!.hide() activity.wellListAdapter = WellListAdapter(activity, activity.dataBeans) diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt index 1259b72..2137a40 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt @@ -6,12 +6,14 @@ import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.SensorListAdapter import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.utils.DialogHelper import com.casic.app.smartwell.utils.LoadState import com.casic.app.smartwell.vm.WellMonitorViewModel import kotlinx.android.synthetic.main.activity_well_monitor.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* class WellMonitorActivity : BaseActivity() { @@ -36,7 +38,9 @@ wellMonitorViewModel.monitorModel.observe(this, { if (it.code == 200) { if (it.data?.size == 0) { - emptyView!!.show("该井下无设备,或设备已离线,请检查", null) + emptyView!!.showEmptyPage("抱歉,该井下无设备,或设备已离线") { + wellMonitorViewModel.obtainMonitorResult(id = wellId) + } } else { emptyView!!.hide() val sensorListAdapter = SensorListAdapter(this, it.data!!) 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 c6cbe78..0121426 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 @@ -15,6 +15,7 @@ import com.casic.app.smartwell.base.BaseActivity import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.extensions.showRouteOnMap import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel @@ -27,6 +28,7 @@ import com.pengxh.app.multilib.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.activity_well_operation.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* import kotlinx.android.synthetic.main.include_search_bar.* import java.lang.ref.WeakReference @@ -204,7 +206,13 @@ activity.wellOperationAdapter.notifyDataSetChanged() } else { //首次加载数据 if (activity.dataBeans.size == 0) { - activity.emptyView!!.show("抱歉,无法查询到相关记录", null) + activity.emptyView!!.showEmptyPage { + activity.obtainWellList( + activity.keywords, + activity.wellType, + activity.pageIndex + ) + } } else { activity.emptyView!!.hide() activity.wellOperationAdapter = 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 c9ca964..d7d8269 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 @@ -10,6 +10,7 @@ import com.casic.app.smartwell.adapter.CompletedOrderAdapter import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.CompletedDetailActivity @@ -18,6 +19,7 @@ import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_completed.* +import kotlinx.android.synthetic.main.include_empty_view.* import java.lang.ref.WeakReference class CompletedOrderFragment : BaseFragment() { @@ -126,7 +128,9 @@ fragment.completedAdapter.notifyDataSetChanged() } else { if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("您还没有处理完成过任何工单", null) + fragment.emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { + fragment.obtainWorkOrderList(fragment.pageIndex) + } } else { fragment.emptyView!!.hide() fragment.completedAdapter = CompletedOrderAdapter( diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt index 1b4126e..04654dc 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt @@ -5,6 +5,7 @@ import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.navigatePageTo +import com.casic.app.smartwell.view.OvertimeOrderActivity import com.casic.app.smartwell.view.WellManagementActivity import com.casic.app.smartwell.view.WellOperationActivity import com.casic.app.smartwell.vm.WellCountViewModel @@ -24,14 +25,15 @@ titleView.text = "首页" //首页功能块 val homeRecycleAdapter = HomeRecycleAdapter(requireContext()) - homeRecyclerView.layoutManager = GridLayoutManager(requireContext(), 2) + homeRecyclerView.layoutManager = GridLayoutManager(requireContext(), 3) homeRecyclerView.adapter = homeRecycleAdapter homeRecycleAdapter.setOnGridItemClickListener(object : HomeRecycleAdapter.OnGridItemClickListener { override fun onClick(position: Int) { when (position) { 0 -> requireContext().navigatePageTo(WellManagementActivity::class.java) - 1 -> requireContext().navigatePageTo(WellOperationActivity::class.java) + 1 -> requireContext().navigatePageTo(OvertimeOrderActivity::class.java) + 2 -> requireContext().navigatePageTo(WellOperationActivity::class.java) } } }) diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt index d4791bf..cafc40f 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt @@ -10,6 +10,7 @@ import com.casic.app.smartwell.adapter.InHandleOrderAdapter import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.InHandleDetailActivity @@ -18,6 +19,7 @@ import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_inhandle.* +import kotlinx.android.synthetic.main.include_empty_view.* import java.lang.ref.WeakReference class InHandleOrderFragment : BaseFragment() { @@ -126,7 +128,9 @@ fragment.inHandleAdapter.notifyDataSetChanged() } else { //首次加载数据 if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("真不错,您已经处理完所有工单", null) + fragment.emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + fragment.obtainWorkOrderList(fragment.pageIndex) + } } else { fragment.emptyView!!.hide() fragment.inHandleAdapter = InHandleOrderAdapter( 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 780c1da..47a4c9a 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 @@ -10,6 +10,7 @@ import com.casic.app.smartwell.adapter.TodoWorkOrderListAdapter import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.utils.DialogHelper @@ -20,6 +21,7 @@ import com.pengxh.app.multilib.base.BaseFragment import com.pengxh.app.multilib.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.fragment_order_todo.* +import kotlinx.android.synthetic.main.include_empty_view.* import java.lang.ref.WeakReference class TodoOrderFragment : BaseFragment() { @@ -135,7 +137,9 @@ fragment.workOrderListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("没有需要您处理的工单", null) + fragment.emptyView!!.showEmptyPage("没有需要您处理的工单") { + fragment.obtainWorkOrderList(fragment.pageIndex) + } } else { fragment.emptyView!!.hide() fragment.workOrderListAdapter = TodoWorkOrderListAdapter( diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e45158c..7460cc2 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -45,7 +45,9 @@ + + diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt index cba0198..e7ec8d8 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt @@ -25,7 +25,7 @@ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { val imageView = ImageView(context) val layoutWidth: Int = - SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 20f) + SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f) val margins: Int = QMUIDisplayHelper.dp2px(context, 3) val itemSize = (layoutWidth - 6 * margins) / 3 val params = LinearLayout.LayoutParams(itemSize, itemSize) diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt index 7780aaa..ad90885 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt @@ -17,4 +17,12 @@ } } return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt index de1c6c1..84ae8a8 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt @@ -33,10 +33,16 @@ startActivity(intent) } +fun Context.navigatePageTo(clazz: Class, values: ArrayList) { + val intent = Intent(this, clazz) + intent.putStringArrayListExtra(Constant.INTENT_PARAM, values) + startActivity(intent) +} + fun Context.navigatePageTo( clazz: Class, index: Int, - imageList: ArrayList? + imageList: ArrayList ) { val intent = Intent(this, clazz) intent.putExtra("index", index) 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 5f9ce7c..8ed51f4 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 @@ -23,4 +23,12 @@ "未知类型" } } +} + +fun Int.toLevel(): String { + return if (this == 0) { + "" + } else { + this.toString() + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt index ee3685d..3bc5d96 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt @@ -1,6 +1,20 @@ package com.casic.app.smartwell.extensions +import java.text.ParseException import java.text.SimpleDateFormat import java.util.* -fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) \ No newline at end of file +fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) + +fun Long.isEarlierThanStart(date: String): Boolean { + if (date.isBlank()) { + return false + } + val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA) + try { + return this < dateFormat.parse(date)!!.time + } catch (e: ParseException) { + + } + return true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt new file mode 100644 index 0000000..bd9cfa7 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt @@ -0,0 +1,12 @@ +package com.casic.app.smartwell.extensions + +import android.view.View +import com.qmuiteam.qmui.widget.QMUIEmptyView + +fun QMUIEmptyView.showEmptyPage(onButtonClickListener: View.OnClickListener) { + this.show(false, "抱歉,无法查询到相关记录", null, "重试", onButtonClickListener) +} + +fun QMUIEmptyView.showEmptyPage(title: String, onButtonClickListener: View.OnClickListener) { + this.show(false, title, null, "刷新", onButtonClickListener) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt index 7358b1c..2cdd63d 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt @@ -60,6 +60,7 @@ //窨井类型转换 fun String.toChinese(): String { return when (this) { + "0" -> "全部" "1" -> "一级" "2" -> "二级" "3" -> "三级" diff --git a/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt b/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt new file mode 100644 index 0000000..af7fd13 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt @@ -0,0 +1,52 @@ +package com.casic.app.smartwell.model + +class SearchResultModel { + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var rows: MutableList? = null + var total = 0 + + class RowsBean { + var alarmContent = 0 + var deptName: String? = null + var jobStatus: String? = null + var handleJobPerson: String? = null + var alarmContentName: String? = null + var shouldGetTime: String? = null + var wellCode: String? = null + var deptid: String? = null + var alarmTypeName: String? = null + var jobCode: String? = null + var jobBelongTo: String? = null + var jobFlag: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var jobStatusName: String? = null + var alarmValue: String? = null + var alarmId: String? = null + var alarmLevel: String? = null + var handleJobTime: String? = null + var tel: String? = null + var id: String? = null + var wellId: String? = null + var jobType: String? = null + var editable = 0 + var alarmTime: String? = null + var alarmMessage: String? = null + var staff: String? = null + var getJobTime: String? = null + var getJobPerson: String? = null + var shouldHandleTime: String? = null + var jobId: String? = null + var alarmType: String? = null + var alarmStatus: String? = null + var devcode: String? = null + var createTime: String? = null + var position: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index fd4e603..c342334 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -41,7 +41,7 @@ const val USER_DETAIL_MODEL = "userDetailModel" const val INTENT_PARAM = "intentParam" - val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher) - val HOME_ITEMS = arrayOf("闸井管理", "布防撤防") + val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher) + val HOME_ITEMS = arrayOf("闸井管理", "超时工单", "布防撤防") val SUB_PAGE_TITLES = arrayOf("待处理", "待确认", "处理中", "已完成") } \ 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 9c34038..7a5ca39 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 @@ -234,6 +234,22 @@ ): OrderStatusModel /** + * 查询工单 + * */ + @GET("/job/searchList") + suspend fun obtainSearchResult( + @Header("token") token: String, + @Query("keywords") keywords: String?, + @Query("alarmContent") alarmContent: String?, + @Query("alarmLevel") alarmLevel: String?, + @Query("jobStatus") jobStatus: String?, + @Query("beginTime") beginTime: String?, + @Query("endTime") endTime: String?, + @Query("limit") limit: Int, + @Query("offset") offset: Int + ): SearchResultModel + + /** * 获取用户信息 */ @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 a7106b5..945f6a3 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 @@ -175,6 +175,31 @@ } /** + * 查询工单 + */ + suspend fun obtainSearchResult( + keywords: String?, + alarmContent: String?, + alarmLevel: String?, + jobStatus: String?, + beginTime: String?, + endTime: String?, + page: Int + ): SearchResultModel { + return api.obtainSearchResult( + AuthenticationHelper.token!!, + keywords, + alarmContent, + alarmLevel, + jobStatus, + beginTime, + endTime, + Constant.PAGE_LIMIT, + page + ) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): String { diff --git a/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt index cfc4e0f..45af48a 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt @@ -98,7 +98,7 @@ imageRecyclerView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() - val imageArray = orderDetail.firstStatePhotos.toString().split(";") + val imageArray = orderDetail.firstStatePhotos.toString().split(",") imageArray.forEach { path -> if (path != "") { urls.add(path.combineImagePath()) diff --git a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt index 1a3e670..36075bd 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt @@ -197,7 +197,7 @@ return@setOnClickListener } val state = sceneEditView.text.toString().trim() - if (state == "") { + if (state.isBlank()) { "请输入现场情况".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt index b7a51ce..97e1f59 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt @@ -161,7 +161,7 @@ imageRecyclerView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() - val imageArray = orderDetail.firstStatePhotos.toString().split(";") + val imageArray = orderDetail.firstStatePhotos.toString().split(",") imageArray.forEach { path -> if (path != "") { urls.add(path.combineImagePath()) @@ -247,7 +247,7 @@ return@setOnClickListener } val state = sceneEditView.text.toString().trim() - if (state == "") { + if (state.isBlank()) { "请输入维护情况".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt index e5698a1..cd4fdff 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt @@ -1,7 +1,6 @@ package com.casic.app.smartwell.view import android.text.Editable -import android.text.TextUtils import android.text.TextWatcher import android.view.KeyEvent import android.view.inputmethod.EditorInfo @@ -67,13 +66,13 @@ false } loginButton.setOnClickListener { - val account = userNameView.text.toString() - val userPassword = userPasswordView.text.toString() - if (TextUtils.isEmpty(account)) { + val account = userNameView.text.toString().trim() + val userPassword = userPasswordView.text.toString().trim() + if (account.isBlank()) { "用户名不能为空".show(this) return@setOnClickListener } - if (TextUtils.isEmpty(userPassword)) { + if (userPassword.isBlank()) { "密码不能为空".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt new file mode 100644 index 0000000..453a2c9 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt @@ -0,0 +1,21 @@ +package com.casic.app.smartwell.view + +import com.casic.app.smartwell.R +import com.casic.app.smartwell.base.BaseActivity + +class OvertimeOrderActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_order_overtime + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt new file mode 100644 index 0000000..8228673 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt @@ -0,0 +1,129 @@ +package com.casic.app.smartwell.view + +import android.os.Handler +import android.os.Looper +import android.os.Message +import android.view.View +import androidx.lifecycle.ViewModelProvider +import com.casic.app.smartwell.R +import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage +import com.casic.app.smartwell.model.SearchResultModel +import com.casic.app.smartwell.utils.Constant +import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.vm.SearchOrderViewModel +import kotlinx.android.synthetic.main.activity_order_search_result.* +import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* +import java.lang.ref.WeakReference + +class SearchResultActivity : BaseActivity() { + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var searchOrderViewModel: SearchOrderViewModel + private lateinit var args: ArrayList + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initLayoutView(): Int = R.layout.activity_order_search_result + + override fun setupTopBarLayout() { + titleView.text = "查询结果" + leftBackView.visibility = View.VISIBLE + leftBackView.setOnClickListener { finish() } + } + + override fun initData() { + args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! + weakReferenceHandler = WeakReferenceHandler(this) + searchOrderViewModel = ViewModelProvider(this).get(SearchOrderViewModel::class.java) + } + + override fun initEvent() { + obtainSearchResult(args, pageIndex) + searchOrderViewModel.listModel.observe(this, { + if (it.code == 200) { + val dataRows = it.data?.rows + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows!! + resultRefreshLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows?.size == 0) { + "到底了,别拉了".show(this) + } + dataBeans.addAll(dataRows!!) + resultRefreshLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows!! + } + } + weakReferenceHandler.sendEmptyMessage(2022040101) + } + }) + searchOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } + }) + resultRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainSearchResult(args, pageIndex) + } + resultRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainSearchResult(args, pageIndex) + } + } + + private fun obtainSearchResult(args: ArrayList, pageIndex: Int) { + searchOrderViewModel.obtainSearchResult( + keywords = args[0], + alarmContent = args[1], + alarmLevel = args[2], + jobStatus = args[3], + beginTime = args[4], + endTime = args[5], + page = pageIndex + ) + } + + private class WeakReferenceHandler(activity: SearchResultActivity) : + Handler(Looper.getMainLooper()) { + private val reference: WeakReference = WeakReference(activity) + + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val activity = reference.get()!! + if (msg.what == 2022040101) { + if (activity.isRefresh || activity.isLoadMore) { +// activity.wellOperationAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (activity.dataBeans.size == 0) { + activity.emptyView!!.showEmptyPage { + activity.obtainSearchResult(activity.args, activity.pageIndex) + } + } else { + activity.emptyView!!.hide() + } + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt index af88541..dc68caa 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt @@ -1,15 +1,12 @@ package com.casic.app.smartwell.view -import android.content.Context import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.base.BaseActivity -import com.casic.app.smartwell.extensions.show -import com.casic.app.smartwell.extensions.timestampToDate +import com.casic.app.smartwell.extensions.* import com.casic.app.smartwell.model.AlarmContentTypeModel import com.casic.app.smartwell.model.OrderStatusModel import com.casic.app.smartwell.utils.Constant @@ -25,13 +22,16 @@ class SearchWorkOrderActivity : BaseActivity() { - private val kTag = "SearchWorkOrderActivity" private lateinit var contentTypeViewModel: AlarmContentTypeViewModel private lateinit var orderStatusViewModel: OrderStatusViewModel private lateinit var inflater: LayoutInflater - private var alarmTypeModels: MutableList = ArrayList() + private lateinit var contentTypeAdapter: TagAdapter + private lateinit var orderStatusAdapter: TagAdapter + private var contentModels: MutableList = ArrayList() private var orderStatusModels: MutableList = ArrayList() - private val context: Context = this@SearchWorkOrderActivity + private var alarmContentType = "" + private var alarmLevel = "" + private var orderState = "" override fun initLayoutView(): Int = R.layout.activity_order_search @@ -45,7 +45,6 @@ inflater = LayoutInflater.from(this) //告警内容 contentTypeViewModel = ViewModelProvider(this).get(AlarmContentTypeViewModel::class.java) - //工单状态 orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java) } @@ -65,11 +64,10 @@ } else { bean = dataBean } - alarmTypeModels.add(bean) + contentModels.add(bean) } - - alarmContentLayout.adapter = - object : TagAdapter(alarmTypeModels) { + contentTypeAdapter = + object : TagAdapter(contentModels) { override fun getView( parent: FlowLayout?, position: Int, bean: AlarmContentTypeModel.DataBean.ListBean? @@ -78,19 +76,46 @@ R.layout.item_tag_flowlayout, orderStatusLayout, false ) as TextView - tagView.text = alarmTypeModels[position].name + tagView.text = contentModels[position].name return tagView } } - + alarmContentLayout.adapter = contentTypeAdapter + contentTypeAdapter.setSelectedList(0) alarmContentLayout.setOnTagClickListener { _, position, _ -> - //TODO - alarmTypeModels[position].name!!.show(context) + this.alarmContentType = contentModels[position].value.toString() true } } }) + val levelMaps: MutableList> = ArrayList() + for (i in 0..3) { + val map = HashMap() + map["name"] = i.toString().toChinese() + map["value"] = i.toLevel() + levelMaps.add(map) + } + val levelAdapter = object : TagAdapter>(levelMaps) { + override fun getView( + parent: FlowLayout?, + position: Int, map: Map? + ): View { + val tagView = inflater.inflate( + R.layout.item_tag_flowlayout, + orderStatusLayout, false + ) as TextView + tagView.text = levelMaps[position]["name"] + return tagView + } + } + alarmLevelLayout.adapter = levelAdapter + levelAdapter.setSelectedList(0) + alarmLevelLayout.setOnTagClickListener { _, position, _ -> + this.alarmLevel = levelMaps[position]["value"].toString() + true + } + orderStatusViewModel.obtainOrderStatus() orderStatusViewModel.listModel.observe(this, { if (it.code == 200) { @@ -106,8 +131,7 @@ } orderStatusModels.add(bean) } - - orderStatusLayout.adapter = + orderStatusAdapter = object : TagAdapter(orderStatusModels) { override fun getView( parent: FlowLayout?, @@ -121,18 +145,18 @@ return tagView } } - + orderStatusLayout.adapter = orderStatusAdapter + orderStatusAdapter.setSelectedList(0) orderStatusLayout.setOnTagClickListener { _, position, _ -> - //TODO - orderStatusModels[position].name!!.show(context) + this.orderState = orderStatusModels[position].value.toString() true } } }) - selectStartTimeView.setOnClickListener { + startTimeView.setOnClickListener { TimePickerDialog.Builder() - .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setThemeColor(R.color.mainThemeColor.convertColor(this)) .setTitleStringId("请选择开始时间") .setWheelItemTextSize(16) .setCyclic(false) @@ -140,13 +164,13 @@ .setMaxMillseconds(System.currentTimeMillis()) .setType(Type.YEAR_MONTH_DAY) .setCallBack { _: TimePickerDialog?, millSeconds: Long -> - selectStartTimeView.text = millSeconds.timestampToDate() + startTimeView.text = millSeconds.timestampToDate() }.build().show(supportFragmentManager, "year_month_day") } - selectEndTimeView.setOnClickListener { + endTimeView.setOnClickListener { TimePickerDialog.Builder() - .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setThemeColor(R.color.mainThemeColor.convertColor(this)) .setTitleStringId("请选择结束时间") .setWheelItemTextSize(16) .setCyclic(false) @@ -154,18 +178,42 @@ .setMaxMillseconds(System.currentTimeMillis()) .setType(Type.YEAR_MONTH_DAY) .setCallBack { _: TimePickerDialog?, millSeconds: Long -> - selectEndTimeView.text = millSeconds.timestampToDate() + if (millSeconds.isEarlierThanStart(startTimeView.text.toString())) { + "结束时间不合法,不能早于开始时间".show(this) + return@setCallBack + } + endTimeView.text = millSeconds.timestampToDate() }.build().show(supportFragmentManager, "year_month_day") } searchButton.setChangeAlphaWhenPress(true) searchButton.setOnClickListener { - + val wellCode = wellCodeView.text.toString().trim() + if (wellCode.isBlank()) { + "请输入窨井编号".show(this) + return@setOnClickListener + } + //页面跳转,将查询参数传过去 + navigatePageTo( + SearchResultActivity::class.java, addAll( + wellCode, + alarmContentType, + alarmLevel, + orderState, + startTimeView.text.toString(), + endTimeView.text.toString() + ) + ) } clearButton.setChangeAlphaWhenPress(true) clearButton.setOnClickListener { - + wellCodeView.text.clear() + contentTypeAdapter.setSelectedList(0) + levelAdapter.setSelectedList(0) + orderStatusAdapter.setSelectedList(0) + startTimeView.text = "" + endTimeView.text = "" } } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt index e907ca4..e0cc32f 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt @@ -15,6 +15,7 @@ import com.casic.app.smartwell.base.BaseActivity import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.extensions.showRouteOnMap import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel @@ -23,6 +24,7 @@ import com.casic.app.smartwell.widgets.EasyPopupWindow import kotlinx.android.synthetic.main.activity_well_management.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* import kotlinx.android.synthetic.main.include_search_bar.* import java.lang.ref.WeakReference @@ -168,7 +170,13 @@ activity.wellListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (activity.dataBeans.size == 0) { - activity.emptyView!!.show("抱歉,无法查询到相关记录", null) + activity.emptyView!!.showEmptyPage { + activity.obtainWellList( + activity.keywords, + activity.wellType, + activity.pageIndex + ) + } } else { activity.emptyView!!.hide() activity.wellListAdapter = WellListAdapter(activity, activity.dataBeans) diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt index 1259b72..2137a40 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt @@ -6,12 +6,14 @@ import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.SensorListAdapter import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.utils.DialogHelper import com.casic.app.smartwell.utils.LoadState import com.casic.app.smartwell.vm.WellMonitorViewModel import kotlinx.android.synthetic.main.activity_well_monitor.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* class WellMonitorActivity : BaseActivity() { @@ -36,7 +38,9 @@ wellMonitorViewModel.monitorModel.observe(this, { if (it.code == 200) { if (it.data?.size == 0) { - emptyView!!.show("该井下无设备,或设备已离线,请检查", null) + emptyView!!.showEmptyPage("抱歉,该井下无设备,或设备已离线") { + wellMonitorViewModel.obtainMonitorResult(id = wellId) + } } else { emptyView!!.hide() val sensorListAdapter = SensorListAdapter(this, it.data!!) 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 c6cbe78..0121426 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 @@ -15,6 +15,7 @@ import com.casic.app.smartwell.base.BaseActivity import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.extensions.showRouteOnMap import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel @@ -27,6 +28,7 @@ import com.pengxh.app.multilib.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.activity_well_operation.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* import kotlinx.android.synthetic.main.include_search_bar.* import java.lang.ref.WeakReference @@ -204,7 +206,13 @@ activity.wellOperationAdapter.notifyDataSetChanged() } else { //首次加载数据 if (activity.dataBeans.size == 0) { - activity.emptyView!!.show("抱歉,无法查询到相关记录", null) + activity.emptyView!!.showEmptyPage { + activity.obtainWellList( + activity.keywords, + activity.wellType, + activity.pageIndex + ) + } } else { activity.emptyView!!.hide() activity.wellOperationAdapter = 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 c9ca964..d7d8269 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 @@ -10,6 +10,7 @@ import com.casic.app.smartwell.adapter.CompletedOrderAdapter import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.CompletedDetailActivity @@ -18,6 +19,7 @@ import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_completed.* +import kotlinx.android.synthetic.main.include_empty_view.* import java.lang.ref.WeakReference class CompletedOrderFragment : BaseFragment() { @@ -126,7 +128,9 @@ fragment.completedAdapter.notifyDataSetChanged() } else { if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("您还没有处理完成过任何工单", null) + fragment.emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { + fragment.obtainWorkOrderList(fragment.pageIndex) + } } else { fragment.emptyView!!.hide() fragment.completedAdapter = CompletedOrderAdapter( diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt index 1b4126e..04654dc 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt @@ -5,6 +5,7 @@ import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.navigatePageTo +import com.casic.app.smartwell.view.OvertimeOrderActivity import com.casic.app.smartwell.view.WellManagementActivity import com.casic.app.smartwell.view.WellOperationActivity import com.casic.app.smartwell.vm.WellCountViewModel @@ -24,14 +25,15 @@ titleView.text = "首页" //首页功能块 val homeRecycleAdapter = HomeRecycleAdapter(requireContext()) - homeRecyclerView.layoutManager = GridLayoutManager(requireContext(), 2) + homeRecyclerView.layoutManager = GridLayoutManager(requireContext(), 3) homeRecyclerView.adapter = homeRecycleAdapter homeRecycleAdapter.setOnGridItemClickListener(object : HomeRecycleAdapter.OnGridItemClickListener { override fun onClick(position: Int) { when (position) { 0 -> requireContext().navigatePageTo(WellManagementActivity::class.java) - 1 -> requireContext().navigatePageTo(WellOperationActivity::class.java) + 1 -> requireContext().navigatePageTo(OvertimeOrderActivity::class.java) + 2 -> requireContext().navigatePageTo(WellOperationActivity::class.java) } } }) diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt index d4791bf..cafc40f 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt @@ -10,6 +10,7 @@ import com.casic.app.smartwell.adapter.InHandleOrderAdapter import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.InHandleDetailActivity @@ -18,6 +19,7 @@ import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_inhandle.* +import kotlinx.android.synthetic.main.include_empty_view.* import java.lang.ref.WeakReference class InHandleOrderFragment : BaseFragment() { @@ -126,7 +128,9 @@ fragment.inHandleAdapter.notifyDataSetChanged() } else { //首次加载数据 if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("真不错,您已经处理完所有工单", null) + fragment.emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + fragment.obtainWorkOrderList(fragment.pageIndex) + } } else { fragment.emptyView!!.hide() fragment.inHandleAdapter = InHandleOrderAdapter( 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 780c1da..47a4c9a 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 @@ -10,6 +10,7 @@ import com.casic.app.smartwell.adapter.TodoWorkOrderListAdapter import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.utils.DialogHelper @@ -20,6 +21,7 @@ import com.pengxh.app.multilib.base.BaseFragment import com.pengxh.app.multilib.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.fragment_order_todo.* +import kotlinx.android.synthetic.main.include_empty_view.* import java.lang.ref.WeakReference class TodoOrderFragment : BaseFragment() { @@ -135,7 +137,9 @@ fragment.workOrderListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("没有需要您处理的工单", null) + fragment.emptyView!!.showEmptyPage("没有需要您处理的工单") { + fragment.obtainWorkOrderList(fragment.pageIndex) + } } else { fragment.emptyView!!.hide() fragment.workOrderListAdapter = TodoWorkOrderListAdapter( diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt index 5e79db6..a8560d5 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt @@ -10,6 +10,7 @@ import com.casic.app.smartwell.adapter.UndeterminedOrderAdapter import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.DetermineDetailActivity @@ -18,6 +19,7 @@ import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_undetermined.* +import kotlinx.android.synthetic.main.include_empty_view.* import java.lang.ref.WeakReference class UndeterminedOrderFragment : BaseFragment() { @@ -126,7 +128,9 @@ fragment.undeterminedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("没有需要您确认的工单", null) + fragment.emptyView!!.showEmptyPage("没有需要您确认的工单") { + fragment.obtainWorkOrderList(fragment.pageIndex) + } } else { fragment.emptyView!!.hide() fragment.undeterminedAdapter = UndeterminedOrderAdapter( diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e45158c..7460cc2 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -45,7 +45,9 @@ + + diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt index cba0198..e7ec8d8 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt @@ -25,7 +25,7 @@ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { val imageView = ImageView(context) val layoutWidth: Int = - SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 20f) + SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f) val margins: Int = QMUIDisplayHelper.dp2px(context, 3) val itemSize = (layoutWidth - 6 * margins) / 3 val params = LinearLayout.LayoutParams(itemSize, itemSize) diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt index 7780aaa..ad90885 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt @@ -17,4 +17,12 @@ } } return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt index de1c6c1..84ae8a8 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt @@ -33,10 +33,16 @@ startActivity(intent) } +fun Context.navigatePageTo(clazz: Class, values: ArrayList) { + val intent = Intent(this, clazz) + intent.putStringArrayListExtra(Constant.INTENT_PARAM, values) + startActivity(intent) +} + fun Context.navigatePageTo( clazz: Class, index: Int, - imageList: ArrayList? + imageList: ArrayList ) { val intent = Intent(this, clazz) intent.putExtra("index", index) 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 5f9ce7c..8ed51f4 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 @@ -23,4 +23,12 @@ "未知类型" } } +} + +fun Int.toLevel(): String { + return if (this == 0) { + "" + } else { + this.toString() + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt index ee3685d..3bc5d96 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt @@ -1,6 +1,20 @@ package com.casic.app.smartwell.extensions +import java.text.ParseException import java.text.SimpleDateFormat import java.util.* -fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) \ No newline at end of file +fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) + +fun Long.isEarlierThanStart(date: String): Boolean { + if (date.isBlank()) { + return false + } + val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA) + try { + return this < dateFormat.parse(date)!!.time + } catch (e: ParseException) { + + } + return true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt new file mode 100644 index 0000000..bd9cfa7 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt @@ -0,0 +1,12 @@ +package com.casic.app.smartwell.extensions + +import android.view.View +import com.qmuiteam.qmui.widget.QMUIEmptyView + +fun QMUIEmptyView.showEmptyPage(onButtonClickListener: View.OnClickListener) { + this.show(false, "抱歉,无法查询到相关记录", null, "重试", onButtonClickListener) +} + +fun QMUIEmptyView.showEmptyPage(title: String, onButtonClickListener: View.OnClickListener) { + this.show(false, title, null, "刷新", onButtonClickListener) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt index 7358b1c..2cdd63d 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt @@ -60,6 +60,7 @@ //窨井类型转换 fun String.toChinese(): String { return when (this) { + "0" -> "全部" "1" -> "一级" "2" -> "二级" "3" -> "三级" diff --git a/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt b/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt new file mode 100644 index 0000000..af7fd13 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt @@ -0,0 +1,52 @@ +package com.casic.app.smartwell.model + +class SearchResultModel { + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var rows: MutableList? = null + var total = 0 + + class RowsBean { + var alarmContent = 0 + var deptName: String? = null + var jobStatus: String? = null + var handleJobPerson: String? = null + var alarmContentName: String? = null + var shouldGetTime: String? = null + var wellCode: String? = null + var deptid: String? = null + var alarmTypeName: String? = null + var jobCode: String? = null + var jobBelongTo: String? = null + var jobFlag: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var jobStatusName: String? = null + var alarmValue: String? = null + var alarmId: String? = null + var alarmLevel: String? = null + var handleJobTime: String? = null + var tel: String? = null + var id: String? = null + var wellId: String? = null + var jobType: String? = null + var editable = 0 + var alarmTime: String? = null + var alarmMessage: String? = null + var staff: String? = null + var getJobTime: String? = null + var getJobPerson: String? = null + var shouldHandleTime: String? = null + var jobId: String? = null + var alarmType: String? = null + var alarmStatus: String? = null + var devcode: String? = null + var createTime: String? = null + var position: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index fd4e603..c342334 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -41,7 +41,7 @@ const val USER_DETAIL_MODEL = "userDetailModel" const val INTENT_PARAM = "intentParam" - val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher) - val HOME_ITEMS = arrayOf("闸井管理", "布防撤防") + val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher) + val HOME_ITEMS = arrayOf("闸井管理", "超时工单", "布防撤防") val SUB_PAGE_TITLES = arrayOf("待处理", "待确认", "处理中", "已完成") } \ 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 9c34038..7a5ca39 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 @@ -234,6 +234,22 @@ ): OrderStatusModel /** + * 查询工单 + * */ + @GET("/job/searchList") + suspend fun obtainSearchResult( + @Header("token") token: String, + @Query("keywords") keywords: String?, + @Query("alarmContent") alarmContent: String?, + @Query("alarmLevel") alarmLevel: String?, + @Query("jobStatus") jobStatus: String?, + @Query("beginTime") beginTime: String?, + @Query("endTime") endTime: String?, + @Query("limit") limit: Int, + @Query("offset") offset: Int + ): SearchResultModel + + /** * 获取用户信息 */ @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 a7106b5..945f6a3 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 @@ -175,6 +175,31 @@ } /** + * 查询工单 + */ + suspend fun obtainSearchResult( + keywords: String?, + alarmContent: String?, + alarmLevel: String?, + jobStatus: String?, + beginTime: String?, + endTime: String?, + page: Int + ): SearchResultModel { + return api.obtainSearchResult( + AuthenticationHelper.token!!, + keywords, + alarmContent, + alarmLevel, + jobStatus, + beginTime, + endTime, + Constant.PAGE_LIMIT, + page + ) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): String { diff --git a/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt index cfc4e0f..45af48a 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt @@ -98,7 +98,7 @@ imageRecyclerView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() - val imageArray = orderDetail.firstStatePhotos.toString().split(";") + val imageArray = orderDetail.firstStatePhotos.toString().split(",") imageArray.forEach { path -> if (path != "") { urls.add(path.combineImagePath()) diff --git a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt index 1a3e670..36075bd 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt @@ -197,7 +197,7 @@ return@setOnClickListener } val state = sceneEditView.text.toString().trim() - if (state == "") { + if (state.isBlank()) { "请输入现场情况".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt index b7a51ce..97e1f59 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt @@ -161,7 +161,7 @@ imageRecyclerView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() - val imageArray = orderDetail.firstStatePhotos.toString().split(";") + val imageArray = orderDetail.firstStatePhotos.toString().split(",") imageArray.forEach { path -> if (path != "") { urls.add(path.combineImagePath()) @@ -247,7 +247,7 @@ return@setOnClickListener } val state = sceneEditView.text.toString().trim() - if (state == "") { + if (state.isBlank()) { "请输入维护情况".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt index e5698a1..cd4fdff 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt @@ -1,7 +1,6 @@ package com.casic.app.smartwell.view import android.text.Editable -import android.text.TextUtils import android.text.TextWatcher import android.view.KeyEvent import android.view.inputmethod.EditorInfo @@ -67,13 +66,13 @@ false } loginButton.setOnClickListener { - val account = userNameView.text.toString() - val userPassword = userPasswordView.text.toString() - if (TextUtils.isEmpty(account)) { + val account = userNameView.text.toString().trim() + val userPassword = userPasswordView.text.toString().trim() + if (account.isBlank()) { "用户名不能为空".show(this) return@setOnClickListener } - if (TextUtils.isEmpty(userPassword)) { + if (userPassword.isBlank()) { "密码不能为空".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt new file mode 100644 index 0000000..453a2c9 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt @@ -0,0 +1,21 @@ +package com.casic.app.smartwell.view + +import com.casic.app.smartwell.R +import com.casic.app.smartwell.base.BaseActivity + +class OvertimeOrderActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_order_overtime + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt new file mode 100644 index 0000000..8228673 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt @@ -0,0 +1,129 @@ +package com.casic.app.smartwell.view + +import android.os.Handler +import android.os.Looper +import android.os.Message +import android.view.View +import androidx.lifecycle.ViewModelProvider +import com.casic.app.smartwell.R +import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage +import com.casic.app.smartwell.model.SearchResultModel +import com.casic.app.smartwell.utils.Constant +import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.vm.SearchOrderViewModel +import kotlinx.android.synthetic.main.activity_order_search_result.* +import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* +import java.lang.ref.WeakReference + +class SearchResultActivity : BaseActivity() { + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var searchOrderViewModel: SearchOrderViewModel + private lateinit var args: ArrayList + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initLayoutView(): Int = R.layout.activity_order_search_result + + override fun setupTopBarLayout() { + titleView.text = "查询结果" + leftBackView.visibility = View.VISIBLE + leftBackView.setOnClickListener { finish() } + } + + override fun initData() { + args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! + weakReferenceHandler = WeakReferenceHandler(this) + searchOrderViewModel = ViewModelProvider(this).get(SearchOrderViewModel::class.java) + } + + override fun initEvent() { + obtainSearchResult(args, pageIndex) + searchOrderViewModel.listModel.observe(this, { + if (it.code == 200) { + val dataRows = it.data?.rows + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows!! + resultRefreshLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows?.size == 0) { + "到底了,别拉了".show(this) + } + dataBeans.addAll(dataRows!!) + resultRefreshLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows!! + } + } + weakReferenceHandler.sendEmptyMessage(2022040101) + } + }) + searchOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } + }) + resultRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainSearchResult(args, pageIndex) + } + resultRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainSearchResult(args, pageIndex) + } + } + + private fun obtainSearchResult(args: ArrayList, pageIndex: Int) { + searchOrderViewModel.obtainSearchResult( + keywords = args[0], + alarmContent = args[1], + alarmLevel = args[2], + jobStatus = args[3], + beginTime = args[4], + endTime = args[5], + page = pageIndex + ) + } + + private class WeakReferenceHandler(activity: SearchResultActivity) : + Handler(Looper.getMainLooper()) { + private val reference: WeakReference = WeakReference(activity) + + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val activity = reference.get()!! + if (msg.what == 2022040101) { + if (activity.isRefresh || activity.isLoadMore) { +// activity.wellOperationAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (activity.dataBeans.size == 0) { + activity.emptyView!!.showEmptyPage { + activity.obtainSearchResult(activity.args, activity.pageIndex) + } + } else { + activity.emptyView!!.hide() + } + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt index af88541..dc68caa 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt @@ -1,15 +1,12 @@ package com.casic.app.smartwell.view -import android.content.Context import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.base.BaseActivity -import com.casic.app.smartwell.extensions.show -import com.casic.app.smartwell.extensions.timestampToDate +import com.casic.app.smartwell.extensions.* import com.casic.app.smartwell.model.AlarmContentTypeModel import com.casic.app.smartwell.model.OrderStatusModel import com.casic.app.smartwell.utils.Constant @@ -25,13 +22,16 @@ class SearchWorkOrderActivity : BaseActivity() { - private val kTag = "SearchWorkOrderActivity" private lateinit var contentTypeViewModel: AlarmContentTypeViewModel private lateinit var orderStatusViewModel: OrderStatusViewModel private lateinit var inflater: LayoutInflater - private var alarmTypeModels: MutableList = ArrayList() + private lateinit var contentTypeAdapter: TagAdapter + private lateinit var orderStatusAdapter: TagAdapter + private var contentModels: MutableList = ArrayList() private var orderStatusModels: MutableList = ArrayList() - private val context: Context = this@SearchWorkOrderActivity + private var alarmContentType = "" + private var alarmLevel = "" + private var orderState = "" override fun initLayoutView(): Int = R.layout.activity_order_search @@ -45,7 +45,6 @@ inflater = LayoutInflater.from(this) //告警内容 contentTypeViewModel = ViewModelProvider(this).get(AlarmContentTypeViewModel::class.java) - //工单状态 orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java) } @@ -65,11 +64,10 @@ } else { bean = dataBean } - alarmTypeModels.add(bean) + contentModels.add(bean) } - - alarmContentLayout.adapter = - object : TagAdapter(alarmTypeModels) { + contentTypeAdapter = + object : TagAdapter(contentModels) { override fun getView( parent: FlowLayout?, position: Int, bean: AlarmContentTypeModel.DataBean.ListBean? @@ -78,19 +76,46 @@ R.layout.item_tag_flowlayout, orderStatusLayout, false ) as TextView - tagView.text = alarmTypeModels[position].name + tagView.text = contentModels[position].name return tagView } } - + alarmContentLayout.adapter = contentTypeAdapter + contentTypeAdapter.setSelectedList(0) alarmContentLayout.setOnTagClickListener { _, position, _ -> - //TODO - alarmTypeModels[position].name!!.show(context) + this.alarmContentType = contentModels[position].value.toString() true } } }) + val levelMaps: MutableList> = ArrayList() + for (i in 0..3) { + val map = HashMap() + map["name"] = i.toString().toChinese() + map["value"] = i.toLevel() + levelMaps.add(map) + } + val levelAdapter = object : TagAdapter>(levelMaps) { + override fun getView( + parent: FlowLayout?, + position: Int, map: Map? + ): View { + val tagView = inflater.inflate( + R.layout.item_tag_flowlayout, + orderStatusLayout, false + ) as TextView + tagView.text = levelMaps[position]["name"] + return tagView + } + } + alarmLevelLayout.adapter = levelAdapter + levelAdapter.setSelectedList(0) + alarmLevelLayout.setOnTagClickListener { _, position, _ -> + this.alarmLevel = levelMaps[position]["value"].toString() + true + } + orderStatusViewModel.obtainOrderStatus() orderStatusViewModel.listModel.observe(this, { if (it.code == 200) { @@ -106,8 +131,7 @@ } orderStatusModels.add(bean) } - - orderStatusLayout.adapter = + orderStatusAdapter = object : TagAdapter(orderStatusModels) { override fun getView( parent: FlowLayout?, @@ -121,18 +145,18 @@ return tagView } } - + orderStatusLayout.adapter = orderStatusAdapter + orderStatusAdapter.setSelectedList(0) orderStatusLayout.setOnTagClickListener { _, position, _ -> - //TODO - orderStatusModels[position].name!!.show(context) + this.orderState = orderStatusModels[position].value.toString() true } } }) - selectStartTimeView.setOnClickListener { + startTimeView.setOnClickListener { TimePickerDialog.Builder() - .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setThemeColor(R.color.mainThemeColor.convertColor(this)) .setTitleStringId("请选择开始时间") .setWheelItemTextSize(16) .setCyclic(false) @@ -140,13 +164,13 @@ .setMaxMillseconds(System.currentTimeMillis()) .setType(Type.YEAR_MONTH_DAY) .setCallBack { _: TimePickerDialog?, millSeconds: Long -> - selectStartTimeView.text = millSeconds.timestampToDate() + startTimeView.text = millSeconds.timestampToDate() }.build().show(supportFragmentManager, "year_month_day") } - selectEndTimeView.setOnClickListener { + endTimeView.setOnClickListener { TimePickerDialog.Builder() - .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setThemeColor(R.color.mainThemeColor.convertColor(this)) .setTitleStringId("请选择结束时间") .setWheelItemTextSize(16) .setCyclic(false) @@ -154,18 +178,42 @@ .setMaxMillseconds(System.currentTimeMillis()) .setType(Type.YEAR_MONTH_DAY) .setCallBack { _: TimePickerDialog?, millSeconds: Long -> - selectEndTimeView.text = millSeconds.timestampToDate() + if (millSeconds.isEarlierThanStart(startTimeView.text.toString())) { + "结束时间不合法,不能早于开始时间".show(this) + return@setCallBack + } + endTimeView.text = millSeconds.timestampToDate() }.build().show(supportFragmentManager, "year_month_day") } searchButton.setChangeAlphaWhenPress(true) searchButton.setOnClickListener { - + val wellCode = wellCodeView.text.toString().trim() + if (wellCode.isBlank()) { + "请输入窨井编号".show(this) + return@setOnClickListener + } + //页面跳转,将查询参数传过去 + navigatePageTo( + SearchResultActivity::class.java, addAll( + wellCode, + alarmContentType, + alarmLevel, + orderState, + startTimeView.text.toString(), + endTimeView.text.toString() + ) + ) } clearButton.setChangeAlphaWhenPress(true) clearButton.setOnClickListener { - + wellCodeView.text.clear() + contentTypeAdapter.setSelectedList(0) + levelAdapter.setSelectedList(0) + orderStatusAdapter.setSelectedList(0) + startTimeView.text = "" + endTimeView.text = "" } } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt index e907ca4..e0cc32f 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt @@ -15,6 +15,7 @@ import com.casic.app.smartwell.base.BaseActivity import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.extensions.showRouteOnMap import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel @@ -23,6 +24,7 @@ import com.casic.app.smartwell.widgets.EasyPopupWindow import kotlinx.android.synthetic.main.activity_well_management.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* import kotlinx.android.synthetic.main.include_search_bar.* import java.lang.ref.WeakReference @@ -168,7 +170,13 @@ activity.wellListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (activity.dataBeans.size == 0) { - activity.emptyView!!.show("抱歉,无法查询到相关记录", null) + activity.emptyView!!.showEmptyPage { + activity.obtainWellList( + activity.keywords, + activity.wellType, + activity.pageIndex + ) + } } else { activity.emptyView!!.hide() activity.wellListAdapter = WellListAdapter(activity, activity.dataBeans) diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt index 1259b72..2137a40 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt @@ -6,12 +6,14 @@ import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.SensorListAdapter import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.utils.DialogHelper import com.casic.app.smartwell.utils.LoadState import com.casic.app.smartwell.vm.WellMonitorViewModel import kotlinx.android.synthetic.main.activity_well_monitor.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* class WellMonitorActivity : BaseActivity() { @@ -36,7 +38,9 @@ wellMonitorViewModel.monitorModel.observe(this, { if (it.code == 200) { if (it.data?.size == 0) { - emptyView!!.show("该井下无设备,或设备已离线,请检查", null) + emptyView!!.showEmptyPage("抱歉,该井下无设备,或设备已离线") { + wellMonitorViewModel.obtainMonitorResult(id = wellId) + } } else { emptyView!!.hide() val sensorListAdapter = SensorListAdapter(this, it.data!!) 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 c6cbe78..0121426 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 @@ -15,6 +15,7 @@ import com.casic.app.smartwell.base.BaseActivity import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.extensions.showRouteOnMap import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel @@ -27,6 +28,7 @@ import com.pengxh.app.multilib.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.activity_well_operation.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* import kotlinx.android.synthetic.main.include_search_bar.* import java.lang.ref.WeakReference @@ -204,7 +206,13 @@ activity.wellOperationAdapter.notifyDataSetChanged() } else { //首次加载数据 if (activity.dataBeans.size == 0) { - activity.emptyView!!.show("抱歉,无法查询到相关记录", null) + activity.emptyView!!.showEmptyPage { + activity.obtainWellList( + activity.keywords, + activity.wellType, + activity.pageIndex + ) + } } else { activity.emptyView!!.hide() activity.wellOperationAdapter = 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 c9ca964..d7d8269 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 @@ -10,6 +10,7 @@ import com.casic.app.smartwell.adapter.CompletedOrderAdapter import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.CompletedDetailActivity @@ -18,6 +19,7 @@ import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_completed.* +import kotlinx.android.synthetic.main.include_empty_view.* import java.lang.ref.WeakReference class CompletedOrderFragment : BaseFragment() { @@ -126,7 +128,9 @@ fragment.completedAdapter.notifyDataSetChanged() } else { if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("您还没有处理完成过任何工单", null) + fragment.emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { + fragment.obtainWorkOrderList(fragment.pageIndex) + } } else { fragment.emptyView!!.hide() fragment.completedAdapter = CompletedOrderAdapter( diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt index 1b4126e..04654dc 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt @@ -5,6 +5,7 @@ import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.navigatePageTo +import com.casic.app.smartwell.view.OvertimeOrderActivity import com.casic.app.smartwell.view.WellManagementActivity import com.casic.app.smartwell.view.WellOperationActivity import com.casic.app.smartwell.vm.WellCountViewModel @@ -24,14 +25,15 @@ titleView.text = "首页" //首页功能块 val homeRecycleAdapter = HomeRecycleAdapter(requireContext()) - homeRecyclerView.layoutManager = GridLayoutManager(requireContext(), 2) + homeRecyclerView.layoutManager = GridLayoutManager(requireContext(), 3) homeRecyclerView.adapter = homeRecycleAdapter homeRecycleAdapter.setOnGridItemClickListener(object : HomeRecycleAdapter.OnGridItemClickListener { override fun onClick(position: Int) { when (position) { 0 -> requireContext().navigatePageTo(WellManagementActivity::class.java) - 1 -> requireContext().navigatePageTo(WellOperationActivity::class.java) + 1 -> requireContext().navigatePageTo(OvertimeOrderActivity::class.java) + 2 -> requireContext().navigatePageTo(WellOperationActivity::class.java) } } }) diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt index d4791bf..cafc40f 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt @@ -10,6 +10,7 @@ import com.casic.app.smartwell.adapter.InHandleOrderAdapter import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.InHandleDetailActivity @@ -18,6 +19,7 @@ import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_inhandle.* +import kotlinx.android.synthetic.main.include_empty_view.* import java.lang.ref.WeakReference class InHandleOrderFragment : BaseFragment() { @@ -126,7 +128,9 @@ fragment.inHandleAdapter.notifyDataSetChanged() } else { //首次加载数据 if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("真不错,您已经处理完所有工单", null) + fragment.emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + fragment.obtainWorkOrderList(fragment.pageIndex) + } } else { fragment.emptyView!!.hide() fragment.inHandleAdapter = InHandleOrderAdapter( 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 780c1da..47a4c9a 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 @@ -10,6 +10,7 @@ import com.casic.app.smartwell.adapter.TodoWorkOrderListAdapter import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.utils.DialogHelper @@ -20,6 +21,7 @@ import com.pengxh.app.multilib.base.BaseFragment import com.pengxh.app.multilib.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.fragment_order_todo.* +import kotlinx.android.synthetic.main.include_empty_view.* import java.lang.ref.WeakReference class TodoOrderFragment : BaseFragment() { @@ -135,7 +137,9 @@ fragment.workOrderListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("没有需要您处理的工单", null) + fragment.emptyView!!.showEmptyPage("没有需要您处理的工单") { + fragment.obtainWorkOrderList(fragment.pageIndex) + } } else { fragment.emptyView!!.hide() fragment.workOrderListAdapter = TodoWorkOrderListAdapter( diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt index 5e79db6..a8560d5 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt @@ -10,6 +10,7 @@ import com.casic.app.smartwell.adapter.UndeterminedOrderAdapter import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.DetermineDetailActivity @@ -18,6 +19,7 @@ import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_undetermined.* +import kotlinx.android.synthetic.main.include_empty_view.* import java.lang.ref.WeakReference class UndeterminedOrderFragment : BaseFragment() { @@ -126,7 +128,9 @@ fragment.undeterminedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("没有需要您确认的工单", null) + fragment.emptyView!!.showEmptyPage("没有需要您确认的工单") { + fragment.obtainWorkOrderList(fragment.pageIndex) + } } else { fragment.emptyView!!.hide() fragment.undeterminedAdapter = UndeterminedOrderAdapter( diff --git a/app/src/main/java/com/casic/app/smartwell/vm/SearchOrderViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/SearchOrderViewModel.kt new file mode 100644 index 0000000..ee0149f --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/vm/SearchOrderViewModel.kt @@ -0,0 +1,31 @@ +package com.casic.app.smartwell.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.app.smartwell.base.BaseViewModel +import com.casic.app.smartwell.extensions.launch +import com.casic.app.smartwell.model.SearchResultModel +import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager + +class SearchOrderViewModel : BaseViewModel() { + + val listModel = MutableLiveData() + + fun obtainSearchResult( + keywords: String?, + alarmContent: String?, + alarmLevel: String?, + jobStatus: String?, + beginTime: String?, + endTime: String?, + page: Int + ) = launch({ + loadState.value = LoadState.Loading + listModel.value = RetrofitServiceManager.obtainSearchResult( + keywords, alarmContent, alarmLevel, jobStatus, beginTime, endTime, page + ) + loadState.value = LoadState.Success + }, { + loadState.value = LoadState.Fail + }) +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e45158c..7460cc2 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -45,7 +45,9 @@ + + diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt index cba0198..e7ec8d8 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt @@ -25,7 +25,7 @@ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { val imageView = ImageView(context) val layoutWidth: Int = - SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 20f) + SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f) val margins: Int = QMUIDisplayHelper.dp2px(context, 3) val itemSize = (layoutWidth - 6 * margins) / 3 val params = LinearLayout.LayoutParams(itemSize, itemSize) diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt index 7780aaa..ad90885 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt @@ -17,4 +17,12 @@ } } return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt index de1c6c1..84ae8a8 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt @@ -33,10 +33,16 @@ startActivity(intent) } +fun Context.navigatePageTo(clazz: Class, values: ArrayList) { + val intent = Intent(this, clazz) + intent.putStringArrayListExtra(Constant.INTENT_PARAM, values) + startActivity(intent) +} + fun Context.navigatePageTo( clazz: Class, index: Int, - imageList: ArrayList? + imageList: ArrayList ) { val intent = Intent(this, clazz) intent.putExtra("index", index) 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 5f9ce7c..8ed51f4 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 @@ -23,4 +23,12 @@ "未知类型" } } +} + +fun Int.toLevel(): String { + return if (this == 0) { + "" + } else { + this.toString() + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt index ee3685d..3bc5d96 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt @@ -1,6 +1,20 @@ package com.casic.app.smartwell.extensions +import java.text.ParseException import java.text.SimpleDateFormat import java.util.* -fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) \ No newline at end of file +fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) + +fun Long.isEarlierThanStart(date: String): Boolean { + if (date.isBlank()) { + return false + } + val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA) + try { + return this < dateFormat.parse(date)!!.time + } catch (e: ParseException) { + + } + return true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt new file mode 100644 index 0000000..bd9cfa7 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt @@ -0,0 +1,12 @@ +package com.casic.app.smartwell.extensions + +import android.view.View +import com.qmuiteam.qmui.widget.QMUIEmptyView + +fun QMUIEmptyView.showEmptyPage(onButtonClickListener: View.OnClickListener) { + this.show(false, "抱歉,无法查询到相关记录", null, "重试", onButtonClickListener) +} + +fun QMUIEmptyView.showEmptyPage(title: String, onButtonClickListener: View.OnClickListener) { + this.show(false, title, null, "刷新", onButtonClickListener) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt index 7358b1c..2cdd63d 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt @@ -60,6 +60,7 @@ //窨井类型转换 fun String.toChinese(): String { return when (this) { + "0" -> "全部" "1" -> "一级" "2" -> "二级" "3" -> "三级" diff --git a/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt b/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt new file mode 100644 index 0000000..af7fd13 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt @@ -0,0 +1,52 @@ +package com.casic.app.smartwell.model + +class SearchResultModel { + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var rows: MutableList? = null + var total = 0 + + class RowsBean { + var alarmContent = 0 + var deptName: String? = null + var jobStatus: String? = null + var handleJobPerson: String? = null + var alarmContentName: String? = null + var shouldGetTime: String? = null + var wellCode: String? = null + var deptid: String? = null + var alarmTypeName: String? = null + var jobCode: String? = null + var jobBelongTo: String? = null + var jobFlag: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var jobStatusName: String? = null + var alarmValue: String? = null + var alarmId: String? = null + var alarmLevel: String? = null + var handleJobTime: String? = null + var tel: String? = null + var id: String? = null + var wellId: String? = null + var jobType: String? = null + var editable = 0 + var alarmTime: String? = null + var alarmMessage: String? = null + var staff: String? = null + var getJobTime: String? = null + var getJobPerson: String? = null + var shouldHandleTime: String? = null + var jobId: String? = null + var alarmType: String? = null + var alarmStatus: String? = null + var devcode: String? = null + var createTime: String? = null + var position: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index fd4e603..c342334 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -41,7 +41,7 @@ const val USER_DETAIL_MODEL = "userDetailModel" const val INTENT_PARAM = "intentParam" - val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher) - val HOME_ITEMS = arrayOf("闸井管理", "布防撤防") + val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher) + val HOME_ITEMS = arrayOf("闸井管理", "超时工单", "布防撤防") val SUB_PAGE_TITLES = arrayOf("待处理", "待确认", "处理中", "已完成") } \ 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 9c34038..7a5ca39 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 @@ -234,6 +234,22 @@ ): OrderStatusModel /** + * 查询工单 + * */ + @GET("/job/searchList") + suspend fun obtainSearchResult( + @Header("token") token: String, + @Query("keywords") keywords: String?, + @Query("alarmContent") alarmContent: String?, + @Query("alarmLevel") alarmLevel: String?, + @Query("jobStatus") jobStatus: String?, + @Query("beginTime") beginTime: String?, + @Query("endTime") endTime: String?, + @Query("limit") limit: Int, + @Query("offset") offset: Int + ): SearchResultModel + + /** * 获取用户信息 */ @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 a7106b5..945f6a3 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 @@ -175,6 +175,31 @@ } /** + * 查询工单 + */ + suspend fun obtainSearchResult( + keywords: String?, + alarmContent: String?, + alarmLevel: String?, + jobStatus: String?, + beginTime: String?, + endTime: String?, + page: Int + ): SearchResultModel { + return api.obtainSearchResult( + AuthenticationHelper.token!!, + keywords, + alarmContent, + alarmLevel, + jobStatus, + beginTime, + endTime, + Constant.PAGE_LIMIT, + page + ) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): String { diff --git a/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt index cfc4e0f..45af48a 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt @@ -98,7 +98,7 @@ imageRecyclerView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() - val imageArray = orderDetail.firstStatePhotos.toString().split(";") + val imageArray = orderDetail.firstStatePhotos.toString().split(",") imageArray.forEach { path -> if (path != "") { urls.add(path.combineImagePath()) diff --git a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt index 1a3e670..36075bd 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt @@ -197,7 +197,7 @@ return@setOnClickListener } val state = sceneEditView.text.toString().trim() - if (state == "") { + if (state.isBlank()) { "请输入现场情况".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt index b7a51ce..97e1f59 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt @@ -161,7 +161,7 @@ imageRecyclerView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() - val imageArray = orderDetail.firstStatePhotos.toString().split(";") + val imageArray = orderDetail.firstStatePhotos.toString().split(",") imageArray.forEach { path -> if (path != "") { urls.add(path.combineImagePath()) @@ -247,7 +247,7 @@ return@setOnClickListener } val state = sceneEditView.text.toString().trim() - if (state == "") { + if (state.isBlank()) { "请输入维护情况".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt index e5698a1..cd4fdff 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt @@ -1,7 +1,6 @@ package com.casic.app.smartwell.view import android.text.Editable -import android.text.TextUtils import android.text.TextWatcher import android.view.KeyEvent import android.view.inputmethod.EditorInfo @@ -67,13 +66,13 @@ false } loginButton.setOnClickListener { - val account = userNameView.text.toString() - val userPassword = userPasswordView.text.toString() - if (TextUtils.isEmpty(account)) { + val account = userNameView.text.toString().trim() + val userPassword = userPasswordView.text.toString().trim() + if (account.isBlank()) { "用户名不能为空".show(this) return@setOnClickListener } - if (TextUtils.isEmpty(userPassword)) { + if (userPassword.isBlank()) { "密码不能为空".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt new file mode 100644 index 0000000..453a2c9 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt @@ -0,0 +1,21 @@ +package com.casic.app.smartwell.view + +import com.casic.app.smartwell.R +import com.casic.app.smartwell.base.BaseActivity + +class OvertimeOrderActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_order_overtime + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt new file mode 100644 index 0000000..8228673 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt @@ -0,0 +1,129 @@ +package com.casic.app.smartwell.view + +import android.os.Handler +import android.os.Looper +import android.os.Message +import android.view.View +import androidx.lifecycle.ViewModelProvider +import com.casic.app.smartwell.R +import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage +import com.casic.app.smartwell.model.SearchResultModel +import com.casic.app.smartwell.utils.Constant +import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.vm.SearchOrderViewModel +import kotlinx.android.synthetic.main.activity_order_search_result.* +import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* +import java.lang.ref.WeakReference + +class SearchResultActivity : BaseActivity() { + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var searchOrderViewModel: SearchOrderViewModel + private lateinit var args: ArrayList + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initLayoutView(): Int = R.layout.activity_order_search_result + + override fun setupTopBarLayout() { + titleView.text = "查询结果" + leftBackView.visibility = View.VISIBLE + leftBackView.setOnClickListener { finish() } + } + + override fun initData() { + args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! + weakReferenceHandler = WeakReferenceHandler(this) + searchOrderViewModel = ViewModelProvider(this).get(SearchOrderViewModel::class.java) + } + + override fun initEvent() { + obtainSearchResult(args, pageIndex) + searchOrderViewModel.listModel.observe(this, { + if (it.code == 200) { + val dataRows = it.data?.rows + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows!! + resultRefreshLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows?.size == 0) { + "到底了,别拉了".show(this) + } + dataBeans.addAll(dataRows!!) + resultRefreshLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows!! + } + } + weakReferenceHandler.sendEmptyMessage(2022040101) + } + }) + searchOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } + }) + resultRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainSearchResult(args, pageIndex) + } + resultRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainSearchResult(args, pageIndex) + } + } + + private fun obtainSearchResult(args: ArrayList, pageIndex: Int) { + searchOrderViewModel.obtainSearchResult( + keywords = args[0], + alarmContent = args[1], + alarmLevel = args[2], + jobStatus = args[3], + beginTime = args[4], + endTime = args[5], + page = pageIndex + ) + } + + private class WeakReferenceHandler(activity: SearchResultActivity) : + Handler(Looper.getMainLooper()) { + private val reference: WeakReference = WeakReference(activity) + + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val activity = reference.get()!! + if (msg.what == 2022040101) { + if (activity.isRefresh || activity.isLoadMore) { +// activity.wellOperationAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (activity.dataBeans.size == 0) { + activity.emptyView!!.showEmptyPage { + activity.obtainSearchResult(activity.args, activity.pageIndex) + } + } else { + activity.emptyView!!.hide() + } + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt index af88541..dc68caa 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt @@ -1,15 +1,12 @@ package com.casic.app.smartwell.view -import android.content.Context import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.base.BaseActivity -import com.casic.app.smartwell.extensions.show -import com.casic.app.smartwell.extensions.timestampToDate +import com.casic.app.smartwell.extensions.* import com.casic.app.smartwell.model.AlarmContentTypeModel import com.casic.app.smartwell.model.OrderStatusModel import com.casic.app.smartwell.utils.Constant @@ -25,13 +22,16 @@ class SearchWorkOrderActivity : BaseActivity() { - private val kTag = "SearchWorkOrderActivity" private lateinit var contentTypeViewModel: AlarmContentTypeViewModel private lateinit var orderStatusViewModel: OrderStatusViewModel private lateinit var inflater: LayoutInflater - private var alarmTypeModels: MutableList = ArrayList() + private lateinit var contentTypeAdapter: TagAdapter + private lateinit var orderStatusAdapter: TagAdapter + private var contentModels: MutableList = ArrayList() private var orderStatusModels: MutableList = ArrayList() - private val context: Context = this@SearchWorkOrderActivity + private var alarmContentType = "" + private var alarmLevel = "" + private var orderState = "" override fun initLayoutView(): Int = R.layout.activity_order_search @@ -45,7 +45,6 @@ inflater = LayoutInflater.from(this) //告警内容 contentTypeViewModel = ViewModelProvider(this).get(AlarmContentTypeViewModel::class.java) - //工单状态 orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java) } @@ -65,11 +64,10 @@ } else { bean = dataBean } - alarmTypeModels.add(bean) + contentModels.add(bean) } - - alarmContentLayout.adapter = - object : TagAdapter(alarmTypeModels) { + contentTypeAdapter = + object : TagAdapter(contentModels) { override fun getView( parent: FlowLayout?, position: Int, bean: AlarmContentTypeModel.DataBean.ListBean? @@ -78,19 +76,46 @@ R.layout.item_tag_flowlayout, orderStatusLayout, false ) as TextView - tagView.text = alarmTypeModels[position].name + tagView.text = contentModels[position].name return tagView } } - + alarmContentLayout.adapter = contentTypeAdapter + contentTypeAdapter.setSelectedList(0) alarmContentLayout.setOnTagClickListener { _, position, _ -> - //TODO - alarmTypeModels[position].name!!.show(context) + this.alarmContentType = contentModels[position].value.toString() true } } }) + val levelMaps: MutableList> = ArrayList() + for (i in 0..3) { + val map = HashMap() + map["name"] = i.toString().toChinese() + map["value"] = i.toLevel() + levelMaps.add(map) + } + val levelAdapter = object : TagAdapter>(levelMaps) { + override fun getView( + parent: FlowLayout?, + position: Int, map: Map? + ): View { + val tagView = inflater.inflate( + R.layout.item_tag_flowlayout, + orderStatusLayout, false + ) as TextView + tagView.text = levelMaps[position]["name"] + return tagView + } + } + alarmLevelLayout.adapter = levelAdapter + levelAdapter.setSelectedList(0) + alarmLevelLayout.setOnTagClickListener { _, position, _ -> + this.alarmLevel = levelMaps[position]["value"].toString() + true + } + orderStatusViewModel.obtainOrderStatus() orderStatusViewModel.listModel.observe(this, { if (it.code == 200) { @@ -106,8 +131,7 @@ } orderStatusModels.add(bean) } - - orderStatusLayout.adapter = + orderStatusAdapter = object : TagAdapter(orderStatusModels) { override fun getView( parent: FlowLayout?, @@ -121,18 +145,18 @@ return tagView } } - + orderStatusLayout.adapter = orderStatusAdapter + orderStatusAdapter.setSelectedList(0) orderStatusLayout.setOnTagClickListener { _, position, _ -> - //TODO - orderStatusModels[position].name!!.show(context) + this.orderState = orderStatusModels[position].value.toString() true } } }) - selectStartTimeView.setOnClickListener { + startTimeView.setOnClickListener { TimePickerDialog.Builder() - .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setThemeColor(R.color.mainThemeColor.convertColor(this)) .setTitleStringId("请选择开始时间") .setWheelItemTextSize(16) .setCyclic(false) @@ -140,13 +164,13 @@ .setMaxMillseconds(System.currentTimeMillis()) .setType(Type.YEAR_MONTH_DAY) .setCallBack { _: TimePickerDialog?, millSeconds: Long -> - selectStartTimeView.text = millSeconds.timestampToDate() + startTimeView.text = millSeconds.timestampToDate() }.build().show(supportFragmentManager, "year_month_day") } - selectEndTimeView.setOnClickListener { + endTimeView.setOnClickListener { TimePickerDialog.Builder() - .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setThemeColor(R.color.mainThemeColor.convertColor(this)) .setTitleStringId("请选择结束时间") .setWheelItemTextSize(16) .setCyclic(false) @@ -154,18 +178,42 @@ .setMaxMillseconds(System.currentTimeMillis()) .setType(Type.YEAR_MONTH_DAY) .setCallBack { _: TimePickerDialog?, millSeconds: Long -> - selectEndTimeView.text = millSeconds.timestampToDate() + if (millSeconds.isEarlierThanStart(startTimeView.text.toString())) { + "结束时间不合法,不能早于开始时间".show(this) + return@setCallBack + } + endTimeView.text = millSeconds.timestampToDate() }.build().show(supportFragmentManager, "year_month_day") } searchButton.setChangeAlphaWhenPress(true) searchButton.setOnClickListener { - + val wellCode = wellCodeView.text.toString().trim() + if (wellCode.isBlank()) { + "请输入窨井编号".show(this) + return@setOnClickListener + } + //页面跳转,将查询参数传过去 + navigatePageTo( + SearchResultActivity::class.java, addAll( + wellCode, + alarmContentType, + alarmLevel, + orderState, + startTimeView.text.toString(), + endTimeView.text.toString() + ) + ) } clearButton.setChangeAlphaWhenPress(true) clearButton.setOnClickListener { - + wellCodeView.text.clear() + contentTypeAdapter.setSelectedList(0) + levelAdapter.setSelectedList(0) + orderStatusAdapter.setSelectedList(0) + startTimeView.text = "" + endTimeView.text = "" } } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt index e907ca4..e0cc32f 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt @@ -15,6 +15,7 @@ import com.casic.app.smartwell.base.BaseActivity import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.extensions.showRouteOnMap import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel @@ -23,6 +24,7 @@ import com.casic.app.smartwell.widgets.EasyPopupWindow import kotlinx.android.synthetic.main.activity_well_management.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* import kotlinx.android.synthetic.main.include_search_bar.* import java.lang.ref.WeakReference @@ -168,7 +170,13 @@ activity.wellListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (activity.dataBeans.size == 0) { - activity.emptyView!!.show("抱歉,无法查询到相关记录", null) + activity.emptyView!!.showEmptyPage { + activity.obtainWellList( + activity.keywords, + activity.wellType, + activity.pageIndex + ) + } } else { activity.emptyView!!.hide() activity.wellListAdapter = WellListAdapter(activity, activity.dataBeans) diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt index 1259b72..2137a40 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt @@ -6,12 +6,14 @@ import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.SensorListAdapter import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.utils.DialogHelper import com.casic.app.smartwell.utils.LoadState import com.casic.app.smartwell.vm.WellMonitorViewModel import kotlinx.android.synthetic.main.activity_well_monitor.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* class WellMonitorActivity : BaseActivity() { @@ -36,7 +38,9 @@ wellMonitorViewModel.monitorModel.observe(this, { if (it.code == 200) { if (it.data?.size == 0) { - emptyView!!.show("该井下无设备,或设备已离线,请检查", null) + emptyView!!.showEmptyPage("抱歉,该井下无设备,或设备已离线") { + wellMonitorViewModel.obtainMonitorResult(id = wellId) + } } else { emptyView!!.hide() val sensorListAdapter = SensorListAdapter(this, it.data!!) 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 c6cbe78..0121426 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 @@ -15,6 +15,7 @@ import com.casic.app.smartwell.base.BaseActivity import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.extensions.showRouteOnMap import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel @@ -27,6 +28,7 @@ import com.pengxh.app.multilib.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.activity_well_operation.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* import kotlinx.android.synthetic.main.include_search_bar.* import java.lang.ref.WeakReference @@ -204,7 +206,13 @@ activity.wellOperationAdapter.notifyDataSetChanged() } else { //首次加载数据 if (activity.dataBeans.size == 0) { - activity.emptyView!!.show("抱歉,无法查询到相关记录", null) + activity.emptyView!!.showEmptyPage { + activity.obtainWellList( + activity.keywords, + activity.wellType, + activity.pageIndex + ) + } } else { activity.emptyView!!.hide() activity.wellOperationAdapter = 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 c9ca964..d7d8269 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 @@ -10,6 +10,7 @@ import com.casic.app.smartwell.adapter.CompletedOrderAdapter import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.CompletedDetailActivity @@ -18,6 +19,7 @@ import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_completed.* +import kotlinx.android.synthetic.main.include_empty_view.* import java.lang.ref.WeakReference class CompletedOrderFragment : BaseFragment() { @@ -126,7 +128,9 @@ fragment.completedAdapter.notifyDataSetChanged() } else { if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("您还没有处理完成过任何工单", null) + fragment.emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { + fragment.obtainWorkOrderList(fragment.pageIndex) + } } else { fragment.emptyView!!.hide() fragment.completedAdapter = CompletedOrderAdapter( diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt index 1b4126e..04654dc 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt @@ -5,6 +5,7 @@ import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.navigatePageTo +import com.casic.app.smartwell.view.OvertimeOrderActivity import com.casic.app.smartwell.view.WellManagementActivity import com.casic.app.smartwell.view.WellOperationActivity import com.casic.app.smartwell.vm.WellCountViewModel @@ -24,14 +25,15 @@ titleView.text = "首页" //首页功能块 val homeRecycleAdapter = HomeRecycleAdapter(requireContext()) - homeRecyclerView.layoutManager = GridLayoutManager(requireContext(), 2) + homeRecyclerView.layoutManager = GridLayoutManager(requireContext(), 3) homeRecyclerView.adapter = homeRecycleAdapter homeRecycleAdapter.setOnGridItemClickListener(object : HomeRecycleAdapter.OnGridItemClickListener { override fun onClick(position: Int) { when (position) { 0 -> requireContext().navigatePageTo(WellManagementActivity::class.java) - 1 -> requireContext().navigatePageTo(WellOperationActivity::class.java) + 1 -> requireContext().navigatePageTo(OvertimeOrderActivity::class.java) + 2 -> requireContext().navigatePageTo(WellOperationActivity::class.java) } } }) diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt index d4791bf..cafc40f 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt @@ -10,6 +10,7 @@ import com.casic.app.smartwell.adapter.InHandleOrderAdapter import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.InHandleDetailActivity @@ -18,6 +19,7 @@ import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_inhandle.* +import kotlinx.android.synthetic.main.include_empty_view.* import java.lang.ref.WeakReference class InHandleOrderFragment : BaseFragment() { @@ -126,7 +128,9 @@ fragment.inHandleAdapter.notifyDataSetChanged() } else { //首次加载数据 if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("真不错,您已经处理完所有工单", null) + fragment.emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + fragment.obtainWorkOrderList(fragment.pageIndex) + } } else { fragment.emptyView!!.hide() fragment.inHandleAdapter = InHandleOrderAdapter( 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 780c1da..47a4c9a 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 @@ -10,6 +10,7 @@ import com.casic.app.smartwell.adapter.TodoWorkOrderListAdapter import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.utils.DialogHelper @@ -20,6 +21,7 @@ import com.pengxh.app.multilib.base.BaseFragment import com.pengxh.app.multilib.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.fragment_order_todo.* +import kotlinx.android.synthetic.main.include_empty_view.* import java.lang.ref.WeakReference class TodoOrderFragment : BaseFragment() { @@ -135,7 +137,9 @@ fragment.workOrderListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("没有需要您处理的工单", null) + fragment.emptyView!!.showEmptyPage("没有需要您处理的工单") { + fragment.obtainWorkOrderList(fragment.pageIndex) + } } else { fragment.emptyView!!.hide() fragment.workOrderListAdapter = TodoWorkOrderListAdapter( diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt index 5e79db6..a8560d5 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt @@ -10,6 +10,7 @@ import com.casic.app.smartwell.adapter.UndeterminedOrderAdapter import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.DetermineDetailActivity @@ -18,6 +19,7 @@ import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_undetermined.* +import kotlinx.android.synthetic.main.include_empty_view.* import java.lang.ref.WeakReference class UndeterminedOrderFragment : BaseFragment() { @@ -126,7 +128,9 @@ fragment.undeterminedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("没有需要您确认的工单", null) + fragment.emptyView!!.showEmptyPage("没有需要您确认的工单") { + fragment.obtainWorkOrderList(fragment.pageIndex) + } } else { fragment.emptyView!!.hide() fragment.undeterminedAdapter = UndeterminedOrderAdapter( diff --git a/app/src/main/java/com/casic/app/smartwell/vm/SearchOrderViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/SearchOrderViewModel.kt new file mode 100644 index 0000000..ee0149f --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/vm/SearchOrderViewModel.kt @@ -0,0 +1,31 @@ +package com.casic.app.smartwell.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.app.smartwell.base.BaseViewModel +import com.casic.app.smartwell.extensions.launch +import com.casic.app.smartwell.model.SearchResultModel +import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager + +class SearchOrderViewModel : BaseViewModel() { + + val listModel = MutableLiveData() + + fun obtainSearchResult( + keywords: String?, + alarmContent: String?, + alarmLevel: String?, + jobStatus: String?, + beginTime: String?, + endTime: String?, + page: Int + ) = launch({ + loadState.value = LoadState.Loading + listModel.value = RetrofitServiceManager.obtainSearchResult( + keywords, alarmContent, alarmLevel, jobStatus, beginTime, endTime, page + ) + loadState.value = LoadState.Success + }, { + loadState.value = LoadState.Fail + }) +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_order_overtime.xml b/app/src/main/res/layout/activity_order_overtime.xml new file mode 100644 index 0000000..d829e29 --- /dev/null +++ b/app/src/main/res/layout/activity_order_overtime.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e45158c..7460cc2 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -45,7 +45,9 @@ + + diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt index cba0198..e7ec8d8 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt @@ -25,7 +25,7 @@ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { val imageView = ImageView(context) val layoutWidth: Int = - SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 20f) + SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f) val margins: Int = QMUIDisplayHelper.dp2px(context, 3) val itemSize = (layoutWidth - 6 * margins) / 3 val params = LinearLayout.LayoutParams(itemSize, itemSize) diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt index 7780aaa..ad90885 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt @@ -17,4 +17,12 @@ } } return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt index de1c6c1..84ae8a8 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt @@ -33,10 +33,16 @@ startActivity(intent) } +fun Context.navigatePageTo(clazz: Class, values: ArrayList) { + val intent = Intent(this, clazz) + intent.putStringArrayListExtra(Constant.INTENT_PARAM, values) + startActivity(intent) +} + fun Context.navigatePageTo( clazz: Class, index: Int, - imageList: ArrayList? + imageList: ArrayList ) { val intent = Intent(this, clazz) intent.putExtra("index", index) 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 5f9ce7c..8ed51f4 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 @@ -23,4 +23,12 @@ "未知类型" } } +} + +fun Int.toLevel(): String { + return if (this == 0) { + "" + } else { + this.toString() + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt index ee3685d..3bc5d96 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt @@ -1,6 +1,20 @@ package com.casic.app.smartwell.extensions +import java.text.ParseException import java.text.SimpleDateFormat import java.util.* -fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) \ No newline at end of file +fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) + +fun Long.isEarlierThanStart(date: String): Boolean { + if (date.isBlank()) { + return false + } + val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA) + try { + return this < dateFormat.parse(date)!!.time + } catch (e: ParseException) { + + } + return true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt new file mode 100644 index 0000000..bd9cfa7 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt @@ -0,0 +1,12 @@ +package com.casic.app.smartwell.extensions + +import android.view.View +import com.qmuiteam.qmui.widget.QMUIEmptyView + +fun QMUIEmptyView.showEmptyPage(onButtonClickListener: View.OnClickListener) { + this.show(false, "抱歉,无法查询到相关记录", null, "重试", onButtonClickListener) +} + +fun QMUIEmptyView.showEmptyPage(title: String, onButtonClickListener: View.OnClickListener) { + this.show(false, title, null, "刷新", onButtonClickListener) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt index 7358b1c..2cdd63d 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt @@ -60,6 +60,7 @@ //窨井类型转换 fun String.toChinese(): String { return when (this) { + "0" -> "全部" "1" -> "一级" "2" -> "二级" "3" -> "三级" diff --git a/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt b/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt new file mode 100644 index 0000000..af7fd13 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt @@ -0,0 +1,52 @@ +package com.casic.app.smartwell.model + +class SearchResultModel { + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var rows: MutableList? = null + var total = 0 + + class RowsBean { + var alarmContent = 0 + var deptName: String? = null + var jobStatus: String? = null + var handleJobPerson: String? = null + var alarmContentName: String? = null + var shouldGetTime: String? = null + var wellCode: String? = null + var deptid: String? = null + var alarmTypeName: String? = null + var jobCode: String? = null + var jobBelongTo: String? = null + var jobFlag: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var jobStatusName: String? = null + var alarmValue: String? = null + var alarmId: String? = null + var alarmLevel: String? = null + var handleJobTime: String? = null + var tel: String? = null + var id: String? = null + var wellId: String? = null + var jobType: String? = null + var editable = 0 + var alarmTime: String? = null + var alarmMessage: String? = null + var staff: String? = null + var getJobTime: String? = null + var getJobPerson: String? = null + var shouldHandleTime: String? = null + var jobId: String? = null + var alarmType: String? = null + var alarmStatus: String? = null + var devcode: String? = null + var createTime: String? = null + var position: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index fd4e603..c342334 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -41,7 +41,7 @@ const val USER_DETAIL_MODEL = "userDetailModel" const val INTENT_PARAM = "intentParam" - val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher) - val HOME_ITEMS = arrayOf("闸井管理", "布防撤防") + val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher) + val HOME_ITEMS = arrayOf("闸井管理", "超时工单", "布防撤防") val SUB_PAGE_TITLES = arrayOf("待处理", "待确认", "处理中", "已完成") } \ 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 9c34038..7a5ca39 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 @@ -234,6 +234,22 @@ ): OrderStatusModel /** + * 查询工单 + * */ + @GET("/job/searchList") + suspend fun obtainSearchResult( + @Header("token") token: String, + @Query("keywords") keywords: String?, + @Query("alarmContent") alarmContent: String?, + @Query("alarmLevel") alarmLevel: String?, + @Query("jobStatus") jobStatus: String?, + @Query("beginTime") beginTime: String?, + @Query("endTime") endTime: String?, + @Query("limit") limit: Int, + @Query("offset") offset: Int + ): SearchResultModel + + /** * 获取用户信息 */ @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 a7106b5..945f6a3 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 @@ -175,6 +175,31 @@ } /** + * 查询工单 + */ + suspend fun obtainSearchResult( + keywords: String?, + alarmContent: String?, + alarmLevel: String?, + jobStatus: String?, + beginTime: String?, + endTime: String?, + page: Int + ): SearchResultModel { + return api.obtainSearchResult( + AuthenticationHelper.token!!, + keywords, + alarmContent, + alarmLevel, + jobStatus, + beginTime, + endTime, + Constant.PAGE_LIMIT, + page + ) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): String { diff --git a/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt index cfc4e0f..45af48a 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt @@ -98,7 +98,7 @@ imageRecyclerView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() - val imageArray = orderDetail.firstStatePhotos.toString().split(";") + val imageArray = orderDetail.firstStatePhotos.toString().split(",") imageArray.forEach { path -> if (path != "") { urls.add(path.combineImagePath()) diff --git a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt index 1a3e670..36075bd 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt @@ -197,7 +197,7 @@ return@setOnClickListener } val state = sceneEditView.text.toString().trim() - if (state == "") { + if (state.isBlank()) { "请输入现场情况".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt index b7a51ce..97e1f59 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt @@ -161,7 +161,7 @@ imageRecyclerView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() - val imageArray = orderDetail.firstStatePhotos.toString().split(";") + val imageArray = orderDetail.firstStatePhotos.toString().split(",") imageArray.forEach { path -> if (path != "") { urls.add(path.combineImagePath()) @@ -247,7 +247,7 @@ return@setOnClickListener } val state = sceneEditView.text.toString().trim() - if (state == "") { + if (state.isBlank()) { "请输入维护情况".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt index e5698a1..cd4fdff 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt @@ -1,7 +1,6 @@ package com.casic.app.smartwell.view import android.text.Editable -import android.text.TextUtils import android.text.TextWatcher import android.view.KeyEvent import android.view.inputmethod.EditorInfo @@ -67,13 +66,13 @@ false } loginButton.setOnClickListener { - val account = userNameView.text.toString() - val userPassword = userPasswordView.text.toString() - if (TextUtils.isEmpty(account)) { + val account = userNameView.text.toString().trim() + val userPassword = userPasswordView.text.toString().trim() + if (account.isBlank()) { "用户名不能为空".show(this) return@setOnClickListener } - if (TextUtils.isEmpty(userPassword)) { + if (userPassword.isBlank()) { "密码不能为空".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt new file mode 100644 index 0000000..453a2c9 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt @@ -0,0 +1,21 @@ +package com.casic.app.smartwell.view + +import com.casic.app.smartwell.R +import com.casic.app.smartwell.base.BaseActivity + +class OvertimeOrderActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_order_overtime + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt new file mode 100644 index 0000000..8228673 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt @@ -0,0 +1,129 @@ +package com.casic.app.smartwell.view + +import android.os.Handler +import android.os.Looper +import android.os.Message +import android.view.View +import androidx.lifecycle.ViewModelProvider +import com.casic.app.smartwell.R +import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage +import com.casic.app.smartwell.model.SearchResultModel +import com.casic.app.smartwell.utils.Constant +import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.vm.SearchOrderViewModel +import kotlinx.android.synthetic.main.activity_order_search_result.* +import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* +import java.lang.ref.WeakReference + +class SearchResultActivity : BaseActivity() { + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var searchOrderViewModel: SearchOrderViewModel + private lateinit var args: ArrayList + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initLayoutView(): Int = R.layout.activity_order_search_result + + override fun setupTopBarLayout() { + titleView.text = "查询结果" + leftBackView.visibility = View.VISIBLE + leftBackView.setOnClickListener { finish() } + } + + override fun initData() { + args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! + weakReferenceHandler = WeakReferenceHandler(this) + searchOrderViewModel = ViewModelProvider(this).get(SearchOrderViewModel::class.java) + } + + override fun initEvent() { + obtainSearchResult(args, pageIndex) + searchOrderViewModel.listModel.observe(this, { + if (it.code == 200) { + val dataRows = it.data?.rows + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows!! + resultRefreshLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows?.size == 0) { + "到底了,别拉了".show(this) + } + dataBeans.addAll(dataRows!!) + resultRefreshLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows!! + } + } + weakReferenceHandler.sendEmptyMessage(2022040101) + } + }) + searchOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } + }) + resultRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainSearchResult(args, pageIndex) + } + resultRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainSearchResult(args, pageIndex) + } + } + + private fun obtainSearchResult(args: ArrayList, pageIndex: Int) { + searchOrderViewModel.obtainSearchResult( + keywords = args[0], + alarmContent = args[1], + alarmLevel = args[2], + jobStatus = args[3], + beginTime = args[4], + endTime = args[5], + page = pageIndex + ) + } + + private class WeakReferenceHandler(activity: SearchResultActivity) : + Handler(Looper.getMainLooper()) { + private val reference: WeakReference = WeakReference(activity) + + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val activity = reference.get()!! + if (msg.what == 2022040101) { + if (activity.isRefresh || activity.isLoadMore) { +// activity.wellOperationAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (activity.dataBeans.size == 0) { + activity.emptyView!!.showEmptyPage { + activity.obtainSearchResult(activity.args, activity.pageIndex) + } + } else { + activity.emptyView!!.hide() + } + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt index af88541..dc68caa 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt @@ -1,15 +1,12 @@ package com.casic.app.smartwell.view -import android.content.Context import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.base.BaseActivity -import com.casic.app.smartwell.extensions.show -import com.casic.app.smartwell.extensions.timestampToDate +import com.casic.app.smartwell.extensions.* import com.casic.app.smartwell.model.AlarmContentTypeModel import com.casic.app.smartwell.model.OrderStatusModel import com.casic.app.smartwell.utils.Constant @@ -25,13 +22,16 @@ class SearchWorkOrderActivity : BaseActivity() { - private val kTag = "SearchWorkOrderActivity" private lateinit var contentTypeViewModel: AlarmContentTypeViewModel private lateinit var orderStatusViewModel: OrderStatusViewModel private lateinit var inflater: LayoutInflater - private var alarmTypeModels: MutableList = ArrayList() + private lateinit var contentTypeAdapter: TagAdapter + private lateinit var orderStatusAdapter: TagAdapter + private var contentModels: MutableList = ArrayList() private var orderStatusModels: MutableList = ArrayList() - private val context: Context = this@SearchWorkOrderActivity + private var alarmContentType = "" + private var alarmLevel = "" + private var orderState = "" override fun initLayoutView(): Int = R.layout.activity_order_search @@ -45,7 +45,6 @@ inflater = LayoutInflater.from(this) //告警内容 contentTypeViewModel = ViewModelProvider(this).get(AlarmContentTypeViewModel::class.java) - //工单状态 orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java) } @@ -65,11 +64,10 @@ } else { bean = dataBean } - alarmTypeModels.add(bean) + contentModels.add(bean) } - - alarmContentLayout.adapter = - object : TagAdapter(alarmTypeModels) { + contentTypeAdapter = + object : TagAdapter(contentModels) { override fun getView( parent: FlowLayout?, position: Int, bean: AlarmContentTypeModel.DataBean.ListBean? @@ -78,19 +76,46 @@ R.layout.item_tag_flowlayout, orderStatusLayout, false ) as TextView - tagView.text = alarmTypeModels[position].name + tagView.text = contentModels[position].name return tagView } } - + alarmContentLayout.adapter = contentTypeAdapter + contentTypeAdapter.setSelectedList(0) alarmContentLayout.setOnTagClickListener { _, position, _ -> - //TODO - alarmTypeModels[position].name!!.show(context) + this.alarmContentType = contentModels[position].value.toString() true } } }) + val levelMaps: MutableList> = ArrayList() + for (i in 0..3) { + val map = HashMap() + map["name"] = i.toString().toChinese() + map["value"] = i.toLevel() + levelMaps.add(map) + } + val levelAdapter = object : TagAdapter>(levelMaps) { + override fun getView( + parent: FlowLayout?, + position: Int, map: Map? + ): View { + val tagView = inflater.inflate( + R.layout.item_tag_flowlayout, + orderStatusLayout, false + ) as TextView + tagView.text = levelMaps[position]["name"] + return tagView + } + } + alarmLevelLayout.adapter = levelAdapter + levelAdapter.setSelectedList(0) + alarmLevelLayout.setOnTagClickListener { _, position, _ -> + this.alarmLevel = levelMaps[position]["value"].toString() + true + } + orderStatusViewModel.obtainOrderStatus() orderStatusViewModel.listModel.observe(this, { if (it.code == 200) { @@ -106,8 +131,7 @@ } orderStatusModels.add(bean) } - - orderStatusLayout.adapter = + orderStatusAdapter = object : TagAdapter(orderStatusModels) { override fun getView( parent: FlowLayout?, @@ -121,18 +145,18 @@ return tagView } } - + orderStatusLayout.adapter = orderStatusAdapter + orderStatusAdapter.setSelectedList(0) orderStatusLayout.setOnTagClickListener { _, position, _ -> - //TODO - orderStatusModels[position].name!!.show(context) + this.orderState = orderStatusModels[position].value.toString() true } } }) - selectStartTimeView.setOnClickListener { + startTimeView.setOnClickListener { TimePickerDialog.Builder() - .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setThemeColor(R.color.mainThemeColor.convertColor(this)) .setTitleStringId("请选择开始时间") .setWheelItemTextSize(16) .setCyclic(false) @@ -140,13 +164,13 @@ .setMaxMillseconds(System.currentTimeMillis()) .setType(Type.YEAR_MONTH_DAY) .setCallBack { _: TimePickerDialog?, millSeconds: Long -> - selectStartTimeView.text = millSeconds.timestampToDate() + startTimeView.text = millSeconds.timestampToDate() }.build().show(supportFragmentManager, "year_month_day") } - selectEndTimeView.setOnClickListener { + endTimeView.setOnClickListener { TimePickerDialog.Builder() - .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setThemeColor(R.color.mainThemeColor.convertColor(this)) .setTitleStringId("请选择结束时间") .setWheelItemTextSize(16) .setCyclic(false) @@ -154,18 +178,42 @@ .setMaxMillseconds(System.currentTimeMillis()) .setType(Type.YEAR_MONTH_DAY) .setCallBack { _: TimePickerDialog?, millSeconds: Long -> - selectEndTimeView.text = millSeconds.timestampToDate() + if (millSeconds.isEarlierThanStart(startTimeView.text.toString())) { + "结束时间不合法,不能早于开始时间".show(this) + return@setCallBack + } + endTimeView.text = millSeconds.timestampToDate() }.build().show(supportFragmentManager, "year_month_day") } searchButton.setChangeAlphaWhenPress(true) searchButton.setOnClickListener { - + val wellCode = wellCodeView.text.toString().trim() + if (wellCode.isBlank()) { + "请输入窨井编号".show(this) + return@setOnClickListener + } + //页面跳转,将查询参数传过去 + navigatePageTo( + SearchResultActivity::class.java, addAll( + wellCode, + alarmContentType, + alarmLevel, + orderState, + startTimeView.text.toString(), + endTimeView.text.toString() + ) + ) } clearButton.setChangeAlphaWhenPress(true) clearButton.setOnClickListener { - + wellCodeView.text.clear() + contentTypeAdapter.setSelectedList(0) + levelAdapter.setSelectedList(0) + orderStatusAdapter.setSelectedList(0) + startTimeView.text = "" + endTimeView.text = "" } } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt index e907ca4..e0cc32f 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt @@ -15,6 +15,7 @@ import com.casic.app.smartwell.base.BaseActivity import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.extensions.showRouteOnMap import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel @@ -23,6 +24,7 @@ import com.casic.app.smartwell.widgets.EasyPopupWindow import kotlinx.android.synthetic.main.activity_well_management.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* import kotlinx.android.synthetic.main.include_search_bar.* import java.lang.ref.WeakReference @@ -168,7 +170,13 @@ activity.wellListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (activity.dataBeans.size == 0) { - activity.emptyView!!.show("抱歉,无法查询到相关记录", null) + activity.emptyView!!.showEmptyPage { + activity.obtainWellList( + activity.keywords, + activity.wellType, + activity.pageIndex + ) + } } else { activity.emptyView!!.hide() activity.wellListAdapter = WellListAdapter(activity, activity.dataBeans) diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt index 1259b72..2137a40 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt @@ -6,12 +6,14 @@ import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.SensorListAdapter import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.utils.DialogHelper import com.casic.app.smartwell.utils.LoadState import com.casic.app.smartwell.vm.WellMonitorViewModel import kotlinx.android.synthetic.main.activity_well_monitor.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* class WellMonitorActivity : BaseActivity() { @@ -36,7 +38,9 @@ wellMonitorViewModel.monitorModel.observe(this, { if (it.code == 200) { if (it.data?.size == 0) { - emptyView!!.show("该井下无设备,或设备已离线,请检查", null) + emptyView!!.showEmptyPage("抱歉,该井下无设备,或设备已离线") { + wellMonitorViewModel.obtainMonitorResult(id = wellId) + } } else { emptyView!!.hide() val sensorListAdapter = SensorListAdapter(this, it.data!!) 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 c6cbe78..0121426 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 @@ -15,6 +15,7 @@ import com.casic.app.smartwell.base.BaseActivity import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.extensions.showRouteOnMap import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel @@ -27,6 +28,7 @@ import com.pengxh.app.multilib.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.activity_well_operation.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* import kotlinx.android.synthetic.main.include_search_bar.* import java.lang.ref.WeakReference @@ -204,7 +206,13 @@ activity.wellOperationAdapter.notifyDataSetChanged() } else { //首次加载数据 if (activity.dataBeans.size == 0) { - activity.emptyView!!.show("抱歉,无法查询到相关记录", null) + activity.emptyView!!.showEmptyPage { + activity.obtainWellList( + activity.keywords, + activity.wellType, + activity.pageIndex + ) + } } else { activity.emptyView!!.hide() activity.wellOperationAdapter = 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 c9ca964..d7d8269 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 @@ -10,6 +10,7 @@ import com.casic.app.smartwell.adapter.CompletedOrderAdapter import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.CompletedDetailActivity @@ -18,6 +19,7 @@ import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_completed.* +import kotlinx.android.synthetic.main.include_empty_view.* import java.lang.ref.WeakReference class CompletedOrderFragment : BaseFragment() { @@ -126,7 +128,9 @@ fragment.completedAdapter.notifyDataSetChanged() } else { if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("您还没有处理完成过任何工单", null) + fragment.emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { + fragment.obtainWorkOrderList(fragment.pageIndex) + } } else { fragment.emptyView!!.hide() fragment.completedAdapter = CompletedOrderAdapter( diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt index 1b4126e..04654dc 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt @@ -5,6 +5,7 @@ import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.navigatePageTo +import com.casic.app.smartwell.view.OvertimeOrderActivity import com.casic.app.smartwell.view.WellManagementActivity import com.casic.app.smartwell.view.WellOperationActivity import com.casic.app.smartwell.vm.WellCountViewModel @@ -24,14 +25,15 @@ titleView.text = "首页" //首页功能块 val homeRecycleAdapter = HomeRecycleAdapter(requireContext()) - homeRecyclerView.layoutManager = GridLayoutManager(requireContext(), 2) + homeRecyclerView.layoutManager = GridLayoutManager(requireContext(), 3) homeRecyclerView.adapter = homeRecycleAdapter homeRecycleAdapter.setOnGridItemClickListener(object : HomeRecycleAdapter.OnGridItemClickListener { override fun onClick(position: Int) { when (position) { 0 -> requireContext().navigatePageTo(WellManagementActivity::class.java) - 1 -> requireContext().navigatePageTo(WellOperationActivity::class.java) + 1 -> requireContext().navigatePageTo(OvertimeOrderActivity::class.java) + 2 -> requireContext().navigatePageTo(WellOperationActivity::class.java) } } }) diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt index d4791bf..cafc40f 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt @@ -10,6 +10,7 @@ import com.casic.app.smartwell.adapter.InHandleOrderAdapter import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.InHandleDetailActivity @@ -18,6 +19,7 @@ import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_inhandle.* +import kotlinx.android.synthetic.main.include_empty_view.* import java.lang.ref.WeakReference class InHandleOrderFragment : BaseFragment() { @@ -126,7 +128,9 @@ fragment.inHandleAdapter.notifyDataSetChanged() } else { //首次加载数据 if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("真不错,您已经处理完所有工单", null) + fragment.emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + fragment.obtainWorkOrderList(fragment.pageIndex) + } } else { fragment.emptyView!!.hide() fragment.inHandleAdapter = InHandleOrderAdapter( 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 780c1da..47a4c9a 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 @@ -10,6 +10,7 @@ import com.casic.app.smartwell.adapter.TodoWorkOrderListAdapter import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.utils.DialogHelper @@ -20,6 +21,7 @@ import com.pengxh.app.multilib.base.BaseFragment import com.pengxh.app.multilib.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.fragment_order_todo.* +import kotlinx.android.synthetic.main.include_empty_view.* import java.lang.ref.WeakReference class TodoOrderFragment : BaseFragment() { @@ -135,7 +137,9 @@ fragment.workOrderListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("没有需要您处理的工单", null) + fragment.emptyView!!.showEmptyPage("没有需要您处理的工单") { + fragment.obtainWorkOrderList(fragment.pageIndex) + } } else { fragment.emptyView!!.hide() fragment.workOrderListAdapter = TodoWorkOrderListAdapter( diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt index 5e79db6..a8560d5 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt @@ -10,6 +10,7 @@ import com.casic.app.smartwell.adapter.UndeterminedOrderAdapter import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.DetermineDetailActivity @@ -18,6 +19,7 @@ import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_undetermined.* +import kotlinx.android.synthetic.main.include_empty_view.* import java.lang.ref.WeakReference class UndeterminedOrderFragment : BaseFragment() { @@ -126,7 +128,9 @@ fragment.undeterminedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("没有需要您确认的工单", null) + fragment.emptyView!!.showEmptyPage("没有需要您确认的工单") { + fragment.obtainWorkOrderList(fragment.pageIndex) + } } else { fragment.emptyView!!.hide() fragment.undeterminedAdapter = UndeterminedOrderAdapter( diff --git a/app/src/main/java/com/casic/app/smartwell/vm/SearchOrderViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/SearchOrderViewModel.kt new file mode 100644 index 0000000..ee0149f --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/vm/SearchOrderViewModel.kt @@ -0,0 +1,31 @@ +package com.casic.app.smartwell.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.app.smartwell.base.BaseViewModel +import com.casic.app.smartwell.extensions.launch +import com.casic.app.smartwell.model.SearchResultModel +import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager + +class SearchOrderViewModel : BaseViewModel() { + + val listModel = MutableLiveData() + + fun obtainSearchResult( + keywords: String?, + alarmContent: String?, + alarmLevel: String?, + jobStatus: String?, + beginTime: String?, + endTime: String?, + page: Int + ) = launch({ + loadState.value = LoadState.Loading + listModel.value = RetrofitServiceManager.obtainSearchResult( + keywords, alarmContent, alarmLevel, jobStatus, beginTime, endTime, page + ) + loadState.value = LoadState.Success + }, { + loadState.value = LoadState.Fail + }) +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_order_overtime.xml b/app/src/main/res/layout/activity_order_overtime.xml new file mode 100644 index 0000000..d829e29 --- /dev/null +++ b/app/src/main/res/layout/activity_order_overtime.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_order_search.xml b/app/src/main/res/layout/activity_order_search.xml index 74b898c..33187af 100644 --- a/app/src/main/res/layout/activity_order_search.xml +++ b/app/src/main/res/layout/activity_order_search.xml @@ -10,152 +10,156 @@ - + android:layout_height="wrap_content"> + android:layout_height="wrap_content" + android:layout_margin="@dimen/dp_10" + android:background="@drawable/bg_layout" + android:orientation="vertical"> - - - + + + + + + + + + + + - + android:textSize="@dimen/titleFontSize" /> - - - - - - - - - - - - - - - - - + + - + android:textSize="@dimen/titleFontSize" /> - - - - - + app:max_select="1" /> + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e45158c..7460cc2 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -45,7 +45,9 @@ + + diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt index cba0198..e7ec8d8 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt @@ -25,7 +25,7 @@ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { val imageView = ImageView(context) val layoutWidth: Int = - SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 20f) + SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f) val margins: Int = QMUIDisplayHelper.dp2px(context, 3) val itemSize = (layoutWidth - 6 * margins) / 3 val params = LinearLayout.LayoutParams(itemSize, itemSize) diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt index 7780aaa..ad90885 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt @@ -17,4 +17,12 @@ } } return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt index de1c6c1..84ae8a8 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt @@ -33,10 +33,16 @@ startActivity(intent) } +fun Context.navigatePageTo(clazz: Class, values: ArrayList) { + val intent = Intent(this, clazz) + intent.putStringArrayListExtra(Constant.INTENT_PARAM, values) + startActivity(intent) +} + fun Context.navigatePageTo( clazz: Class, index: Int, - imageList: ArrayList? + imageList: ArrayList ) { val intent = Intent(this, clazz) intent.putExtra("index", index) 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 5f9ce7c..8ed51f4 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 @@ -23,4 +23,12 @@ "未知类型" } } +} + +fun Int.toLevel(): String { + return if (this == 0) { + "" + } else { + this.toString() + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt index ee3685d..3bc5d96 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt @@ -1,6 +1,20 @@ package com.casic.app.smartwell.extensions +import java.text.ParseException import java.text.SimpleDateFormat import java.util.* -fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) \ No newline at end of file +fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) + +fun Long.isEarlierThanStart(date: String): Boolean { + if (date.isBlank()) { + return false + } + val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA) + try { + return this < dateFormat.parse(date)!!.time + } catch (e: ParseException) { + + } + return true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt new file mode 100644 index 0000000..bd9cfa7 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt @@ -0,0 +1,12 @@ +package com.casic.app.smartwell.extensions + +import android.view.View +import com.qmuiteam.qmui.widget.QMUIEmptyView + +fun QMUIEmptyView.showEmptyPage(onButtonClickListener: View.OnClickListener) { + this.show(false, "抱歉,无法查询到相关记录", null, "重试", onButtonClickListener) +} + +fun QMUIEmptyView.showEmptyPage(title: String, onButtonClickListener: View.OnClickListener) { + this.show(false, title, null, "刷新", onButtonClickListener) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt index 7358b1c..2cdd63d 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt @@ -60,6 +60,7 @@ //窨井类型转换 fun String.toChinese(): String { return when (this) { + "0" -> "全部" "1" -> "一级" "2" -> "二级" "3" -> "三级" diff --git a/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt b/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt new file mode 100644 index 0000000..af7fd13 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt @@ -0,0 +1,52 @@ +package com.casic.app.smartwell.model + +class SearchResultModel { + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var rows: MutableList? = null + var total = 0 + + class RowsBean { + var alarmContent = 0 + var deptName: String? = null + var jobStatus: String? = null + var handleJobPerson: String? = null + var alarmContentName: String? = null + var shouldGetTime: String? = null + var wellCode: String? = null + var deptid: String? = null + var alarmTypeName: String? = null + var jobCode: String? = null + var jobBelongTo: String? = null + var jobFlag: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var jobStatusName: String? = null + var alarmValue: String? = null + var alarmId: String? = null + var alarmLevel: String? = null + var handleJobTime: String? = null + var tel: String? = null + var id: String? = null + var wellId: String? = null + var jobType: String? = null + var editable = 0 + var alarmTime: String? = null + var alarmMessage: String? = null + var staff: String? = null + var getJobTime: String? = null + var getJobPerson: String? = null + var shouldHandleTime: String? = null + var jobId: String? = null + var alarmType: String? = null + var alarmStatus: String? = null + var devcode: String? = null + var createTime: String? = null + var position: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index fd4e603..c342334 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -41,7 +41,7 @@ const val USER_DETAIL_MODEL = "userDetailModel" const val INTENT_PARAM = "intentParam" - val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher) - val HOME_ITEMS = arrayOf("闸井管理", "布防撤防") + val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher) + val HOME_ITEMS = arrayOf("闸井管理", "超时工单", "布防撤防") val SUB_PAGE_TITLES = arrayOf("待处理", "待确认", "处理中", "已完成") } \ 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 9c34038..7a5ca39 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 @@ -234,6 +234,22 @@ ): OrderStatusModel /** + * 查询工单 + * */ + @GET("/job/searchList") + suspend fun obtainSearchResult( + @Header("token") token: String, + @Query("keywords") keywords: String?, + @Query("alarmContent") alarmContent: String?, + @Query("alarmLevel") alarmLevel: String?, + @Query("jobStatus") jobStatus: String?, + @Query("beginTime") beginTime: String?, + @Query("endTime") endTime: String?, + @Query("limit") limit: Int, + @Query("offset") offset: Int + ): SearchResultModel + + /** * 获取用户信息 */ @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 a7106b5..945f6a3 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 @@ -175,6 +175,31 @@ } /** + * 查询工单 + */ + suspend fun obtainSearchResult( + keywords: String?, + alarmContent: String?, + alarmLevel: String?, + jobStatus: String?, + beginTime: String?, + endTime: String?, + page: Int + ): SearchResultModel { + return api.obtainSearchResult( + AuthenticationHelper.token!!, + keywords, + alarmContent, + alarmLevel, + jobStatus, + beginTime, + endTime, + Constant.PAGE_LIMIT, + page + ) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): String { diff --git a/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt index cfc4e0f..45af48a 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt @@ -98,7 +98,7 @@ imageRecyclerView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() - val imageArray = orderDetail.firstStatePhotos.toString().split(";") + val imageArray = orderDetail.firstStatePhotos.toString().split(",") imageArray.forEach { path -> if (path != "") { urls.add(path.combineImagePath()) diff --git a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt index 1a3e670..36075bd 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt @@ -197,7 +197,7 @@ return@setOnClickListener } val state = sceneEditView.text.toString().trim() - if (state == "") { + if (state.isBlank()) { "请输入现场情况".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt index b7a51ce..97e1f59 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt @@ -161,7 +161,7 @@ imageRecyclerView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() - val imageArray = orderDetail.firstStatePhotos.toString().split(";") + val imageArray = orderDetail.firstStatePhotos.toString().split(",") imageArray.forEach { path -> if (path != "") { urls.add(path.combineImagePath()) @@ -247,7 +247,7 @@ return@setOnClickListener } val state = sceneEditView.text.toString().trim() - if (state == "") { + if (state.isBlank()) { "请输入维护情况".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt index e5698a1..cd4fdff 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt @@ -1,7 +1,6 @@ package com.casic.app.smartwell.view import android.text.Editable -import android.text.TextUtils import android.text.TextWatcher import android.view.KeyEvent import android.view.inputmethod.EditorInfo @@ -67,13 +66,13 @@ false } loginButton.setOnClickListener { - val account = userNameView.text.toString() - val userPassword = userPasswordView.text.toString() - if (TextUtils.isEmpty(account)) { + val account = userNameView.text.toString().trim() + val userPassword = userPasswordView.text.toString().trim() + if (account.isBlank()) { "用户名不能为空".show(this) return@setOnClickListener } - if (TextUtils.isEmpty(userPassword)) { + if (userPassword.isBlank()) { "密码不能为空".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt new file mode 100644 index 0000000..453a2c9 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt @@ -0,0 +1,21 @@ +package com.casic.app.smartwell.view + +import com.casic.app.smartwell.R +import com.casic.app.smartwell.base.BaseActivity + +class OvertimeOrderActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_order_overtime + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt new file mode 100644 index 0000000..8228673 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt @@ -0,0 +1,129 @@ +package com.casic.app.smartwell.view + +import android.os.Handler +import android.os.Looper +import android.os.Message +import android.view.View +import androidx.lifecycle.ViewModelProvider +import com.casic.app.smartwell.R +import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage +import com.casic.app.smartwell.model.SearchResultModel +import com.casic.app.smartwell.utils.Constant +import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.vm.SearchOrderViewModel +import kotlinx.android.synthetic.main.activity_order_search_result.* +import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* +import java.lang.ref.WeakReference + +class SearchResultActivity : BaseActivity() { + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var searchOrderViewModel: SearchOrderViewModel + private lateinit var args: ArrayList + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initLayoutView(): Int = R.layout.activity_order_search_result + + override fun setupTopBarLayout() { + titleView.text = "查询结果" + leftBackView.visibility = View.VISIBLE + leftBackView.setOnClickListener { finish() } + } + + override fun initData() { + args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! + weakReferenceHandler = WeakReferenceHandler(this) + searchOrderViewModel = ViewModelProvider(this).get(SearchOrderViewModel::class.java) + } + + override fun initEvent() { + obtainSearchResult(args, pageIndex) + searchOrderViewModel.listModel.observe(this, { + if (it.code == 200) { + val dataRows = it.data?.rows + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows!! + resultRefreshLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows?.size == 0) { + "到底了,别拉了".show(this) + } + dataBeans.addAll(dataRows!!) + resultRefreshLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows!! + } + } + weakReferenceHandler.sendEmptyMessage(2022040101) + } + }) + searchOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } + }) + resultRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainSearchResult(args, pageIndex) + } + resultRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainSearchResult(args, pageIndex) + } + } + + private fun obtainSearchResult(args: ArrayList, pageIndex: Int) { + searchOrderViewModel.obtainSearchResult( + keywords = args[0], + alarmContent = args[1], + alarmLevel = args[2], + jobStatus = args[3], + beginTime = args[4], + endTime = args[5], + page = pageIndex + ) + } + + private class WeakReferenceHandler(activity: SearchResultActivity) : + Handler(Looper.getMainLooper()) { + private val reference: WeakReference = WeakReference(activity) + + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val activity = reference.get()!! + if (msg.what == 2022040101) { + if (activity.isRefresh || activity.isLoadMore) { +// activity.wellOperationAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (activity.dataBeans.size == 0) { + activity.emptyView!!.showEmptyPage { + activity.obtainSearchResult(activity.args, activity.pageIndex) + } + } else { + activity.emptyView!!.hide() + } + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt index af88541..dc68caa 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt @@ -1,15 +1,12 @@ package com.casic.app.smartwell.view -import android.content.Context import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.base.BaseActivity -import com.casic.app.smartwell.extensions.show -import com.casic.app.smartwell.extensions.timestampToDate +import com.casic.app.smartwell.extensions.* import com.casic.app.smartwell.model.AlarmContentTypeModel import com.casic.app.smartwell.model.OrderStatusModel import com.casic.app.smartwell.utils.Constant @@ -25,13 +22,16 @@ class SearchWorkOrderActivity : BaseActivity() { - private val kTag = "SearchWorkOrderActivity" private lateinit var contentTypeViewModel: AlarmContentTypeViewModel private lateinit var orderStatusViewModel: OrderStatusViewModel private lateinit var inflater: LayoutInflater - private var alarmTypeModels: MutableList = ArrayList() + private lateinit var contentTypeAdapter: TagAdapter + private lateinit var orderStatusAdapter: TagAdapter + private var contentModels: MutableList = ArrayList() private var orderStatusModels: MutableList = ArrayList() - private val context: Context = this@SearchWorkOrderActivity + private var alarmContentType = "" + private var alarmLevel = "" + private var orderState = "" override fun initLayoutView(): Int = R.layout.activity_order_search @@ -45,7 +45,6 @@ inflater = LayoutInflater.from(this) //告警内容 contentTypeViewModel = ViewModelProvider(this).get(AlarmContentTypeViewModel::class.java) - //工单状态 orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java) } @@ -65,11 +64,10 @@ } else { bean = dataBean } - alarmTypeModels.add(bean) + contentModels.add(bean) } - - alarmContentLayout.adapter = - object : TagAdapter(alarmTypeModels) { + contentTypeAdapter = + object : TagAdapter(contentModels) { override fun getView( parent: FlowLayout?, position: Int, bean: AlarmContentTypeModel.DataBean.ListBean? @@ -78,19 +76,46 @@ R.layout.item_tag_flowlayout, orderStatusLayout, false ) as TextView - tagView.text = alarmTypeModels[position].name + tagView.text = contentModels[position].name return tagView } } - + alarmContentLayout.adapter = contentTypeAdapter + contentTypeAdapter.setSelectedList(0) alarmContentLayout.setOnTagClickListener { _, position, _ -> - //TODO - alarmTypeModels[position].name!!.show(context) + this.alarmContentType = contentModels[position].value.toString() true } } }) + val levelMaps: MutableList> = ArrayList() + for (i in 0..3) { + val map = HashMap() + map["name"] = i.toString().toChinese() + map["value"] = i.toLevel() + levelMaps.add(map) + } + val levelAdapter = object : TagAdapter>(levelMaps) { + override fun getView( + parent: FlowLayout?, + position: Int, map: Map? + ): View { + val tagView = inflater.inflate( + R.layout.item_tag_flowlayout, + orderStatusLayout, false + ) as TextView + tagView.text = levelMaps[position]["name"] + return tagView + } + } + alarmLevelLayout.adapter = levelAdapter + levelAdapter.setSelectedList(0) + alarmLevelLayout.setOnTagClickListener { _, position, _ -> + this.alarmLevel = levelMaps[position]["value"].toString() + true + } + orderStatusViewModel.obtainOrderStatus() orderStatusViewModel.listModel.observe(this, { if (it.code == 200) { @@ -106,8 +131,7 @@ } orderStatusModels.add(bean) } - - orderStatusLayout.adapter = + orderStatusAdapter = object : TagAdapter(orderStatusModels) { override fun getView( parent: FlowLayout?, @@ -121,18 +145,18 @@ return tagView } } - + orderStatusLayout.adapter = orderStatusAdapter + orderStatusAdapter.setSelectedList(0) orderStatusLayout.setOnTagClickListener { _, position, _ -> - //TODO - orderStatusModels[position].name!!.show(context) + this.orderState = orderStatusModels[position].value.toString() true } } }) - selectStartTimeView.setOnClickListener { + startTimeView.setOnClickListener { TimePickerDialog.Builder() - .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setThemeColor(R.color.mainThemeColor.convertColor(this)) .setTitleStringId("请选择开始时间") .setWheelItemTextSize(16) .setCyclic(false) @@ -140,13 +164,13 @@ .setMaxMillseconds(System.currentTimeMillis()) .setType(Type.YEAR_MONTH_DAY) .setCallBack { _: TimePickerDialog?, millSeconds: Long -> - selectStartTimeView.text = millSeconds.timestampToDate() + startTimeView.text = millSeconds.timestampToDate() }.build().show(supportFragmentManager, "year_month_day") } - selectEndTimeView.setOnClickListener { + endTimeView.setOnClickListener { TimePickerDialog.Builder() - .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setThemeColor(R.color.mainThemeColor.convertColor(this)) .setTitleStringId("请选择结束时间") .setWheelItemTextSize(16) .setCyclic(false) @@ -154,18 +178,42 @@ .setMaxMillseconds(System.currentTimeMillis()) .setType(Type.YEAR_MONTH_DAY) .setCallBack { _: TimePickerDialog?, millSeconds: Long -> - selectEndTimeView.text = millSeconds.timestampToDate() + if (millSeconds.isEarlierThanStart(startTimeView.text.toString())) { + "结束时间不合法,不能早于开始时间".show(this) + return@setCallBack + } + endTimeView.text = millSeconds.timestampToDate() }.build().show(supportFragmentManager, "year_month_day") } searchButton.setChangeAlphaWhenPress(true) searchButton.setOnClickListener { - + val wellCode = wellCodeView.text.toString().trim() + if (wellCode.isBlank()) { + "请输入窨井编号".show(this) + return@setOnClickListener + } + //页面跳转,将查询参数传过去 + navigatePageTo( + SearchResultActivity::class.java, addAll( + wellCode, + alarmContentType, + alarmLevel, + orderState, + startTimeView.text.toString(), + endTimeView.text.toString() + ) + ) } clearButton.setChangeAlphaWhenPress(true) clearButton.setOnClickListener { - + wellCodeView.text.clear() + contentTypeAdapter.setSelectedList(0) + levelAdapter.setSelectedList(0) + orderStatusAdapter.setSelectedList(0) + startTimeView.text = "" + endTimeView.text = "" } } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt index e907ca4..e0cc32f 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt @@ -15,6 +15,7 @@ import com.casic.app.smartwell.base.BaseActivity import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.extensions.showRouteOnMap import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel @@ -23,6 +24,7 @@ import com.casic.app.smartwell.widgets.EasyPopupWindow import kotlinx.android.synthetic.main.activity_well_management.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* import kotlinx.android.synthetic.main.include_search_bar.* import java.lang.ref.WeakReference @@ -168,7 +170,13 @@ activity.wellListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (activity.dataBeans.size == 0) { - activity.emptyView!!.show("抱歉,无法查询到相关记录", null) + activity.emptyView!!.showEmptyPage { + activity.obtainWellList( + activity.keywords, + activity.wellType, + activity.pageIndex + ) + } } else { activity.emptyView!!.hide() activity.wellListAdapter = WellListAdapter(activity, activity.dataBeans) diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt index 1259b72..2137a40 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt @@ -6,12 +6,14 @@ import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.SensorListAdapter import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.utils.DialogHelper import com.casic.app.smartwell.utils.LoadState import com.casic.app.smartwell.vm.WellMonitorViewModel import kotlinx.android.synthetic.main.activity_well_monitor.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* class WellMonitorActivity : BaseActivity() { @@ -36,7 +38,9 @@ wellMonitorViewModel.monitorModel.observe(this, { if (it.code == 200) { if (it.data?.size == 0) { - emptyView!!.show("该井下无设备,或设备已离线,请检查", null) + emptyView!!.showEmptyPage("抱歉,该井下无设备,或设备已离线") { + wellMonitorViewModel.obtainMonitorResult(id = wellId) + } } else { emptyView!!.hide() val sensorListAdapter = SensorListAdapter(this, it.data!!) 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 c6cbe78..0121426 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 @@ -15,6 +15,7 @@ import com.casic.app.smartwell.base.BaseActivity import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.extensions.showRouteOnMap import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel @@ -27,6 +28,7 @@ import com.pengxh.app.multilib.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.activity_well_operation.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* import kotlinx.android.synthetic.main.include_search_bar.* import java.lang.ref.WeakReference @@ -204,7 +206,13 @@ activity.wellOperationAdapter.notifyDataSetChanged() } else { //首次加载数据 if (activity.dataBeans.size == 0) { - activity.emptyView!!.show("抱歉,无法查询到相关记录", null) + activity.emptyView!!.showEmptyPage { + activity.obtainWellList( + activity.keywords, + activity.wellType, + activity.pageIndex + ) + } } else { activity.emptyView!!.hide() activity.wellOperationAdapter = 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 c9ca964..d7d8269 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 @@ -10,6 +10,7 @@ import com.casic.app.smartwell.adapter.CompletedOrderAdapter import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.CompletedDetailActivity @@ -18,6 +19,7 @@ import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_completed.* +import kotlinx.android.synthetic.main.include_empty_view.* import java.lang.ref.WeakReference class CompletedOrderFragment : BaseFragment() { @@ -126,7 +128,9 @@ fragment.completedAdapter.notifyDataSetChanged() } else { if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("您还没有处理完成过任何工单", null) + fragment.emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { + fragment.obtainWorkOrderList(fragment.pageIndex) + } } else { fragment.emptyView!!.hide() fragment.completedAdapter = CompletedOrderAdapter( diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt index 1b4126e..04654dc 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt @@ -5,6 +5,7 @@ import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.navigatePageTo +import com.casic.app.smartwell.view.OvertimeOrderActivity import com.casic.app.smartwell.view.WellManagementActivity import com.casic.app.smartwell.view.WellOperationActivity import com.casic.app.smartwell.vm.WellCountViewModel @@ -24,14 +25,15 @@ titleView.text = "首页" //首页功能块 val homeRecycleAdapter = HomeRecycleAdapter(requireContext()) - homeRecyclerView.layoutManager = GridLayoutManager(requireContext(), 2) + homeRecyclerView.layoutManager = GridLayoutManager(requireContext(), 3) homeRecyclerView.adapter = homeRecycleAdapter homeRecycleAdapter.setOnGridItemClickListener(object : HomeRecycleAdapter.OnGridItemClickListener { override fun onClick(position: Int) { when (position) { 0 -> requireContext().navigatePageTo(WellManagementActivity::class.java) - 1 -> requireContext().navigatePageTo(WellOperationActivity::class.java) + 1 -> requireContext().navigatePageTo(OvertimeOrderActivity::class.java) + 2 -> requireContext().navigatePageTo(WellOperationActivity::class.java) } } }) diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt index d4791bf..cafc40f 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt @@ -10,6 +10,7 @@ import com.casic.app.smartwell.adapter.InHandleOrderAdapter import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.InHandleDetailActivity @@ -18,6 +19,7 @@ import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_inhandle.* +import kotlinx.android.synthetic.main.include_empty_view.* import java.lang.ref.WeakReference class InHandleOrderFragment : BaseFragment() { @@ -126,7 +128,9 @@ fragment.inHandleAdapter.notifyDataSetChanged() } else { //首次加载数据 if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("真不错,您已经处理完所有工单", null) + fragment.emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + fragment.obtainWorkOrderList(fragment.pageIndex) + } } else { fragment.emptyView!!.hide() fragment.inHandleAdapter = InHandleOrderAdapter( 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 780c1da..47a4c9a 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 @@ -10,6 +10,7 @@ import com.casic.app.smartwell.adapter.TodoWorkOrderListAdapter import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.utils.DialogHelper @@ -20,6 +21,7 @@ import com.pengxh.app.multilib.base.BaseFragment import com.pengxh.app.multilib.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.fragment_order_todo.* +import kotlinx.android.synthetic.main.include_empty_view.* import java.lang.ref.WeakReference class TodoOrderFragment : BaseFragment() { @@ -135,7 +137,9 @@ fragment.workOrderListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("没有需要您处理的工单", null) + fragment.emptyView!!.showEmptyPage("没有需要您处理的工单") { + fragment.obtainWorkOrderList(fragment.pageIndex) + } } else { fragment.emptyView!!.hide() fragment.workOrderListAdapter = TodoWorkOrderListAdapter( diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt index 5e79db6..a8560d5 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt @@ -10,6 +10,7 @@ import com.casic.app.smartwell.adapter.UndeterminedOrderAdapter import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.DetermineDetailActivity @@ -18,6 +19,7 @@ import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_undetermined.* +import kotlinx.android.synthetic.main.include_empty_view.* import java.lang.ref.WeakReference class UndeterminedOrderFragment : BaseFragment() { @@ -126,7 +128,9 @@ fragment.undeterminedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("没有需要您确认的工单", null) + fragment.emptyView!!.showEmptyPage("没有需要您确认的工单") { + fragment.obtainWorkOrderList(fragment.pageIndex) + } } else { fragment.emptyView!!.hide() fragment.undeterminedAdapter = UndeterminedOrderAdapter( diff --git a/app/src/main/java/com/casic/app/smartwell/vm/SearchOrderViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/SearchOrderViewModel.kt new file mode 100644 index 0000000..ee0149f --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/vm/SearchOrderViewModel.kt @@ -0,0 +1,31 @@ +package com.casic.app.smartwell.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.app.smartwell.base.BaseViewModel +import com.casic.app.smartwell.extensions.launch +import com.casic.app.smartwell.model.SearchResultModel +import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager + +class SearchOrderViewModel : BaseViewModel() { + + val listModel = MutableLiveData() + + fun obtainSearchResult( + keywords: String?, + alarmContent: String?, + alarmLevel: String?, + jobStatus: String?, + beginTime: String?, + endTime: String?, + page: Int + ) = launch({ + loadState.value = LoadState.Loading + listModel.value = RetrofitServiceManager.obtainSearchResult( + keywords, alarmContent, alarmLevel, jobStatus, beginTime, endTime, page + ) + loadState.value = LoadState.Success + }, { + loadState.value = LoadState.Fail + }) +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_order_overtime.xml b/app/src/main/res/layout/activity_order_overtime.xml new file mode 100644 index 0000000..d829e29 --- /dev/null +++ b/app/src/main/res/layout/activity_order_overtime.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_order_search.xml b/app/src/main/res/layout/activity_order_search.xml index 74b898c..33187af 100644 --- a/app/src/main/res/layout/activity_order_search.xml +++ b/app/src/main/res/layout/activity_order_search.xml @@ -10,152 +10,156 @@ - + android:layout_height="wrap_content"> + android:layout_height="wrap_content" + android:layout_margin="@dimen/dp_10" + android:background="@drawable/bg_layout" + android:orientation="vertical"> - - - + + + + + + + + + + + - + android:textSize="@dimen/titleFontSize" /> - - - - - - - - - - - - - - - - - + + - + android:textSize="@dimen/titleFontSize" /> - - - - - + app:max_select="1" /> + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_order_search_result.xml b/app/src/main/res/layout/activity_order_search_result.xml new file mode 100644 index 0000000..c6512d5 --- /dev/null +++ b/app/src/main/res/layout/activity_order_search_result.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e45158c..7460cc2 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -45,7 +45,9 @@ + + diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt index cba0198..e7ec8d8 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt @@ -25,7 +25,7 @@ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { val imageView = ImageView(context) val layoutWidth: Int = - SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 20f) + SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f) val margins: Int = QMUIDisplayHelper.dp2px(context, 3) val itemSize = (layoutWidth - 6 * margins) / 3 val params = LinearLayout.LayoutParams(itemSize, itemSize) diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt index 7780aaa..ad90885 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt @@ -17,4 +17,12 @@ } } return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt index de1c6c1..84ae8a8 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt @@ -33,10 +33,16 @@ startActivity(intent) } +fun Context.navigatePageTo(clazz: Class, values: ArrayList) { + val intent = Intent(this, clazz) + intent.putStringArrayListExtra(Constant.INTENT_PARAM, values) + startActivity(intent) +} + fun Context.navigatePageTo( clazz: Class, index: Int, - imageList: ArrayList? + imageList: ArrayList ) { val intent = Intent(this, clazz) intent.putExtra("index", index) 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 5f9ce7c..8ed51f4 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 @@ -23,4 +23,12 @@ "未知类型" } } +} + +fun Int.toLevel(): String { + return if (this == 0) { + "" + } else { + this.toString() + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt index ee3685d..3bc5d96 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt @@ -1,6 +1,20 @@ package com.casic.app.smartwell.extensions +import java.text.ParseException import java.text.SimpleDateFormat import java.util.* -fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) \ No newline at end of file +fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) + +fun Long.isEarlierThanStart(date: String): Boolean { + if (date.isBlank()) { + return false + } + val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA) + try { + return this < dateFormat.parse(date)!!.time + } catch (e: ParseException) { + + } + return true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt new file mode 100644 index 0000000..bd9cfa7 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt @@ -0,0 +1,12 @@ +package com.casic.app.smartwell.extensions + +import android.view.View +import com.qmuiteam.qmui.widget.QMUIEmptyView + +fun QMUIEmptyView.showEmptyPage(onButtonClickListener: View.OnClickListener) { + this.show(false, "抱歉,无法查询到相关记录", null, "重试", onButtonClickListener) +} + +fun QMUIEmptyView.showEmptyPage(title: String, onButtonClickListener: View.OnClickListener) { + this.show(false, title, null, "刷新", onButtonClickListener) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt index 7358b1c..2cdd63d 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt @@ -60,6 +60,7 @@ //窨井类型转换 fun String.toChinese(): String { return when (this) { + "0" -> "全部" "1" -> "一级" "2" -> "二级" "3" -> "三级" diff --git a/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt b/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt new file mode 100644 index 0000000..af7fd13 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt @@ -0,0 +1,52 @@ +package com.casic.app.smartwell.model + +class SearchResultModel { + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var rows: MutableList? = null + var total = 0 + + class RowsBean { + var alarmContent = 0 + var deptName: String? = null + var jobStatus: String? = null + var handleJobPerson: String? = null + var alarmContentName: String? = null + var shouldGetTime: String? = null + var wellCode: String? = null + var deptid: String? = null + var alarmTypeName: String? = null + var jobCode: String? = null + var jobBelongTo: String? = null + var jobFlag: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var jobStatusName: String? = null + var alarmValue: String? = null + var alarmId: String? = null + var alarmLevel: String? = null + var handleJobTime: String? = null + var tel: String? = null + var id: String? = null + var wellId: String? = null + var jobType: String? = null + var editable = 0 + var alarmTime: String? = null + var alarmMessage: String? = null + var staff: String? = null + var getJobTime: String? = null + var getJobPerson: String? = null + var shouldHandleTime: String? = null + var jobId: String? = null + var alarmType: String? = null + var alarmStatus: String? = null + var devcode: String? = null + var createTime: String? = null + var position: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index fd4e603..c342334 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -41,7 +41,7 @@ const val USER_DETAIL_MODEL = "userDetailModel" const val INTENT_PARAM = "intentParam" - val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher) - val HOME_ITEMS = arrayOf("闸井管理", "布防撤防") + val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher) + val HOME_ITEMS = arrayOf("闸井管理", "超时工单", "布防撤防") val SUB_PAGE_TITLES = arrayOf("待处理", "待确认", "处理中", "已完成") } \ 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 9c34038..7a5ca39 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 @@ -234,6 +234,22 @@ ): OrderStatusModel /** + * 查询工单 + * */ + @GET("/job/searchList") + suspend fun obtainSearchResult( + @Header("token") token: String, + @Query("keywords") keywords: String?, + @Query("alarmContent") alarmContent: String?, + @Query("alarmLevel") alarmLevel: String?, + @Query("jobStatus") jobStatus: String?, + @Query("beginTime") beginTime: String?, + @Query("endTime") endTime: String?, + @Query("limit") limit: Int, + @Query("offset") offset: Int + ): SearchResultModel + + /** * 获取用户信息 */ @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 a7106b5..945f6a3 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 @@ -175,6 +175,31 @@ } /** + * 查询工单 + */ + suspend fun obtainSearchResult( + keywords: String?, + alarmContent: String?, + alarmLevel: String?, + jobStatus: String?, + beginTime: String?, + endTime: String?, + page: Int + ): SearchResultModel { + return api.obtainSearchResult( + AuthenticationHelper.token!!, + keywords, + alarmContent, + alarmLevel, + jobStatus, + beginTime, + endTime, + Constant.PAGE_LIMIT, + page + ) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): String { diff --git a/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt index cfc4e0f..45af48a 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt @@ -98,7 +98,7 @@ imageRecyclerView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() - val imageArray = orderDetail.firstStatePhotos.toString().split(";") + val imageArray = orderDetail.firstStatePhotos.toString().split(",") imageArray.forEach { path -> if (path != "") { urls.add(path.combineImagePath()) diff --git a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt index 1a3e670..36075bd 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt @@ -197,7 +197,7 @@ return@setOnClickListener } val state = sceneEditView.text.toString().trim() - if (state == "") { + if (state.isBlank()) { "请输入现场情况".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt index b7a51ce..97e1f59 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt @@ -161,7 +161,7 @@ imageRecyclerView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() - val imageArray = orderDetail.firstStatePhotos.toString().split(";") + val imageArray = orderDetail.firstStatePhotos.toString().split(",") imageArray.forEach { path -> if (path != "") { urls.add(path.combineImagePath()) @@ -247,7 +247,7 @@ return@setOnClickListener } val state = sceneEditView.text.toString().trim() - if (state == "") { + if (state.isBlank()) { "请输入维护情况".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt index e5698a1..cd4fdff 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt @@ -1,7 +1,6 @@ package com.casic.app.smartwell.view import android.text.Editable -import android.text.TextUtils import android.text.TextWatcher import android.view.KeyEvent import android.view.inputmethod.EditorInfo @@ -67,13 +66,13 @@ false } loginButton.setOnClickListener { - val account = userNameView.text.toString() - val userPassword = userPasswordView.text.toString() - if (TextUtils.isEmpty(account)) { + val account = userNameView.text.toString().trim() + val userPassword = userPasswordView.text.toString().trim() + if (account.isBlank()) { "用户名不能为空".show(this) return@setOnClickListener } - if (TextUtils.isEmpty(userPassword)) { + if (userPassword.isBlank()) { "密码不能为空".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt new file mode 100644 index 0000000..453a2c9 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt @@ -0,0 +1,21 @@ +package com.casic.app.smartwell.view + +import com.casic.app.smartwell.R +import com.casic.app.smartwell.base.BaseActivity + +class OvertimeOrderActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_order_overtime + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt new file mode 100644 index 0000000..8228673 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt @@ -0,0 +1,129 @@ +package com.casic.app.smartwell.view + +import android.os.Handler +import android.os.Looper +import android.os.Message +import android.view.View +import androidx.lifecycle.ViewModelProvider +import com.casic.app.smartwell.R +import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage +import com.casic.app.smartwell.model.SearchResultModel +import com.casic.app.smartwell.utils.Constant +import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.vm.SearchOrderViewModel +import kotlinx.android.synthetic.main.activity_order_search_result.* +import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* +import java.lang.ref.WeakReference + +class SearchResultActivity : BaseActivity() { + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var searchOrderViewModel: SearchOrderViewModel + private lateinit var args: ArrayList + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initLayoutView(): Int = R.layout.activity_order_search_result + + override fun setupTopBarLayout() { + titleView.text = "查询结果" + leftBackView.visibility = View.VISIBLE + leftBackView.setOnClickListener { finish() } + } + + override fun initData() { + args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! + weakReferenceHandler = WeakReferenceHandler(this) + searchOrderViewModel = ViewModelProvider(this).get(SearchOrderViewModel::class.java) + } + + override fun initEvent() { + obtainSearchResult(args, pageIndex) + searchOrderViewModel.listModel.observe(this, { + if (it.code == 200) { + val dataRows = it.data?.rows + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows!! + resultRefreshLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows?.size == 0) { + "到底了,别拉了".show(this) + } + dataBeans.addAll(dataRows!!) + resultRefreshLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows!! + } + } + weakReferenceHandler.sendEmptyMessage(2022040101) + } + }) + searchOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } + }) + resultRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainSearchResult(args, pageIndex) + } + resultRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainSearchResult(args, pageIndex) + } + } + + private fun obtainSearchResult(args: ArrayList, pageIndex: Int) { + searchOrderViewModel.obtainSearchResult( + keywords = args[0], + alarmContent = args[1], + alarmLevel = args[2], + jobStatus = args[3], + beginTime = args[4], + endTime = args[5], + page = pageIndex + ) + } + + private class WeakReferenceHandler(activity: SearchResultActivity) : + Handler(Looper.getMainLooper()) { + private val reference: WeakReference = WeakReference(activity) + + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val activity = reference.get()!! + if (msg.what == 2022040101) { + if (activity.isRefresh || activity.isLoadMore) { +// activity.wellOperationAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (activity.dataBeans.size == 0) { + activity.emptyView!!.showEmptyPage { + activity.obtainSearchResult(activity.args, activity.pageIndex) + } + } else { + activity.emptyView!!.hide() + } + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt index af88541..dc68caa 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt @@ -1,15 +1,12 @@ package com.casic.app.smartwell.view -import android.content.Context import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.base.BaseActivity -import com.casic.app.smartwell.extensions.show -import com.casic.app.smartwell.extensions.timestampToDate +import com.casic.app.smartwell.extensions.* import com.casic.app.smartwell.model.AlarmContentTypeModel import com.casic.app.smartwell.model.OrderStatusModel import com.casic.app.smartwell.utils.Constant @@ -25,13 +22,16 @@ class SearchWorkOrderActivity : BaseActivity() { - private val kTag = "SearchWorkOrderActivity" private lateinit var contentTypeViewModel: AlarmContentTypeViewModel private lateinit var orderStatusViewModel: OrderStatusViewModel private lateinit var inflater: LayoutInflater - private var alarmTypeModels: MutableList = ArrayList() + private lateinit var contentTypeAdapter: TagAdapter + private lateinit var orderStatusAdapter: TagAdapter + private var contentModels: MutableList = ArrayList() private var orderStatusModels: MutableList = ArrayList() - private val context: Context = this@SearchWorkOrderActivity + private var alarmContentType = "" + private var alarmLevel = "" + private var orderState = "" override fun initLayoutView(): Int = R.layout.activity_order_search @@ -45,7 +45,6 @@ inflater = LayoutInflater.from(this) //告警内容 contentTypeViewModel = ViewModelProvider(this).get(AlarmContentTypeViewModel::class.java) - //工单状态 orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java) } @@ -65,11 +64,10 @@ } else { bean = dataBean } - alarmTypeModels.add(bean) + contentModels.add(bean) } - - alarmContentLayout.adapter = - object : TagAdapter(alarmTypeModels) { + contentTypeAdapter = + object : TagAdapter(contentModels) { override fun getView( parent: FlowLayout?, position: Int, bean: AlarmContentTypeModel.DataBean.ListBean? @@ -78,19 +76,46 @@ R.layout.item_tag_flowlayout, orderStatusLayout, false ) as TextView - tagView.text = alarmTypeModels[position].name + tagView.text = contentModels[position].name return tagView } } - + alarmContentLayout.adapter = contentTypeAdapter + contentTypeAdapter.setSelectedList(0) alarmContentLayout.setOnTagClickListener { _, position, _ -> - //TODO - alarmTypeModels[position].name!!.show(context) + this.alarmContentType = contentModels[position].value.toString() true } } }) + val levelMaps: MutableList> = ArrayList() + for (i in 0..3) { + val map = HashMap() + map["name"] = i.toString().toChinese() + map["value"] = i.toLevel() + levelMaps.add(map) + } + val levelAdapter = object : TagAdapter>(levelMaps) { + override fun getView( + parent: FlowLayout?, + position: Int, map: Map? + ): View { + val tagView = inflater.inflate( + R.layout.item_tag_flowlayout, + orderStatusLayout, false + ) as TextView + tagView.text = levelMaps[position]["name"] + return tagView + } + } + alarmLevelLayout.adapter = levelAdapter + levelAdapter.setSelectedList(0) + alarmLevelLayout.setOnTagClickListener { _, position, _ -> + this.alarmLevel = levelMaps[position]["value"].toString() + true + } + orderStatusViewModel.obtainOrderStatus() orderStatusViewModel.listModel.observe(this, { if (it.code == 200) { @@ -106,8 +131,7 @@ } orderStatusModels.add(bean) } - - orderStatusLayout.adapter = + orderStatusAdapter = object : TagAdapter(orderStatusModels) { override fun getView( parent: FlowLayout?, @@ -121,18 +145,18 @@ return tagView } } - + orderStatusLayout.adapter = orderStatusAdapter + orderStatusAdapter.setSelectedList(0) orderStatusLayout.setOnTagClickListener { _, position, _ -> - //TODO - orderStatusModels[position].name!!.show(context) + this.orderState = orderStatusModels[position].value.toString() true } } }) - selectStartTimeView.setOnClickListener { + startTimeView.setOnClickListener { TimePickerDialog.Builder() - .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setThemeColor(R.color.mainThemeColor.convertColor(this)) .setTitleStringId("请选择开始时间") .setWheelItemTextSize(16) .setCyclic(false) @@ -140,13 +164,13 @@ .setMaxMillseconds(System.currentTimeMillis()) .setType(Type.YEAR_MONTH_DAY) .setCallBack { _: TimePickerDialog?, millSeconds: Long -> - selectStartTimeView.text = millSeconds.timestampToDate() + startTimeView.text = millSeconds.timestampToDate() }.build().show(supportFragmentManager, "year_month_day") } - selectEndTimeView.setOnClickListener { + endTimeView.setOnClickListener { TimePickerDialog.Builder() - .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setThemeColor(R.color.mainThemeColor.convertColor(this)) .setTitleStringId("请选择结束时间") .setWheelItemTextSize(16) .setCyclic(false) @@ -154,18 +178,42 @@ .setMaxMillseconds(System.currentTimeMillis()) .setType(Type.YEAR_MONTH_DAY) .setCallBack { _: TimePickerDialog?, millSeconds: Long -> - selectEndTimeView.text = millSeconds.timestampToDate() + if (millSeconds.isEarlierThanStart(startTimeView.text.toString())) { + "结束时间不合法,不能早于开始时间".show(this) + return@setCallBack + } + endTimeView.text = millSeconds.timestampToDate() }.build().show(supportFragmentManager, "year_month_day") } searchButton.setChangeAlphaWhenPress(true) searchButton.setOnClickListener { - + val wellCode = wellCodeView.text.toString().trim() + if (wellCode.isBlank()) { + "请输入窨井编号".show(this) + return@setOnClickListener + } + //页面跳转,将查询参数传过去 + navigatePageTo( + SearchResultActivity::class.java, addAll( + wellCode, + alarmContentType, + alarmLevel, + orderState, + startTimeView.text.toString(), + endTimeView.text.toString() + ) + ) } clearButton.setChangeAlphaWhenPress(true) clearButton.setOnClickListener { - + wellCodeView.text.clear() + contentTypeAdapter.setSelectedList(0) + levelAdapter.setSelectedList(0) + orderStatusAdapter.setSelectedList(0) + startTimeView.text = "" + endTimeView.text = "" } } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt index e907ca4..e0cc32f 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt @@ -15,6 +15,7 @@ import com.casic.app.smartwell.base.BaseActivity import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.extensions.showRouteOnMap import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel @@ -23,6 +24,7 @@ import com.casic.app.smartwell.widgets.EasyPopupWindow import kotlinx.android.synthetic.main.activity_well_management.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* import kotlinx.android.synthetic.main.include_search_bar.* import java.lang.ref.WeakReference @@ -168,7 +170,13 @@ activity.wellListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (activity.dataBeans.size == 0) { - activity.emptyView!!.show("抱歉,无法查询到相关记录", null) + activity.emptyView!!.showEmptyPage { + activity.obtainWellList( + activity.keywords, + activity.wellType, + activity.pageIndex + ) + } } else { activity.emptyView!!.hide() activity.wellListAdapter = WellListAdapter(activity, activity.dataBeans) diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt index 1259b72..2137a40 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt @@ -6,12 +6,14 @@ import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.SensorListAdapter import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.utils.DialogHelper import com.casic.app.smartwell.utils.LoadState import com.casic.app.smartwell.vm.WellMonitorViewModel import kotlinx.android.synthetic.main.activity_well_monitor.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* class WellMonitorActivity : BaseActivity() { @@ -36,7 +38,9 @@ wellMonitorViewModel.monitorModel.observe(this, { if (it.code == 200) { if (it.data?.size == 0) { - emptyView!!.show("该井下无设备,或设备已离线,请检查", null) + emptyView!!.showEmptyPage("抱歉,该井下无设备,或设备已离线") { + wellMonitorViewModel.obtainMonitorResult(id = wellId) + } } else { emptyView!!.hide() val sensorListAdapter = SensorListAdapter(this, it.data!!) 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 c6cbe78..0121426 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 @@ -15,6 +15,7 @@ import com.casic.app.smartwell.base.BaseActivity import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.extensions.showRouteOnMap import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel @@ -27,6 +28,7 @@ import com.pengxh.app.multilib.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.activity_well_operation.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* import kotlinx.android.synthetic.main.include_search_bar.* import java.lang.ref.WeakReference @@ -204,7 +206,13 @@ activity.wellOperationAdapter.notifyDataSetChanged() } else { //首次加载数据 if (activity.dataBeans.size == 0) { - activity.emptyView!!.show("抱歉,无法查询到相关记录", null) + activity.emptyView!!.showEmptyPage { + activity.obtainWellList( + activity.keywords, + activity.wellType, + activity.pageIndex + ) + } } else { activity.emptyView!!.hide() activity.wellOperationAdapter = 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 c9ca964..d7d8269 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 @@ -10,6 +10,7 @@ import com.casic.app.smartwell.adapter.CompletedOrderAdapter import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.CompletedDetailActivity @@ -18,6 +19,7 @@ import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_completed.* +import kotlinx.android.synthetic.main.include_empty_view.* import java.lang.ref.WeakReference class CompletedOrderFragment : BaseFragment() { @@ -126,7 +128,9 @@ fragment.completedAdapter.notifyDataSetChanged() } else { if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("您还没有处理完成过任何工单", null) + fragment.emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { + fragment.obtainWorkOrderList(fragment.pageIndex) + } } else { fragment.emptyView!!.hide() fragment.completedAdapter = CompletedOrderAdapter( diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt index 1b4126e..04654dc 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt @@ -5,6 +5,7 @@ import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.navigatePageTo +import com.casic.app.smartwell.view.OvertimeOrderActivity import com.casic.app.smartwell.view.WellManagementActivity import com.casic.app.smartwell.view.WellOperationActivity import com.casic.app.smartwell.vm.WellCountViewModel @@ -24,14 +25,15 @@ titleView.text = "首页" //首页功能块 val homeRecycleAdapter = HomeRecycleAdapter(requireContext()) - homeRecyclerView.layoutManager = GridLayoutManager(requireContext(), 2) + homeRecyclerView.layoutManager = GridLayoutManager(requireContext(), 3) homeRecyclerView.adapter = homeRecycleAdapter homeRecycleAdapter.setOnGridItemClickListener(object : HomeRecycleAdapter.OnGridItemClickListener { override fun onClick(position: Int) { when (position) { 0 -> requireContext().navigatePageTo(WellManagementActivity::class.java) - 1 -> requireContext().navigatePageTo(WellOperationActivity::class.java) + 1 -> requireContext().navigatePageTo(OvertimeOrderActivity::class.java) + 2 -> requireContext().navigatePageTo(WellOperationActivity::class.java) } } }) diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt index d4791bf..cafc40f 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt @@ -10,6 +10,7 @@ import com.casic.app.smartwell.adapter.InHandleOrderAdapter import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.InHandleDetailActivity @@ -18,6 +19,7 @@ import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_inhandle.* +import kotlinx.android.synthetic.main.include_empty_view.* import java.lang.ref.WeakReference class InHandleOrderFragment : BaseFragment() { @@ -126,7 +128,9 @@ fragment.inHandleAdapter.notifyDataSetChanged() } else { //首次加载数据 if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("真不错,您已经处理完所有工单", null) + fragment.emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + fragment.obtainWorkOrderList(fragment.pageIndex) + } } else { fragment.emptyView!!.hide() fragment.inHandleAdapter = InHandleOrderAdapter( 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 780c1da..47a4c9a 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 @@ -10,6 +10,7 @@ import com.casic.app.smartwell.adapter.TodoWorkOrderListAdapter import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.utils.DialogHelper @@ -20,6 +21,7 @@ import com.pengxh.app.multilib.base.BaseFragment import com.pengxh.app.multilib.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.fragment_order_todo.* +import kotlinx.android.synthetic.main.include_empty_view.* import java.lang.ref.WeakReference class TodoOrderFragment : BaseFragment() { @@ -135,7 +137,9 @@ fragment.workOrderListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("没有需要您处理的工单", null) + fragment.emptyView!!.showEmptyPage("没有需要您处理的工单") { + fragment.obtainWorkOrderList(fragment.pageIndex) + } } else { fragment.emptyView!!.hide() fragment.workOrderListAdapter = TodoWorkOrderListAdapter( diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt index 5e79db6..a8560d5 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt @@ -10,6 +10,7 @@ import com.casic.app.smartwell.adapter.UndeterminedOrderAdapter import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.DetermineDetailActivity @@ -18,6 +19,7 @@ import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_undetermined.* +import kotlinx.android.synthetic.main.include_empty_view.* import java.lang.ref.WeakReference class UndeterminedOrderFragment : BaseFragment() { @@ -126,7 +128,9 @@ fragment.undeterminedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("没有需要您确认的工单", null) + fragment.emptyView!!.showEmptyPage("没有需要您确认的工单") { + fragment.obtainWorkOrderList(fragment.pageIndex) + } } else { fragment.emptyView!!.hide() fragment.undeterminedAdapter = UndeterminedOrderAdapter( diff --git a/app/src/main/java/com/casic/app/smartwell/vm/SearchOrderViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/SearchOrderViewModel.kt new file mode 100644 index 0000000..ee0149f --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/vm/SearchOrderViewModel.kt @@ -0,0 +1,31 @@ +package com.casic.app.smartwell.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.app.smartwell.base.BaseViewModel +import com.casic.app.smartwell.extensions.launch +import com.casic.app.smartwell.model.SearchResultModel +import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager + +class SearchOrderViewModel : BaseViewModel() { + + val listModel = MutableLiveData() + + fun obtainSearchResult( + keywords: String?, + alarmContent: String?, + alarmLevel: String?, + jobStatus: String?, + beginTime: String?, + endTime: String?, + page: Int + ) = launch({ + loadState.value = LoadState.Loading + listModel.value = RetrofitServiceManager.obtainSearchResult( + keywords, alarmContent, alarmLevel, jobStatus, beginTime, endTime, page + ) + loadState.value = LoadState.Success + }, { + loadState.value = LoadState.Fail + }) +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_order_overtime.xml b/app/src/main/res/layout/activity_order_overtime.xml new file mode 100644 index 0000000..d829e29 --- /dev/null +++ b/app/src/main/res/layout/activity_order_overtime.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_order_search.xml b/app/src/main/res/layout/activity_order_search.xml index 74b898c..33187af 100644 --- a/app/src/main/res/layout/activity_order_search.xml +++ b/app/src/main/res/layout/activity_order_search.xml @@ -10,152 +10,156 @@ - + android:layout_height="wrap_content"> + android:layout_height="wrap_content" + android:layout_margin="@dimen/dp_10" + android:background="@drawable/bg_layout" + android:orientation="vertical"> - - - + + + + + + + + + + + - + android:textSize="@dimen/titleFontSize" /> - - - - - - - - - - - - - - - - - + + - + android:textSize="@dimen/titleFontSize" /> - - - - - + app:max_select="1" /> + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_order_search_result.xml b/app/src/main/res/layout/activity_order_search_result.xml new file mode 100644 index 0000000..c6512d5 --- /dev/null +++ b/app/src/main/res/layout/activity_order_search_result.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_well_management.xml b/app/src/main/res/layout/activity_well_management.xml index 06c9434..819d37f 100644 --- a/app/src/main/res/layout/activity_well_management.xml +++ b/app/src/main/res/layout/activity_well_management.xml @@ -11,10 +11,7 @@ - + + + diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt index cba0198..e7ec8d8 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt @@ -25,7 +25,7 @@ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { val imageView = ImageView(context) val layoutWidth: Int = - SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 20f) + SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f) val margins: Int = QMUIDisplayHelper.dp2px(context, 3) val itemSize = (layoutWidth - 6 * margins) / 3 val params = LinearLayout.LayoutParams(itemSize, itemSize) diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt index 7780aaa..ad90885 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt @@ -17,4 +17,12 @@ } } return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt index de1c6c1..84ae8a8 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt @@ -33,10 +33,16 @@ startActivity(intent) } +fun Context.navigatePageTo(clazz: Class, values: ArrayList) { + val intent = Intent(this, clazz) + intent.putStringArrayListExtra(Constant.INTENT_PARAM, values) + startActivity(intent) +} + fun Context.navigatePageTo( clazz: Class, index: Int, - imageList: ArrayList? + imageList: ArrayList ) { val intent = Intent(this, clazz) intent.putExtra("index", index) 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 5f9ce7c..8ed51f4 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 @@ -23,4 +23,12 @@ "未知类型" } } +} + +fun Int.toLevel(): String { + return if (this == 0) { + "" + } else { + this.toString() + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt index ee3685d..3bc5d96 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt @@ -1,6 +1,20 @@ package com.casic.app.smartwell.extensions +import java.text.ParseException import java.text.SimpleDateFormat import java.util.* -fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) \ No newline at end of file +fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) + +fun Long.isEarlierThanStart(date: String): Boolean { + if (date.isBlank()) { + return false + } + val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA) + try { + return this < dateFormat.parse(date)!!.time + } catch (e: ParseException) { + + } + return true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt new file mode 100644 index 0000000..bd9cfa7 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt @@ -0,0 +1,12 @@ +package com.casic.app.smartwell.extensions + +import android.view.View +import com.qmuiteam.qmui.widget.QMUIEmptyView + +fun QMUIEmptyView.showEmptyPage(onButtonClickListener: View.OnClickListener) { + this.show(false, "抱歉,无法查询到相关记录", null, "重试", onButtonClickListener) +} + +fun QMUIEmptyView.showEmptyPage(title: String, onButtonClickListener: View.OnClickListener) { + this.show(false, title, null, "刷新", onButtonClickListener) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt index 7358b1c..2cdd63d 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt @@ -60,6 +60,7 @@ //窨井类型转换 fun String.toChinese(): String { return when (this) { + "0" -> "全部" "1" -> "一级" "2" -> "二级" "3" -> "三级" diff --git a/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt b/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt new file mode 100644 index 0000000..af7fd13 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt @@ -0,0 +1,52 @@ +package com.casic.app.smartwell.model + +class SearchResultModel { + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var rows: MutableList? = null + var total = 0 + + class RowsBean { + var alarmContent = 0 + var deptName: String? = null + var jobStatus: String? = null + var handleJobPerson: String? = null + var alarmContentName: String? = null + var shouldGetTime: String? = null + var wellCode: String? = null + var deptid: String? = null + var alarmTypeName: String? = null + var jobCode: String? = null + var jobBelongTo: String? = null + var jobFlag: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var jobStatusName: String? = null + var alarmValue: String? = null + var alarmId: String? = null + var alarmLevel: String? = null + var handleJobTime: String? = null + var tel: String? = null + var id: String? = null + var wellId: String? = null + var jobType: String? = null + var editable = 0 + var alarmTime: String? = null + var alarmMessage: String? = null + var staff: String? = null + var getJobTime: String? = null + var getJobPerson: String? = null + var shouldHandleTime: String? = null + var jobId: String? = null + var alarmType: String? = null + var alarmStatus: String? = null + var devcode: String? = null + var createTime: String? = null + var position: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index fd4e603..c342334 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -41,7 +41,7 @@ const val USER_DETAIL_MODEL = "userDetailModel" const val INTENT_PARAM = "intentParam" - val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher) - val HOME_ITEMS = arrayOf("闸井管理", "布防撤防") + val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher) + val HOME_ITEMS = arrayOf("闸井管理", "超时工单", "布防撤防") val SUB_PAGE_TITLES = arrayOf("待处理", "待确认", "处理中", "已完成") } \ 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 9c34038..7a5ca39 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 @@ -234,6 +234,22 @@ ): OrderStatusModel /** + * 查询工单 + * */ + @GET("/job/searchList") + suspend fun obtainSearchResult( + @Header("token") token: String, + @Query("keywords") keywords: String?, + @Query("alarmContent") alarmContent: String?, + @Query("alarmLevel") alarmLevel: String?, + @Query("jobStatus") jobStatus: String?, + @Query("beginTime") beginTime: String?, + @Query("endTime") endTime: String?, + @Query("limit") limit: Int, + @Query("offset") offset: Int + ): SearchResultModel + + /** * 获取用户信息 */ @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 a7106b5..945f6a3 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 @@ -175,6 +175,31 @@ } /** + * 查询工单 + */ + suspend fun obtainSearchResult( + keywords: String?, + alarmContent: String?, + alarmLevel: String?, + jobStatus: String?, + beginTime: String?, + endTime: String?, + page: Int + ): SearchResultModel { + return api.obtainSearchResult( + AuthenticationHelper.token!!, + keywords, + alarmContent, + alarmLevel, + jobStatus, + beginTime, + endTime, + Constant.PAGE_LIMIT, + page + ) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): String { diff --git a/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt index cfc4e0f..45af48a 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt @@ -98,7 +98,7 @@ imageRecyclerView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() - val imageArray = orderDetail.firstStatePhotos.toString().split(";") + val imageArray = orderDetail.firstStatePhotos.toString().split(",") imageArray.forEach { path -> if (path != "") { urls.add(path.combineImagePath()) diff --git a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt index 1a3e670..36075bd 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt @@ -197,7 +197,7 @@ return@setOnClickListener } val state = sceneEditView.text.toString().trim() - if (state == "") { + if (state.isBlank()) { "请输入现场情况".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt index b7a51ce..97e1f59 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt @@ -161,7 +161,7 @@ imageRecyclerView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() - val imageArray = orderDetail.firstStatePhotos.toString().split(";") + val imageArray = orderDetail.firstStatePhotos.toString().split(",") imageArray.forEach { path -> if (path != "") { urls.add(path.combineImagePath()) @@ -247,7 +247,7 @@ return@setOnClickListener } val state = sceneEditView.text.toString().trim() - if (state == "") { + if (state.isBlank()) { "请输入维护情况".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt index e5698a1..cd4fdff 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt @@ -1,7 +1,6 @@ package com.casic.app.smartwell.view import android.text.Editable -import android.text.TextUtils import android.text.TextWatcher import android.view.KeyEvent import android.view.inputmethod.EditorInfo @@ -67,13 +66,13 @@ false } loginButton.setOnClickListener { - val account = userNameView.text.toString() - val userPassword = userPasswordView.text.toString() - if (TextUtils.isEmpty(account)) { + val account = userNameView.text.toString().trim() + val userPassword = userPasswordView.text.toString().trim() + if (account.isBlank()) { "用户名不能为空".show(this) return@setOnClickListener } - if (TextUtils.isEmpty(userPassword)) { + if (userPassword.isBlank()) { "密码不能为空".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt new file mode 100644 index 0000000..453a2c9 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt @@ -0,0 +1,21 @@ +package com.casic.app.smartwell.view + +import com.casic.app.smartwell.R +import com.casic.app.smartwell.base.BaseActivity + +class OvertimeOrderActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_order_overtime + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt new file mode 100644 index 0000000..8228673 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt @@ -0,0 +1,129 @@ +package com.casic.app.smartwell.view + +import android.os.Handler +import android.os.Looper +import android.os.Message +import android.view.View +import androidx.lifecycle.ViewModelProvider +import com.casic.app.smartwell.R +import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage +import com.casic.app.smartwell.model.SearchResultModel +import com.casic.app.smartwell.utils.Constant +import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.vm.SearchOrderViewModel +import kotlinx.android.synthetic.main.activity_order_search_result.* +import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* +import java.lang.ref.WeakReference + +class SearchResultActivity : BaseActivity() { + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var searchOrderViewModel: SearchOrderViewModel + private lateinit var args: ArrayList + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initLayoutView(): Int = R.layout.activity_order_search_result + + override fun setupTopBarLayout() { + titleView.text = "查询结果" + leftBackView.visibility = View.VISIBLE + leftBackView.setOnClickListener { finish() } + } + + override fun initData() { + args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! + weakReferenceHandler = WeakReferenceHandler(this) + searchOrderViewModel = ViewModelProvider(this).get(SearchOrderViewModel::class.java) + } + + override fun initEvent() { + obtainSearchResult(args, pageIndex) + searchOrderViewModel.listModel.observe(this, { + if (it.code == 200) { + val dataRows = it.data?.rows + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows!! + resultRefreshLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows?.size == 0) { + "到底了,别拉了".show(this) + } + dataBeans.addAll(dataRows!!) + resultRefreshLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows!! + } + } + weakReferenceHandler.sendEmptyMessage(2022040101) + } + }) + searchOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } + }) + resultRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainSearchResult(args, pageIndex) + } + resultRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainSearchResult(args, pageIndex) + } + } + + private fun obtainSearchResult(args: ArrayList, pageIndex: Int) { + searchOrderViewModel.obtainSearchResult( + keywords = args[0], + alarmContent = args[1], + alarmLevel = args[2], + jobStatus = args[3], + beginTime = args[4], + endTime = args[5], + page = pageIndex + ) + } + + private class WeakReferenceHandler(activity: SearchResultActivity) : + Handler(Looper.getMainLooper()) { + private val reference: WeakReference = WeakReference(activity) + + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val activity = reference.get()!! + if (msg.what == 2022040101) { + if (activity.isRefresh || activity.isLoadMore) { +// activity.wellOperationAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (activity.dataBeans.size == 0) { + activity.emptyView!!.showEmptyPage { + activity.obtainSearchResult(activity.args, activity.pageIndex) + } + } else { + activity.emptyView!!.hide() + } + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt index af88541..dc68caa 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt @@ -1,15 +1,12 @@ package com.casic.app.smartwell.view -import android.content.Context import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.base.BaseActivity -import com.casic.app.smartwell.extensions.show -import com.casic.app.smartwell.extensions.timestampToDate +import com.casic.app.smartwell.extensions.* import com.casic.app.smartwell.model.AlarmContentTypeModel import com.casic.app.smartwell.model.OrderStatusModel import com.casic.app.smartwell.utils.Constant @@ -25,13 +22,16 @@ class SearchWorkOrderActivity : BaseActivity() { - private val kTag = "SearchWorkOrderActivity" private lateinit var contentTypeViewModel: AlarmContentTypeViewModel private lateinit var orderStatusViewModel: OrderStatusViewModel private lateinit var inflater: LayoutInflater - private var alarmTypeModels: MutableList = ArrayList() + private lateinit var contentTypeAdapter: TagAdapter + private lateinit var orderStatusAdapter: TagAdapter + private var contentModels: MutableList = ArrayList() private var orderStatusModels: MutableList = ArrayList() - private val context: Context = this@SearchWorkOrderActivity + private var alarmContentType = "" + private var alarmLevel = "" + private var orderState = "" override fun initLayoutView(): Int = R.layout.activity_order_search @@ -45,7 +45,6 @@ inflater = LayoutInflater.from(this) //告警内容 contentTypeViewModel = ViewModelProvider(this).get(AlarmContentTypeViewModel::class.java) - //工单状态 orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java) } @@ -65,11 +64,10 @@ } else { bean = dataBean } - alarmTypeModels.add(bean) + contentModels.add(bean) } - - alarmContentLayout.adapter = - object : TagAdapter(alarmTypeModels) { + contentTypeAdapter = + object : TagAdapter(contentModels) { override fun getView( parent: FlowLayout?, position: Int, bean: AlarmContentTypeModel.DataBean.ListBean? @@ -78,19 +76,46 @@ R.layout.item_tag_flowlayout, orderStatusLayout, false ) as TextView - tagView.text = alarmTypeModels[position].name + tagView.text = contentModels[position].name return tagView } } - + alarmContentLayout.adapter = contentTypeAdapter + contentTypeAdapter.setSelectedList(0) alarmContentLayout.setOnTagClickListener { _, position, _ -> - //TODO - alarmTypeModels[position].name!!.show(context) + this.alarmContentType = contentModels[position].value.toString() true } } }) + val levelMaps: MutableList> = ArrayList() + for (i in 0..3) { + val map = HashMap() + map["name"] = i.toString().toChinese() + map["value"] = i.toLevel() + levelMaps.add(map) + } + val levelAdapter = object : TagAdapter>(levelMaps) { + override fun getView( + parent: FlowLayout?, + position: Int, map: Map? + ): View { + val tagView = inflater.inflate( + R.layout.item_tag_flowlayout, + orderStatusLayout, false + ) as TextView + tagView.text = levelMaps[position]["name"] + return tagView + } + } + alarmLevelLayout.adapter = levelAdapter + levelAdapter.setSelectedList(0) + alarmLevelLayout.setOnTagClickListener { _, position, _ -> + this.alarmLevel = levelMaps[position]["value"].toString() + true + } + orderStatusViewModel.obtainOrderStatus() orderStatusViewModel.listModel.observe(this, { if (it.code == 200) { @@ -106,8 +131,7 @@ } orderStatusModels.add(bean) } - - orderStatusLayout.adapter = + orderStatusAdapter = object : TagAdapter(orderStatusModels) { override fun getView( parent: FlowLayout?, @@ -121,18 +145,18 @@ return tagView } } - + orderStatusLayout.adapter = orderStatusAdapter + orderStatusAdapter.setSelectedList(0) orderStatusLayout.setOnTagClickListener { _, position, _ -> - //TODO - orderStatusModels[position].name!!.show(context) + this.orderState = orderStatusModels[position].value.toString() true } } }) - selectStartTimeView.setOnClickListener { + startTimeView.setOnClickListener { TimePickerDialog.Builder() - .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setThemeColor(R.color.mainThemeColor.convertColor(this)) .setTitleStringId("请选择开始时间") .setWheelItemTextSize(16) .setCyclic(false) @@ -140,13 +164,13 @@ .setMaxMillseconds(System.currentTimeMillis()) .setType(Type.YEAR_MONTH_DAY) .setCallBack { _: TimePickerDialog?, millSeconds: Long -> - selectStartTimeView.text = millSeconds.timestampToDate() + startTimeView.text = millSeconds.timestampToDate() }.build().show(supportFragmentManager, "year_month_day") } - selectEndTimeView.setOnClickListener { + endTimeView.setOnClickListener { TimePickerDialog.Builder() - .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setThemeColor(R.color.mainThemeColor.convertColor(this)) .setTitleStringId("请选择结束时间") .setWheelItemTextSize(16) .setCyclic(false) @@ -154,18 +178,42 @@ .setMaxMillseconds(System.currentTimeMillis()) .setType(Type.YEAR_MONTH_DAY) .setCallBack { _: TimePickerDialog?, millSeconds: Long -> - selectEndTimeView.text = millSeconds.timestampToDate() + if (millSeconds.isEarlierThanStart(startTimeView.text.toString())) { + "结束时间不合法,不能早于开始时间".show(this) + return@setCallBack + } + endTimeView.text = millSeconds.timestampToDate() }.build().show(supportFragmentManager, "year_month_day") } searchButton.setChangeAlphaWhenPress(true) searchButton.setOnClickListener { - + val wellCode = wellCodeView.text.toString().trim() + if (wellCode.isBlank()) { + "请输入窨井编号".show(this) + return@setOnClickListener + } + //页面跳转,将查询参数传过去 + navigatePageTo( + SearchResultActivity::class.java, addAll( + wellCode, + alarmContentType, + alarmLevel, + orderState, + startTimeView.text.toString(), + endTimeView.text.toString() + ) + ) } clearButton.setChangeAlphaWhenPress(true) clearButton.setOnClickListener { - + wellCodeView.text.clear() + contentTypeAdapter.setSelectedList(0) + levelAdapter.setSelectedList(0) + orderStatusAdapter.setSelectedList(0) + startTimeView.text = "" + endTimeView.text = "" } } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt index e907ca4..e0cc32f 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt @@ -15,6 +15,7 @@ import com.casic.app.smartwell.base.BaseActivity import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.extensions.showRouteOnMap import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel @@ -23,6 +24,7 @@ import com.casic.app.smartwell.widgets.EasyPopupWindow import kotlinx.android.synthetic.main.activity_well_management.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* import kotlinx.android.synthetic.main.include_search_bar.* import java.lang.ref.WeakReference @@ -168,7 +170,13 @@ activity.wellListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (activity.dataBeans.size == 0) { - activity.emptyView!!.show("抱歉,无法查询到相关记录", null) + activity.emptyView!!.showEmptyPage { + activity.obtainWellList( + activity.keywords, + activity.wellType, + activity.pageIndex + ) + } } else { activity.emptyView!!.hide() activity.wellListAdapter = WellListAdapter(activity, activity.dataBeans) diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt index 1259b72..2137a40 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt @@ -6,12 +6,14 @@ import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.SensorListAdapter import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.utils.DialogHelper import com.casic.app.smartwell.utils.LoadState import com.casic.app.smartwell.vm.WellMonitorViewModel import kotlinx.android.synthetic.main.activity_well_monitor.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* class WellMonitorActivity : BaseActivity() { @@ -36,7 +38,9 @@ wellMonitorViewModel.monitorModel.observe(this, { if (it.code == 200) { if (it.data?.size == 0) { - emptyView!!.show("该井下无设备,或设备已离线,请检查", null) + emptyView!!.showEmptyPage("抱歉,该井下无设备,或设备已离线") { + wellMonitorViewModel.obtainMonitorResult(id = wellId) + } } else { emptyView!!.hide() val sensorListAdapter = SensorListAdapter(this, it.data!!) 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 c6cbe78..0121426 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 @@ -15,6 +15,7 @@ import com.casic.app.smartwell.base.BaseActivity import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.extensions.showRouteOnMap import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel @@ -27,6 +28,7 @@ import com.pengxh.app.multilib.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.activity_well_operation.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* import kotlinx.android.synthetic.main.include_search_bar.* import java.lang.ref.WeakReference @@ -204,7 +206,13 @@ activity.wellOperationAdapter.notifyDataSetChanged() } else { //首次加载数据 if (activity.dataBeans.size == 0) { - activity.emptyView!!.show("抱歉,无法查询到相关记录", null) + activity.emptyView!!.showEmptyPage { + activity.obtainWellList( + activity.keywords, + activity.wellType, + activity.pageIndex + ) + } } else { activity.emptyView!!.hide() activity.wellOperationAdapter = 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 c9ca964..d7d8269 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 @@ -10,6 +10,7 @@ import com.casic.app.smartwell.adapter.CompletedOrderAdapter import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.CompletedDetailActivity @@ -18,6 +19,7 @@ import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_completed.* +import kotlinx.android.synthetic.main.include_empty_view.* import java.lang.ref.WeakReference class CompletedOrderFragment : BaseFragment() { @@ -126,7 +128,9 @@ fragment.completedAdapter.notifyDataSetChanged() } else { if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("您还没有处理完成过任何工单", null) + fragment.emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { + fragment.obtainWorkOrderList(fragment.pageIndex) + } } else { fragment.emptyView!!.hide() fragment.completedAdapter = CompletedOrderAdapter( diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt index 1b4126e..04654dc 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt @@ -5,6 +5,7 @@ import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.navigatePageTo +import com.casic.app.smartwell.view.OvertimeOrderActivity import com.casic.app.smartwell.view.WellManagementActivity import com.casic.app.smartwell.view.WellOperationActivity import com.casic.app.smartwell.vm.WellCountViewModel @@ -24,14 +25,15 @@ titleView.text = "首页" //首页功能块 val homeRecycleAdapter = HomeRecycleAdapter(requireContext()) - homeRecyclerView.layoutManager = GridLayoutManager(requireContext(), 2) + homeRecyclerView.layoutManager = GridLayoutManager(requireContext(), 3) homeRecyclerView.adapter = homeRecycleAdapter homeRecycleAdapter.setOnGridItemClickListener(object : HomeRecycleAdapter.OnGridItemClickListener { override fun onClick(position: Int) { when (position) { 0 -> requireContext().navigatePageTo(WellManagementActivity::class.java) - 1 -> requireContext().navigatePageTo(WellOperationActivity::class.java) + 1 -> requireContext().navigatePageTo(OvertimeOrderActivity::class.java) + 2 -> requireContext().navigatePageTo(WellOperationActivity::class.java) } } }) diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt index d4791bf..cafc40f 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt @@ -10,6 +10,7 @@ import com.casic.app.smartwell.adapter.InHandleOrderAdapter import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.InHandleDetailActivity @@ -18,6 +19,7 @@ import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_inhandle.* +import kotlinx.android.synthetic.main.include_empty_view.* import java.lang.ref.WeakReference class InHandleOrderFragment : BaseFragment() { @@ -126,7 +128,9 @@ fragment.inHandleAdapter.notifyDataSetChanged() } else { //首次加载数据 if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("真不错,您已经处理完所有工单", null) + fragment.emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + fragment.obtainWorkOrderList(fragment.pageIndex) + } } else { fragment.emptyView!!.hide() fragment.inHandleAdapter = InHandleOrderAdapter( 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 780c1da..47a4c9a 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 @@ -10,6 +10,7 @@ import com.casic.app.smartwell.adapter.TodoWorkOrderListAdapter import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.utils.DialogHelper @@ -20,6 +21,7 @@ import com.pengxh.app.multilib.base.BaseFragment import com.pengxh.app.multilib.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.fragment_order_todo.* +import kotlinx.android.synthetic.main.include_empty_view.* import java.lang.ref.WeakReference class TodoOrderFragment : BaseFragment() { @@ -135,7 +137,9 @@ fragment.workOrderListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("没有需要您处理的工单", null) + fragment.emptyView!!.showEmptyPage("没有需要您处理的工单") { + fragment.obtainWorkOrderList(fragment.pageIndex) + } } else { fragment.emptyView!!.hide() fragment.workOrderListAdapter = TodoWorkOrderListAdapter( diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt index 5e79db6..a8560d5 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt @@ -10,6 +10,7 @@ import com.casic.app.smartwell.adapter.UndeterminedOrderAdapter import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.DetermineDetailActivity @@ -18,6 +19,7 @@ import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_undetermined.* +import kotlinx.android.synthetic.main.include_empty_view.* import java.lang.ref.WeakReference class UndeterminedOrderFragment : BaseFragment() { @@ -126,7 +128,9 @@ fragment.undeterminedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("没有需要您确认的工单", null) + fragment.emptyView!!.showEmptyPage("没有需要您确认的工单") { + fragment.obtainWorkOrderList(fragment.pageIndex) + } } else { fragment.emptyView!!.hide() fragment.undeterminedAdapter = UndeterminedOrderAdapter( diff --git a/app/src/main/java/com/casic/app/smartwell/vm/SearchOrderViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/SearchOrderViewModel.kt new file mode 100644 index 0000000..ee0149f --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/vm/SearchOrderViewModel.kt @@ -0,0 +1,31 @@ +package com.casic.app.smartwell.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.app.smartwell.base.BaseViewModel +import com.casic.app.smartwell.extensions.launch +import com.casic.app.smartwell.model.SearchResultModel +import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager + +class SearchOrderViewModel : BaseViewModel() { + + val listModel = MutableLiveData() + + fun obtainSearchResult( + keywords: String?, + alarmContent: String?, + alarmLevel: String?, + jobStatus: String?, + beginTime: String?, + endTime: String?, + page: Int + ) = launch({ + loadState.value = LoadState.Loading + listModel.value = RetrofitServiceManager.obtainSearchResult( + keywords, alarmContent, alarmLevel, jobStatus, beginTime, endTime, page + ) + loadState.value = LoadState.Success + }, { + loadState.value = LoadState.Fail + }) +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_order_overtime.xml b/app/src/main/res/layout/activity_order_overtime.xml new file mode 100644 index 0000000..d829e29 --- /dev/null +++ b/app/src/main/res/layout/activity_order_overtime.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_order_search.xml b/app/src/main/res/layout/activity_order_search.xml index 74b898c..33187af 100644 --- a/app/src/main/res/layout/activity_order_search.xml +++ b/app/src/main/res/layout/activity_order_search.xml @@ -10,152 +10,156 @@ - + android:layout_height="wrap_content"> + android:layout_height="wrap_content" + android:layout_margin="@dimen/dp_10" + android:background="@drawable/bg_layout" + android:orientation="vertical"> - - - + + + + + + + + + + + - + android:textSize="@dimen/titleFontSize" /> - - - - - - - - - - - - - - - - - + + - + android:textSize="@dimen/titleFontSize" /> - - - - - + app:max_select="1" /> + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_order_search_result.xml b/app/src/main/res/layout/activity_order_search_result.xml new file mode 100644 index 0000000..c6512d5 --- /dev/null +++ b/app/src/main/res/layout/activity_order_search_result.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_well_management.xml b/app/src/main/res/layout/activity_well_management.xml index 06c9434..819d37f 100644 --- a/app/src/main/res/layout/activity_well_management.xml +++ b/app/src/main/res/layout/activity_well_management.xml @@ -11,10 +11,7 @@ - + - + + + diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt index cba0198..e7ec8d8 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt @@ -25,7 +25,7 @@ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { val imageView = ImageView(context) val layoutWidth: Int = - SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 20f) + SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f) val margins: Int = QMUIDisplayHelper.dp2px(context, 3) val itemSize = (layoutWidth - 6 * margins) / 3 val params = LinearLayout.LayoutParams(itemSize, itemSize) diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt index 7780aaa..ad90885 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt @@ -17,4 +17,12 @@ } } return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt index de1c6c1..84ae8a8 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt @@ -33,10 +33,16 @@ startActivity(intent) } +fun Context.navigatePageTo(clazz: Class, values: ArrayList) { + val intent = Intent(this, clazz) + intent.putStringArrayListExtra(Constant.INTENT_PARAM, values) + startActivity(intent) +} + fun Context.navigatePageTo( clazz: Class, index: Int, - imageList: ArrayList? + imageList: ArrayList ) { val intent = Intent(this, clazz) intent.putExtra("index", index) 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 5f9ce7c..8ed51f4 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 @@ -23,4 +23,12 @@ "未知类型" } } +} + +fun Int.toLevel(): String { + return if (this == 0) { + "" + } else { + this.toString() + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt index ee3685d..3bc5d96 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt @@ -1,6 +1,20 @@ package com.casic.app.smartwell.extensions +import java.text.ParseException import java.text.SimpleDateFormat import java.util.* -fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) \ No newline at end of file +fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) + +fun Long.isEarlierThanStart(date: String): Boolean { + if (date.isBlank()) { + return false + } + val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA) + try { + return this < dateFormat.parse(date)!!.time + } catch (e: ParseException) { + + } + return true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt new file mode 100644 index 0000000..bd9cfa7 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt @@ -0,0 +1,12 @@ +package com.casic.app.smartwell.extensions + +import android.view.View +import com.qmuiteam.qmui.widget.QMUIEmptyView + +fun QMUIEmptyView.showEmptyPage(onButtonClickListener: View.OnClickListener) { + this.show(false, "抱歉,无法查询到相关记录", null, "重试", onButtonClickListener) +} + +fun QMUIEmptyView.showEmptyPage(title: String, onButtonClickListener: View.OnClickListener) { + this.show(false, title, null, "刷新", onButtonClickListener) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt index 7358b1c..2cdd63d 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt @@ -60,6 +60,7 @@ //窨井类型转换 fun String.toChinese(): String { return when (this) { + "0" -> "全部" "1" -> "一级" "2" -> "二级" "3" -> "三级" diff --git a/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt b/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt new file mode 100644 index 0000000..af7fd13 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt @@ -0,0 +1,52 @@ +package com.casic.app.smartwell.model + +class SearchResultModel { + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var rows: MutableList? = null + var total = 0 + + class RowsBean { + var alarmContent = 0 + var deptName: String? = null + var jobStatus: String? = null + var handleJobPerson: String? = null + var alarmContentName: String? = null + var shouldGetTime: String? = null + var wellCode: String? = null + var deptid: String? = null + var alarmTypeName: String? = null + var jobCode: String? = null + var jobBelongTo: String? = null + var jobFlag: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var jobStatusName: String? = null + var alarmValue: String? = null + var alarmId: String? = null + var alarmLevel: String? = null + var handleJobTime: String? = null + var tel: String? = null + var id: String? = null + var wellId: String? = null + var jobType: String? = null + var editable = 0 + var alarmTime: String? = null + var alarmMessage: String? = null + var staff: String? = null + var getJobTime: String? = null + var getJobPerson: String? = null + var shouldHandleTime: String? = null + var jobId: String? = null + var alarmType: String? = null + var alarmStatus: String? = null + var devcode: String? = null + var createTime: String? = null + var position: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index fd4e603..c342334 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -41,7 +41,7 @@ const val USER_DETAIL_MODEL = "userDetailModel" const val INTENT_PARAM = "intentParam" - val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher) - val HOME_ITEMS = arrayOf("闸井管理", "布防撤防") + val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher) + val HOME_ITEMS = arrayOf("闸井管理", "超时工单", "布防撤防") val SUB_PAGE_TITLES = arrayOf("待处理", "待确认", "处理中", "已完成") } \ 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 9c34038..7a5ca39 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 @@ -234,6 +234,22 @@ ): OrderStatusModel /** + * 查询工单 + * */ + @GET("/job/searchList") + suspend fun obtainSearchResult( + @Header("token") token: String, + @Query("keywords") keywords: String?, + @Query("alarmContent") alarmContent: String?, + @Query("alarmLevel") alarmLevel: String?, + @Query("jobStatus") jobStatus: String?, + @Query("beginTime") beginTime: String?, + @Query("endTime") endTime: String?, + @Query("limit") limit: Int, + @Query("offset") offset: Int + ): SearchResultModel + + /** * 获取用户信息 */ @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 a7106b5..945f6a3 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 @@ -175,6 +175,31 @@ } /** + * 查询工单 + */ + suspend fun obtainSearchResult( + keywords: String?, + alarmContent: String?, + alarmLevel: String?, + jobStatus: String?, + beginTime: String?, + endTime: String?, + page: Int + ): SearchResultModel { + return api.obtainSearchResult( + AuthenticationHelper.token!!, + keywords, + alarmContent, + alarmLevel, + jobStatus, + beginTime, + endTime, + Constant.PAGE_LIMIT, + page + ) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): String { diff --git a/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt index cfc4e0f..45af48a 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt @@ -98,7 +98,7 @@ imageRecyclerView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() - val imageArray = orderDetail.firstStatePhotos.toString().split(";") + val imageArray = orderDetail.firstStatePhotos.toString().split(",") imageArray.forEach { path -> if (path != "") { urls.add(path.combineImagePath()) diff --git a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt index 1a3e670..36075bd 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt @@ -197,7 +197,7 @@ return@setOnClickListener } val state = sceneEditView.text.toString().trim() - if (state == "") { + if (state.isBlank()) { "请输入现场情况".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt index b7a51ce..97e1f59 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt @@ -161,7 +161,7 @@ imageRecyclerView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() - val imageArray = orderDetail.firstStatePhotos.toString().split(";") + val imageArray = orderDetail.firstStatePhotos.toString().split(",") imageArray.forEach { path -> if (path != "") { urls.add(path.combineImagePath()) @@ -247,7 +247,7 @@ return@setOnClickListener } val state = sceneEditView.text.toString().trim() - if (state == "") { + if (state.isBlank()) { "请输入维护情况".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt index e5698a1..cd4fdff 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt @@ -1,7 +1,6 @@ package com.casic.app.smartwell.view import android.text.Editable -import android.text.TextUtils import android.text.TextWatcher import android.view.KeyEvent import android.view.inputmethod.EditorInfo @@ -67,13 +66,13 @@ false } loginButton.setOnClickListener { - val account = userNameView.text.toString() - val userPassword = userPasswordView.text.toString() - if (TextUtils.isEmpty(account)) { + val account = userNameView.text.toString().trim() + val userPassword = userPasswordView.text.toString().trim() + if (account.isBlank()) { "用户名不能为空".show(this) return@setOnClickListener } - if (TextUtils.isEmpty(userPassword)) { + if (userPassword.isBlank()) { "密码不能为空".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt new file mode 100644 index 0000000..453a2c9 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt @@ -0,0 +1,21 @@ +package com.casic.app.smartwell.view + +import com.casic.app.smartwell.R +import com.casic.app.smartwell.base.BaseActivity + +class OvertimeOrderActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_order_overtime + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt new file mode 100644 index 0000000..8228673 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt @@ -0,0 +1,129 @@ +package com.casic.app.smartwell.view + +import android.os.Handler +import android.os.Looper +import android.os.Message +import android.view.View +import androidx.lifecycle.ViewModelProvider +import com.casic.app.smartwell.R +import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage +import com.casic.app.smartwell.model.SearchResultModel +import com.casic.app.smartwell.utils.Constant +import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.vm.SearchOrderViewModel +import kotlinx.android.synthetic.main.activity_order_search_result.* +import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* +import java.lang.ref.WeakReference + +class SearchResultActivity : BaseActivity() { + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var searchOrderViewModel: SearchOrderViewModel + private lateinit var args: ArrayList + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initLayoutView(): Int = R.layout.activity_order_search_result + + override fun setupTopBarLayout() { + titleView.text = "查询结果" + leftBackView.visibility = View.VISIBLE + leftBackView.setOnClickListener { finish() } + } + + override fun initData() { + args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! + weakReferenceHandler = WeakReferenceHandler(this) + searchOrderViewModel = ViewModelProvider(this).get(SearchOrderViewModel::class.java) + } + + override fun initEvent() { + obtainSearchResult(args, pageIndex) + searchOrderViewModel.listModel.observe(this, { + if (it.code == 200) { + val dataRows = it.data?.rows + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows!! + resultRefreshLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows?.size == 0) { + "到底了,别拉了".show(this) + } + dataBeans.addAll(dataRows!!) + resultRefreshLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows!! + } + } + weakReferenceHandler.sendEmptyMessage(2022040101) + } + }) + searchOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } + }) + resultRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainSearchResult(args, pageIndex) + } + resultRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainSearchResult(args, pageIndex) + } + } + + private fun obtainSearchResult(args: ArrayList, pageIndex: Int) { + searchOrderViewModel.obtainSearchResult( + keywords = args[0], + alarmContent = args[1], + alarmLevel = args[2], + jobStatus = args[3], + beginTime = args[4], + endTime = args[5], + page = pageIndex + ) + } + + private class WeakReferenceHandler(activity: SearchResultActivity) : + Handler(Looper.getMainLooper()) { + private val reference: WeakReference = WeakReference(activity) + + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val activity = reference.get()!! + if (msg.what == 2022040101) { + if (activity.isRefresh || activity.isLoadMore) { +// activity.wellOperationAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (activity.dataBeans.size == 0) { + activity.emptyView!!.showEmptyPage { + activity.obtainSearchResult(activity.args, activity.pageIndex) + } + } else { + activity.emptyView!!.hide() + } + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt index af88541..dc68caa 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt @@ -1,15 +1,12 @@ package com.casic.app.smartwell.view -import android.content.Context import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.base.BaseActivity -import com.casic.app.smartwell.extensions.show -import com.casic.app.smartwell.extensions.timestampToDate +import com.casic.app.smartwell.extensions.* import com.casic.app.smartwell.model.AlarmContentTypeModel import com.casic.app.smartwell.model.OrderStatusModel import com.casic.app.smartwell.utils.Constant @@ -25,13 +22,16 @@ class SearchWorkOrderActivity : BaseActivity() { - private val kTag = "SearchWorkOrderActivity" private lateinit var contentTypeViewModel: AlarmContentTypeViewModel private lateinit var orderStatusViewModel: OrderStatusViewModel private lateinit var inflater: LayoutInflater - private var alarmTypeModels: MutableList = ArrayList() + private lateinit var contentTypeAdapter: TagAdapter + private lateinit var orderStatusAdapter: TagAdapter + private var contentModels: MutableList = ArrayList() private var orderStatusModels: MutableList = ArrayList() - private val context: Context = this@SearchWorkOrderActivity + private var alarmContentType = "" + private var alarmLevel = "" + private var orderState = "" override fun initLayoutView(): Int = R.layout.activity_order_search @@ -45,7 +45,6 @@ inflater = LayoutInflater.from(this) //告警内容 contentTypeViewModel = ViewModelProvider(this).get(AlarmContentTypeViewModel::class.java) - //工单状态 orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java) } @@ -65,11 +64,10 @@ } else { bean = dataBean } - alarmTypeModels.add(bean) + contentModels.add(bean) } - - alarmContentLayout.adapter = - object : TagAdapter(alarmTypeModels) { + contentTypeAdapter = + object : TagAdapter(contentModels) { override fun getView( parent: FlowLayout?, position: Int, bean: AlarmContentTypeModel.DataBean.ListBean? @@ -78,19 +76,46 @@ R.layout.item_tag_flowlayout, orderStatusLayout, false ) as TextView - tagView.text = alarmTypeModels[position].name + tagView.text = contentModels[position].name return tagView } } - + alarmContentLayout.adapter = contentTypeAdapter + contentTypeAdapter.setSelectedList(0) alarmContentLayout.setOnTagClickListener { _, position, _ -> - //TODO - alarmTypeModels[position].name!!.show(context) + this.alarmContentType = contentModels[position].value.toString() true } } }) + val levelMaps: MutableList> = ArrayList() + for (i in 0..3) { + val map = HashMap() + map["name"] = i.toString().toChinese() + map["value"] = i.toLevel() + levelMaps.add(map) + } + val levelAdapter = object : TagAdapter>(levelMaps) { + override fun getView( + parent: FlowLayout?, + position: Int, map: Map? + ): View { + val tagView = inflater.inflate( + R.layout.item_tag_flowlayout, + orderStatusLayout, false + ) as TextView + tagView.text = levelMaps[position]["name"] + return tagView + } + } + alarmLevelLayout.adapter = levelAdapter + levelAdapter.setSelectedList(0) + alarmLevelLayout.setOnTagClickListener { _, position, _ -> + this.alarmLevel = levelMaps[position]["value"].toString() + true + } + orderStatusViewModel.obtainOrderStatus() orderStatusViewModel.listModel.observe(this, { if (it.code == 200) { @@ -106,8 +131,7 @@ } orderStatusModels.add(bean) } - - orderStatusLayout.adapter = + orderStatusAdapter = object : TagAdapter(orderStatusModels) { override fun getView( parent: FlowLayout?, @@ -121,18 +145,18 @@ return tagView } } - + orderStatusLayout.adapter = orderStatusAdapter + orderStatusAdapter.setSelectedList(0) orderStatusLayout.setOnTagClickListener { _, position, _ -> - //TODO - orderStatusModels[position].name!!.show(context) + this.orderState = orderStatusModels[position].value.toString() true } } }) - selectStartTimeView.setOnClickListener { + startTimeView.setOnClickListener { TimePickerDialog.Builder() - .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setThemeColor(R.color.mainThemeColor.convertColor(this)) .setTitleStringId("请选择开始时间") .setWheelItemTextSize(16) .setCyclic(false) @@ -140,13 +164,13 @@ .setMaxMillseconds(System.currentTimeMillis()) .setType(Type.YEAR_MONTH_DAY) .setCallBack { _: TimePickerDialog?, millSeconds: Long -> - selectStartTimeView.text = millSeconds.timestampToDate() + startTimeView.text = millSeconds.timestampToDate() }.build().show(supportFragmentManager, "year_month_day") } - selectEndTimeView.setOnClickListener { + endTimeView.setOnClickListener { TimePickerDialog.Builder() - .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setThemeColor(R.color.mainThemeColor.convertColor(this)) .setTitleStringId("请选择结束时间") .setWheelItemTextSize(16) .setCyclic(false) @@ -154,18 +178,42 @@ .setMaxMillseconds(System.currentTimeMillis()) .setType(Type.YEAR_MONTH_DAY) .setCallBack { _: TimePickerDialog?, millSeconds: Long -> - selectEndTimeView.text = millSeconds.timestampToDate() + if (millSeconds.isEarlierThanStart(startTimeView.text.toString())) { + "结束时间不合法,不能早于开始时间".show(this) + return@setCallBack + } + endTimeView.text = millSeconds.timestampToDate() }.build().show(supportFragmentManager, "year_month_day") } searchButton.setChangeAlphaWhenPress(true) searchButton.setOnClickListener { - + val wellCode = wellCodeView.text.toString().trim() + if (wellCode.isBlank()) { + "请输入窨井编号".show(this) + return@setOnClickListener + } + //页面跳转,将查询参数传过去 + navigatePageTo( + SearchResultActivity::class.java, addAll( + wellCode, + alarmContentType, + alarmLevel, + orderState, + startTimeView.text.toString(), + endTimeView.text.toString() + ) + ) } clearButton.setChangeAlphaWhenPress(true) clearButton.setOnClickListener { - + wellCodeView.text.clear() + contentTypeAdapter.setSelectedList(0) + levelAdapter.setSelectedList(0) + orderStatusAdapter.setSelectedList(0) + startTimeView.text = "" + endTimeView.text = "" } } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt index e907ca4..e0cc32f 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt @@ -15,6 +15,7 @@ import com.casic.app.smartwell.base.BaseActivity import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.extensions.showRouteOnMap import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel @@ -23,6 +24,7 @@ import com.casic.app.smartwell.widgets.EasyPopupWindow import kotlinx.android.synthetic.main.activity_well_management.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* import kotlinx.android.synthetic.main.include_search_bar.* import java.lang.ref.WeakReference @@ -168,7 +170,13 @@ activity.wellListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (activity.dataBeans.size == 0) { - activity.emptyView!!.show("抱歉,无法查询到相关记录", null) + activity.emptyView!!.showEmptyPage { + activity.obtainWellList( + activity.keywords, + activity.wellType, + activity.pageIndex + ) + } } else { activity.emptyView!!.hide() activity.wellListAdapter = WellListAdapter(activity, activity.dataBeans) diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt index 1259b72..2137a40 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt @@ -6,12 +6,14 @@ import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.SensorListAdapter import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.utils.DialogHelper import com.casic.app.smartwell.utils.LoadState import com.casic.app.smartwell.vm.WellMonitorViewModel import kotlinx.android.synthetic.main.activity_well_monitor.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* class WellMonitorActivity : BaseActivity() { @@ -36,7 +38,9 @@ wellMonitorViewModel.monitorModel.observe(this, { if (it.code == 200) { if (it.data?.size == 0) { - emptyView!!.show("该井下无设备,或设备已离线,请检查", null) + emptyView!!.showEmptyPage("抱歉,该井下无设备,或设备已离线") { + wellMonitorViewModel.obtainMonitorResult(id = wellId) + } } else { emptyView!!.hide() val sensorListAdapter = SensorListAdapter(this, it.data!!) 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 c6cbe78..0121426 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 @@ -15,6 +15,7 @@ import com.casic.app.smartwell.base.BaseActivity import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.extensions.showRouteOnMap import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel @@ -27,6 +28,7 @@ import com.pengxh.app.multilib.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.activity_well_operation.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* import kotlinx.android.synthetic.main.include_search_bar.* import java.lang.ref.WeakReference @@ -204,7 +206,13 @@ activity.wellOperationAdapter.notifyDataSetChanged() } else { //首次加载数据 if (activity.dataBeans.size == 0) { - activity.emptyView!!.show("抱歉,无法查询到相关记录", null) + activity.emptyView!!.showEmptyPage { + activity.obtainWellList( + activity.keywords, + activity.wellType, + activity.pageIndex + ) + } } else { activity.emptyView!!.hide() activity.wellOperationAdapter = 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 c9ca964..d7d8269 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 @@ -10,6 +10,7 @@ import com.casic.app.smartwell.adapter.CompletedOrderAdapter import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.CompletedDetailActivity @@ -18,6 +19,7 @@ import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_completed.* +import kotlinx.android.synthetic.main.include_empty_view.* import java.lang.ref.WeakReference class CompletedOrderFragment : BaseFragment() { @@ -126,7 +128,9 @@ fragment.completedAdapter.notifyDataSetChanged() } else { if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("您还没有处理完成过任何工单", null) + fragment.emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { + fragment.obtainWorkOrderList(fragment.pageIndex) + } } else { fragment.emptyView!!.hide() fragment.completedAdapter = CompletedOrderAdapter( diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt index 1b4126e..04654dc 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt @@ -5,6 +5,7 @@ import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.navigatePageTo +import com.casic.app.smartwell.view.OvertimeOrderActivity import com.casic.app.smartwell.view.WellManagementActivity import com.casic.app.smartwell.view.WellOperationActivity import com.casic.app.smartwell.vm.WellCountViewModel @@ -24,14 +25,15 @@ titleView.text = "首页" //首页功能块 val homeRecycleAdapter = HomeRecycleAdapter(requireContext()) - homeRecyclerView.layoutManager = GridLayoutManager(requireContext(), 2) + homeRecyclerView.layoutManager = GridLayoutManager(requireContext(), 3) homeRecyclerView.adapter = homeRecycleAdapter homeRecycleAdapter.setOnGridItemClickListener(object : HomeRecycleAdapter.OnGridItemClickListener { override fun onClick(position: Int) { when (position) { 0 -> requireContext().navigatePageTo(WellManagementActivity::class.java) - 1 -> requireContext().navigatePageTo(WellOperationActivity::class.java) + 1 -> requireContext().navigatePageTo(OvertimeOrderActivity::class.java) + 2 -> requireContext().navigatePageTo(WellOperationActivity::class.java) } } }) diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt index d4791bf..cafc40f 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt @@ -10,6 +10,7 @@ import com.casic.app.smartwell.adapter.InHandleOrderAdapter import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.InHandleDetailActivity @@ -18,6 +19,7 @@ import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_inhandle.* +import kotlinx.android.synthetic.main.include_empty_view.* import java.lang.ref.WeakReference class InHandleOrderFragment : BaseFragment() { @@ -126,7 +128,9 @@ fragment.inHandleAdapter.notifyDataSetChanged() } else { //首次加载数据 if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("真不错,您已经处理完所有工单", null) + fragment.emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + fragment.obtainWorkOrderList(fragment.pageIndex) + } } else { fragment.emptyView!!.hide() fragment.inHandleAdapter = InHandleOrderAdapter( 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 780c1da..47a4c9a 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 @@ -10,6 +10,7 @@ import com.casic.app.smartwell.adapter.TodoWorkOrderListAdapter import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.utils.DialogHelper @@ -20,6 +21,7 @@ import com.pengxh.app.multilib.base.BaseFragment import com.pengxh.app.multilib.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.fragment_order_todo.* +import kotlinx.android.synthetic.main.include_empty_view.* import java.lang.ref.WeakReference class TodoOrderFragment : BaseFragment() { @@ -135,7 +137,9 @@ fragment.workOrderListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("没有需要您处理的工单", null) + fragment.emptyView!!.showEmptyPage("没有需要您处理的工单") { + fragment.obtainWorkOrderList(fragment.pageIndex) + } } else { fragment.emptyView!!.hide() fragment.workOrderListAdapter = TodoWorkOrderListAdapter( diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt index 5e79db6..a8560d5 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt @@ -10,6 +10,7 @@ import com.casic.app.smartwell.adapter.UndeterminedOrderAdapter import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.DetermineDetailActivity @@ -18,6 +19,7 @@ import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_undetermined.* +import kotlinx.android.synthetic.main.include_empty_view.* import java.lang.ref.WeakReference class UndeterminedOrderFragment : BaseFragment() { @@ -126,7 +128,9 @@ fragment.undeterminedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("没有需要您确认的工单", null) + fragment.emptyView!!.showEmptyPage("没有需要您确认的工单") { + fragment.obtainWorkOrderList(fragment.pageIndex) + } } else { fragment.emptyView!!.hide() fragment.undeterminedAdapter = UndeterminedOrderAdapter( diff --git a/app/src/main/java/com/casic/app/smartwell/vm/SearchOrderViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/SearchOrderViewModel.kt new file mode 100644 index 0000000..ee0149f --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/vm/SearchOrderViewModel.kt @@ -0,0 +1,31 @@ +package com.casic.app.smartwell.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.app.smartwell.base.BaseViewModel +import com.casic.app.smartwell.extensions.launch +import com.casic.app.smartwell.model.SearchResultModel +import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager + +class SearchOrderViewModel : BaseViewModel() { + + val listModel = MutableLiveData() + + fun obtainSearchResult( + keywords: String?, + alarmContent: String?, + alarmLevel: String?, + jobStatus: String?, + beginTime: String?, + endTime: String?, + page: Int + ) = launch({ + loadState.value = LoadState.Loading + listModel.value = RetrofitServiceManager.obtainSearchResult( + keywords, alarmContent, alarmLevel, jobStatus, beginTime, endTime, page + ) + loadState.value = LoadState.Success + }, { + loadState.value = LoadState.Fail + }) +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_order_overtime.xml b/app/src/main/res/layout/activity_order_overtime.xml new file mode 100644 index 0000000..d829e29 --- /dev/null +++ b/app/src/main/res/layout/activity_order_overtime.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_order_search.xml b/app/src/main/res/layout/activity_order_search.xml index 74b898c..33187af 100644 --- a/app/src/main/res/layout/activity_order_search.xml +++ b/app/src/main/res/layout/activity_order_search.xml @@ -10,152 +10,156 @@ - + android:layout_height="wrap_content"> + android:layout_height="wrap_content" + android:layout_margin="@dimen/dp_10" + android:background="@drawable/bg_layout" + android:orientation="vertical"> - - - + + + + + + + + + + + - + android:textSize="@dimen/titleFontSize" /> - - - - - - - - - - - - - - - - - + + - + android:textSize="@dimen/titleFontSize" /> - - - - - + app:max_select="1" /> + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_order_search_result.xml b/app/src/main/res/layout/activity_order_search_result.xml new file mode 100644 index 0000000..c6512d5 --- /dev/null +++ b/app/src/main/res/layout/activity_order_search_result.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_well_management.xml b/app/src/main/res/layout/activity_well_management.xml index 06c9434..819d37f 100644 --- a/app/src/main/res/layout/activity_well_management.xml +++ b/app/src/main/res/layout/activity_well_management.xml @@ -11,10 +11,7 @@ - + - + - + + + diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt index cba0198..e7ec8d8 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt @@ -25,7 +25,7 @@ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { val imageView = ImageView(context) val layoutWidth: Int = - SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 20f) + SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f) val margins: Int = QMUIDisplayHelper.dp2px(context, 3) val itemSize = (layoutWidth - 6 * margins) / 3 val params = LinearLayout.LayoutParams(itemSize, itemSize) diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt index 7780aaa..ad90885 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt @@ -17,4 +17,12 @@ } } return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt index de1c6c1..84ae8a8 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt @@ -33,10 +33,16 @@ startActivity(intent) } +fun Context.navigatePageTo(clazz: Class, values: ArrayList) { + val intent = Intent(this, clazz) + intent.putStringArrayListExtra(Constant.INTENT_PARAM, values) + startActivity(intent) +} + fun Context.navigatePageTo( clazz: Class, index: Int, - imageList: ArrayList? + imageList: ArrayList ) { val intent = Intent(this, clazz) intent.putExtra("index", index) 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 5f9ce7c..8ed51f4 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 @@ -23,4 +23,12 @@ "未知类型" } } +} + +fun Int.toLevel(): String { + return if (this == 0) { + "" + } else { + this.toString() + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt index ee3685d..3bc5d96 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt @@ -1,6 +1,20 @@ package com.casic.app.smartwell.extensions +import java.text.ParseException import java.text.SimpleDateFormat import java.util.* -fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) \ No newline at end of file +fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) + +fun Long.isEarlierThanStart(date: String): Boolean { + if (date.isBlank()) { + return false + } + val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA) + try { + return this < dateFormat.parse(date)!!.time + } catch (e: ParseException) { + + } + return true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt new file mode 100644 index 0000000..bd9cfa7 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt @@ -0,0 +1,12 @@ +package com.casic.app.smartwell.extensions + +import android.view.View +import com.qmuiteam.qmui.widget.QMUIEmptyView + +fun QMUIEmptyView.showEmptyPage(onButtonClickListener: View.OnClickListener) { + this.show(false, "抱歉,无法查询到相关记录", null, "重试", onButtonClickListener) +} + +fun QMUIEmptyView.showEmptyPage(title: String, onButtonClickListener: View.OnClickListener) { + this.show(false, title, null, "刷新", onButtonClickListener) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt index 7358b1c..2cdd63d 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt @@ -60,6 +60,7 @@ //窨井类型转换 fun String.toChinese(): String { return when (this) { + "0" -> "全部" "1" -> "一级" "2" -> "二级" "3" -> "三级" diff --git a/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt b/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt new file mode 100644 index 0000000..af7fd13 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt @@ -0,0 +1,52 @@ +package com.casic.app.smartwell.model + +class SearchResultModel { + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var rows: MutableList? = null + var total = 0 + + class RowsBean { + var alarmContent = 0 + var deptName: String? = null + var jobStatus: String? = null + var handleJobPerson: String? = null + var alarmContentName: String? = null + var shouldGetTime: String? = null + var wellCode: String? = null + var deptid: String? = null + var alarmTypeName: String? = null + var jobCode: String? = null + var jobBelongTo: String? = null + var jobFlag: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var jobStatusName: String? = null + var alarmValue: String? = null + var alarmId: String? = null + var alarmLevel: String? = null + var handleJobTime: String? = null + var tel: String? = null + var id: String? = null + var wellId: String? = null + var jobType: String? = null + var editable = 0 + var alarmTime: String? = null + var alarmMessage: String? = null + var staff: String? = null + var getJobTime: String? = null + var getJobPerson: String? = null + var shouldHandleTime: String? = null + var jobId: String? = null + var alarmType: String? = null + var alarmStatus: String? = null + var devcode: String? = null + var createTime: String? = null + var position: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index fd4e603..c342334 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -41,7 +41,7 @@ const val USER_DETAIL_MODEL = "userDetailModel" const val INTENT_PARAM = "intentParam" - val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher) - val HOME_ITEMS = arrayOf("闸井管理", "布防撤防") + val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher) + val HOME_ITEMS = arrayOf("闸井管理", "超时工单", "布防撤防") val SUB_PAGE_TITLES = arrayOf("待处理", "待确认", "处理中", "已完成") } \ 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 9c34038..7a5ca39 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 @@ -234,6 +234,22 @@ ): OrderStatusModel /** + * 查询工单 + * */ + @GET("/job/searchList") + suspend fun obtainSearchResult( + @Header("token") token: String, + @Query("keywords") keywords: String?, + @Query("alarmContent") alarmContent: String?, + @Query("alarmLevel") alarmLevel: String?, + @Query("jobStatus") jobStatus: String?, + @Query("beginTime") beginTime: String?, + @Query("endTime") endTime: String?, + @Query("limit") limit: Int, + @Query("offset") offset: Int + ): SearchResultModel + + /** * 获取用户信息 */ @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 a7106b5..945f6a3 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 @@ -175,6 +175,31 @@ } /** + * 查询工单 + */ + suspend fun obtainSearchResult( + keywords: String?, + alarmContent: String?, + alarmLevel: String?, + jobStatus: String?, + beginTime: String?, + endTime: String?, + page: Int + ): SearchResultModel { + return api.obtainSearchResult( + AuthenticationHelper.token!!, + keywords, + alarmContent, + alarmLevel, + jobStatus, + beginTime, + endTime, + Constant.PAGE_LIMIT, + page + ) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): String { diff --git a/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt index cfc4e0f..45af48a 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt @@ -98,7 +98,7 @@ imageRecyclerView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() - val imageArray = orderDetail.firstStatePhotos.toString().split(";") + val imageArray = orderDetail.firstStatePhotos.toString().split(",") imageArray.forEach { path -> if (path != "") { urls.add(path.combineImagePath()) diff --git a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt index 1a3e670..36075bd 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt @@ -197,7 +197,7 @@ return@setOnClickListener } val state = sceneEditView.text.toString().trim() - if (state == "") { + if (state.isBlank()) { "请输入现场情况".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt index b7a51ce..97e1f59 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt @@ -161,7 +161,7 @@ imageRecyclerView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() - val imageArray = orderDetail.firstStatePhotos.toString().split(";") + val imageArray = orderDetail.firstStatePhotos.toString().split(",") imageArray.forEach { path -> if (path != "") { urls.add(path.combineImagePath()) @@ -247,7 +247,7 @@ return@setOnClickListener } val state = sceneEditView.text.toString().trim() - if (state == "") { + if (state.isBlank()) { "请输入维护情况".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt index e5698a1..cd4fdff 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt @@ -1,7 +1,6 @@ package com.casic.app.smartwell.view import android.text.Editable -import android.text.TextUtils import android.text.TextWatcher import android.view.KeyEvent import android.view.inputmethod.EditorInfo @@ -67,13 +66,13 @@ false } loginButton.setOnClickListener { - val account = userNameView.text.toString() - val userPassword = userPasswordView.text.toString() - if (TextUtils.isEmpty(account)) { + val account = userNameView.text.toString().trim() + val userPassword = userPasswordView.text.toString().trim() + if (account.isBlank()) { "用户名不能为空".show(this) return@setOnClickListener } - if (TextUtils.isEmpty(userPassword)) { + if (userPassword.isBlank()) { "密码不能为空".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt new file mode 100644 index 0000000..453a2c9 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt @@ -0,0 +1,21 @@ +package com.casic.app.smartwell.view + +import com.casic.app.smartwell.R +import com.casic.app.smartwell.base.BaseActivity + +class OvertimeOrderActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_order_overtime + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt new file mode 100644 index 0000000..8228673 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt @@ -0,0 +1,129 @@ +package com.casic.app.smartwell.view + +import android.os.Handler +import android.os.Looper +import android.os.Message +import android.view.View +import androidx.lifecycle.ViewModelProvider +import com.casic.app.smartwell.R +import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage +import com.casic.app.smartwell.model.SearchResultModel +import com.casic.app.smartwell.utils.Constant +import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.vm.SearchOrderViewModel +import kotlinx.android.synthetic.main.activity_order_search_result.* +import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* +import java.lang.ref.WeakReference + +class SearchResultActivity : BaseActivity() { + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var searchOrderViewModel: SearchOrderViewModel + private lateinit var args: ArrayList + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initLayoutView(): Int = R.layout.activity_order_search_result + + override fun setupTopBarLayout() { + titleView.text = "查询结果" + leftBackView.visibility = View.VISIBLE + leftBackView.setOnClickListener { finish() } + } + + override fun initData() { + args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! + weakReferenceHandler = WeakReferenceHandler(this) + searchOrderViewModel = ViewModelProvider(this).get(SearchOrderViewModel::class.java) + } + + override fun initEvent() { + obtainSearchResult(args, pageIndex) + searchOrderViewModel.listModel.observe(this, { + if (it.code == 200) { + val dataRows = it.data?.rows + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows!! + resultRefreshLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows?.size == 0) { + "到底了,别拉了".show(this) + } + dataBeans.addAll(dataRows!!) + resultRefreshLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows!! + } + } + weakReferenceHandler.sendEmptyMessage(2022040101) + } + }) + searchOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } + }) + resultRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainSearchResult(args, pageIndex) + } + resultRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainSearchResult(args, pageIndex) + } + } + + private fun obtainSearchResult(args: ArrayList, pageIndex: Int) { + searchOrderViewModel.obtainSearchResult( + keywords = args[0], + alarmContent = args[1], + alarmLevel = args[2], + jobStatus = args[3], + beginTime = args[4], + endTime = args[5], + page = pageIndex + ) + } + + private class WeakReferenceHandler(activity: SearchResultActivity) : + Handler(Looper.getMainLooper()) { + private val reference: WeakReference = WeakReference(activity) + + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val activity = reference.get()!! + if (msg.what == 2022040101) { + if (activity.isRefresh || activity.isLoadMore) { +// activity.wellOperationAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (activity.dataBeans.size == 0) { + activity.emptyView!!.showEmptyPage { + activity.obtainSearchResult(activity.args, activity.pageIndex) + } + } else { + activity.emptyView!!.hide() + } + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt index af88541..dc68caa 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt @@ -1,15 +1,12 @@ package com.casic.app.smartwell.view -import android.content.Context import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.base.BaseActivity -import com.casic.app.smartwell.extensions.show -import com.casic.app.smartwell.extensions.timestampToDate +import com.casic.app.smartwell.extensions.* import com.casic.app.smartwell.model.AlarmContentTypeModel import com.casic.app.smartwell.model.OrderStatusModel import com.casic.app.smartwell.utils.Constant @@ -25,13 +22,16 @@ class SearchWorkOrderActivity : BaseActivity() { - private val kTag = "SearchWorkOrderActivity" private lateinit var contentTypeViewModel: AlarmContentTypeViewModel private lateinit var orderStatusViewModel: OrderStatusViewModel private lateinit var inflater: LayoutInflater - private var alarmTypeModels: MutableList = ArrayList() + private lateinit var contentTypeAdapter: TagAdapter + private lateinit var orderStatusAdapter: TagAdapter + private var contentModels: MutableList = ArrayList() private var orderStatusModels: MutableList = ArrayList() - private val context: Context = this@SearchWorkOrderActivity + private var alarmContentType = "" + private var alarmLevel = "" + private var orderState = "" override fun initLayoutView(): Int = R.layout.activity_order_search @@ -45,7 +45,6 @@ inflater = LayoutInflater.from(this) //告警内容 contentTypeViewModel = ViewModelProvider(this).get(AlarmContentTypeViewModel::class.java) - //工单状态 orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java) } @@ -65,11 +64,10 @@ } else { bean = dataBean } - alarmTypeModels.add(bean) + contentModels.add(bean) } - - alarmContentLayout.adapter = - object : TagAdapter(alarmTypeModels) { + contentTypeAdapter = + object : TagAdapter(contentModels) { override fun getView( parent: FlowLayout?, position: Int, bean: AlarmContentTypeModel.DataBean.ListBean? @@ -78,19 +76,46 @@ R.layout.item_tag_flowlayout, orderStatusLayout, false ) as TextView - tagView.text = alarmTypeModels[position].name + tagView.text = contentModels[position].name return tagView } } - + alarmContentLayout.adapter = contentTypeAdapter + contentTypeAdapter.setSelectedList(0) alarmContentLayout.setOnTagClickListener { _, position, _ -> - //TODO - alarmTypeModels[position].name!!.show(context) + this.alarmContentType = contentModels[position].value.toString() true } } }) + val levelMaps: MutableList> = ArrayList() + for (i in 0..3) { + val map = HashMap() + map["name"] = i.toString().toChinese() + map["value"] = i.toLevel() + levelMaps.add(map) + } + val levelAdapter = object : TagAdapter>(levelMaps) { + override fun getView( + parent: FlowLayout?, + position: Int, map: Map? + ): View { + val tagView = inflater.inflate( + R.layout.item_tag_flowlayout, + orderStatusLayout, false + ) as TextView + tagView.text = levelMaps[position]["name"] + return tagView + } + } + alarmLevelLayout.adapter = levelAdapter + levelAdapter.setSelectedList(0) + alarmLevelLayout.setOnTagClickListener { _, position, _ -> + this.alarmLevel = levelMaps[position]["value"].toString() + true + } + orderStatusViewModel.obtainOrderStatus() orderStatusViewModel.listModel.observe(this, { if (it.code == 200) { @@ -106,8 +131,7 @@ } orderStatusModels.add(bean) } - - orderStatusLayout.adapter = + orderStatusAdapter = object : TagAdapter(orderStatusModels) { override fun getView( parent: FlowLayout?, @@ -121,18 +145,18 @@ return tagView } } - + orderStatusLayout.adapter = orderStatusAdapter + orderStatusAdapter.setSelectedList(0) orderStatusLayout.setOnTagClickListener { _, position, _ -> - //TODO - orderStatusModels[position].name!!.show(context) + this.orderState = orderStatusModels[position].value.toString() true } } }) - selectStartTimeView.setOnClickListener { + startTimeView.setOnClickListener { TimePickerDialog.Builder() - .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setThemeColor(R.color.mainThemeColor.convertColor(this)) .setTitleStringId("请选择开始时间") .setWheelItemTextSize(16) .setCyclic(false) @@ -140,13 +164,13 @@ .setMaxMillseconds(System.currentTimeMillis()) .setType(Type.YEAR_MONTH_DAY) .setCallBack { _: TimePickerDialog?, millSeconds: Long -> - selectStartTimeView.text = millSeconds.timestampToDate() + startTimeView.text = millSeconds.timestampToDate() }.build().show(supportFragmentManager, "year_month_day") } - selectEndTimeView.setOnClickListener { + endTimeView.setOnClickListener { TimePickerDialog.Builder() - .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setThemeColor(R.color.mainThemeColor.convertColor(this)) .setTitleStringId("请选择结束时间") .setWheelItemTextSize(16) .setCyclic(false) @@ -154,18 +178,42 @@ .setMaxMillseconds(System.currentTimeMillis()) .setType(Type.YEAR_MONTH_DAY) .setCallBack { _: TimePickerDialog?, millSeconds: Long -> - selectEndTimeView.text = millSeconds.timestampToDate() + if (millSeconds.isEarlierThanStart(startTimeView.text.toString())) { + "结束时间不合法,不能早于开始时间".show(this) + return@setCallBack + } + endTimeView.text = millSeconds.timestampToDate() }.build().show(supportFragmentManager, "year_month_day") } searchButton.setChangeAlphaWhenPress(true) searchButton.setOnClickListener { - + val wellCode = wellCodeView.text.toString().trim() + if (wellCode.isBlank()) { + "请输入窨井编号".show(this) + return@setOnClickListener + } + //页面跳转,将查询参数传过去 + navigatePageTo( + SearchResultActivity::class.java, addAll( + wellCode, + alarmContentType, + alarmLevel, + orderState, + startTimeView.text.toString(), + endTimeView.text.toString() + ) + ) } clearButton.setChangeAlphaWhenPress(true) clearButton.setOnClickListener { - + wellCodeView.text.clear() + contentTypeAdapter.setSelectedList(0) + levelAdapter.setSelectedList(0) + orderStatusAdapter.setSelectedList(0) + startTimeView.text = "" + endTimeView.text = "" } } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt index e907ca4..e0cc32f 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt @@ -15,6 +15,7 @@ import com.casic.app.smartwell.base.BaseActivity import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.extensions.showRouteOnMap import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel @@ -23,6 +24,7 @@ import com.casic.app.smartwell.widgets.EasyPopupWindow import kotlinx.android.synthetic.main.activity_well_management.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* import kotlinx.android.synthetic.main.include_search_bar.* import java.lang.ref.WeakReference @@ -168,7 +170,13 @@ activity.wellListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (activity.dataBeans.size == 0) { - activity.emptyView!!.show("抱歉,无法查询到相关记录", null) + activity.emptyView!!.showEmptyPage { + activity.obtainWellList( + activity.keywords, + activity.wellType, + activity.pageIndex + ) + } } else { activity.emptyView!!.hide() activity.wellListAdapter = WellListAdapter(activity, activity.dataBeans) diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt index 1259b72..2137a40 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt @@ -6,12 +6,14 @@ import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.SensorListAdapter import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.utils.DialogHelper import com.casic.app.smartwell.utils.LoadState import com.casic.app.smartwell.vm.WellMonitorViewModel import kotlinx.android.synthetic.main.activity_well_monitor.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* class WellMonitorActivity : BaseActivity() { @@ -36,7 +38,9 @@ wellMonitorViewModel.monitorModel.observe(this, { if (it.code == 200) { if (it.data?.size == 0) { - emptyView!!.show("该井下无设备,或设备已离线,请检查", null) + emptyView!!.showEmptyPage("抱歉,该井下无设备,或设备已离线") { + wellMonitorViewModel.obtainMonitorResult(id = wellId) + } } else { emptyView!!.hide() val sensorListAdapter = SensorListAdapter(this, it.data!!) 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 c6cbe78..0121426 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 @@ -15,6 +15,7 @@ import com.casic.app.smartwell.base.BaseActivity import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.extensions.showRouteOnMap import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel @@ -27,6 +28,7 @@ import com.pengxh.app.multilib.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.activity_well_operation.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* import kotlinx.android.synthetic.main.include_search_bar.* import java.lang.ref.WeakReference @@ -204,7 +206,13 @@ activity.wellOperationAdapter.notifyDataSetChanged() } else { //首次加载数据 if (activity.dataBeans.size == 0) { - activity.emptyView!!.show("抱歉,无法查询到相关记录", null) + activity.emptyView!!.showEmptyPage { + activity.obtainWellList( + activity.keywords, + activity.wellType, + activity.pageIndex + ) + } } else { activity.emptyView!!.hide() activity.wellOperationAdapter = 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 c9ca964..d7d8269 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 @@ -10,6 +10,7 @@ import com.casic.app.smartwell.adapter.CompletedOrderAdapter import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.CompletedDetailActivity @@ -18,6 +19,7 @@ import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_completed.* +import kotlinx.android.synthetic.main.include_empty_view.* import java.lang.ref.WeakReference class CompletedOrderFragment : BaseFragment() { @@ -126,7 +128,9 @@ fragment.completedAdapter.notifyDataSetChanged() } else { if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("您还没有处理完成过任何工单", null) + fragment.emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { + fragment.obtainWorkOrderList(fragment.pageIndex) + } } else { fragment.emptyView!!.hide() fragment.completedAdapter = CompletedOrderAdapter( diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt index 1b4126e..04654dc 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt @@ -5,6 +5,7 @@ import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.navigatePageTo +import com.casic.app.smartwell.view.OvertimeOrderActivity import com.casic.app.smartwell.view.WellManagementActivity import com.casic.app.smartwell.view.WellOperationActivity import com.casic.app.smartwell.vm.WellCountViewModel @@ -24,14 +25,15 @@ titleView.text = "首页" //首页功能块 val homeRecycleAdapter = HomeRecycleAdapter(requireContext()) - homeRecyclerView.layoutManager = GridLayoutManager(requireContext(), 2) + homeRecyclerView.layoutManager = GridLayoutManager(requireContext(), 3) homeRecyclerView.adapter = homeRecycleAdapter homeRecycleAdapter.setOnGridItemClickListener(object : HomeRecycleAdapter.OnGridItemClickListener { override fun onClick(position: Int) { when (position) { 0 -> requireContext().navigatePageTo(WellManagementActivity::class.java) - 1 -> requireContext().navigatePageTo(WellOperationActivity::class.java) + 1 -> requireContext().navigatePageTo(OvertimeOrderActivity::class.java) + 2 -> requireContext().navigatePageTo(WellOperationActivity::class.java) } } }) diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt index d4791bf..cafc40f 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt @@ -10,6 +10,7 @@ import com.casic.app.smartwell.adapter.InHandleOrderAdapter import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.InHandleDetailActivity @@ -18,6 +19,7 @@ import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_inhandle.* +import kotlinx.android.synthetic.main.include_empty_view.* import java.lang.ref.WeakReference class InHandleOrderFragment : BaseFragment() { @@ -126,7 +128,9 @@ fragment.inHandleAdapter.notifyDataSetChanged() } else { //首次加载数据 if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("真不错,您已经处理完所有工单", null) + fragment.emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + fragment.obtainWorkOrderList(fragment.pageIndex) + } } else { fragment.emptyView!!.hide() fragment.inHandleAdapter = InHandleOrderAdapter( 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 780c1da..47a4c9a 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 @@ -10,6 +10,7 @@ import com.casic.app.smartwell.adapter.TodoWorkOrderListAdapter import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.utils.DialogHelper @@ -20,6 +21,7 @@ import com.pengxh.app.multilib.base.BaseFragment import com.pengxh.app.multilib.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.fragment_order_todo.* +import kotlinx.android.synthetic.main.include_empty_view.* import java.lang.ref.WeakReference class TodoOrderFragment : BaseFragment() { @@ -135,7 +137,9 @@ fragment.workOrderListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("没有需要您处理的工单", null) + fragment.emptyView!!.showEmptyPage("没有需要您处理的工单") { + fragment.obtainWorkOrderList(fragment.pageIndex) + } } else { fragment.emptyView!!.hide() fragment.workOrderListAdapter = TodoWorkOrderListAdapter( diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt index 5e79db6..a8560d5 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt @@ -10,6 +10,7 @@ import com.casic.app.smartwell.adapter.UndeterminedOrderAdapter import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.DetermineDetailActivity @@ -18,6 +19,7 @@ import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_undetermined.* +import kotlinx.android.synthetic.main.include_empty_view.* import java.lang.ref.WeakReference class UndeterminedOrderFragment : BaseFragment() { @@ -126,7 +128,9 @@ fragment.undeterminedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("没有需要您确认的工单", null) + fragment.emptyView!!.showEmptyPage("没有需要您确认的工单") { + fragment.obtainWorkOrderList(fragment.pageIndex) + } } else { fragment.emptyView!!.hide() fragment.undeterminedAdapter = UndeterminedOrderAdapter( diff --git a/app/src/main/java/com/casic/app/smartwell/vm/SearchOrderViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/SearchOrderViewModel.kt new file mode 100644 index 0000000..ee0149f --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/vm/SearchOrderViewModel.kt @@ -0,0 +1,31 @@ +package com.casic.app.smartwell.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.app.smartwell.base.BaseViewModel +import com.casic.app.smartwell.extensions.launch +import com.casic.app.smartwell.model.SearchResultModel +import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager + +class SearchOrderViewModel : BaseViewModel() { + + val listModel = MutableLiveData() + + fun obtainSearchResult( + keywords: String?, + alarmContent: String?, + alarmLevel: String?, + jobStatus: String?, + beginTime: String?, + endTime: String?, + page: Int + ) = launch({ + loadState.value = LoadState.Loading + listModel.value = RetrofitServiceManager.obtainSearchResult( + keywords, alarmContent, alarmLevel, jobStatus, beginTime, endTime, page + ) + loadState.value = LoadState.Success + }, { + loadState.value = LoadState.Fail + }) +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_order_overtime.xml b/app/src/main/res/layout/activity_order_overtime.xml new file mode 100644 index 0000000..d829e29 --- /dev/null +++ b/app/src/main/res/layout/activity_order_overtime.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_order_search.xml b/app/src/main/res/layout/activity_order_search.xml index 74b898c..33187af 100644 --- a/app/src/main/res/layout/activity_order_search.xml +++ b/app/src/main/res/layout/activity_order_search.xml @@ -10,152 +10,156 @@ - + android:layout_height="wrap_content"> + android:layout_height="wrap_content" + android:layout_margin="@dimen/dp_10" + android:background="@drawable/bg_layout" + android:orientation="vertical"> - - - + + + + + + + + + + + - + android:textSize="@dimen/titleFontSize" /> - - - - - - - - - - - - - - - - - + + - + android:textSize="@dimen/titleFontSize" /> - - - - - + app:max_select="1" /> + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_order_search_result.xml b/app/src/main/res/layout/activity_order_search_result.xml new file mode 100644 index 0000000..c6512d5 --- /dev/null +++ b/app/src/main/res/layout/activity_order_search_result.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_well_management.xml b/app/src/main/res/layout/activity_well_management.xml index 06c9434..819d37f 100644 --- a/app/src/main/res/layout/activity_well_management.xml +++ b/app/src/main/res/layout/activity_well_management.xml @@ -11,10 +11,7 @@ - + - + - + - + + + diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt index cba0198..e7ec8d8 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt @@ -25,7 +25,7 @@ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { val imageView = ImageView(context) val layoutWidth: Int = - SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 20f) + SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f) val margins: Int = QMUIDisplayHelper.dp2px(context, 3) val itemSize = (layoutWidth - 6 * margins) / 3 val params = LinearLayout.LayoutParams(itemSize, itemSize) diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt index 7780aaa..ad90885 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt @@ -17,4 +17,12 @@ } } return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt index de1c6c1..84ae8a8 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt @@ -33,10 +33,16 @@ startActivity(intent) } +fun Context.navigatePageTo(clazz: Class, values: ArrayList) { + val intent = Intent(this, clazz) + intent.putStringArrayListExtra(Constant.INTENT_PARAM, values) + startActivity(intent) +} + fun Context.navigatePageTo( clazz: Class, index: Int, - imageList: ArrayList? + imageList: ArrayList ) { val intent = Intent(this, clazz) intent.putExtra("index", index) 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 5f9ce7c..8ed51f4 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 @@ -23,4 +23,12 @@ "未知类型" } } +} + +fun Int.toLevel(): String { + return if (this == 0) { + "" + } else { + this.toString() + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt index ee3685d..3bc5d96 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt @@ -1,6 +1,20 @@ package com.casic.app.smartwell.extensions +import java.text.ParseException import java.text.SimpleDateFormat import java.util.* -fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) \ No newline at end of file +fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) + +fun Long.isEarlierThanStart(date: String): Boolean { + if (date.isBlank()) { + return false + } + val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA) + try { + return this < dateFormat.parse(date)!!.time + } catch (e: ParseException) { + + } + return true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt new file mode 100644 index 0000000..bd9cfa7 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt @@ -0,0 +1,12 @@ +package com.casic.app.smartwell.extensions + +import android.view.View +import com.qmuiteam.qmui.widget.QMUIEmptyView + +fun QMUIEmptyView.showEmptyPage(onButtonClickListener: View.OnClickListener) { + this.show(false, "抱歉,无法查询到相关记录", null, "重试", onButtonClickListener) +} + +fun QMUIEmptyView.showEmptyPage(title: String, onButtonClickListener: View.OnClickListener) { + this.show(false, title, null, "刷新", onButtonClickListener) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt index 7358b1c..2cdd63d 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt @@ -60,6 +60,7 @@ //窨井类型转换 fun String.toChinese(): String { return when (this) { + "0" -> "全部" "1" -> "一级" "2" -> "二级" "3" -> "三级" diff --git a/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt b/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt new file mode 100644 index 0000000..af7fd13 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt @@ -0,0 +1,52 @@ +package com.casic.app.smartwell.model + +class SearchResultModel { + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var rows: MutableList? = null + var total = 0 + + class RowsBean { + var alarmContent = 0 + var deptName: String? = null + var jobStatus: String? = null + var handleJobPerson: String? = null + var alarmContentName: String? = null + var shouldGetTime: String? = null + var wellCode: String? = null + var deptid: String? = null + var alarmTypeName: String? = null + var jobCode: String? = null + var jobBelongTo: String? = null + var jobFlag: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var jobStatusName: String? = null + var alarmValue: String? = null + var alarmId: String? = null + var alarmLevel: String? = null + var handleJobTime: String? = null + var tel: String? = null + var id: String? = null + var wellId: String? = null + var jobType: String? = null + var editable = 0 + var alarmTime: String? = null + var alarmMessage: String? = null + var staff: String? = null + var getJobTime: String? = null + var getJobPerson: String? = null + var shouldHandleTime: String? = null + var jobId: String? = null + var alarmType: String? = null + var alarmStatus: String? = null + var devcode: String? = null + var createTime: String? = null + var position: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index fd4e603..c342334 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -41,7 +41,7 @@ const val USER_DETAIL_MODEL = "userDetailModel" const val INTENT_PARAM = "intentParam" - val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher) - val HOME_ITEMS = arrayOf("闸井管理", "布防撤防") + val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher) + val HOME_ITEMS = arrayOf("闸井管理", "超时工单", "布防撤防") val SUB_PAGE_TITLES = arrayOf("待处理", "待确认", "处理中", "已完成") } \ 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 9c34038..7a5ca39 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 @@ -234,6 +234,22 @@ ): OrderStatusModel /** + * 查询工单 + * */ + @GET("/job/searchList") + suspend fun obtainSearchResult( + @Header("token") token: String, + @Query("keywords") keywords: String?, + @Query("alarmContent") alarmContent: String?, + @Query("alarmLevel") alarmLevel: String?, + @Query("jobStatus") jobStatus: String?, + @Query("beginTime") beginTime: String?, + @Query("endTime") endTime: String?, + @Query("limit") limit: Int, + @Query("offset") offset: Int + ): SearchResultModel + + /** * 获取用户信息 */ @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 a7106b5..945f6a3 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 @@ -175,6 +175,31 @@ } /** + * 查询工单 + */ + suspend fun obtainSearchResult( + keywords: String?, + alarmContent: String?, + alarmLevel: String?, + jobStatus: String?, + beginTime: String?, + endTime: String?, + page: Int + ): SearchResultModel { + return api.obtainSearchResult( + AuthenticationHelper.token!!, + keywords, + alarmContent, + alarmLevel, + jobStatus, + beginTime, + endTime, + Constant.PAGE_LIMIT, + page + ) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): String { diff --git a/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt index cfc4e0f..45af48a 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt @@ -98,7 +98,7 @@ imageRecyclerView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() - val imageArray = orderDetail.firstStatePhotos.toString().split(";") + val imageArray = orderDetail.firstStatePhotos.toString().split(",") imageArray.forEach { path -> if (path != "") { urls.add(path.combineImagePath()) diff --git a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt index 1a3e670..36075bd 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt @@ -197,7 +197,7 @@ return@setOnClickListener } val state = sceneEditView.text.toString().trim() - if (state == "") { + if (state.isBlank()) { "请输入现场情况".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt index b7a51ce..97e1f59 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt @@ -161,7 +161,7 @@ imageRecyclerView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() - val imageArray = orderDetail.firstStatePhotos.toString().split(";") + val imageArray = orderDetail.firstStatePhotos.toString().split(",") imageArray.forEach { path -> if (path != "") { urls.add(path.combineImagePath()) @@ -247,7 +247,7 @@ return@setOnClickListener } val state = sceneEditView.text.toString().trim() - if (state == "") { + if (state.isBlank()) { "请输入维护情况".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt index e5698a1..cd4fdff 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt @@ -1,7 +1,6 @@ package com.casic.app.smartwell.view import android.text.Editable -import android.text.TextUtils import android.text.TextWatcher import android.view.KeyEvent import android.view.inputmethod.EditorInfo @@ -67,13 +66,13 @@ false } loginButton.setOnClickListener { - val account = userNameView.text.toString() - val userPassword = userPasswordView.text.toString() - if (TextUtils.isEmpty(account)) { + val account = userNameView.text.toString().trim() + val userPassword = userPasswordView.text.toString().trim() + if (account.isBlank()) { "用户名不能为空".show(this) return@setOnClickListener } - if (TextUtils.isEmpty(userPassword)) { + if (userPassword.isBlank()) { "密码不能为空".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt new file mode 100644 index 0000000..453a2c9 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt @@ -0,0 +1,21 @@ +package com.casic.app.smartwell.view + +import com.casic.app.smartwell.R +import com.casic.app.smartwell.base.BaseActivity + +class OvertimeOrderActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_order_overtime + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt new file mode 100644 index 0000000..8228673 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt @@ -0,0 +1,129 @@ +package com.casic.app.smartwell.view + +import android.os.Handler +import android.os.Looper +import android.os.Message +import android.view.View +import androidx.lifecycle.ViewModelProvider +import com.casic.app.smartwell.R +import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage +import com.casic.app.smartwell.model.SearchResultModel +import com.casic.app.smartwell.utils.Constant +import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.vm.SearchOrderViewModel +import kotlinx.android.synthetic.main.activity_order_search_result.* +import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* +import java.lang.ref.WeakReference + +class SearchResultActivity : BaseActivity() { + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var searchOrderViewModel: SearchOrderViewModel + private lateinit var args: ArrayList + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initLayoutView(): Int = R.layout.activity_order_search_result + + override fun setupTopBarLayout() { + titleView.text = "查询结果" + leftBackView.visibility = View.VISIBLE + leftBackView.setOnClickListener { finish() } + } + + override fun initData() { + args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! + weakReferenceHandler = WeakReferenceHandler(this) + searchOrderViewModel = ViewModelProvider(this).get(SearchOrderViewModel::class.java) + } + + override fun initEvent() { + obtainSearchResult(args, pageIndex) + searchOrderViewModel.listModel.observe(this, { + if (it.code == 200) { + val dataRows = it.data?.rows + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows!! + resultRefreshLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows?.size == 0) { + "到底了,别拉了".show(this) + } + dataBeans.addAll(dataRows!!) + resultRefreshLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows!! + } + } + weakReferenceHandler.sendEmptyMessage(2022040101) + } + }) + searchOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } + }) + resultRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainSearchResult(args, pageIndex) + } + resultRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainSearchResult(args, pageIndex) + } + } + + private fun obtainSearchResult(args: ArrayList, pageIndex: Int) { + searchOrderViewModel.obtainSearchResult( + keywords = args[0], + alarmContent = args[1], + alarmLevel = args[2], + jobStatus = args[3], + beginTime = args[4], + endTime = args[5], + page = pageIndex + ) + } + + private class WeakReferenceHandler(activity: SearchResultActivity) : + Handler(Looper.getMainLooper()) { + private val reference: WeakReference = WeakReference(activity) + + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val activity = reference.get()!! + if (msg.what == 2022040101) { + if (activity.isRefresh || activity.isLoadMore) { +// activity.wellOperationAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (activity.dataBeans.size == 0) { + activity.emptyView!!.showEmptyPage { + activity.obtainSearchResult(activity.args, activity.pageIndex) + } + } else { + activity.emptyView!!.hide() + } + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt index af88541..dc68caa 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt @@ -1,15 +1,12 @@ package com.casic.app.smartwell.view -import android.content.Context import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.base.BaseActivity -import com.casic.app.smartwell.extensions.show -import com.casic.app.smartwell.extensions.timestampToDate +import com.casic.app.smartwell.extensions.* import com.casic.app.smartwell.model.AlarmContentTypeModel import com.casic.app.smartwell.model.OrderStatusModel import com.casic.app.smartwell.utils.Constant @@ -25,13 +22,16 @@ class SearchWorkOrderActivity : BaseActivity() { - private val kTag = "SearchWorkOrderActivity" private lateinit var contentTypeViewModel: AlarmContentTypeViewModel private lateinit var orderStatusViewModel: OrderStatusViewModel private lateinit var inflater: LayoutInflater - private var alarmTypeModels: MutableList = ArrayList() + private lateinit var contentTypeAdapter: TagAdapter + private lateinit var orderStatusAdapter: TagAdapter + private var contentModels: MutableList = ArrayList() private var orderStatusModels: MutableList = ArrayList() - private val context: Context = this@SearchWorkOrderActivity + private var alarmContentType = "" + private var alarmLevel = "" + private var orderState = "" override fun initLayoutView(): Int = R.layout.activity_order_search @@ -45,7 +45,6 @@ inflater = LayoutInflater.from(this) //告警内容 contentTypeViewModel = ViewModelProvider(this).get(AlarmContentTypeViewModel::class.java) - //工单状态 orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java) } @@ -65,11 +64,10 @@ } else { bean = dataBean } - alarmTypeModels.add(bean) + contentModels.add(bean) } - - alarmContentLayout.adapter = - object : TagAdapter(alarmTypeModels) { + contentTypeAdapter = + object : TagAdapter(contentModels) { override fun getView( parent: FlowLayout?, position: Int, bean: AlarmContentTypeModel.DataBean.ListBean? @@ -78,19 +76,46 @@ R.layout.item_tag_flowlayout, orderStatusLayout, false ) as TextView - tagView.text = alarmTypeModels[position].name + tagView.text = contentModels[position].name return tagView } } - + alarmContentLayout.adapter = contentTypeAdapter + contentTypeAdapter.setSelectedList(0) alarmContentLayout.setOnTagClickListener { _, position, _ -> - //TODO - alarmTypeModels[position].name!!.show(context) + this.alarmContentType = contentModels[position].value.toString() true } } }) + val levelMaps: MutableList> = ArrayList() + for (i in 0..3) { + val map = HashMap() + map["name"] = i.toString().toChinese() + map["value"] = i.toLevel() + levelMaps.add(map) + } + val levelAdapter = object : TagAdapter>(levelMaps) { + override fun getView( + parent: FlowLayout?, + position: Int, map: Map? + ): View { + val tagView = inflater.inflate( + R.layout.item_tag_flowlayout, + orderStatusLayout, false + ) as TextView + tagView.text = levelMaps[position]["name"] + return tagView + } + } + alarmLevelLayout.adapter = levelAdapter + levelAdapter.setSelectedList(0) + alarmLevelLayout.setOnTagClickListener { _, position, _ -> + this.alarmLevel = levelMaps[position]["value"].toString() + true + } + orderStatusViewModel.obtainOrderStatus() orderStatusViewModel.listModel.observe(this, { if (it.code == 200) { @@ -106,8 +131,7 @@ } orderStatusModels.add(bean) } - - orderStatusLayout.adapter = + orderStatusAdapter = object : TagAdapter(orderStatusModels) { override fun getView( parent: FlowLayout?, @@ -121,18 +145,18 @@ return tagView } } - + orderStatusLayout.adapter = orderStatusAdapter + orderStatusAdapter.setSelectedList(0) orderStatusLayout.setOnTagClickListener { _, position, _ -> - //TODO - orderStatusModels[position].name!!.show(context) + this.orderState = orderStatusModels[position].value.toString() true } } }) - selectStartTimeView.setOnClickListener { + startTimeView.setOnClickListener { TimePickerDialog.Builder() - .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setThemeColor(R.color.mainThemeColor.convertColor(this)) .setTitleStringId("请选择开始时间") .setWheelItemTextSize(16) .setCyclic(false) @@ -140,13 +164,13 @@ .setMaxMillseconds(System.currentTimeMillis()) .setType(Type.YEAR_MONTH_DAY) .setCallBack { _: TimePickerDialog?, millSeconds: Long -> - selectStartTimeView.text = millSeconds.timestampToDate() + startTimeView.text = millSeconds.timestampToDate() }.build().show(supportFragmentManager, "year_month_day") } - selectEndTimeView.setOnClickListener { + endTimeView.setOnClickListener { TimePickerDialog.Builder() - .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setThemeColor(R.color.mainThemeColor.convertColor(this)) .setTitleStringId("请选择结束时间") .setWheelItemTextSize(16) .setCyclic(false) @@ -154,18 +178,42 @@ .setMaxMillseconds(System.currentTimeMillis()) .setType(Type.YEAR_MONTH_DAY) .setCallBack { _: TimePickerDialog?, millSeconds: Long -> - selectEndTimeView.text = millSeconds.timestampToDate() + if (millSeconds.isEarlierThanStart(startTimeView.text.toString())) { + "结束时间不合法,不能早于开始时间".show(this) + return@setCallBack + } + endTimeView.text = millSeconds.timestampToDate() }.build().show(supportFragmentManager, "year_month_day") } searchButton.setChangeAlphaWhenPress(true) searchButton.setOnClickListener { - + val wellCode = wellCodeView.text.toString().trim() + if (wellCode.isBlank()) { + "请输入窨井编号".show(this) + return@setOnClickListener + } + //页面跳转,将查询参数传过去 + navigatePageTo( + SearchResultActivity::class.java, addAll( + wellCode, + alarmContentType, + alarmLevel, + orderState, + startTimeView.text.toString(), + endTimeView.text.toString() + ) + ) } clearButton.setChangeAlphaWhenPress(true) clearButton.setOnClickListener { - + wellCodeView.text.clear() + contentTypeAdapter.setSelectedList(0) + levelAdapter.setSelectedList(0) + orderStatusAdapter.setSelectedList(0) + startTimeView.text = "" + endTimeView.text = "" } } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt index e907ca4..e0cc32f 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt @@ -15,6 +15,7 @@ import com.casic.app.smartwell.base.BaseActivity import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.extensions.showRouteOnMap import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel @@ -23,6 +24,7 @@ import com.casic.app.smartwell.widgets.EasyPopupWindow import kotlinx.android.synthetic.main.activity_well_management.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* import kotlinx.android.synthetic.main.include_search_bar.* import java.lang.ref.WeakReference @@ -168,7 +170,13 @@ activity.wellListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (activity.dataBeans.size == 0) { - activity.emptyView!!.show("抱歉,无法查询到相关记录", null) + activity.emptyView!!.showEmptyPage { + activity.obtainWellList( + activity.keywords, + activity.wellType, + activity.pageIndex + ) + } } else { activity.emptyView!!.hide() activity.wellListAdapter = WellListAdapter(activity, activity.dataBeans) diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt index 1259b72..2137a40 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt @@ -6,12 +6,14 @@ import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.SensorListAdapter import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.utils.DialogHelper import com.casic.app.smartwell.utils.LoadState import com.casic.app.smartwell.vm.WellMonitorViewModel import kotlinx.android.synthetic.main.activity_well_monitor.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* class WellMonitorActivity : BaseActivity() { @@ -36,7 +38,9 @@ wellMonitorViewModel.monitorModel.observe(this, { if (it.code == 200) { if (it.data?.size == 0) { - emptyView!!.show("该井下无设备,或设备已离线,请检查", null) + emptyView!!.showEmptyPage("抱歉,该井下无设备,或设备已离线") { + wellMonitorViewModel.obtainMonitorResult(id = wellId) + } } else { emptyView!!.hide() val sensorListAdapter = SensorListAdapter(this, it.data!!) 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 c6cbe78..0121426 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 @@ -15,6 +15,7 @@ import com.casic.app.smartwell.base.BaseActivity import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.extensions.showRouteOnMap import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel @@ -27,6 +28,7 @@ import com.pengxh.app.multilib.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.activity_well_operation.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* import kotlinx.android.synthetic.main.include_search_bar.* import java.lang.ref.WeakReference @@ -204,7 +206,13 @@ activity.wellOperationAdapter.notifyDataSetChanged() } else { //首次加载数据 if (activity.dataBeans.size == 0) { - activity.emptyView!!.show("抱歉,无法查询到相关记录", null) + activity.emptyView!!.showEmptyPage { + activity.obtainWellList( + activity.keywords, + activity.wellType, + activity.pageIndex + ) + } } else { activity.emptyView!!.hide() activity.wellOperationAdapter = 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 c9ca964..d7d8269 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 @@ -10,6 +10,7 @@ import com.casic.app.smartwell.adapter.CompletedOrderAdapter import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.CompletedDetailActivity @@ -18,6 +19,7 @@ import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_completed.* +import kotlinx.android.synthetic.main.include_empty_view.* import java.lang.ref.WeakReference class CompletedOrderFragment : BaseFragment() { @@ -126,7 +128,9 @@ fragment.completedAdapter.notifyDataSetChanged() } else { if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("您还没有处理完成过任何工单", null) + fragment.emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { + fragment.obtainWorkOrderList(fragment.pageIndex) + } } else { fragment.emptyView!!.hide() fragment.completedAdapter = CompletedOrderAdapter( diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt index 1b4126e..04654dc 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt @@ -5,6 +5,7 @@ import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.navigatePageTo +import com.casic.app.smartwell.view.OvertimeOrderActivity import com.casic.app.smartwell.view.WellManagementActivity import com.casic.app.smartwell.view.WellOperationActivity import com.casic.app.smartwell.vm.WellCountViewModel @@ -24,14 +25,15 @@ titleView.text = "首页" //首页功能块 val homeRecycleAdapter = HomeRecycleAdapter(requireContext()) - homeRecyclerView.layoutManager = GridLayoutManager(requireContext(), 2) + homeRecyclerView.layoutManager = GridLayoutManager(requireContext(), 3) homeRecyclerView.adapter = homeRecycleAdapter homeRecycleAdapter.setOnGridItemClickListener(object : HomeRecycleAdapter.OnGridItemClickListener { override fun onClick(position: Int) { when (position) { 0 -> requireContext().navigatePageTo(WellManagementActivity::class.java) - 1 -> requireContext().navigatePageTo(WellOperationActivity::class.java) + 1 -> requireContext().navigatePageTo(OvertimeOrderActivity::class.java) + 2 -> requireContext().navigatePageTo(WellOperationActivity::class.java) } } }) diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt index d4791bf..cafc40f 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt @@ -10,6 +10,7 @@ import com.casic.app.smartwell.adapter.InHandleOrderAdapter import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.InHandleDetailActivity @@ -18,6 +19,7 @@ import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_inhandle.* +import kotlinx.android.synthetic.main.include_empty_view.* import java.lang.ref.WeakReference class InHandleOrderFragment : BaseFragment() { @@ -126,7 +128,9 @@ fragment.inHandleAdapter.notifyDataSetChanged() } else { //首次加载数据 if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("真不错,您已经处理完所有工单", null) + fragment.emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + fragment.obtainWorkOrderList(fragment.pageIndex) + } } else { fragment.emptyView!!.hide() fragment.inHandleAdapter = InHandleOrderAdapter( 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 780c1da..47a4c9a 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 @@ -10,6 +10,7 @@ import com.casic.app.smartwell.adapter.TodoWorkOrderListAdapter import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.utils.DialogHelper @@ -20,6 +21,7 @@ import com.pengxh.app.multilib.base.BaseFragment import com.pengxh.app.multilib.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.fragment_order_todo.* +import kotlinx.android.synthetic.main.include_empty_view.* import java.lang.ref.WeakReference class TodoOrderFragment : BaseFragment() { @@ -135,7 +137,9 @@ fragment.workOrderListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("没有需要您处理的工单", null) + fragment.emptyView!!.showEmptyPage("没有需要您处理的工单") { + fragment.obtainWorkOrderList(fragment.pageIndex) + } } else { fragment.emptyView!!.hide() fragment.workOrderListAdapter = TodoWorkOrderListAdapter( diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt index 5e79db6..a8560d5 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt @@ -10,6 +10,7 @@ import com.casic.app.smartwell.adapter.UndeterminedOrderAdapter import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.DetermineDetailActivity @@ -18,6 +19,7 @@ import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_undetermined.* +import kotlinx.android.synthetic.main.include_empty_view.* import java.lang.ref.WeakReference class UndeterminedOrderFragment : BaseFragment() { @@ -126,7 +128,9 @@ fragment.undeterminedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("没有需要您确认的工单", null) + fragment.emptyView!!.showEmptyPage("没有需要您确认的工单") { + fragment.obtainWorkOrderList(fragment.pageIndex) + } } else { fragment.emptyView!!.hide() fragment.undeterminedAdapter = UndeterminedOrderAdapter( diff --git a/app/src/main/java/com/casic/app/smartwell/vm/SearchOrderViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/SearchOrderViewModel.kt new file mode 100644 index 0000000..ee0149f --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/vm/SearchOrderViewModel.kt @@ -0,0 +1,31 @@ +package com.casic.app.smartwell.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.app.smartwell.base.BaseViewModel +import com.casic.app.smartwell.extensions.launch +import com.casic.app.smartwell.model.SearchResultModel +import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager + +class SearchOrderViewModel : BaseViewModel() { + + val listModel = MutableLiveData() + + fun obtainSearchResult( + keywords: String?, + alarmContent: String?, + alarmLevel: String?, + jobStatus: String?, + beginTime: String?, + endTime: String?, + page: Int + ) = launch({ + loadState.value = LoadState.Loading + listModel.value = RetrofitServiceManager.obtainSearchResult( + keywords, alarmContent, alarmLevel, jobStatus, beginTime, endTime, page + ) + loadState.value = LoadState.Success + }, { + loadState.value = LoadState.Fail + }) +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_order_overtime.xml b/app/src/main/res/layout/activity_order_overtime.xml new file mode 100644 index 0000000..d829e29 --- /dev/null +++ b/app/src/main/res/layout/activity_order_overtime.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_order_search.xml b/app/src/main/res/layout/activity_order_search.xml index 74b898c..33187af 100644 --- a/app/src/main/res/layout/activity_order_search.xml +++ b/app/src/main/res/layout/activity_order_search.xml @@ -10,152 +10,156 @@ - + android:layout_height="wrap_content"> + android:layout_height="wrap_content" + android:layout_margin="@dimen/dp_10" + android:background="@drawable/bg_layout" + android:orientation="vertical"> - - - + + + + + + + + + + + - + android:textSize="@dimen/titleFontSize" /> - - - - - - - - - - - - - - - - - + + - + android:textSize="@dimen/titleFontSize" /> - - - - - + app:max_select="1" /> + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_order_search_result.xml b/app/src/main/res/layout/activity_order_search_result.xml new file mode 100644 index 0000000..c6512d5 --- /dev/null +++ b/app/src/main/res/layout/activity_order_search_result.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_well_management.xml b/app/src/main/res/layout/activity_well_management.xml index 06c9434..819d37f 100644 --- a/app/src/main/res/layout/activity_well_management.xml +++ b/app/src/main/res/layout/activity_well_management.xml @@ -11,10 +11,7 @@ - + - + - + - + - + + + diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt index cba0198..e7ec8d8 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt @@ -25,7 +25,7 @@ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { val imageView = ImageView(context) val layoutWidth: Int = - SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 20f) + SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f) val margins: Int = QMUIDisplayHelper.dp2px(context, 3) val itemSize = (layoutWidth - 6 * margins) / 3 val params = LinearLayout.LayoutParams(itemSize, itemSize) diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt index 7780aaa..ad90885 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt @@ -17,4 +17,12 @@ } } return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt index de1c6c1..84ae8a8 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt @@ -33,10 +33,16 @@ startActivity(intent) } +fun Context.navigatePageTo(clazz: Class, values: ArrayList) { + val intent = Intent(this, clazz) + intent.putStringArrayListExtra(Constant.INTENT_PARAM, values) + startActivity(intent) +} + fun Context.navigatePageTo( clazz: Class, index: Int, - imageList: ArrayList? + imageList: ArrayList ) { val intent = Intent(this, clazz) intent.putExtra("index", index) 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 5f9ce7c..8ed51f4 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 @@ -23,4 +23,12 @@ "未知类型" } } +} + +fun Int.toLevel(): String { + return if (this == 0) { + "" + } else { + this.toString() + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt index ee3685d..3bc5d96 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt @@ -1,6 +1,20 @@ package com.casic.app.smartwell.extensions +import java.text.ParseException import java.text.SimpleDateFormat import java.util.* -fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) \ No newline at end of file +fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) + +fun Long.isEarlierThanStart(date: String): Boolean { + if (date.isBlank()) { + return false + } + val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA) + try { + return this < dateFormat.parse(date)!!.time + } catch (e: ParseException) { + + } + return true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt new file mode 100644 index 0000000..bd9cfa7 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt @@ -0,0 +1,12 @@ +package com.casic.app.smartwell.extensions + +import android.view.View +import com.qmuiteam.qmui.widget.QMUIEmptyView + +fun QMUIEmptyView.showEmptyPage(onButtonClickListener: View.OnClickListener) { + this.show(false, "抱歉,无法查询到相关记录", null, "重试", onButtonClickListener) +} + +fun QMUIEmptyView.showEmptyPage(title: String, onButtonClickListener: View.OnClickListener) { + this.show(false, title, null, "刷新", onButtonClickListener) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt index 7358b1c..2cdd63d 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt @@ -60,6 +60,7 @@ //窨井类型转换 fun String.toChinese(): String { return when (this) { + "0" -> "全部" "1" -> "一级" "2" -> "二级" "3" -> "三级" diff --git a/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt b/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt new file mode 100644 index 0000000..af7fd13 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt @@ -0,0 +1,52 @@ +package com.casic.app.smartwell.model + +class SearchResultModel { + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var rows: MutableList? = null + var total = 0 + + class RowsBean { + var alarmContent = 0 + var deptName: String? = null + var jobStatus: String? = null + var handleJobPerson: String? = null + var alarmContentName: String? = null + var shouldGetTime: String? = null + var wellCode: String? = null + var deptid: String? = null + var alarmTypeName: String? = null + var jobCode: String? = null + var jobBelongTo: String? = null + var jobFlag: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var jobStatusName: String? = null + var alarmValue: String? = null + var alarmId: String? = null + var alarmLevel: String? = null + var handleJobTime: String? = null + var tel: String? = null + var id: String? = null + var wellId: String? = null + var jobType: String? = null + var editable = 0 + var alarmTime: String? = null + var alarmMessage: String? = null + var staff: String? = null + var getJobTime: String? = null + var getJobPerson: String? = null + var shouldHandleTime: String? = null + var jobId: String? = null + var alarmType: String? = null + var alarmStatus: String? = null + var devcode: String? = null + var createTime: String? = null + var position: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index fd4e603..c342334 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -41,7 +41,7 @@ const val USER_DETAIL_MODEL = "userDetailModel" const val INTENT_PARAM = "intentParam" - val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher) - val HOME_ITEMS = arrayOf("闸井管理", "布防撤防") + val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher) + val HOME_ITEMS = arrayOf("闸井管理", "超时工单", "布防撤防") val SUB_PAGE_TITLES = arrayOf("待处理", "待确认", "处理中", "已完成") } \ 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 9c34038..7a5ca39 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 @@ -234,6 +234,22 @@ ): OrderStatusModel /** + * 查询工单 + * */ + @GET("/job/searchList") + suspend fun obtainSearchResult( + @Header("token") token: String, + @Query("keywords") keywords: String?, + @Query("alarmContent") alarmContent: String?, + @Query("alarmLevel") alarmLevel: String?, + @Query("jobStatus") jobStatus: String?, + @Query("beginTime") beginTime: String?, + @Query("endTime") endTime: String?, + @Query("limit") limit: Int, + @Query("offset") offset: Int + ): SearchResultModel + + /** * 获取用户信息 */ @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 a7106b5..945f6a3 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 @@ -175,6 +175,31 @@ } /** + * 查询工单 + */ + suspend fun obtainSearchResult( + keywords: String?, + alarmContent: String?, + alarmLevel: String?, + jobStatus: String?, + beginTime: String?, + endTime: String?, + page: Int + ): SearchResultModel { + return api.obtainSearchResult( + AuthenticationHelper.token!!, + keywords, + alarmContent, + alarmLevel, + jobStatus, + beginTime, + endTime, + Constant.PAGE_LIMIT, + page + ) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): String { diff --git a/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt index cfc4e0f..45af48a 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt @@ -98,7 +98,7 @@ imageRecyclerView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() - val imageArray = orderDetail.firstStatePhotos.toString().split(";") + val imageArray = orderDetail.firstStatePhotos.toString().split(",") imageArray.forEach { path -> if (path != "") { urls.add(path.combineImagePath()) diff --git a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt index 1a3e670..36075bd 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt @@ -197,7 +197,7 @@ return@setOnClickListener } val state = sceneEditView.text.toString().trim() - if (state == "") { + if (state.isBlank()) { "请输入现场情况".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt index b7a51ce..97e1f59 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt @@ -161,7 +161,7 @@ imageRecyclerView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() - val imageArray = orderDetail.firstStatePhotos.toString().split(";") + val imageArray = orderDetail.firstStatePhotos.toString().split(",") imageArray.forEach { path -> if (path != "") { urls.add(path.combineImagePath()) @@ -247,7 +247,7 @@ return@setOnClickListener } val state = sceneEditView.text.toString().trim() - if (state == "") { + if (state.isBlank()) { "请输入维护情况".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt index e5698a1..cd4fdff 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt @@ -1,7 +1,6 @@ package com.casic.app.smartwell.view import android.text.Editable -import android.text.TextUtils import android.text.TextWatcher import android.view.KeyEvent import android.view.inputmethod.EditorInfo @@ -67,13 +66,13 @@ false } loginButton.setOnClickListener { - val account = userNameView.text.toString() - val userPassword = userPasswordView.text.toString() - if (TextUtils.isEmpty(account)) { + val account = userNameView.text.toString().trim() + val userPassword = userPasswordView.text.toString().trim() + if (account.isBlank()) { "用户名不能为空".show(this) return@setOnClickListener } - if (TextUtils.isEmpty(userPassword)) { + if (userPassword.isBlank()) { "密码不能为空".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt new file mode 100644 index 0000000..453a2c9 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt @@ -0,0 +1,21 @@ +package com.casic.app.smartwell.view + +import com.casic.app.smartwell.R +import com.casic.app.smartwell.base.BaseActivity + +class OvertimeOrderActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_order_overtime + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt new file mode 100644 index 0000000..8228673 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt @@ -0,0 +1,129 @@ +package com.casic.app.smartwell.view + +import android.os.Handler +import android.os.Looper +import android.os.Message +import android.view.View +import androidx.lifecycle.ViewModelProvider +import com.casic.app.smartwell.R +import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage +import com.casic.app.smartwell.model.SearchResultModel +import com.casic.app.smartwell.utils.Constant +import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.vm.SearchOrderViewModel +import kotlinx.android.synthetic.main.activity_order_search_result.* +import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* +import java.lang.ref.WeakReference + +class SearchResultActivity : BaseActivity() { + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var searchOrderViewModel: SearchOrderViewModel + private lateinit var args: ArrayList + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initLayoutView(): Int = R.layout.activity_order_search_result + + override fun setupTopBarLayout() { + titleView.text = "查询结果" + leftBackView.visibility = View.VISIBLE + leftBackView.setOnClickListener { finish() } + } + + override fun initData() { + args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! + weakReferenceHandler = WeakReferenceHandler(this) + searchOrderViewModel = ViewModelProvider(this).get(SearchOrderViewModel::class.java) + } + + override fun initEvent() { + obtainSearchResult(args, pageIndex) + searchOrderViewModel.listModel.observe(this, { + if (it.code == 200) { + val dataRows = it.data?.rows + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows!! + resultRefreshLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows?.size == 0) { + "到底了,别拉了".show(this) + } + dataBeans.addAll(dataRows!!) + resultRefreshLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows!! + } + } + weakReferenceHandler.sendEmptyMessage(2022040101) + } + }) + searchOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } + }) + resultRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainSearchResult(args, pageIndex) + } + resultRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainSearchResult(args, pageIndex) + } + } + + private fun obtainSearchResult(args: ArrayList, pageIndex: Int) { + searchOrderViewModel.obtainSearchResult( + keywords = args[0], + alarmContent = args[1], + alarmLevel = args[2], + jobStatus = args[3], + beginTime = args[4], + endTime = args[5], + page = pageIndex + ) + } + + private class WeakReferenceHandler(activity: SearchResultActivity) : + Handler(Looper.getMainLooper()) { + private val reference: WeakReference = WeakReference(activity) + + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val activity = reference.get()!! + if (msg.what == 2022040101) { + if (activity.isRefresh || activity.isLoadMore) { +// activity.wellOperationAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (activity.dataBeans.size == 0) { + activity.emptyView!!.showEmptyPage { + activity.obtainSearchResult(activity.args, activity.pageIndex) + } + } else { + activity.emptyView!!.hide() + } + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt index af88541..dc68caa 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt @@ -1,15 +1,12 @@ package com.casic.app.smartwell.view -import android.content.Context import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.base.BaseActivity -import com.casic.app.smartwell.extensions.show -import com.casic.app.smartwell.extensions.timestampToDate +import com.casic.app.smartwell.extensions.* import com.casic.app.smartwell.model.AlarmContentTypeModel import com.casic.app.smartwell.model.OrderStatusModel import com.casic.app.smartwell.utils.Constant @@ -25,13 +22,16 @@ class SearchWorkOrderActivity : BaseActivity() { - private val kTag = "SearchWorkOrderActivity" private lateinit var contentTypeViewModel: AlarmContentTypeViewModel private lateinit var orderStatusViewModel: OrderStatusViewModel private lateinit var inflater: LayoutInflater - private var alarmTypeModels: MutableList = ArrayList() + private lateinit var contentTypeAdapter: TagAdapter + private lateinit var orderStatusAdapter: TagAdapter + private var contentModels: MutableList = ArrayList() private var orderStatusModels: MutableList = ArrayList() - private val context: Context = this@SearchWorkOrderActivity + private var alarmContentType = "" + private var alarmLevel = "" + private var orderState = "" override fun initLayoutView(): Int = R.layout.activity_order_search @@ -45,7 +45,6 @@ inflater = LayoutInflater.from(this) //告警内容 contentTypeViewModel = ViewModelProvider(this).get(AlarmContentTypeViewModel::class.java) - //工单状态 orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java) } @@ -65,11 +64,10 @@ } else { bean = dataBean } - alarmTypeModels.add(bean) + contentModels.add(bean) } - - alarmContentLayout.adapter = - object : TagAdapter(alarmTypeModels) { + contentTypeAdapter = + object : TagAdapter(contentModels) { override fun getView( parent: FlowLayout?, position: Int, bean: AlarmContentTypeModel.DataBean.ListBean? @@ -78,19 +76,46 @@ R.layout.item_tag_flowlayout, orderStatusLayout, false ) as TextView - tagView.text = alarmTypeModels[position].name + tagView.text = contentModels[position].name return tagView } } - + alarmContentLayout.adapter = contentTypeAdapter + contentTypeAdapter.setSelectedList(0) alarmContentLayout.setOnTagClickListener { _, position, _ -> - //TODO - alarmTypeModels[position].name!!.show(context) + this.alarmContentType = contentModels[position].value.toString() true } } }) + val levelMaps: MutableList> = ArrayList() + for (i in 0..3) { + val map = HashMap() + map["name"] = i.toString().toChinese() + map["value"] = i.toLevel() + levelMaps.add(map) + } + val levelAdapter = object : TagAdapter>(levelMaps) { + override fun getView( + parent: FlowLayout?, + position: Int, map: Map? + ): View { + val tagView = inflater.inflate( + R.layout.item_tag_flowlayout, + orderStatusLayout, false + ) as TextView + tagView.text = levelMaps[position]["name"] + return tagView + } + } + alarmLevelLayout.adapter = levelAdapter + levelAdapter.setSelectedList(0) + alarmLevelLayout.setOnTagClickListener { _, position, _ -> + this.alarmLevel = levelMaps[position]["value"].toString() + true + } + orderStatusViewModel.obtainOrderStatus() orderStatusViewModel.listModel.observe(this, { if (it.code == 200) { @@ -106,8 +131,7 @@ } orderStatusModels.add(bean) } - - orderStatusLayout.adapter = + orderStatusAdapter = object : TagAdapter(orderStatusModels) { override fun getView( parent: FlowLayout?, @@ -121,18 +145,18 @@ return tagView } } - + orderStatusLayout.adapter = orderStatusAdapter + orderStatusAdapter.setSelectedList(0) orderStatusLayout.setOnTagClickListener { _, position, _ -> - //TODO - orderStatusModels[position].name!!.show(context) + this.orderState = orderStatusModels[position].value.toString() true } } }) - selectStartTimeView.setOnClickListener { + startTimeView.setOnClickListener { TimePickerDialog.Builder() - .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setThemeColor(R.color.mainThemeColor.convertColor(this)) .setTitleStringId("请选择开始时间") .setWheelItemTextSize(16) .setCyclic(false) @@ -140,13 +164,13 @@ .setMaxMillseconds(System.currentTimeMillis()) .setType(Type.YEAR_MONTH_DAY) .setCallBack { _: TimePickerDialog?, millSeconds: Long -> - selectStartTimeView.text = millSeconds.timestampToDate() + startTimeView.text = millSeconds.timestampToDate() }.build().show(supportFragmentManager, "year_month_day") } - selectEndTimeView.setOnClickListener { + endTimeView.setOnClickListener { TimePickerDialog.Builder() - .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setThemeColor(R.color.mainThemeColor.convertColor(this)) .setTitleStringId("请选择结束时间") .setWheelItemTextSize(16) .setCyclic(false) @@ -154,18 +178,42 @@ .setMaxMillseconds(System.currentTimeMillis()) .setType(Type.YEAR_MONTH_DAY) .setCallBack { _: TimePickerDialog?, millSeconds: Long -> - selectEndTimeView.text = millSeconds.timestampToDate() + if (millSeconds.isEarlierThanStart(startTimeView.text.toString())) { + "结束时间不合法,不能早于开始时间".show(this) + return@setCallBack + } + endTimeView.text = millSeconds.timestampToDate() }.build().show(supportFragmentManager, "year_month_day") } searchButton.setChangeAlphaWhenPress(true) searchButton.setOnClickListener { - + val wellCode = wellCodeView.text.toString().trim() + if (wellCode.isBlank()) { + "请输入窨井编号".show(this) + return@setOnClickListener + } + //页面跳转,将查询参数传过去 + navigatePageTo( + SearchResultActivity::class.java, addAll( + wellCode, + alarmContentType, + alarmLevel, + orderState, + startTimeView.text.toString(), + endTimeView.text.toString() + ) + ) } clearButton.setChangeAlphaWhenPress(true) clearButton.setOnClickListener { - + wellCodeView.text.clear() + contentTypeAdapter.setSelectedList(0) + levelAdapter.setSelectedList(0) + orderStatusAdapter.setSelectedList(0) + startTimeView.text = "" + endTimeView.text = "" } } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt index e907ca4..e0cc32f 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt @@ -15,6 +15,7 @@ import com.casic.app.smartwell.base.BaseActivity import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.extensions.showRouteOnMap import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel @@ -23,6 +24,7 @@ import com.casic.app.smartwell.widgets.EasyPopupWindow import kotlinx.android.synthetic.main.activity_well_management.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* import kotlinx.android.synthetic.main.include_search_bar.* import java.lang.ref.WeakReference @@ -168,7 +170,13 @@ activity.wellListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (activity.dataBeans.size == 0) { - activity.emptyView!!.show("抱歉,无法查询到相关记录", null) + activity.emptyView!!.showEmptyPage { + activity.obtainWellList( + activity.keywords, + activity.wellType, + activity.pageIndex + ) + } } else { activity.emptyView!!.hide() activity.wellListAdapter = WellListAdapter(activity, activity.dataBeans) diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt index 1259b72..2137a40 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt @@ -6,12 +6,14 @@ import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.SensorListAdapter import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.utils.DialogHelper import com.casic.app.smartwell.utils.LoadState import com.casic.app.smartwell.vm.WellMonitorViewModel import kotlinx.android.synthetic.main.activity_well_monitor.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* class WellMonitorActivity : BaseActivity() { @@ -36,7 +38,9 @@ wellMonitorViewModel.monitorModel.observe(this, { if (it.code == 200) { if (it.data?.size == 0) { - emptyView!!.show("该井下无设备,或设备已离线,请检查", null) + emptyView!!.showEmptyPage("抱歉,该井下无设备,或设备已离线") { + wellMonitorViewModel.obtainMonitorResult(id = wellId) + } } else { emptyView!!.hide() val sensorListAdapter = SensorListAdapter(this, it.data!!) 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 c6cbe78..0121426 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 @@ -15,6 +15,7 @@ import com.casic.app.smartwell.base.BaseActivity import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.extensions.showRouteOnMap import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel @@ -27,6 +28,7 @@ import com.pengxh.app.multilib.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.activity_well_operation.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* import kotlinx.android.synthetic.main.include_search_bar.* import java.lang.ref.WeakReference @@ -204,7 +206,13 @@ activity.wellOperationAdapter.notifyDataSetChanged() } else { //首次加载数据 if (activity.dataBeans.size == 0) { - activity.emptyView!!.show("抱歉,无法查询到相关记录", null) + activity.emptyView!!.showEmptyPage { + activity.obtainWellList( + activity.keywords, + activity.wellType, + activity.pageIndex + ) + } } else { activity.emptyView!!.hide() activity.wellOperationAdapter = 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 c9ca964..d7d8269 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 @@ -10,6 +10,7 @@ import com.casic.app.smartwell.adapter.CompletedOrderAdapter import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.CompletedDetailActivity @@ -18,6 +19,7 @@ import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_completed.* +import kotlinx.android.synthetic.main.include_empty_view.* import java.lang.ref.WeakReference class CompletedOrderFragment : BaseFragment() { @@ -126,7 +128,9 @@ fragment.completedAdapter.notifyDataSetChanged() } else { if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("您还没有处理完成过任何工单", null) + fragment.emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { + fragment.obtainWorkOrderList(fragment.pageIndex) + } } else { fragment.emptyView!!.hide() fragment.completedAdapter = CompletedOrderAdapter( diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt index 1b4126e..04654dc 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt @@ -5,6 +5,7 @@ import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.navigatePageTo +import com.casic.app.smartwell.view.OvertimeOrderActivity import com.casic.app.smartwell.view.WellManagementActivity import com.casic.app.smartwell.view.WellOperationActivity import com.casic.app.smartwell.vm.WellCountViewModel @@ -24,14 +25,15 @@ titleView.text = "首页" //首页功能块 val homeRecycleAdapter = HomeRecycleAdapter(requireContext()) - homeRecyclerView.layoutManager = GridLayoutManager(requireContext(), 2) + homeRecyclerView.layoutManager = GridLayoutManager(requireContext(), 3) homeRecyclerView.adapter = homeRecycleAdapter homeRecycleAdapter.setOnGridItemClickListener(object : HomeRecycleAdapter.OnGridItemClickListener { override fun onClick(position: Int) { when (position) { 0 -> requireContext().navigatePageTo(WellManagementActivity::class.java) - 1 -> requireContext().navigatePageTo(WellOperationActivity::class.java) + 1 -> requireContext().navigatePageTo(OvertimeOrderActivity::class.java) + 2 -> requireContext().navigatePageTo(WellOperationActivity::class.java) } } }) diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt index d4791bf..cafc40f 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt @@ -10,6 +10,7 @@ import com.casic.app.smartwell.adapter.InHandleOrderAdapter import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.InHandleDetailActivity @@ -18,6 +19,7 @@ import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_inhandle.* +import kotlinx.android.synthetic.main.include_empty_view.* import java.lang.ref.WeakReference class InHandleOrderFragment : BaseFragment() { @@ -126,7 +128,9 @@ fragment.inHandleAdapter.notifyDataSetChanged() } else { //首次加载数据 if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("真不错,您已经处理完所有工单", null) + fragment.emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + fragment.obtainWorkOrderList(fragment.pageIndex) + } } else { fragment.emptyView!!.hide() fragment.inHandleAdapter = InHandleOrderAdapter( 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 780c1da..47a4c9a 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 @@ -10,6 +10,7 @@ import com.casic.app.smartwell.adapter.TodoWorkOrderListAdapter import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.utils.DialogHelper @@ -20,6 +21,7 @@ import com.pengxh.app.multilib.base.BaseFragment import com.pengxh.app.multilib.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.fragment_order_todo.* +import kotlinx.android.synthetic.main.include_empty_view.* import java.lang.ref.WeakReference class TodoOrderFragment : BaseFragment() { @@ -135,7 +137,9 @@ fragment.workOrderListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("没有需要您处理的工单", null) + fragment.emptyView!!.showEmptyPage("没有需要您处理的工单") { + fragment.obtainWorkOrderList(fragment.pageIndex) + } } else { fragment.emptyView!!.hide() fragment.workOrderListAdapter = TodoWorkOrderListAdapter( diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt index 5e79db6..a8560d5 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt @@ -10,6 +10,7 @@ import com.casic.app.smartwell.adapter.UndeterminedOrderAdapter import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.DetermineDetailActivity @@ -18,6 +19,7 @@ import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_undetermined.* +import kotlinx.android.synthetic.main.include_empty_view.* import java.lang.ref.WeakReference class UndeterminedOrderFragment : BaseFragment() { @@ -126,7 +128,9 @@ fragment.undeterminedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("没有需要您确认的工单", null) + fragment.emptyView!!.showEmptyPage("没有需要您确认的工单") { + fragment.obtainWorkOrderList(fragment.pageIndex) + } } else { fragment.emptyView!!.hide() fragment.undeterminedAdapter = UndeterminedOrderAdapter( diff --git a/app/src/main/java/com/casic/app/smartwell/vm/SearchOrderViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/SearchOrderViewModel.kt new file mode 100644 index 0000000..ee0149f --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/vm/SearchOrderViewModel.kt @@ -0,0 +1,31 @@ +package com.casic.app.smartwell.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.app.smartwell.base.BaseViewModel +import com.casic.app.smartwell.extensions.launch +import com.casic.app.smartwell.model.SearchResultModel +import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager + +class SearchOrderViewModel : BaseViewModel() { + + val listModel = MutableLiveData() + + fun obtainSearchResult( + keywords: String?, + alarmContent: String?, + alarmLevel: String?, + jobStatus: String?, + beginTime: String?, + endTime: String?, + page: Int + ) = launch({ + loadState.value = LoadState.Loading + listModel.value = RetrofitServiceManager.obtainSearchResult( + keywords, alarmContent, alarmLevel, jobStatus, beginTime, endTime, page + ) + loadState.value = LoadState.Success + }, { + loadState.value = LoadState.Fail + }) +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_order_overtime.xml b/app/src/main/res/layout/activity_order_overtime.xml new file mode 100644 index 0000000..d829e29 --- /dev/null +++ b/app/src/main/res/layout/activity_order_overtime.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_order_search.xml b/app/src/main/res/layout/activity_order_search.xml index 74b898c..33187af 100644 --- a/app/src/main/res/layout/activity_order_search.xml +++ b/app/src/main/res/layout/activity_order_search.xml @@ -10,152 +10,156 @@ - + android:layout_height="wrap_content"> + android:layout_height="wrap_content" + android:layout_margin="@dimen/dp_10" + android:background="@drawable/bg_layout" + android:orientation="vertical"> - - - + + + + + + + + + + + - + android:textSize="@dimen/titleFontSize" /> - - - - - - - - - - - - - - - - - + + - + android:textSize="@dimen/titleFontSize" /> - - - - - + app:max_select="1" /> + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_order_search_result.xml b/app/src/main/res/layout/activity_order_search_result.xml new file mode 100644 index 0000000..c6512d5 --- /dev/null +++ b/app/src/main/res/layout/activity_order_search_result.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_well_management.xml b/app/src/main/res/layout/activity_well_management.xml index 06c9434..819d37f 100644 --- a/app/src/main/res/layout/activity_well_management.xml +++ b/app/src/main/res/layout/activity_well_management.xml @@ -11,10 +11,7 @@ - + - + - + - + - + - + + + diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt index cba0198..e7ec8d8 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt @@ -25,7 +25,7 @@ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { val imageView = ImageView(context) val layoutWidth: Int = - SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 20f) + SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f) val margins: Int = QMUIDisplayHelper.dp2px(context, 3) val itemSize = (layoutWidth - 6 * margins) / 3 val params = LinearLayout.LayoutParams(itemSize, itemSize) diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt index 7780aaa..ad90885 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt @@ -17,4 +17,12 @@ } } return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt index de1c6c1..84ae8a8 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt @@ -33,10 +33,16 @@ startActivity(intent) } +fun Context.navigatePageTo(clazz: Class, values: ArrayList) { + val intent = Intent(this, clazz) + intent.putStringArrayListExtra(Constant.INTENT_PARAM, values) + startActivity(intent) +} + fun Context.navigatePageTo( clazz: Class, index: Int, - imageList: ArrayList? + imageList: ArrayList ) { val intent = Intent(this, clazz) intent.putExtra("index", index) 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 5f9ce7c..8ed51f4 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 @@ -23,4 +23,12 @@ "未知类型" } } +} + +fun Int.toLevel(): String { + return if (this == 0) { + "" + } else { + this.toString() + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt index ee3685d..3bc5d96 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt @@ -1,6 +1,20 @@ package com.casic.app.smartwell.extensions +import java.text.ParseException import java.text.SimpleDateFormat import java.util.* -fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) \ No newline at end of file +fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) + +fun Long.isEarlierThanStart(date: String): Boolean { + if (date.isBlank()) { + return false + } + val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA) + try { + return this < dateFormat.parse(date)!!.time + } catch (e: ParseException) { + + } + return true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt new file mode 100644 index 0000000..bd9cfa7 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt @@ -0,0 +1,12 @@ +package com.casic.app.smartwell.extensions + +import android.view.View +import com.qmuiteam.qmui.widget.QMUIEmptyView + +fun QMUIEmptyView.showEmptyPage(onButtonClickListener: View.OnClickListener) { + this.show(false, "抱歉,无法查询到相关记录", null, "重试", onButtonClickListener) +} + +fun QMUIEmptyView.showEmptyPage(title: String, onButtonClickListener: View.OnClickListener) { + this.show(false, title, null, "刷新", onButtonClickListener) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt index 7358b1c..2cdd63d 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt @@ -60,6 +60,7 @@ //窨井类型转换 fun String.toChinese(): String { return when (this) { + "0" -> "全部" "1" -> "一级" "2" -> "二级" "3" -> "三级" diff --git a/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt b/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt new file mode 100644 index 0000000..af7fd13 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt @@ -0,0 +1,52 @@ +package com.casic.app.smartwell.model + +class SearchResultModel { + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var rows: MutableList? = null + var total = 0 + + class RowsBean { + var alarmContent = 0 + var deptName: String? = null + var jobStatus: String? = null + var handleJobPerson: String? = null + var alarmContentName: String? = null + var shouldGetTime: String? = null + var wellCode: String? = null + var deptid: String? = null + var alarmTypeName: String? = null + var jobCode: String? = null + var jobBelongTo: String? = null + var jobFlag: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var jobStatusName: String? = null + var alarmValue: String? = null + var alarmId: String? = null + var alarmLevel: String? = null + var handleJobTime: String? = null + var tel: String? = null + var id: String? = null + var wellId: String? = null + var jobType: String? = null + var editable = 0 + var alarmTime: String? = null + var alarmMessage: String? = null + var staff: String? = null + var getJobTime: String? = null + var getJobPerson: String? = null + var shouldHandleTime: String? = null + var jobId: String? = null + var alarmType: String? = null + var alarmStatus: String? = null + var devcode: String? = null + var createTime: String? = null + var position: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index fd4e603..c342334 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -41,7 +41,7 @@ const val USER_DETAIL_MODEL = "userDetailModel" const val INTENT_PARAM = "intentParam" - val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher) - val HOME_ITEMS = arrayOf("闸井管理", "布防撤防") + val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher) + val HOME_ITEMS = arrayOf("闸井管理", "超时工单", "布防撤防") val SUB_PAGE_TITLES = arrayOf("待处理", "待确认", "处理中", "已完成") } \ 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 9c34038..7a5ca39 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 @@ -234,6 +234,22 @@ ): OrderStatusModel /** + * 查询工单 + * */ + @GET("/job/searchList") + suspend fun obtainSearchResult( + @Header("token") token: String, + @Query("keywords") keywords: String?, + @Query("alarmContent") alarmContent: String?, + @Query("alarmLevel") alarmLevel: String?, + @Query("jobStatus") jobStatus: String?, + @Query("beginTime") beginTime: String?, + @Query("endTime") endTime: String?, + @Query("limit") limit: Int, + @Query("offset") offset: Int + ): SearchResultModel + + /** * 获取用户信息 */ @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 a7106b5..945f6a3 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 @@ -175,6 +175,31 @@ } /** + * 查询工单 + */ + suspend fun obtainSearchResult( + keywords: String?, + alarmContent: String?, + alarmLevel: String?, + jobStatus: String?, + beginTime: String?, + endTime: String?, + page: Int + ): SearchResultModel { + return api.obtainSearchResult( + AuthenticationHelper.token!!, + keywords, + alarmContent, + alarmLevel, + jobStatus, + beginTime, + endTime, + Constant.PAGE_LIMIT, + page + ) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): String { diff --git a/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt index cfc4e0f..45af48a 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt @@ -98,7 +98,7 @@ imageRecyclerView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() - val imageArray = orderDetail.firstStatePhotos.toString().split(";") + val imageArray = orderDetail.firstStatePhotos.toString().split(",") imageArray.forEach { path -> if (path != "") { urls.add(path.combineImagePath()) diff --git a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt index 1a3e670..36075bd 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt @@ -197,7 +197,7 @@ return@setOnClickListener } val state = sceneEditView.text.toString().trim() - if (state == "") { + if (state.isBlank()) { "请输入现场情况".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt index b7a51ce..97e1f59 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt @@ -161,7 +161,7 @@ imageRecyclerView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() - val imageArray = orderDetail.firstStatePhotos.toString().split(";") + val imageArray = orderDetail.firstStatePhotos.toString().split(",") imageArray.forEach { path -> if (path != "") { urls.add(path.combineImagePath()) @@ -247,7 +247,7 @@ return@setOnClickListener } val state = sceneEditView.text.toString().trim() - if (state == "") { + if (state.isBlank()) { "请输入维护情况".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt index e5698a1..cd4fdff 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt @@ -1,7 +1,6 @@ package com.casic.app.smartwell.view import android.text.Editable -import android.text.TextUtils import android.text.TextWatcher import android.view.KeyEvent import android.view.inputmethod.EditorInfo @@ -67,13 +66,13 @@ false } loginButton.setOnClickListener { - val account = userNameView.text.toString() - val userPassword = userPasswordView.text.toString() - if (TextUtils.isEmpty(account)) { + val account = userNameView.text.toString().trim() + val userPassword = userPasswordView.text.toString().trim() + if (account.isBlank()) { "用户名不能为空".show(this) return@setOnClickListener } - if (TextUtils.isEmpty(userPassword)) { + if (userPassword.isBlank()) { "密码不能为空".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt new file mode 100644 index 0000000..453a2c9 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt @@ -0,0 +1,21 @@ +package com.casic.app.smartwell.view + +import com.casic.app.smartwell.R +import com.casic.app.smartwell.base.BaseActivity + +class OvertimeOrderActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_order_overtime + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt new file mode 100644 index 0000000..8228673 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt @@ -0,0 +1,129 @@ +package com.casic.app.smartwell.view + +import android.os.Handler +import android.os.Looper +import android.os.Message +import android.view.View +import androidx.lifecycle.ViewModelProvider +import com.casic.app.smartwell.R +import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage +import com.casic.app.smartwell.model.SearchResultModel +import com.casic.app.smartwell.utils.Constant +import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.vm.SearchOrderViewModel +import kotlinx.android.synthetic.main.activity_order_search_result.* +import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* +import java.lang.ref.WeakReference + +class SearchResultActivity : BaseActivity() { + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var searchOrderViewModel: SearchOrderViewModel + private lateinit var args: ArrayList + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initLayoutView(): Int = R.layout.activity_order_search_result + + override fun setupTopBarLayout() { + titleView.text = "查询结果" + leftBackView.visibility = View.VISIBLE + leftBackView.setOnClickListener { finish() } + } + + override fun initData() { + args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! + weakReferenceHandler = WeakReferenceHandler(this) + searchOrderViewModel = ViewModelProvider(this).get(SearchOrderViewModel::class.java) + } + + override fun initEvent() { + obtainSearchResult(args, pageIndex) + searchOrderViewModel.listModel.observe(this, { + if (it.code == 200) { + val dataRows = it.data?.rows + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows!! + resultRefreshLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows?.size == 0) { + "到底了,别拉了".show(this) + } + dataBeans.addAll(dataRows!!) + resultRefreshLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows!! + } + } + weakReferenceHandler.sendEmptyMessage(2022040101) + } + }) + searchOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } + }) + resultRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainSearchResult(args, pageIndex) + } + resultRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainSearchResult(args, pageIndex) + } + } + + private fun obtainSearchResult(args: ArrayList, pageIndex: Int) { + searchOrderViewModel.obtainSearchResult( + keywords = args[0], + alarmContent = args[1], + alarmLevel = args[2], + jobStatus = args[3], + beginTime = args[4], + endTime = args[5], + page = pageIndex + ) + } + + private class WeakReferenceHandler(activity: SearchResultActivity) : + Handler(Looper.getMainLooper()) { + private val reference: WeakReference = WeakReference(activity) + + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val activity = reference.get()!! + if (msg.what == 2022040101) { + if (activity.isRefresh || activity.isLoadMore) { +// activity.wellOperationAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (activity.dataBeans.size == 0) { + activity.emptyView!!.showEmptyPage { + activity.obtainSearchResult(activity.args, activity.pageIndex) + } + } else { + activity.emptyView!!.hide() + } + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt index af88541..dc68caa 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt @@ -1,15 +1,12 @@ package com.casic.app.smartwell.view -import android.content.Context import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.base.BaseActivity -import com.casic.app.smartwell.extensions.show -import com.casic.app.smartwell.extensions.timestampToDate +import com.casic.app.smartwell.extensions.* import com.casic.app.smartwell.model.AlarmContentTypeModel import com.casic.app.smartwell.model.OrderStatusModel import com.casic.app.smartwell.utils.Constant @@ -25,13 +22,16 @@ class SearchWorkOrderActivity : BaseActivity() { - private val kTag = "SearchWorkOrderActivity" private lateinit var contentTypeViewModel: AlarmContentTypeViewModel private lateinit var orderStatusViewModel: OrderStatusViewModel private lateinit var inflater: LayoutInflater - private var alarmTypeModels: MutableList = ArrayList() + private lateinit var contentTypeAdapter: TagAdapter + private lateinit var orderStatusAdapter: TagAdapter + private var contentModels: MutableList = ArrayList() private var orderStatusModels: MutableList = ArrayList() - private val context: Context = this@SearchWorkOrderActivity + private var alarmContentType = "" + private var alarmLevel = "" + private var orderState = "" override fun initLayoutView(): Int = R.layout.activity_order_search @@ -45,7 +45,6 @@ inflater = LayoutInflater.from(this) //告警内容 contentTypeViewModel = ViewModelProvider(this).get(AlarmContentTypeViewModel::class.java) - //工单状态 orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java) } @@ -65,11 +64,10 @@ } else { bean = dataBean } - alarmTypeModels.add(bean) + contentModels.add(bean) } - - alarmContentLayout.adapter = - object : TagAdapter(alarmTypeModels) { + contentTypeAdapter = + object : TagAdapter(contentModels) { override fun getView( parent: FlowLayout?, position: Int, bean: AlarmContentTypeModel.DataBean.ListBean? @@ -78,19 +76,46 @@ R.layout.item_tag_flowlayout, orderStatusLayout, false ) as TextView - tagView.text = alarmTypeModels[position].name + tagView.text = contentModels[position].name return tagView } } - + alarmContentLayout.adapter = contentTypeAdapter + contentTypeAdapter.setSelectedList(0) alarmContentLayout.setOnTagClickListener { _, position, _ -> - //TODO - alarmTypeModels[position].name!!.show(context) + this.alarmContentType = contentModels[position].value.toString() true } } }) + val levelMaps: MutableList> = ArrayList() + for (i in 0..3) { + val map = HashMap() + map["name"] = i.toString().toChinese() + map["value"] = i.toLevel() + levelMaps.add(map) + } + val levelAdapter = object : TagAdapter>(levelMaps) { + override fun getView( + parent: FlowLayout?, + position: Int, map: Map? + ): View { + val tagView = inflater.inflate( + R.layout.item_tag_flowlayout, + orderStatusLayout, false + ) as TextView + tagView.text = levelMaps[position]["name"] + return tagView + } + } + alarmLevelLayout.adapter = levelAdapter + levelAdapter.setSelectedList(0) + alarmLevelLayout.setOnTagClickListener { _, position, _ -> + this.alarmLevel = levelMaps[position]["value"].toString() + true + } + orderStatusViewModel.obtainOrderStatus() orderStatusViewModel.listModel.observe(this, { if (it.code == 200) { @@ -106,8 +131,7 @@ } orderStatusModels.add(bean) } - - orderStatusLayout.adapter = + orderStatusAdapter = object : TagAdapter(orderStatusModels) { override fun getView( parent: FlowLayout?, @@ -121,18 +145,18 @@ return tagView } } - + orderStatusLayout.adapter = orderStatusAdapter + orderStatusAdapter.setSelectedList(0) orderStatusLayout.setOnTagClickListener { _, position, _ -> - //TODO - orderStatusModels[position].name!!.show(context) + this.orderState = orderStatusModels[position].value.toString() true } } }) - selectStartTimeView.setOnClickListener { + startTimeView.setOnClickListener { TimePickerDialog.Builder() - .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setThemeColor(R.color.mainThemeColor.convertColor(this)) .setTitleStringId("请选择开始时间") .setWheelItemTextSize(16) .setCyclic(false) @@ -140,13 +164,13 @@ .setMaxMillseconds(System.currentTimeMillis()) .setType(Type.YEAR_MONTH_DAY) .setCallBack { _: TimePickerDialog?, millSeconds: Long -> - selectStartTimeView.text = millSeconds.timestampToDate() + startTimeView.text = millSeconds.timestampToDate() }.build().show(supportFragmentManager, "year_month_day") } - selectEndTimeView.setOnClickListener { + endTimeView.setOnClickListener { TimePickerDialog.Builder() - .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setThemeColor(R.color.mainThemeColor.convertColor(this)) .setTitleStringId("请选择结束时间") .setWheelItemTextSize(16) .setCyclic(false) @@ -154,18 +178,42 @@ .setMaxMillseconds(System.currentTimeMillis()) .setType(Type.YEAR_MONTH_DAY) .setCallBack { _: TimePickerDialog?, millSeconds: Long -> - selectEndTimeView.text = millSeconds.timestampToDate() + if (millSeconds.isEarlierThanStart(startTimeView.text.toString())) { + "结束时间不合法,不能早于开始时间".show(this) + return@setCallBack + } + endTimeView.text = millSeconds.timestampToDate() }.build().show(supportFragmentManager, "year_month_day") } searchButton.setChangeAlphaWhenPress(true) searchButton.setOnClickListener { - + val wellCode = wellCodeView.text.toString().trim() + if (wellCode.isBlank()) { + "请输入窨井编号".show(this) + return@setOnClickListener + } + //页面跳转,将查询参数传过去 + navigatePageTo( + SearchResultActivity::class.java, addAll( + wellCode, + alarmContentType, + alarmLevel, + orderState, + startTimeView.text.toString(), + endTimeView.text.toString() + ) + ) } clearButton.setChangeAlphaWhenPress(true) clearButton.setOnClickListener { - + wellCodeView.text.clear() + contentTypeAdapter.setSelectedList(0) + levelAdapter.setSelectedList(0) + orderStatusAdapter.setSelectedList(0) + startTimeView.text = "" + endTimeView.text = "" } } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt index e907ca4..e0cc32f 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt @@ -15,6 +15,7 @@ import com.casic.app.smartwell.base.BaseActivity import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.extensions.showRouteOnMap import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel @@ -23,6 +24,7 @@ import com.casic.app.smartwell.widgets.EasyPopupWindow import kotlinx.android.synthetic.main.activity_well_management.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* import kotlinx.android.synthetic.main.include_search_bar.* import java.lang.ref.WeakReference @@ -168,7 +170,13 @@ activity.wellListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (activity.dataBeans.size == 0) { - activity.emptyView!!.show("抱歉,无法查询到相关记录", null) + activity.emptyView!!.showEmptyPage { + activity.obtainWellList( + activity.keywords, + activity.wellType, + activity.pageIndex + ) + } } else { activity.emptyView!!.hide() activity.wellListAdapter = WellListAdapter(activity, activity.dataBeans) diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt index 1259b72..2137a40 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt @@ -6,12 +6,14 @@ import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.SensorListAdapter import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.utils.DialogHelper import com.casic.app.smartwell.utils.LoadState import com.casic.app.smartwell.vm.WellMonitorViewModel import kotlinx.android.synthetic.main.activity_well_monitor.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* class WellMonitorActivity : BaseActivity() { @@ -36,7 +38,9 @@ wellMonitorViewModel.monitorModel.observe(this, { if (it.code == 200) { if (it.data?.size == 0) { - emptyView!!.show("该井下无设备,或设备已离线,请检查", null) + emptyView!!.showEmptyPage("抱歉,该井下无设备,或设备已离线") { + wellMonitorViewModel.obtainMonitorResult(id = wellId) + } } else { emptyView!!.hide() val sensorListAdapter = SensorListAdapter(this, it.data!!) 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 c6cbe78..0121426 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 @@ -15,6 +15,7 @@ import com.casic.app.smartwell.base.BaseActivity import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.extensions.showRouteOnMap import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel @@ -27,6 +28,7 @@ import com.pengxh.app.multilib.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.activity_well_operation.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* import kotlinx.android.synthetic.main.include_search_bar.* import java.lang.ref.WeakReference @@ -204,7 +206,13 @@ activity.wellOperationAdapter.notifyDataSetChanged() } else { //首次加载数据 if (activity.dataBeans.size == 0) { - activity.emptyView!!.show("抱歉,无法查询到相关记录", null) + activity.emptyView!!.showEmptyPage { + activity.obtainWellList( + activity.keywords, + activity.wellType, + activity.pageIndex + ) + } } else { activity.emptyView!!.hide() activity.wellOperationAdapter = 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 c9ca964..d7d8269 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 @@ -10,6 +10,7 @@ import com.casic.app.smartwell.adapter.CompletedOrderAdapter import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.CompletedDetailActivity @@ -18,6 +19,7 @@ import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_completed.* +import kotlinx.android.synthetic.main.include_empty_view.* import java.lang.ref.WeakReference class CompletedOrderFragment : BaseFragment() { @@ -126,7 +128,9 @@ fragment.completedAdapter.notifyDataSetChanged() } else { if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("您还没有处理完成过任何工单", null) + fragment.emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { + fragment.obtainWorkOrderList(fragment.pageIndex) + } } else { fragment.emptyView!!.hide() fragment.completedAdapter = CompletedOrderAdapter( diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt index 1b4126e..04654dc 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt @@ -5,6 +5,7 @@ import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.navigatePageTo +import com.casic.app.smartwell.view.OvertimeOrderActivity import com.casic.app.smartwell.view.WellManagementActivity import com.casic.app.smartwell.view.WellOperationActivity import com.casic.app.smartwell.vm.WellCountViewModel @@ -24,14 +25,15 @@ titleView.text = "首页" //首页功能块 val homeRecycleAdapter = HomeRecycleAdapter(requireContext()) - homeRecyclerView.layoutManager = GridLayoutManager(requireContext(), 2) + homeRecyclerView.layoutManager = GridLayoutManager(requireContext(), 3) homeRecyclerView.adapter = homeRecycleAdapter homeRecycleAdapter.setOnGridItemClickListener(object : HomeRecycleAdapter.OnGridItemClickListener { override fun onClick(position: Int) { when (position) { 0 -> requireContext().navigatePageTo(WellManagementActivity::class.java) - 1 -> requireContext().navigatePageTo(WellOperationActivity::class.java) + 1 -> requireContext().navigatePageTo(OvertimeOrderActivity::class.java) + 2 -> requireContext().navigatePageTo(WellOperationActivity::class.java) } } }) diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt index d4791bf..cafc40f 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt @@ -10,6 +10,7 @@ import com.casic.app.smartwell.adapter.InHandleOrderAdapter import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.InHandleDetailActivity @@ -18,6 +19,7 @@ import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_inhandle.* +import kotlinx.android.synthetic.main.include_empty_view.* import java.lang.ref.WeakReference class InHandleOrderFragment : BaseFragment() { @@ -126,7 +128,9 @@ fragment.inHandleAdapter.notifyDataSetChanged() } else { //首次加载数据 if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("真不错,您已经处理完所有工单", null) + fragment.emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + fragment.obtainWorkOrderList(fragment.pageIndex) + } } else { fragment.emptyView!!.hide() fragment.inHandleAdapter = InHandleOrderAdapter( 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 780c1da..47a4c9a 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 @@ -10,6 +10,7 @@ import com.casic.app.smartwell.adapter.TodoWorkOrderListAdapter import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.utils.DialogHelper @@ -20,6 +21,7 @@ import com.pengxh.app.multilib.base.BaseFragment import com.pengxh.app.multilib.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.fragment_order_todo.* +import kotlinx.android.synthetic.main.include_empty_view.* import java.lang.ref.WeakReference class TodoOrderFragment : BaseFragment() { @@ -135,7 +137,9 @@ fragment.workOrderListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("没有需要您处理的工单", null) + fragment.emptyView!!.showEmptyPage("没有需要您处理的工单") { + fragment.obtainWorkOrderList(fragment.pageIndex) + } } else { fragment.emptyView!!.hide() fragment.workOrderListAdapter = TodoWorkOrderListAdapter( diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt index 5e79db6..a8560d5 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt @@ -10,6 +10,7 @@ import com.casic.app.smartwell.adapter.UndeterminedOrderAdapter import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.DetermineDetailActivity @@ -18,6 +19,7 @@ import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_undetermined.* +import kotlinx.android.synthetic.main.include_empty_view.* import java.lang.ref.WeakReference class UndeterminedOrderFragment : BaseFragment() { @@ -126,7 +128,9 @@ fragment.undeterminedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("没有需要您确认的工单", null) + fragment.emptyView!!.showEmptyPage("没有需要您确认的工单") { + fragment.obtainWorkOrderList(fragment.pageIndex) + } } else { fragment.emptyView!!.hide() fragment.undeterminedAdapter = UndeterminedOrderAdapter( diff --git a/app/src/main/java/com/casic/app/smartwell/vm/SearchOrderViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/SearchOrderViewModel.kt new file mode 100644 index 0000000..ee0149f --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/vm/SearchOrderViewModel.kt @@ -0,0 +1,31 @@ +package com.casic.app.smartwell.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.app.smartwell.base.BaseViewModel +import com.casic.app.smartwell.extensions.launch +import com.casic.app.smartwell.model.SearchResultModel +import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager + +class SearchOrderViewModel : BaseViewModel() { + + val listModel = MutableLiveData() + + fun obtainSearchResult( + keywords: String?, + alarmContent: String?, + alarmLevel: String?, + jobStatus: String?, + beginTime: String?, + endTime: String?, + page: Int + ) = launch({ + loadState.value = LoadState.Loading + listModel.value = RetrofitServiceManager.obtainSearchResult( + keywords, alarmContent, alarmLevel, jobStatus, beginTime, endTime, page + ) + loadState.value = LoadState.Success + }, { + loadState.value = LoadState.Fail + }) +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_order_overtime.xml b/app/src/main/res/layout/activity_order_overtime.xml new file mode 100644 index 0000000..d829e29 --- /dev/null +++ b/app/src/main/res/layout/activity_order_overtime.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_order_search.xml b/app/src/main/res/layout/activity_order_search.xml index 74b898c..33187af 100644 --- a/app/src/main/res/layout/activity_order_search.xml +++ b/app/src/main/res/layout/activity_order_search.xml @@ -10,152 +10,156 @@ - + android:layout_height="wrap_content"> + android:layout_height="wrap_content" + android:layout_margin="@dimen/dp_10" + android:background="@drawable/bg_layout" + android:orientation="vertical"> - - - + + + + + + + + + + + - + android:textSize="@dimen/titleFontSize" /> - - - - - - - - - - - - - - - - - + + - + android:textSize="@dimen/titleFontSize" /> - - - - - + app:max_select="1" /> + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_order_search_result.xml b/app/src/main/res/layout/activity_order_search_result.xml new file mode 100644 index 0000000..c6512d5 --- /dev/null +++ b/app/src/main/res/layout/activity_order_search_result.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_well_management.xml b/app/src/main/res/layout/activity_well_management.xml index 06c9434..819d37f 100644 --- a/app/src/main/res/layout/activity_well_management.xml +++ b/app/src/main/res/layout/activity_well_management.xml @@ -11,10 +11,7 @@ - + - + - + - + - + - + - + + + diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt index cba0198..e7ec8d8 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt @@ -25,7 +25,7 @@ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { val imageView = ImageView(context) val layoutWidth: Int = - SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 20f) + SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f) val margins: Int = QMUIDisplayHelper.dp2px(context, 3) val itemSize = (layoutWidth - 6 * margins) / 3 val params = LinearLayout.LayoutParams(itemSize, itemSize) diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt index 7780aaa..ad90885 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt @@ -17,4 +17,12 @@ } } return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt index de1c6c1..84ae8a8 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt @@ -33,10 +33,16 @@ startActivity(intent) } +fun Context.navigatePageTo(clazz: Class, values: ArrayList) { + val intent = Intent(this, clazz) + intent.putStringArrayListExtra(Constant.INTENT_PARAM, values) + startActivity(intent) +} + fun Context.navigatePageTo( clazz: Class, index: Int, - imageList: ArrayList? + imageList: ArrayList ) { val intent = Intent(this, clazz) intent.putExtra("index", index) 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 5f9ce7c..8ed51f4 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 @@ -23,4 +23,12 @@ "未知类型" } } +} + +fun Int.toLevel(): String { + return if (this == 0) { + "" + } else { + this.toString() + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt index ee3685d..3bc5d96 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt @@ -1,6 +1,20 @@ package com.casic.app.smartwell.extensions +import java.text.ParseException import java.text.SimpleDateFormat import java.util.* -fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) \ No newline at end of file +fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) + +fun Long.isEarlierThanStart(date: String): Boolean { + if (date.isBlank()) { + return false + } + val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA) + try { + return this < dateFormat.parse(date)!!.time + } catch (e: ParseException) { + + } + return true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt new file mode 100644 index 0000000..bd9cfa7 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt @@ -0,0 +1,12 @@ +package com.casic.app.smartwell.extensions + +import android.view.View +import com.qmuiteam.qmui.widget.QMUIEmptyView + +fun QMUIEmptyView.showEmptyPage(onButtonClickListener: View.OnClickListener) { + this.show(false, "抱歉,无法查询到相关记录", null, "重试", onButtonClickListener) +} + +fun QMUIEmptyView.showEmptyPage(title: String, onButtonClickListener: View.OnClickListener) { + this.show(false, title, null, "刷新", onButtonClickListener) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt index 7358b1c..2cdd63d 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt @@ -60,6 +60,7 @@ //窨井类型转换 fun String.toChinese(): String { return when (this) { + "0" -> "全部" "1" -> "一级" "2" -> "二级" "3" -> "三级" diff --git a/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt b/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt new file mode 100644 index 0000000..af7fd13 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt @@ -0,0 +1,52 @@ +package com.casic.app.smartwell.model + +class SearchResultModel { + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var rows: MutableList? = null + var total = 0 + + class RowsBean { + var alarmContent = 0 + var deptName: String? = null + var jobStatus: String? = null + var handleJobPerson: String? = null + var alarmContentName: String? = null + var shouldGetTime: String? = null + var wellCode: String? = null + var deptid: String? = null + var alarmTypeName: String? = null + var jobCode: String? = null + var jobBelongTo: String? = null + var jobFlag: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var jobStatusName: String? = null + var alarmValue: String? = null + var alarmId: String? = null + var alarmLevel: String? = null + var handleJobTime: String? = null + var tel: String? = null + var id: String? = null + var wellId: String? = null + var jobType: String? = null + var editable = 0 + var alarmTime: String? = null + var alarmMessage: String? = null + var staff: String? = null + var getJobTime: String? = null + var getJobPerson: String? = null + var shouldHandleTime: String? = null + var jobId: String? = null + var alarmType: String? = null + var alarmStatus: String? = null + var devcode: String? = null + var createTime: String? = null + var position: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index fd4e603..c342334 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -41,7 +41,7 @@ const val USER_DETAIL_MODEL = "userDetailModel" const val INTENT_PARAM = "intentParam" - val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher) - val HOME_ITEMS = arrayOf("闸井管理", "布防撤防") + val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher) + val HOME_ITEMS = arrayOf("闸井管理", "超时工单", "布防撤防") val SUB_PAGE_TITLES = arrayOf("待处理", "待确认", "处理中", "已完成") } \ 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 9c34038..7a5ca39 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 @@ -234,6 +234,22 @@ ): OrderStatusModel /** + * 查询工单 + * */ + @GET("/job/searchList") + suspend fun obtainSearchResult( + @Header("token") token: String, + @Query("keywords") keywords: String?, + @Query("alarmContent") alarmContent: String?, + @Query("alarmLevel") alarmLevel: String?, + @Query("jobStatus") jobStatus: String?, + @Query("beginTime") beginTime: String?, + @Query("endTime") endTime: String?, + @Query("limit") limit: Int, + @Query("offset") offset: Int + ): SearchResultModel + + /** * 获取用户信息 */ @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 a7106b5..945f6a3 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 @@ -175,6 +175,31 @@ } /** + * 查询工单 + */ + suspend fun obtainSearchResult( + keywords: String?, + alarmContent: String?, + alarmLevel: String?, + jobStatus: String?, + beginTime: String?, + endTime: String?, + page: Int + ): SearchResultModel { + return api.obtainSearchResult( + AuthenticationHelper.token!!, + keywords, + alarmContent, + alarmLevel, + jobStatus, + beginTime, + endTime, + Constant.PAGE_LIMIT, + page + ) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): String { diff --git a/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt index cfc4e0f..45af48a 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt @@ -98,7 +98,7 @@ imageRecyclerView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() - val imageArray = orderDetail.firstStatePhotos.toString().split(";") + val imageArray = orderDetail.firstStatePhotos.toString().split(",") imageArray.forEach { path -> if (path != "") { urls.add(path.combineImagePath()) diff --git a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt index 1a3e670..36075bd 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt @@ -197,7 +197,7 @@ return@setOnClickListener } val state = sceneEditView.text.toString().trim() - if (state == "") { + if (state.isBlank()) { "请输入现场情况".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt index b7a51ce..97e1f59 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt @@ -161,7 +161,7 @@ imageRecyclerView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() - val imageArray = orderDetail.firstStatePhotos.toString().split(";") + val imageArray = orderDetail.firstStatePhotos.toString().split(",") imageArray.forEach { path -> if (path != "") { urls.add(path.combineImagePath()) @@ -247,7 +247,7 @@ return@setOnClickListener } val state = sceneEditView.text.toString().trim() - if (state == "") { + if (state.isBlank()) { "请输入维护情况".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt index e5698a1..cd4fdff 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt @@ -1,7 +1,6 @@ package com.casic.app.smartwell.view import android.text.Editable -import android.text.TextUtils import android.text.TextWatcher import android.view.KeyEvent import android.view.inputmethod.EditorInfo @@ -67,13 +66,13 @@ false } loginButton.setOnClickListener { - val account = userNameView.text.toString() - val userPassword = userPasswordView.text.toString() - if (TextUtils.isEmpty(account)) { + val account = userNameView.text.toString().trim() + val userPassword = userPasswordView.text.toString().trim() + if (account.isBlank()) { "用户名不能为空".show(this) return@setOnClickListener } - if (TextUtils.isEmpty(userPassword)) { + if (userPassword.isBlank()) { "密码不能为空".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt new file mode 100644 index 0000000..453a2c9 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt @@ -0,0 +1,21 @@ +package com.casic.app.smartwell.view + +import com.casic.app.smartwell.R +import com.casic.app.smartwell.base.BaseActivity + +class OvertimeOrderActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_order_overtime + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt new file mode 100644 index 0000000..8228673 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt @@ -0,0 +1,129 @@ +package com.casic.app.smartwell.view + +import android.os.Handler +import android.os.Looper +import android.os.Message +import android.view.View +import androidx.lifecycle.ViewModelProvider +import com.casic.app.smartwell.R +import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage +import com.casic.app.smartwell.model.SearchResultModel +import com.casic.app.smartwell.utils.Constant +import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.vm.SearchOrderViewModel +import kotlinx.android.synthetic.main.activity_order_search_result.* +import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* +import java.lang.ref.WeakReference + +class SearchResultActivity : BaseActivity() { + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var searchOrderViewModel: SearchOrderViewModel + private lateinit var args: ArrayList + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initLayoutView(): Int = R.layout.activity_order_search_result + + override fun setupTopBarLayout() { + titleView.text = "查询结果" + leftBackView.visibility = View.VISIBLE + leftBackView.setOnClickListener { finish() } + } + + override fun initData() { + args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! + weakReferenceHandler = WeakReferenceHandler(this) + searchOrderViewModel = ViewModelProvider(this).get(SearchOrderViewModel::class.java) + } + + override fun initEvent() { + obtainSearchResult(args, pageIndex) + searchOrderViewModel.listModel.observe(this, { + if (it.code == 200) { + val dataRows = it.data?.rows + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows!! + resultRefreshLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows?.size == 0) { + "到底了,别拉了".show(this) + } + dataBeans.addAll(dataRows!!) + resultRefreshLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows!! + } + } + weakReferenceHandler.sendEmptyMessage(2022040101) + } + }) + searchOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } + }) + resultRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainSearchResult(args, pageIndex) + } + resultRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainSearchResult(args, pageIndex) + } + } + + private fun obtainSearchResult(args: ArrayList, pageIndex: Int) { + searchOrderViewModel.obtainSearchResult( + keywords = args[0], + alarmContent = args[1], + alarmLevel = args[2], + jobStatus = args[3], + beginTime = args[4], + endTime = args[5], + page = pageIndex + ) + } + + private class WeakReferenceHandler(activity: SearchResultActivity) : + Handler(Looper.getMainLooper()) { + private val reference: WeakReference = WeakReference(activity) + + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val activity = reference.get()!! + if (msg.what == 2022040101) { + if (activity.isRefresh || activity.isLoadMore) { +// activity.wellOperationAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (activity.dataBeans.size == 0) { + activity.emptyView!!.showEmptyPage { + activity.obtainSearchResult(activity.args, activity.pageIndex) + } + } else { + activity.emptyView!!.hide() + } + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt index af88541..dc68caa 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt @@ -1,15 +1,12 @@ package com.casic.app.smartwell.view -import android.content.Context import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.base.BaseActivity -import com.casic.app.smartwell.extensions.show -import com.casic.app.smartwell.extensions.timestampToDate +import com.casic.app.smartwell.extensions.* import com.casic.app.smartwell.model.AlarmContentTypeModel import com.casic.app.smartwell.model.OrderStatusModel import com.casic.app.smartwell.utils.Constant @@ -25,13 +22,16 @@ class SearchWorkOrderActivity : BaseActivity() { - private val kTag = "SearchWorkOrderActivity" private lateinit var contentTypeViewModel: AlarmContentTypeViewModel private lateinit var orderStatusViewModel: OrderStatusViewModel private lateinit var inflater: LayoutInflater - private var alarmTypeModels: MutableList = ArrayList() + private lateinit var contentTypeAdapter: TagAdapter + private lateinit var orderStatusAdapter: TagAdapter + private var contentModels: MutableList = ArrayList() private var orderStatusModels: MutableList = ArrayList() - private val context: Context = this@SearchWorkOrderActivity + private var alarmContentType = "" + private var alarmLevel = "" + private var orderState = "" override fun initLayoutView(): Int = R.layout.activity_order_search @@ -45,7 +45,6 @@ inflater = LayoutInflater.from(this) //告警内容 contentTypeViewModel = ViewModelProvider(this).get(AlarmContentTypeViewModel::class.java) - //工单状态 orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java) } @@ -65,11 +64,10 @@ } else { bean = dataBean } - alarmTypeModels.add(bean) + contentModels.add(bean) } - - alarmContentLayout.adapter = - object : TagAdapter(alarmTypeModels) { + contentTypeAdapter = + object : TagAdapter(contentModels) { override fun getView( parent: FlowLayout?, position: Int, bean: AlarmContentTypeModel.DataBean.ListBean? @@ -78,19 +76,46 @@ R.layout.item_tag_flowlayout, orderStatusLayout, false ) as TextView - tagView.text = alarmTypeModels[position].name + tagView.text = contentModels[position].name return tagView } } - + alarmContentLayout.adapter = contentTypeAdapter + contentTypeAdapter.setSelectedList(0) alarmContentLayout.setOnTagClickListener { _, position, _ -> - //TODO - alarmTypeModels[position].name!!.show(context) + this.alarmContentType = contentModels[position].value.toString() true } } }) + val levelMaps: MutableList> = ArrayList() + for (i in 0..3) { + val map = HashMap() + map["name"] = i.toString().toChinese() + map["value"] = i.toLevel() + levelMaps.add(map) + } + val levelAdapter = object : TagAdapter>(levelMaps) { + override fun getView( + parent: FlowLayout?, + position: Int, map: Map? + ): View { + val tagView = inflater.inflate( + R.layout.item_tag_flowlayout, + orderStatusLayout, false + ) as TextView + tagView.text = levelMaps[position]["name"] + return tagView + } + } + alarmLevelLayout.adapter = levelAdapter + levelAdapter.setSelectedList(0) + alarmLevelLayout.setOnTagClickListener { _, position, _ -> + this.alarmLevel = levelMaps[position]["value"].toString() + true + } + orderStatusViewModel.obtainOrderStatus() orderStatusViewModel.listModel.observe(this, { if (it.code == 200) { @@ -106,8 +131,7 @@ } orderStatusModels.add(bean) } - - orderStatusLayout.adapter = + orderStatusAdapter = object : TagAdapter(orderStatusModels) { override fun getView( parent: FlowLayout?, @@ -121,18 +145,18 @@ return tagView } } - + orderStatusLayout.adapter = orderStatusAdapter + orderStatusAdapter.setSelectedList(0) orderStatusLayout.setOnTagClickListener { _, position, _ -> - //TODO - orderStatusModels[position].name!!.show(context) + this.orderState = orderStatusModels[position].value.toString() true } } }) - selectStartTimeView.setOnClickListener { + startTimeView.setOnClickListener { TimePickerDialog.Builder() - .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setThemeColor(R.color.mainThemeColor.convertColor(this)) .setTitleStringId("请选择开始时间") .setWheelItemTextSize(16) .setCyclic(false) @@ -140,13 +164,13 @@ .setMaxMillseconds(System.currentTimeMillis()) .setType(Type.YEAR_MONTH_DAY) .setCallBack { _: TimePickerDialog?, millSeconds: Long -> - selectStartTimeView.text = millSeconds.timestampToDate() + startTimeView.text = millSeconds.timestampToDate() }.build().show(supportFragmentManager, "year_month_day") } - selectEndTimeView.setOnClickListener { + endTimeView.setOnClickListener { TimePickerDialog.Builder() - .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setThemeColor(R.color.mainThemeColor.convertColor(this)) .setTitleStringId("请选择结束时间") .setWheelItemTextSize(16) .setCyclic(false) @@ -154,18 +178,42 @@ .setMaxMillseconds(System.currentTimeMillis()) .setType(Type.YEAR_MONTH_DAY) .setCallBack { _: TimePickerDialog?, millSeconds: Long -> - selectEndTimeView.text = millSeconds.timestampToDate() + if (millSeconds.isEarlierThanStart(startTimeView.text.toString())) { + "结束时间不合法,不能早于开始时间".show(this) + return@setCallBack + } + endTimeView.text = millSeconds.timestampToDate() }.build().show(supportFragmentManager, "year_month_day") } searchButton.setChangeAlphaWhenPress(true) searchButton.setOnClickListener { - + val wellCode = wellCodeView.text.toString().trim() + if (wellCode.isBlank()) { + "请输入窨井编号".show(this) + return@setOnClickListener + } + //页面跳转,将查询参数传过去 + navigatePageTo( + SearchResultActivity::class.java, addAll( + wellCode, + alarmContentType, + alarmLevel, + orderState, + startTimeView.text.toString(), + endTimeView.text.toString() + ) + ) } clearButton.setChangeAlphaWhenPress(true) clearButton.setOnClickListener { - + wellCodeView.text.clear() + contentTypeAdapter.setSelectedList(0) + levelAdapter.setSelectedList(0) + orderStatusAdapter.setSelectedList(0) + startTimeView.text = "" + endTimeView.text = "" } } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt index e907ca4..e0cc32f 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt @@ -15,6 +15,7 @@ import com.casic.app.smartwell.base.BaseActivity import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.extensions.showRouteOnMap import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel @@ -23,6 +24,7 @@ import com.casic.app.smartwell.widgets.EasyPopupWindow import kotlinx.android.synthetic.main.activity_well_management.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* import kotlinx.android.synthetic.main.include_search_bar.* import java.lang.ref.WeakReference @@ -168,7 +170,13 @@ activity.wellListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (activity.dataBeans.size == 0) { - activity.emptyView!!.show("抱歉,无法查询到相关记录", null) + activity.emptyView!!.showEmptyPage { + activity.obtainWellList( + activity.keywords, + activity.wellType, + activity.pageIndex + ) + } } else { activity.emptyView!!.hide() activity.wellListAdapter = WellListAdapter(activity, activity.dataBeans) diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt index 1259b72..2137a40 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt @@ -6,12 +6,14 @@ import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.SensorListAdapter import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.utils.DialogHelper import com.casic.app.smartwell.utils.LoadState import com.casic.app.smartwell.vm.WellMonitorViewModel import kotlinx.android.synthetic.main.activity_well_monitor.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* class WellMonitorActivity : BaseActivity() { @@ -36,7 +38,9 @@ wellMonitorViewModel.monitorModel.observe(this, { if (it.code == 200) { if (it.data?.size == 0) { - emptyView!!.show("该井下无设备,或设备已离线,请检查", null) + emptyView!!.showEmptyPage("抱歉,该井下无设备,或设备已离线") { + wellMonitorViewModel.obtainMonitorResult(id = wellId) + } } else { emptyView!!.hide() val sensorListAdapter = SensorListAdapter(this, it.data!!) 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 c6cbe78..0121426 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 @@ -15,6 +15,7 @@ import com.casic.app.smartwell.base.BaseActivity import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.extensions.showRouteOnMap import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel @@ -27,6 +28,7 @@ import com.pengxh.app.multilib.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.activity_well_operation.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* import kotlinx.android.synthetic.main.include_search_bar.* import java.lang.ref.WeakReference @@ -204,7 +206,13 @@ activity.wellOperationAdapter.notifyDataSetChanged() } else { //首次加载数据 if (activity.dataBeans.size == 0) { - activity.emptyView!!.show("抱歉,无法查询到相关记录", null) + activity.emptyView!!.showEmptyPage { + activity.obtainWellList( + activity.keywords, + activity.wellType, + activity.pageIndex + ) + } } else { activity.emptyView!!.hide() activity.wellOperationAdapter = 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 c9ca964..d7d8269 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 @@ -10,6 +10,7 @@ import com.casic.app.smartwell.adapter.CompletedOrderAdapter import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.CompletedDetailActivity @@ -18,6 +19,7 @@ import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_completed.* +import kotlinx.android.synthetic.main.include_empty_view.* import java.lang.ref.WeakReference class CompletedOrderFragment : BaseFragment() { @@ -126,7 +128,9 @@ fragment.completedAdapter.notifyDataSetChanged() } else { if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("您还没有处理完成过任何工单", null) + fragment.emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { + fragment.obtainWorkOrderList(fragment.pageIndex) + } } else { fragment.emptyView!!.hide() fragment.completedAdapter = CompletedOrderAdapter( diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt index 1b4126e..04654dc 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt @@ -5,6 +5,7 @@ import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.navigatePageTo +import com.casic.app.smartwell.view.OvertimeOrderActivity import com.casic.app.smartwell.view.WellManagementActivity import com.casic.app.smartwell.view.WellOperationActivity import com.casic.app.smartwell.vm.WellCountViewModel @@ -24,14 +25,15 @@ titleView.text = "首页" //首页功能块 val homeRecycleAdapter = HomeRecycleAdapter(requireContext()) - homeRecyclerView.layoutManager = GridLayoutManager(requireContext(), 2) + homeRecyclerView.layoutManager = GridLayoutManager(requireContext(), 3) homeRecyclerView.adapter = homeRecycleAdapter homeRecycleAdapter.setOnGridItemClickListener(object : HomeRecycleAdapter.OnGridItemClickListener { override fun onClick(position: Int) { when (position) { 0 -> requireContext().navigatePageTo(WellManagementActivity::class.java) - 1 -> requireContext().navigatePageTo(WellOperationActivity::class.java) + 1 -> requireContext().navigatePageTo(OvertimeOrderActivity::class.java) + 2 -> requireContext().navigatePageTo(WellOperationActivity::class.java) } } }) diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt index d4791bf..cafc40f 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt @@ -10,6 +10,7 @@ import com.casic.app.smartwell.adapter.InHandleOrderAdapter import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.InHandleDetailActivity @@ -18,6 +19,7 @@ import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_inhandle.* +import kotlinx.android.synthetic.main.include_empty_view.* import java.lang.ref.WeakReference class InHandleOrderFragment : BaseFragment() { @@ -126,7 +128,9 @@ fragment.inHandleAdapter.notifyDataSetChanged() } else { //首次加载数据 if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("真不错,您已经处理完所有工单", null) + fragment.emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + fragment.obtainWorkOrderList(fragment.pageIndex) + } } else { fragment.emptyView!!.hide() fragment.inHandleAdapter = InHandleOrderAdapter( 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 780c1da..47a4c9a 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 @@ -10,6 +10,7 @@ import com.casic.app.smartwell.adapter.TodoWorkOrderListAdapter import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.utils.DialogHelper @@ -20,6 +21,7 @@ import com.pengxh.app.multilib.base.BaseFragment import com.pengxh.app.multilib.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.fragment_order_todo.* +import kotlinx.android.synthetic.main.include_empty_view.* import java.lang.ref.WeakReference class TodoOrderFragment : BaseFragment() { @@ -135,7 +137,9 @@ fragment.workOrderListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("没有需要您处理的工单", null) + fragment.emptyView!!.showEmptyPage("没有需要您处理的工单") { + fragment.obtainWorkOrderList(fragment.pageIndex) + } } else { fragment.emptyView!!.hide() fragment.workOrderListAdapter = TodoWorkOrderListAdapter( diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt index 5e79db6..a8560d5 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt @@ -10,6 +10,7 @@ import com.casic.app.smartwell.adapter.UndeterminedOrderAdapter import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.DetermineDetailActivity @@ -18,6 +19,7 @@ import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_undetermined.* +import kotlinx.android.synthetic.main.include_empty_view.* import java.lang.ref.WeakReference class UndeterminedOrderFragment : BaseFragment() { @@ -126,7 +128,9 @@ fragment.undeterminedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("没有需要您确认的工单", null) + fragment.emptyView!!.showEmptyPage("没有需要您确认的工单") { + fragment.obtainWorkOrderList(fragment.pageIndex) + } } else { fragment.emptyView!!.hide() fragment.undeterminedAdapter = UndeterminedOrderAdapter( diff --git a/app/src/main/java/com/casic/app/smartwell/vm/SearchOrderViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/SearchOrderViewModel.kt new file mode 100644 index 0000000..ee0149f --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/vm/SearchOrderViewModel.kt @@ -0,0 +1,31 @@ +package com.casic.app.smartwell.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.app.smartwell.base.BaseViewModel +import com.casic.app.smartwell.extensions.launch +import com.casic.app.smartwell.model.SearchResultModel +import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager + +class SearchOrderViewModel : BaseViewModel() { + + val listModel = MutableLiveData() + + fun obtainSearchResult( + keywords: String?, + alarmContent: String?, + alarmLevel: String?, + jobStatus: String?, + beginTime: String?, + endTime: String?, + page: Int + ) = launch({ + loadState.value = LoadState.Loading + listModel.value = RetrofitServiceManager.obtainSearchResult( + keywords, alarmContent, alarmLevel, jobStatus, beginTime, endTime, page + ) + loadState.value = LoadState.Success + }, { + loadState.value = LoadState.Fail + }) +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_order_overtime.xml b/app/src/main/res/layout/activity_order_overtime.xml new file mode 100644 index 0000000..d829e29 --- /dev/null +++ b/app/src/main/res/layout/activity_order_overtime.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_order_search.xml b/app/src/main/res/layout/activity_order_search.xml index 74b898c..33187af 100644 --- a/app/src/main/res/layout/activity_order_search.xml +++ b/app/src/main/res/layout/activity_order_search.xml @@ -10,152 +10,156 @@ - + android:layout_height="wrap_content"> + android:layout_height="wrap_content" + android:layout_margin="@dimen/dp_10" + android:background="@drawable/bg_layout" + android:orientation="vertical"> - - - + + + + + + + + + + + - + android:textSize="@dimen/titleFontSize" /> - - - - - - - - - - - - - - - - - + + - + android:textSize="@dimen/titleFontSize" /> - - - - - + app:max_select="1" /> + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_order_search_result.xml b/app/src/main/res/layout/activity_order_search_result.xml new file mode 100644 index 0000000..c6512d5 --- /dev/null +++ b/app/src/main/res/layout/activity_order_search_result.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_well_management.xml b/app/src/main/res/layout/activity_well_management.xml index 06c9434..819d37f 100644 --- a/app/src/main/res/layout/activity_well_management.xml +++ b/app/src/main/res/layout/activity_well_management.xml @@ -11,10 +11,7 @@ - + - + - + - + - + - + - + + \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e45158c..7460cc2 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -45,7 +45,9 @@ + + diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt index cba0198..e7ec8d8 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ImageRecyclerViewAdapter.kt @@ -25,7 +25,7 @@ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { val imageView = ImageView(context) val layoutWidth: Int = - SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 20f) + SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f) val margins: Int = QMUIDisplayHelper.dp2px(context, 3) val itemSize = (layoutWidth - 6 * margins) / 3 val params = LinearLayout.LayoutParams(itemSize, itemSize) diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt index 7780aaa..ad90885 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/ArrayList.kt @@ -17,4 +17,12 @@ } } return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt index de1c6c1..84ae8a8 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Context.kt @@ -33,10 +33,16 @@ startActivity(intent) } +fun Context.navigatePageTo(clazz: Class, values: ArrayList) { + val intent = Intent(this, clazz) + intent.putStringArrayListExtra(Constant.INTENT_PARAM, values) + startActivity(intent) +} + fun Context.navigatePageTo( clazz: Class, index: Int, - imageList: ArrayList? + imageList: ArrayList ) { val intent = Intent(this, clazz) intent.putExtra("index", index) 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 5f9ce7c..8ed51f4 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 @@ -23,4 +23,12 @@ "未知类型" } } +} + +fun Int.toLevel(): String { + return if (this == 0) { + "" + } else { + this.toString() + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt index ee3685d..3bc5d96 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt @@ -1,6 +1,20 @@ package com.casic.app.smartwell.extensions +import java.text.ParseException import java.text.SimpleDateFormat import java.util.* -fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) \ No newline at end of file +fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) + +fun Long.isEarlierThanStart(date: String): Boolean { + if (date.isBlank()) { + return false + } + val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA) + try { + return this < dateFormat.parse(date)!!.time + } catch (e: ParseException) { + + } + return true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt new file mode 100644 index 0000000..bd9cfa7 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/QMUIEmptyView.kt @@ -0,0 +1,12 @@ +package com.casic.app.smartwell.extensions + +import android.view.View +import com.qmuiteam.qmui.widget.QMUIEmptyView + +fun QMUIEmptyView.showEmptyPage(onButtonClickListener: View.OnClickListener) { + this.show(false, "抱歉,无法查询到相关记录", null, "重试", onButtonClickListener) +} + +fun QMUIEmptyView.showEmptyPage(title: String, onButtonClickListener: View.OnClickListener) { + this.show(false, title, null, "刷新", onButtonClickListener) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt index 7358b1c..2cdd63d 100644 --- a/app/src/main/java/com/casic/app/smartwell/extensions/String.kt +++ b/app/src/main/java/com/casic/app/smartwell/extensions/String.kt @@ -60,6 +60,7 @@ //窨井类型转换 fun String.toChinese(): String { return when (this) { + "0" -> "全部" "1" -> "一级" "2" -> "二级" "3" -> "三级" diff --git a/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt b/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt new file mode 100644 index 0000000..af7fd13 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/SearchResultModel.kt @@ -0,0 +1,52 @@ +package com.casic.app.smartwell.model + +class SearchResultModel { + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var rows: MutableList? = null + var total = 0 + + class RowsBean { + var alarmContent = 0 + var deptName: String? = null + var jobStatus: String? = null + var handleJobPerson: String? = null + var alarmContentName: String? = null + var shouldGetTime: String? = null + var wellCode: String? = null + var deptid: String? = null + var alarmTypeName: String? = null + var jobCode: String? = null + var jobBelongTo: String? = null + var jobFlag: String? = null + var confirmJobPerson: String? = null + var confirmJobTime: String? = null + var jobStatusName: String? = null + var alarmValue: String? = null + var alarmId: String? = null + var alarmLevel: String? = null + var handleJobTime: String? = null + var tel: String? = null + var id: String? = null + var wellId: String? = null + var jobType: String? = null + var editable = 0 + var alarmTime: String? = null + var alarmMessage: String? = null + var staff: String? = null + var getJobTime: String? = null + var getJobPerson: String? = null + var shouldHandleTime: String? = null + var jobId: String? = null + var alarmType: String? = null + var alarmStatus: String? = null + var devcode: String? = null + var createTime: String? = null + var position: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index fd4e603..c342334 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -41,7 +41,7 @@ const val USER_DETAIL_MODEL = "userDetailModel" const val INTENT_PARAM = "intentParam" - val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher) - val HOME_ITEMS = arrayOf("闸井管理", "布防撤防") + val HOME_ICONS = arrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher) + val HOME_ITEMS = arrayOf("闸井管理", "超时工单", "布防撤防") val SUB_PAGE_TITLES = arrayOf("待处理", "待确认", "处理中", "已完成") } \ 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 9c34038..7a5ca39 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 @@ -234,6 +234,22 @@ ): OrderStatusModel /** + * 查询工单 + * */ + @GET("/job/searchList") + suspend fun obtainSearchResult( + @Header("token") token: String, + @Query("keywords") keywords: String?, + @Query("alarmContent") alarmContent: String?, + @Query("alarmLevel") alarmLevel: String?, + @Query("jobStatus") jobStatus: String?, + @Query("beginTime") beginTime: String?, + @Query("endTime") endTime: String?, + @Query("limit") limit: Int, + @Query("offset") offset: Int + ): SearchResultModel + + /** * 获取用户信息 */ @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 a7106b5..945f6a3 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 @@ -175,6 +175,31 @@ } /** + * 查询工单 + */ + suspend fun obtainSearchResult( + keywords: String?, + alarmContent: String?, + alarmLevel: String?, + jobStatus: String?, + beginTime: String?, + endTime: String?, + page: Int + ): SearchResultModel { + return api.obtainSearchResult( + AuthenticationHelper.token!!, + keywords, + alarmContent, + alarmLevel, + jobStatus, + beginTime, + endTime, + Constant.PAGE_LIMIT, + page + ) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): String { diff --git a/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt index cfc4e0f..45af48a 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/CompletedDetailActivity.kt @@ -98,7 +98,7 @@ imageRecyclerView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() - val imageArray = orderDetail.firstStatePhotos.toString().split(";") + val imageArray = orderDetail.firstStatePhotos.toString().split(",") imageArray.forEach { path -> if (path != "") { urls.add(path.combineImagePath()) diff --git a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt index 1a3e670..36075bd 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/DetermineDetailActivity.kt @@ -197,7 +197,7 @@ return@setOnClickListener } val state = sceneEditView.text.toString().trim() - if (state == "") { + if (state.isBlank()) { "请输入现场情况".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt index b7a51ce..97e1f59 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/InHandleDetailActivity.kt @@ -161,7 +161,7 @@ imageRecyclerView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() - val imageArray = orderDetail.firstStatePhotos.toString().split(";") + val imageArray = orderDetail.firstStatePhotos.toString().split(",") imageArray.forEach { path -> if (path != "") { urls.add(path.combineImagePath()) @@ -247,7 +247,7 @@ return@setOnClickListener } val state = sceneEditView.text.toString().trim() - if (state == "") { + if (state.isBlank()) { "请输入维护情况".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt index e5698a1..cd4fdff 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt @@ -1,7 +1,6 @@ package com.casic.app.smartwell.view import android.text.Editable -import android.text.TextUtils import android.text.TextWatcher import android.view.KeyEvent import android.view.inputmethod.EditorInfo @@ -67,13 +66,13 @@ false } loginButton.setOnClickListener { - val account = userNameView.text.toString() - val userPassword = userPasswordView.text.toString() - if (TextUtils.isEmpty(account)) { + val account = userNameView.text.toString().trim() + val userPassword = userPasswordView.text.toString().trim() + if (account.isBlank()) { "用户名不能为空".show(this) return@setOnClickListener } - if (TextUtils.isEmpty(userPassword)) { + if (userPassword.isBlank()) { "密码不能为空".show(this) return@setOnClickListener } diff --git a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt new file mode 100644 index 0000000..453a2c9 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt @@ -0,0 +1,21 @@ +package com.casic.app.smartwell.view + +import com.casic.app.smartwell.R +import com.casic.app.smartwell.base.BaseActivity + +class OvertimeOrderActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_order_overtime + + override fun setupTopBarLayout() { + + } + + override fun initData() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt new file mode 100644 index 0000000..8228673 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt @@ -0,0 +1,129 @@ +package com.casic.app.smartwell.view + +import android.os.Handler +import android.os.Looper +import android.os.Message +import android.view.View +import androidx.lifecycle.ViewModelProvider +import com.casic.app.smartwell.R +import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage +import com.casic.app.smartwell.model.SearchResultModel +import com.casic.app.smartwell.utils.Constant +import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.vm.SearchOrderViewModel +import kotlinx.android.synthetic.main.activity_order_search_result.* +import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* +import java.lang.ref.WeakReference + +class SearchResultActivity : BaseActivity() { + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var searchOrderViewModel: SearchOrderViewModel + private lateinit var args: ArrayList + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initLayoutView(): Int = R.layout.activity_order_search_result + + override fun setupTopBarLayout() { + titleView.text = "查询结果" + leftBackView.visibility = View.VISIBLE + leftBackView.setOnClickListener { finish() } + } + + override fun initData() { + args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! + weakReferenceHandler = WeakReferenceHandler(this) + searchOrderViewModel = ViewModelProvider(this).get(SearchOrderViewModel::class.java) + } + + override fun initEvent() { + obtainSearchResult(args, pageIndex) + searchOrderViewModel.listModel.observe(this, { + if (it.code == 200) { + val dataRows = it.data?.rows + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows!! + resultRefreshLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows?.size == 0) { + "到底了,别拉了".show(this) + } + dataBeans.addAll(dataRows!!) + resultRefreshLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows!! + } + } + weakReferenceHandler.sendEmptyMessage(2022040101) + } + }) + searchOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + } + else -> { + DialogHelper.dismissLoadingDialog() + } + } + }) + resultRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainSearchResult(args, pageIndex) + } + resultRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainSearchResult(args, pageIndex) + } + } + + private fun obtainSearchResult(args: ArrayList, pageIndex: Int) { + searchOrderViewModel.obtainSearchResult( + keywords = args[0], + alarmContent = args[1], + alarmLevel = args[2], + jobStatus = args[3], + beginTime = args[4], + endTime = args[5], + page = pageIndex + ) + } + + private class WeakReferenceHandler(activity: SearchResultActivity) : + Handler(Looper.getMainLooper()) { + private val reference: WeakReference = WeakReference(activity) + + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val activity = reference.get()!! + if (msg.what == 2022040101) { + if (activity.isRefresh || activity.isLoadMore) { +// activity.wellOperationAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (activity.dataBeans.size == 0) { + activity.emptyView!!.showEmptyPage { + activity.obtainSearchResult(activity.args, activity.pageIndex) + } + } else { + activity.emptyView!!.hide() + } + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt index af88541..dc68caa 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt @@ -1,15 +1,12 @@ package com.casic.app.smartwell.view -import android.content.Context import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.base.BaseActivity -import com.casic.app.smartwell.extensions.show -import com.casic.app.smartwell.extensions.timestampToDate +import com.casic.app.smartwell.extensions.* import com.casic.app.smartwell.model.AlarmContentTypeModel import com.casic.app.smartwell.model.OrderStatusModel import com.casic.app.smartwell.utils.Constant @@ -25,13 +22,16 @@ class SearchWorkOrderActivity : BaseActivity() { - private val kTag = "SearchWorkOrderActivity" private lateinit var contentTypeViewModel: AlarmContentTypeViewModel private lateinit var orderStatusViewModel: OrderStatusViewModel private lateinit var inflater: LayoutInflater - private var alarmTypeModels: MutableList = ArrayList() + private lateinit var contentTypeAdapter: TagAdapter + private lateinit var orderStatusAdapter: TagAdapter + private var contentModels: MutableList = ArrayList() private var orderStatusModels: MutableList = ArrayList() - private val context: Context = this@SearchWorkOrderActivity + private var alarmContentType = "" + private var alarmLevel = "" + private var orderState = "" override fun initLayoutView(): Int = R.layout.activity_order_search @@ -45,7 +45,6 @@ inflater = LayoutInflater.from(this) //告警内容 contentTypeViewModel = ViewModelProvider(this).get(AlarmContentTypeViewModel::class.java) - //工单状态 orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java) } @@ -65,11 +64,10 @@ } else { bean = dataBean } - alarmTypeModels.add(bean) + contentModels.add(bean) } - - alarmContentLayout.adapter = - object : TagAdapter(alarmTypeModels) { + contentTypeAdapter = + object : TagAdapter(contentModels) { override fun getView( parent: FlowLayout?, position: Int, bean: AlarmContentTypeModel.DataBean.ListBean? @@ -78,19 +76,46 @@ R.layout.item_tag_flowlayout, orderStatusLayout, false ) as TextView - tagView.text = alarmTypeModels[position].name + tagView.text = contentModels[position].name return tagView } } - + alarmContentLayout.adapter = contentTypeAdapter + contentTypeAdapter.setSelectedList(0) alarmContentLayout.setOnTagClickListener { _, position, _ -> - //TODO - alarmTypeModels[position].name!!.show(context) + this.alarmContentType = contentModels[position].value.toString() true } } }) + val levelMaps: MutableList> = ArrayList() + for (i in 0..3) { + val map = HashMap() + map["name"] = i.toString().toChinese() + map["value"] = i.toLevel() + levelMaps.add(map) + } + val levelAdapter = object : TagAdapter>(levelMaps) { + override fun getView( + parent: FlowLayout?, + position: Int, map: Map? + ): View { + val tagView = inflater.inflate( + R.layout.item_tag_flowlayout, + orderStatusLayout, false + ) as TextView + tagView.text = levelMaps[position]["name"] + return tagView + } + } + alarmLevelLayout.adapter = levelAdapter + levelAdapter.setSelectedList(0) + alarmLevelLayout.setOnTagClickListener { _, position, _ -> + this.alarmLevel = levelMaps[position]["value"].toString() + true + } + orderStatusViewModel.obtainOrderStatus() orderStatusViewModel.listModel.observe(this, { if (it.code == 200) { @@ -106,8 +131,7 @@ } orderStatusModels.add(bean) } - - orderStatusLayout.adapter = + orderStatusAdapter = object : TagAdapter(orderStatusModels) { override fun getView( parent: FlowLayout?, @@ -121,18 +145,18 @@ return tagView } } - + orderStatusLayout.adapter = orderStatusAdapter + orderStatusAdapter.setSelectedList(0) orderStatusLayout.setOnTagClickListener { _, position, _ -> - //TODO - orderStatusModels[position].name!!.show(context) + this.orderState = orderStatusModels[position].value.toString() true } } }) - selectStartTimeView.setOnClickListener { + startTimeView.setOnClickListener { TimePickerDialog.Builder() - .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setThemeColor(R.color.mainThemeColor.convertColor(this)) .setTitleStringId("请选择开始时间") .setWheelItemTextSize(16) .setCyclic(false) @@ -140,13 +164,13 @@ .setMaxMillseconds(System.currentTimeMillis()) .setType(Type.YEAR_MONTH_DAY) .setCallBack { _: TimePickerDialog?, millSeconds: Long -> - selectStartTimeView.text = millSeconds.timestampToDate() + startTimeView.text = millSeconds.timestampToDate() }.build().show(supportFragmentManager, "year_month_day") } - selectEndTimeView.setOnClickListener { + endTimeView.setOnClickListener { TimePickerDialog.Builder() - .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setThemeColor(R.color.mainThemeColor.convertColor(this)) .setTitleStringId("请选择结束时间") .setWheelItemTextSize(16) .setCyclic(false) @@ -154,18 +178,42 @@ .setMaxMillseconds(System.currentTimeMillis()) .setType(Type.YEAR_MONTH_DAY) .setCallBack { _: TimePickerDialog?, millSeconds: Long -> - selectEndTimeView.text = millSeconds.timestampToDate() + if (millSeconds.isEarlierThanStart(startTimeView.text.toString())) { + "结束时间不合法,不能早于开始时间".show(this) + return@setCallBack + } + endTimeView.text = millSeconds.timestampToDate() }.build().show(supportFragmentManager, "year_month_day") } searchButton.setChangeAlphaWhenPress(true) searchButton.setOnClickListener { - + val wellCode = wellCodeView.text.toString().trim() + if (wellCode.isBlank()) { + "请输入窨井编号".show(this) + return@setOnClickListener + } + //页面跳转,将查询参数传过去 + navigatePageTo( + SearchResultActivity::class.java, addAll( + wellCode, + alarmContentType, + alarmLevel, + orderState, + startTimeView.text.toString(), + endTimeView.text.toString() + ) + ) } clearButton.setChangeAlphaWhenPress(true) clearButton.setOnClickListener { - + wellCodeView.text.clear() + contentTypeAdapter.setSelectedList(0) + levelAdapter.setSelectedList(0) + orderStatusAdapter.setSelectedList(0) + startTimeView.text = "" + endTimeView.text = "" } } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt index e907ca4..e0cc32f 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt @@ -15,6 +15,7 @@ import com.casic.app.smartwell.base.BaseActivity import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.extensions.showRouteOnMap import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel @@ -23,6 +24,7 @@ import com.casic.app.smartwell.widgets.EasyPopupWindow import kotlinx.android.synthetic.main.activity_well_management.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* import kotlinx.android.synthetic.main.include_search_bar.* import java.lang.ref.WeakReference @@ -168,7 +170,13 @@ activity.wellListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (activity.dataBeans.size == 0) { - activity.emptyView!!.show("抱歉,无法查询到相关记录", null) + activity.emptyView!!.showEmptyPage { + activity.obtainWellList( + activity.keywords, + activity.wellType, + activity.pageIndex + ) + } } else { activity.emptyView!!.hide() activity.wellListAdapter = WellListAdapter(activity, activity.dataBeans) diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt index 1259b72..2137a40 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt @@ -6,12 +6,14 @@ import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.SensorListAdapter import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.utils.DialogHelper import com.casic.app.smartwell.utils.LoadState import com.casic.app.smartwell.vm.WellMonitorViewModel import kotlinx.android.synthetic.main.activity_well_monitor.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* class WellMonitorActivity : BaseActivity() { @@ -36,7 +38,9 @@ wellMonitorViewModel.monitorModel.observe(this, { if (it.code == 200) { if (it.data?.size == 0) { - emptyView!!.show("该井下无设备,或设备已离线,请检查", null) + emptyView!!.showEmptyPage("抱歉,该井下无设备,或设备已离线") { + wellMonitorViewModel.obtainMonitorResult(id = wellId) + } } else { emptyView!!.hide() val sensorListAdapter = SensorListAdapter(this, it.data!!) 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 c6cbe78..0121426 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 @@ -15,6 +15,7 @@ import com.casic.app.smartwell.base.BaseActivity import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.extensions.showRouteOnMap import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel @@ -27,6 +28,7 @@ import com.pengxh.app.multilib.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.activity_well_operation.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* import kotlinx.android.synthetic.main.include_search_bar.* import java.lang.ref.WeakReference @@ -204,7 +206,13 @@ activity.wellOperationAdapter.notifyDataSetChanged() } else { //首次加载数据 if (activity.dataBeans.size == 0) { - activity.emptyView!!.show("抱歉,无法查询到相关记录", null) + activity.emptyView!!.showEmptyPage { + activity.obtainWellList( + activity.keywords, + activity.wellType, + activity.pageIndex + ) + } } else { activity.emptyView!!.hide() activity.wellOperationAdapter = 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 c9ca964..d7d8269 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 @@ -10,6 +10,7 @@ import com.casic.app.smartwell.adapter.CompletedOrderAdapter import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.CompletedDetailActivity @@ -18,6 +19,7 @@ import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_completed.* +import kotlinx.android.synthetic.main.include_empty_view.* import java.lang.ref.WeakReference class CompletedOrderFragment : BaseFragment() { @@ -126,7 +128,9 @@ fragment.completedAdapter.notifyDataSetChanged() } else { if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("您还没有处理完成过任何工单", null) + fragment.emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { + fragment.obtainWorkOrderList(fragment.pageIndex) + } } else { fragment.emptyView!!.hide() fragment.completedAdapter = CompletedOrderAdapter( diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt index 1b4126e..04654dc 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/HomePageFragment.kt @@ -5,6 +5,7 @@ import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.navigatePageTo +import com.casic.app.smartwell.view.OvertimeOrderActivity import com.casic.app.smartwell.view.WellManagementActivity import com.casic.app.smartwell.view.WellOperationActivity import com.casic.app.smartwell.vm.WellCountViewModel @@ -24,14 +25,15 @@ titleView.text = "首页" //首页功能块 val homeRecycleAdapter = HomeRecycleAdapter(requireContext()) - homeRecyclerView.layoutManager = GridLayoutManager(requireContext(), 2) + homeRecyclerView.layoutManager = GridLayoutManager(requireContext(), 3) homeRecyclerView.adapter = homeRecycleAdapter homeRecycleAdapter.setOnGridItemClickListener(object : HomeRecycleAdapter.OnGridItemClickListener { override fun onClick(position: Int) { when (position) { 0 -> requireContext().navigatePageTo(WellManagementActivity::class.java) - 1 -> requireContext().navigatePageTo(WellOperationActivity::class.java) + 1 -> requireContext().navigatePageTo(OvertimeOrderActivity::class.java) + 2 -> requireContext().navigatePageTo(WellOperationActivity::class.java) } } }) diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt index d4791bf..cafc40f 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt @@ -10,6 +10,7 @@ import com.casic.app.smartwell.adapter.InHandleOrderAdapter import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.InHandleDetailActivity @@ -18,6 +19,7 @@ import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_inhandle.* +import kotlinx.android.synthetic.main.include_empty_view.* import java.lang.ref.WeakReference class InHandleOrderFragment : BaseFragment() { @@ -126,7 +128,9 @@ fragment.inHandleAdapter.notifyDataSetChanged() } else { //首次加载数据 if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("真不错,您已经处理完所有工单", null) + fragment.emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + fragment.obtainWorkOrderList(fragment.pageIndex) + } } else { fragment.emptyView!!.hide() fragment.inHandleAdapter = InHandleOrderAdapter( 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 780c1da..47a4c9a 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 @@ -10,6 +10,7 @@ import com.casic.app.smartwell.adapter.TodoWorkOrderListAdapter import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.utils.DialogHelper @@ -20,6 +21,7 @@ import com.pengxh.app.multilib.base.BaseFragment import com.pengxh.app.multilib.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.fragment_order_todo.* +import kotlinx.android.synthetic.main.include_empty_view.* import java.lang.ref.WeakReference class TodoOrderFragment : BaseFragment() { @@ -135,7 +137,9 @@ fragment.workOrderListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("没有需要您处理的工单", null) + fragment.emptyView!!.showEmptyPage("没有需要您处理的工单") { + fragment.obtainWorkOrderList(fragment.pageIndex) + } } else { fragment.emptyView!!.hide() fragment.workOrderListAdapter = TodoWorkOrderListAdapter( diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt index 5e79db6..a8560d5 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/UndeterminedOrderFragment.kt @@ -10,6 +10,7 @@ import com.casic.app.smartwell.adapter.UndeterminedOrderAdapter import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show +import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.DetermineDetailActivity @@ -18,6 +19,7 @@ import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_undetermined.* +import kotlinx.android.synthetic.main.include_empty_view.* import java.lang.ref.WeakReference class UndeterminedOrderFragment : BaseFragment() { @@ -126,7 +128,9 @@ fragment.undeterminedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("没有需要您确认的工单", null) + fragment.emptyView!!.showEmptyPage("没有需要您确认的工单") { + fragment.obtainWorkOrderList(fragment.pageIndex) + } } else { fragment.emptyView!!.hide() fragment.undeterminedAdapter = UndeterminedOrderAdapter( diff --git a/app/src/main/java/com/casic/app/smartwell/vm/SearchOrderViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/SearchOrderViewModel.kt new file mode 100644 index 0000000..ee0149f --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/vm/SearchOrderViewModel.kt @@ -0,0 +1,31 @@ +package com.casic.app.smartwell.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.app.smartwell.base.BaseViewModel +import com.casic.app.smartwell.extensions.launch +import com.casic.app.smartwell.model.SearchResultModel +import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager + +class SearchOrderViewModel : BaseViewModel() { + + val listModel = MutableLiveData() + + fun obtainSearchResult( + keywords: String?, + alarmContent: String?, + alarmLevel: String?, + jobStatus: String?, + beginTime: String?, + endTime: String?, + page: Int + ) = launch({ + loadState.value = LoadState.Loading + listModel.value = RetrofitServiceManager.obtainSearchResult( + keywords, alarmContent, alarmLevel, jobStatus, beginTime, endTime, page + ) + loadState.value = LoadState.Success + }, { + loadState.value = LoadState.Fail + }) +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_order_overtime.xml b/app/src/main/res/layout/activity_order_overtime.xml new file mode 100644 index 0000000..d829e29 --- /dev/null +++ b/app/src/main/res/layout/activity_order_overtime.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_order_search.xml b/app/src/main/res/layout/activity_order_search.xml index 74b898c..33187af 100644 --- a/app/src/main/res/layout/activity_order_search.xml +++ b/app/src/main/res/layout/activity_order_search.xml @@ -10,152 +10,156 @@ - + android:layout_height="wrap_content"> + android:layout_height="wrap_content" + android:layout_margin="@dimen/dp_10" + android:background="@drawable/bg_layout" + android:orientation="vertical"> - - - + + + + + + + + + + + - + android:textSize="@dimen/titleFontSize" /> - - - - - - - - - - - - - - - - - + + - + android:textSize="@dimen/titleFontSize" /> - - - - - + app:max_select="1" /> + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_order_search_result.xml b/app/src/main/res/layout/activity_order_search_result.xml new file mode 100644 index 0000000..c6512d5 --- /dev/null +++ b/app/src/main/res/layout/activity_order_search_result.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_well_management.xml b/app/src/main/res/layout/activity_well_management.xml index 06c9434..819d37f 100644 --- a/app/src/main/res/layout/activity_well_management.xml +++ b/app/src/main/res/layout/activity_well_management.xml @@ -11,10 +11,7 @@ - + - + - + - + - + - + - + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_tag_flowlayout.xml b/app/src/main/res/layout/item_tag_flowlayout.xml index 8826f86..a408908 100644 --- a/app/src/main/res/layout/item_tag_flowlayout.xml +++ b/app/src/main/res/layout/item_tag_flowlayout.xml @@ -9,4 +9,4 @@ android:paddingVertical="@dimen/dp_5" android:text="@string/app_name" android:textColor="@drawable/selector_text" - android:textSize="@dimen/titleFontSize" /> \ No newline at end of file + android:textSize="@dimen/textFontSize" /> \ No newline at end of file