diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0c249a9..f11ea34 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -46,9 +46,10 @@
-
+
+
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0c249a9..f11ea34 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -46,9 +46,10 @@
-
+
+
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
index 428051e..d2ac7cf 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
@@ -1,13 +1,20 @@
package com.casic.qd.smartwell.extensions
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
import com.github.mikephil.charting.charts.BarChart
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis
import com.github.mikephil.charting.formatter.ValueFormatter
+import com.pengxh.app.multilib.utils.SizeUtil
fun BarChart.init(barLabels: MutableList) {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.animateY(1200, Easing.EaseInOutQuad)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0c249a9..f11ea34 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -46,9 +46,10 @@
-
+
+
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
index 428051e..d2ac7cf 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
@@ -1,13 +1,20 @@
package com.casic.qd.smartwell.extensions
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
import com.github.mikephil.charting.charts.BarChart
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis
import com.github.mikephil.charting.formatter.ValueFormatter
+import com.pengxh.app.multilib.utils.SizeUtil
fun BarChart.init(barLabels: MutableList) {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.animateY(1200, Easing.EaseInOutQuad)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt
index 4aa46bb..e67f075 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt
@@ -1,13 +1,20 @@
package com.casic.qd.smartwell.extensions
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.HorizontalBarChart
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis
import com.github.mikephil.charting.formatter.ValueFormatter
+import com.pengxh.app.multilib.utils.SizeUtil
fun HorizontalBarChart.init(barLabels: MutableList) {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.animateY(1200, Easing.EaseInOutQuad)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0c249a9..f11ea34 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -46,9 +46,10 @@
-
+
+
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
index 428051e..d2ac7cf 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
@@ -1,13 +1,20 @@
package com.casic.qd.smartwell.extensions
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
import com.github.mikephil.charting.charts.BarChart
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis
import com.github.mikephil.charting.formatter.ValueFormatter
+import com.pengxh.app.multilib.utils.SizeUtil
fun BarChart.init(barLabels: MutableList) {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.animateY(1200, Easing.EaseInOutQuad)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt
index 4aa46bb..e67f075 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt
@@ -1,13 +1,20 @@
package com.casic.qd.smartwell.extensions
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.HorizontalBarChart
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis
import com.github.mikephil.charting.formatter.ValueFormatter
+import com.pengxh.app.multilib.utils.SizeUtil
fun HorizontalBarChart.init(barLabels: MutableList) {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.animateY(1200, Easing.EaseInOutQuad)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt
index 87c1c61..25f238f 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt
@@ -1,13 +1,20 @@
package com.casic.qd.smartwell.extensions
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.LineChart
import com.github.mikephil.charting.components.Legend
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis
+import com.pengxh.app.multilib.utils.SizeUtil
fun LineChart.init() {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.setDrawGridBackground(false)
this.setDrawBorders(false)
this.animateY(1200, Easing.EaseInOutQuad)
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0c249a9..f11ea34 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -46,9 +46,10 @@
-
+
+
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
index 428051e..d2ac7cf 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
@@ -1,13 +1,20 @@
package com.casic.qd.smartwell.extensions
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
import com.github.mikephil.charting.charts.BarChart
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis
import com.github.mikephil.charting.formatter.ValueFormatter
+import com.pengxh.app.multilib.utils.SizeUtil
fun BarChart.init(barLabels: MutableList) {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.animateY(1200, Easing.EaseInOutQuad)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt
index 4aa46bb..e67f075 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt
@@ -1,13 +1,20 @@
package com.casic.qd.smartwell.extensions
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.HorizontalBarChart
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis
import com.github.mikephil.charting.formatter.ValueFormatter
+import com.pengxh.app.multilib.utils.SizeUtil
fun HorizontalBarChart.init(barLabels: MutableList) {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.animateY(1200, Easing.EaseInOutQuad)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt
index 87c1c61..25f238f 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt
@@ -1,13 +1,20 @@
package com.casic.qd.smartwell.extensions
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.LineChart
import com.github.mikephil.charting.components.Legend
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis
+import com.pengxh.app.multilib.utils.SizeUtil
fun LineChart.init() {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.setDrawGridBackground(false)
this.setDrawBorders(false)
this.animateY(1200, Easing.EaseInOutQuad)
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt
index a88e096..3497dc7 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt
@@ -2,11 +2,18 @@
import android.graphics.Color
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.PieChart
import com.github.mikephil.charting.components.Legend
+import com.pengxh.app.multilib.utils.SizeUtil
fun PieChart.init() {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.setUsePercentValues(false) //百分比数字显示
this.description.isEnabled = false
this.dragDecelerationFrictionCoef = 0.95f //图表转动阻力摩擦系数[0,1]
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0c249a9..f11ea34 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -46,9 +46,10 @@
-
+
+
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
index 428051e..d2ac7cf 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
@@ -1,13 +1,20 @@
package com.casic.qd.smartwell.extensions
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
import com.github.mikephil.charting.charts.BarChart
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis
import com.github.mikephil.charting.formatter.ValueFormatter
+import com.pengxh.app.multilib.utils.SizeUtil
fun BarChart.init(barLabels: MutableList) {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.animateY(1200, Easing.EaseInOutQuad)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt
index 4aa46bb..e67f075 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt
@@ -1,13 +1,20 @@
package com.casic.qd.smartwell.extensions
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.HorizontalBarChart
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis
import com.github.mikephil.charting.formatter.ValueFormatter
+import com.pengxh.app.multilib.utils.SizeUtil
fun HorizontalBarChart.init(barLabels: MutableList) {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.animateY(1200, Easing.EaseInOutQuad)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt
index 87c1c61..25f238f 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt
@@ -1,13 +1,20 @@
package com.casic.qd.smartwell.extensions
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.LineChart
import com.github.mikephil.charting.components.Legend
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis
+import com.pengxh.app.multilib.utils.SizeUtil
fun LineChart.init() {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.setDrawGridBackground(false)
this.setDrawBorders(false)
this.animateY(1200, Easing.EaseInOutQuad)
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt
index a88e096..3497dc7 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt
@@ -2,11 +2,18 @@
import android.graphics.Color
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.PieChart
import com.github.mikephil.charting.components.Legend
+import com.pengxh.app.multilib.utils.SizeUtil
fun PieChart.init() {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.setUsePercentValues(false) //百分比数字显示
this.description.isEnabled = false
this.dragDecelerationFrictionCoef = 0.95f //图表转动阻力摩擦系数[0,1]
diff --git a/app/src/main/java/com/casic/qd/smartwell/model/DeviceTypeModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/DeviceTypeModel.kt
new file mode 100644
index 0000000..04d2a8a
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/model/DeviceTypeModel.kt
@@ -0,0 +1,14 @@
+package com.casic.qd.smartwell.model
+
+class DeviceTypeModel {
+ var code = 0
+ var data: List? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var deviceType: String? = null
+ var name: String? = null
+ var value: String? = null
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0c249a9..f11ea34 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -46,9 +46,10 @@
-
+
+
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
index 428051e..d2ac7cf 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
@@ -1,13 +1,20 @@
package com.casic.qd.smartwell.extensions
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
import com.github.mikephil.charting.charts.BarChart
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis
import com.github.mikephil.charting.formatter.ValueFormatter
+import com.pengxh.app.multilib.utils.SizeUtil
fun BarChart.init(barLabels: MutableList) {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.animateY(1200, Easing.EaseInOutQuad)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt
index 4aa46bb..e67f075 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt
@@ -1,13 +1,20 @@
package com.casic.qd.smartwell.extensions
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.HorizontalBarChart
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis
import com.github.mikephil.charting.formatter.ValueFormatter
+import com.pengxh.app.multilib.utils.SizeUtil
fun HorizontalBarChart.init(barLabels: MutableList) {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.animateY(1200, Easing.EaseInOutQuad)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt
index 87c1c61..25f238f 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt
@@ -1,13 +1,20 @@
package com.casic.qd.smartwell.extensions
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.LineChart
import com.github.mikephil.charting.components.Legend
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis
+import com.pengxh.app.multilib.utils.SizeUtil
fun LineChart.init() {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.setDrawGridBackground(false)
this.setDrawBorders(false)
this.animateY(1200, Easing.EaseInOutQuad)
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt
index a88e096..3497dc7 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt
@@ -2,11 +2,18 @@
import android.graphics.Color
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.PieChart
import com.github.mikephil.charting.components.Legend
+import com.pengxh.app.multilib.utils.SizeUtil
fun PieChart.init() {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.setUsePercentValues(false) //百分比数字显示
this.description.isEnabled = false
this.dragDecelerationFrictionCoef = 0.95f //图表转动阻力摩擦系数[0,1]
diff --git a/app/src/main/java/com/casic/qd/smartwell/model/DeviceTypeModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/DeviceTypeModel.kt
new file mode 100644
index 0000000..04d2a8a
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/model/DeviceTypeModel.kt
@@ -0,0 +1,14 @@
+package com.casic.qd.smartwell.model
+
+class DeviceTypeModel {
+ var code = 0
+ var data: List? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var deviceType: String? = null
+ var name: String? = null
+ var value: String? = null
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/model/OwnerShipModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/OwnerShipModel.kt
new file mode 100644
index 0000000..7ced62c
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/model/OwnerShipModel.kt
@@ -0,0 +1,23 @@
+package com.casic.qd.smartwell.model
+
+class OwnerShipModel {
+ var code = 0
+ var data: DataBean? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var list: List? = null
+
+ class ListBean {
+ var isChecked = false
+ var code: String? = null
+ var id: String? = null
+ var name: String? = null
+ var isOpen = false
+ var pcodes: String? = null
+ var pid: String? = null
+ var value: String? = null
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0c249a9..f11ea34 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -46,9 +46,10 @@
-
+
+
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
index 428051e..d2ac7cf 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
@@ -1,13 +1,20 @@
package com.casic.qd.smartwell.extensions
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
import com.github.mikephil.charting.charts.BarChart
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis
import com.github.mikephil.charting.formatter.ValueFormatter
+import com.pengxh.app.multilib.utils.SizeUtil
fun BarChart.init(barLabels: MutableList) {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.animateY(1200, Easing.EaseInOutQuad)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt
index 4aa46bb..e67f075 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt
@@ -1,13 +1,20 @@
package com.casic.qd.smartwell.extensions
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.HorizontalBarChart
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis
import com.github.mikephil.charting.formatter.ValueFormatter
+import com.pengxh.app.multilib.utils.SizeUtil
fun HorizontalBarChart.init(barLabels: MutableList) {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.animateY(1200, Easing.EaseInOutQuad)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt
index 87c1c61..25f238f 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt
@@ -1,13 +1,20 @@
package com.casic.qd.smartwell.extensions
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.LineChart
import com.github.mikephil.charting.components.Legend
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis
+import com.pengxh.app.multilib.utils.SizeUtil
fun LineChart.init() {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.setDrawGridBackground(false)
this.setDrawBorders(false)
this.animateY(1200, Easing.EaseInOutQuad)
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt
index a88e096..3497dc7 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt
@@ -2,11 +2,18 @@
import android.graphics.Color
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.PieChart
import com.github.mikephil.charting.components.Legend
+import com.pengxh.app.multilib.utils.SizeUtil
fun PieChart.init() {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.setUsePercentValues(false) //百分比数字显示
this.description.isEnabled = false
this.dragDecelerationFrictionCoef = 0.95f //图表转动阻力摩擦系数[0,1]
diff --git a/app/src/main/java/com/casic/qd/smartwell/model/DeviceTypeModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/DeviceTypeModel.kt
new file mode 100644
index 0000000..04d2a8a
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/model/DeviceTypeModel.kt
@@ -0,0 +1,14 @@
+package com.casic.qd.smartwell.model
+
+class DeviceTypeModel {
+ var code = 0
+ var data: List? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var deviceType: String? = null
+ var name: String? = null
+ var value: String? = null
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/model/OwnerShipModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/OwnerShipModel.kt
new file mode 100644
index 0000000..7ced62c
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/model/OwnerShipModel.kt
@@ -0,0 +1,23 @@
+package com.casic.qd.smartwell.model
+
+class OwnerShipModel {
+ var code = 0
+ var data: DataBean? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var list: List? = null
+
+ class ListBean {
+ var isChecked = false
+ var code: String? = null
+ var id: String? = null
+ var name: String? = null
+ var isOpen = false
+ var pcodes: String? = null
+ var pid: String? = null
+ var value: String? = null
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt
index 5a509d2..cb85f80 100644
--- a/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt
@@ -31,6 +31,7 @@
const val ACCOUNT = "account"
const val PASSWORD = "password"
const val USER_DETAIL_MODEL = "userDetailModel"
+ const val USER_DEVICE_TYPE = "userDeviceType"
const val CANCEL_ALARM_ACTION = "cancelAlarm"
const val AREA_ID = "110000"
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0c249a9..f11ea34 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -46,9 +46,10 @@
-
+
+
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
index 428051e..d2ac7cf 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
@@ -1,13 +1,20 @@
package com.casic.qd.smartwell.extensions
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
import com.github.mikephil.charting.charts.BarChart
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis
import com.github.mikephil.charting.formatter.ValueFormatter
+import com.pengxh.app.multilib.utils.SizeUtil
fun BarChart.init(barLabels: MutableList) {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.animateY(1200, Easing.EaseInOutQuad)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt
index 4aa46bb..e67f075 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt
@@ -1,13 +1,20 @@
package com.casic.qd.smartwell.extensions
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.HorizontalBarChart
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis
import com.github.mikephil.charting.formatter.ValueFormatter
+import com.pengxh.app.multilib.utils.SizeUtil
fun HorizontalBarChart.init(barLabels: MutableList) {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.animateY(1200, Easing.EaseInOutQuad)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt
index 87c1c61..25f238f 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt
@@ -1,13 +1,20 @@
package com.casic.qd.smartwell.extensions
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.LineChart
import com.github.mikephil.charting.components.Legend
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis
+import com.pengxh.app.multilib.utils.SizeUtil
fun LineChart.init() {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.setDrawGridBackground(false)
this.setDrawBorders(false)
this.animateY(1200, Easing.EaseInOutQuad)
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt
index a88e096..3497dc7 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt
@@ -2,11 +2,18 @@
import android.graphics.Color
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.PieChart
import com.github.mikephil.charting.components.Legend
+import com.pengxh.app.multilib.utils.SizeUtil
fun PieChart.init() {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.setUsePercentValues(false) //百分比数字显示
this.description.isEnabled = false
this.dragDecelerationFrictionCoef = 0.95f //图表转动阻力摩擦系数[0,1]
diff --git a/app/src/main/java/com/casic/qd/smartwell/model/DeviceTypeModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/DeviceTypeModel.kt
new file mode 100644
index 0000000..04d2a8a
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/model/DeviceTypeModel.kt
@@ -0,0 +1,14 @@
+package com.casic.qd.smartwell.model
+
+class DeviceTypeModel {
+ var code = 0
+ var data: List? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var deviceType: String? = null
+ var name: String? = null
+ var value: String? = null
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/model/OwnerShipModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/OwnerShipModel.kt
new file mode 100644
index 0000000..7ced62c
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/model/OwnerShipModel.kt
@@ -0,0 +1,23 @@
+package com.casic.qd.smartwell.model
+
+class OwnerShipModel {
+ var code = 0
+ var data: DataBean? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var list: List? = null
+
+ class ListBean {
+ var isChecked = false
+ var code: String? = null
+ var id: String? = null
+ var name: String? = null
+ var isOpen = false
+ var pcodes: String? = null
+ var pid: String? = null
+ var value: String? = null
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt
index 5a509d2..cb85f80 100644
--- a/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt
@@ -31,6 +31,7 @@
const val ACCOUNT = "account"
const val PASSWORD = "password"
const val USER_DETAIL_MODEL = "userDetailModel"
+ const val USER_DEVICE_TYPE = "userDeviceType"
const val CANCEL_ALARM_ACTION = "cancelAlarm"
const val AREA_ID = "110000"
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt
index 019d741..9496bf4 100644
--- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt
@@ -163,4 +163,28 @@
*/
@GET("/statics/deviceStaticsByType")
suspend fun deviceCountByType(@Header("token") token: String): String
+
+ /**
+ * 根据部门获取支持的设备类型
+ */
+ /**
+ * 管网资产统计
+ */
+ @GET("/config/getAuthorByDept")
+ suspend fun obtainAuthorByDept(@Header("token") token: String): String
+
+ /**
+ * 获取设备类型
+ */
+ @GET("/device/type")
+ suspend fun obtainDeviceType(@Header("token") token: String): String
+
+ /**
+ * 获取权属单位
+ */
+ @GET("/dept/tree")
+ suspend fun obtainOwnerShip(
+ @Header("token") token: String,
+ @Query("deptType") deptType: String
+ ): String
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0c249a9..f11ea34 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -46,9 +46,10 @@
-
+
+
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
index 428051e..d2ac7cf 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
@@ -1,13 +1,20 @@
package com.casic.qd.smartwell.extensions
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
import com.github.mikephil.charting.charts.BarChart
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis
import com.github.mikephil.charting.formatter.ValueFormatter
+import com.pengxh.app.multilib.utils.SizeUtil
fun BarChart.init(barLabels: MutableList) {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.animateY(1200, Easing.EaseInOutQuad)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt
index 4aa46bb..e67f075 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt
@@ -1,13 +1,20 @@
package com.casic.qd.smartwell.extensions
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.HorizontalBarChart
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis
import com.github.mikephil.charting.formatter.ValueFormatter
+import com.pengxh.app.multilib.utils.SizeUtil
fun HorizontalBarChart.init(barLabels: MutableList) {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.animateY(1200, Easing.EaseInOutQuad)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt
index 87c1c61..25f238f 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt
@@ -1,13 +1,20 @@
package com.casic.qd.smartwell.extensions
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.LineChart
import com.github.mikephil.charting.components.Legend
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis
+import com.pengxh.app.multilib.utils.SizeUtil
fun LineChart.init() {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.setDrawGridBackground(false)
this.setDrawBorders(false)
this.animateY(1200, Easing.EaseInOutQuad)
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt
index a88e096..3497dc7 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt
@@ -2,11 +2,18 @@
import android.graphics.Color
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.PieChart
import com.github.mikephil.charting.components.Legend
+import com.pengxh.app.multilib.utils.SizeUtil
fun PieChart.init() {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.setUsePercentValues(false) //百分比数字显示
this.description.isEnabled = false
this.dragDecelerationFrictionCoef = 0.95f //图表转动阻力摩擦系数[0,1]
diff --git a/app/src/main/java/com/casic/qd/smartwell/model/DeviceTypeModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/DeviceTypeModel.kt
new file mode 100644
index 0000000..04d2a8a
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/model/DeviceTypeModel.kt
@@ -0,0 +1,14 @@
+package com.casic.qd.smartwell.model
+
+class DeviceTypeModel {
+ var code = 0
+ var data: List? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var deviceType: String? = null
+ var name: String? = null
+ var value: String? = null
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/model/OwnerShipModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/OwnerShipModel.kt
new file mode 100644
index 0000000..7ced62c
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/model/OwnerShipModel.kt
@@ -0,0 +1,23 @@
+package com.casic.qd.smartwell.model
+
+class OwnerShipModel {
+ var code = 0
+ var data: DataBean? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var list: List? = null
+
+ class ListBean {
+ var isChecked = false
+ var code: String? = null
+ var id: String? = null
+ var name: String? = null
+ var isOpen = false
+ var pcodes: String? = null
+ var pid: String? = null
+ var value: String? = null
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt
index 5a509d2..cb85f80 100644
--- a/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt
@@ -31,6 +31,7 @@
const val ACCOUNT = "account"
const val PASSWORD = "password"
const val USER_DETAIL_MODEL = "userDetailModel"
+ const val USER_DEVICE_TYPE = "userDeviceType"
const val CANCEL_ALARM_ACTION = "cancelAlarm"
const val AREA_ID = "110000"
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt
index 019d741..9496bf4 100644
--- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt
@@ -163,4 +163,28 @@
*/
@GET("/statics/deviceStaticsByType")
suspend fun deviceCountByType(@Header("token") token: String): String
+
+ /**
+ * 根据部门获取支持的设备类型
+ */
+ /**
+ * 管网资产统计
+ */
+ @GET("/config/getAuthorByDept")
+ suspend fun obtainAuthorByDept(@Header("token") token: String): String
+
+ /**
+ * 获取设备类型
+ */
+ @GET("/device/type")
+ suspend fun obtainDeviceType(@Header("token") token: String): String
+
+ /**
+ * 获取权属单位
+ */
+ @GET("/dept/tree")
+ suspend fun obtainOwnerShip(
+ @Header("token") token: String,
+ @Query("deptType") deptType: String
+ ): String
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt
index 3985af9..575b2a9 100644
--- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt
@@ -160,4 +160,25 @@
suspend fun deviceCountByType(): String {
return api.deviceCountByType(AuthenticationHelper.token!!)
}
+
+ /**
+ * 根据部门获取支持的设备类型
+ */
+ suspend fun obtainAuthorByDept(): String {
+ return api.obtainAuthorByDept(AuthenticationHelper.token!!)
+ }
+
+ /**
+ * 获取设备类型
+ */
+ suspend fun obtainDeviceType(): String {
+ return api.obtainDeviceType(AuthenticationHelper.token!!)
+ }
+
+ /**
+ * 获取权属单位
+ */
+ suspend fun obtainOwnerShip(deptType: String): String {
+ return api.obtainOwnerShip(AuthenticationHelper.token!!, deptType)
+ }
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0c249a9..f11ea34 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -46,9 +46,10 @@
-
+
+
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
index 428051e..d2ac7cf 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
@@ -1,13 +1,20 @@
package com.casic.qd.smartwell.extensions
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
import com.github.mikephil.charting.charts.BarChart
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis
import com.github.mikephil.charting.formatter.ValueFormatter
+import com.pengxh.app.multilib.utils.SizeUtil
fun BarChart.init(barLabels: MutableList) {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.animateY(1200, Easing.EaseInOutQuad)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt
index 4aa46bb..e67f075 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt
@@ -1,13 +1,20 @@
package com.casic.qd.smartwell.extensions
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.HorizontalBarChart
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis
import com.github.mikephil.charting.formatter.ValueFormatter
+import com.pengxh.app.multilib.utils.SizeUtil
fun HorizontalBarChart.init(barLabels: MutableList) {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.animateY(1200, Easing.EaseInOutQuad)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt
index 87c1c61..25f238f 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt
@@ -1,13 +1,20 @@
package com.casic.qd.smartwell.extensions
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.LineChart
import com.github.mikephil.charting.components.Legend
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis
+import com.pengxh.app.multilib.utils.SizeUtil
fun LineChart.init() {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.setDrawGridBackground(false)
this.setDrawBorders(false)
this.animateY(1200, Easing.EaseInOutQuad)
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt
index a88e096..3497dc7 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt
@@ -2,11 +2,18 @@
import android.graphics.Color
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.PieChart
import com.github.mikephil.charting.components.Legend
+import com.pengxh.app.multilib.utils.SizeUtil
fun PieChart.init() {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.setUsePercentValues(false) //百分比数字显示
this.description.isEnabled = false
this.dragDecelerationFrictionCoef = 0.95f //图表转动阻力摩擦系数[0,1]
diff --git a/app/src/main/java/com/casic/qd/smartwell/model/DeviceTypeModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/DeviceTypeModel.kt
new file mode 100644
index 0000000..04d2a8a
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/model/DeviceTypeModel.kt
@@ -0,0 +1,14 @@
+package com.casic.qd.smartwell.model
+
+class DeviceTypeModel {
+ var code = 0
+ var data: List? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var deviceType: String? = null
+ var name: String? = null
+ var value: String? = null
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/model/OwnerShipModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/OwnerShipModel.kt
new file mode 100644
index 0000000..7ced62c
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/model/OwnerShipModel.kt
@@ -0,0 +1,23 @@
+package com.casic.qd.smartwell.model
+
+class OwnerShipModel {
+ var code = 0
+ var data: DataBean? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var list: List? = null
+
+ class ListBean {
+ var isChecked = false
+ var code: String? = null
+ var id: String? = null
+ var name: String? = null
+ var isOpen = false
+ var pcodes: String? = null
+ var pid: String? = null
+ var value: String? = null
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt
index 5a509d2..cb85f80 100644
--- a/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt
@@ -31,6 +31,7 @@
const val ACCOUNT = "account"
const val PASSWORD = "password"
const val USER_DETAIL_MODEL = "userDetailModel"
+ const val USER_DEVICE_TYPE = "userDeviceType"
const val CANCEL_ALARM_ACTION = "cancelAlarm"
const val AREA_ID = "110000"
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt
index 019d741..9496bf4 100644
--- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt
@@ -163,4 +163,28 @@
*/
@GET("/statics/deviceStaticsByType")
suspend fun deviceCountByType(@Header("token") token: String): String
+
+ /**
+ * 根据部门获取支持的设备类型
+ */
+ /**
+ * 管网资产统计
+ */
+ @GET("/config/getAuthorByDept")
+ suspend fun obtainAuthorByDept(@Header("token") token: String): String
+
+ /**
+ * 获取设备类型
+ */
+ @GET("/device/type")
+ suspend fun obtainDeviceType(@Header("token") token: String): String
+
+ /**
+ * 获取权属单位
+ */
+ @GET("/dept/tree")
+ suspend fun obtainOwnerShip(
+ @Header("token") token: String,
+ @Query("deptType") deptType: String
+ ): String
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt
index 3985af9..575b2a9 100644
--- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt
@@ -160,4 +160,25 @@
suspend fun deviceCountByType(): String {
return api.deviceCountByType(AuthenticationHelper.token!!)
}
+
+ /**
+ * 根据部门获取支持的设备类型
+ */
+ suspend fun obtainAuthorByDept(): String {
+ return api.obtainAuthorByDept(AuthenticationHelper.token!!)
+ }
+
+ /**
+ * 获取设备类型
+ */
+ suspend fun obtainDeviceType(): String {
+ return api.obtainDeviceType(AuthenticationHelper.token!!)
+ }
+
+ /**
+ * 获取权属单位
+ */
+ suspend fun obtainOwnerShip(deptType: String): String {
+ return api.obtainOwnerShip(AuthenticationHelper.token!!, deptType)
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt
index 2a6d344..abaffb2 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt
@@ -20,8 +20,7 @@
import com.casic.qd.smartwell.utils.Constant
import com.casic.qd.smartwell.utils.DialogHelper
import com.casic.qd.smartwell.utils.LoadState
-import com.casic.qd.smartwell.vm.AlarmListViewModel
-import com.casic.qd.smartwell.vm.CancelAlarmViewModel
+import com.casic.qd.smartwell.vm.AlarmViewModel
import com.pengxh.app.multilib.widget.dialog.AlertControlDialog
import kotlinx.android.synthetic.main.activity_alarm_management.*
import kotlinx.android.synthetic.main.include_empty_view.*
@@ -30,8 +29,7 @@
class AlarmManagementActivity : BaseActivity() {
- private lateinit var alarmListViewModel: AlarmListViewModel
- private lateinit var cancelAlarmViewModel: CancelAlarmViewModel
+ private lateinit var alarmViewModel: AlarmViewModel
private lateinit var weakReferenceHandler: WeakReferenceHandler
private lateinit var alarmListAdapter: AlarmListAdapter
private var dataBeans: MutableList = ArrayList()
@@ -46,8 +44,7 @@
}
override fun initData() {
- alarmListViewModel = ViewModelProvider(this).get(AlarmListViewModel::class.java)
- cancelAlarmViewModel = ViewModelProvider(this).get(CancelAlarmViewModel::class.java)
+ alarmViewModel = ViewModelProvider(this).get(AlarmViewModel::class.java)
weakReferenceHandler = WeakReferenceHandler(this)
//注册广播接收者
BroadcastReceiverManager.instance.addAction(Constant.CANCEL_ALARM_ACTION,
@@ -63,7 +60,7 @@
override fun initEvent() {
obtainAlarmList(pageIndex)
- alarmListViewModel.listModel.observe(this, {
+ alarmViewModel.listModel.observe(this, {
if (it.code == 200) {
val dataRows = it.data?.rows
when {
@@ -101,7 +98,7 @@
obtainAlarmList(pageIndex)
}
- cancelAlarmViewModel.loadState.observe(this, {
+ alarmViewModel.loadState.observe(this, {
when (it) {
is LoadState.Loading -> {
DialogHelper.showLoadingDialog(this, "处理中,请稍后")
@@ -125,7 +122,7 @@
}
private fun obtainAlarmList(pageIndex: Int) {
- alarmListViewModel.obtainAlarmList("", "", "", "", "", "", "1", pageIndex)
+ alarmViewModel.obtainAlarmList("", "", "", "", "", "", "1", pageIndex)
}
private class WeakReferenceHandler(activity: AlarmManagementActivity) :
@@ -175,9 +172,7 @@
"操作失败,告警ID异常".show()
return
}
- activity.cancelAlarmViewModel.obtainOperationResult(
- alarmId!!
- )
+ activity.alarmViewModel.obtainOperationResult(alarmId!!)
}
override fun onCancelClick() {
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0c249a9..f11ea34 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -46,9 +46,10 @@
-
+
+
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
index 428051e..d2ac7cf 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
@@ -1,13 +1,20 @@
package com.casic.qd.smartwell.extensions
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
import com.github.mikephil.charting.charts.BarChart
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis
import com.github.mikephil.charting.formatter.ValueFormatter
+import com.pengxh.app.multilib.utils.SizeUtil
fun BarChart.init(barLabels: MutableList) {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.animateY(1200, Easing.EaseInOutQuad)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt
index 4aa46bb..e67f075 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt
@@ -1,13 +1,20 @@
package com.casic.qd.smartwell.extensions
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.HorizontalBarChart
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis
import com.github.mikephil.charting.formatter.ValueFormatter
+import com.pengxh.app.multilib.utils.SizeUtil
fun HorizontalBarChart.init(barLabels: MutableList) {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.animateY(1200, Easing.EaseInOutQuad)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt
index 87c1c61..25f238f 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt
@@ -1,13 +1,20 @@
package com.casic.qd.smartwell.extensions
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.LineChart
import com.github.mikephil.charting.components.Legend
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis
+import com.pengxh.app.multilib.utils.SizeUtil
fun LineChart.init() {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.setDrawGridBackground(false)
this.setDrawBorders(false)
this.animateY(1200, Easing.EaseInOutQuad)
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt
index a88e096..3497dc7 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt
@@ -2,11 +2,18 @@
import android.graphics.Color
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.PieChart
import com.github.mikephil.charting.components.Legend
+import com.pengxh.app.multilib.utils.SizeUtil
fun PieChart.init() {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.setUsePercentValues(false) //百分比数字显示
this.description.isEnabled = false
this.dragDecelerationFrictionCoef = 0.95f //图表转动阻力摩擦系数[0,1]
diff --git a/app/src/main/java/com/casic/qd/smartwell/model/DeviceTypeModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/DeviceTypeModel.kt
new file mode 100644
index 0000000..04d2a8a
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/model/DeviceTypeModel.kt
@@ -0,0 +1,14 @@
+package com.casic.qd.smartwell.model
+
+class DeviceTypeModel {
+ var code = 0
+ var data: List? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var deviceType: String? = null
+ var name: String? = null
+ var value: String? = null
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/model/OwnerShipModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/OwnerShipModel.kt
new file mode 100644
index 0000000..7ced62c
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/model/OwnerShipModel.kt
@@ -0,0 +1,23 @@
+package com.casic.qd.smartwell.model
+
+class OwnerShipModel {
+ var code = 0
+ var data: DataBean? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var list: List? = null
+
+ class ListBean {
+ var isChecked = false
+ var code: String? = null
+ var id: String? = null
+ var name: String? = null
+ var isOpen = false
+ var pcodes: String? = null
+ var pid: String? = null
+ var value: String? = null
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt
index 5a509d2..cb85f80 100644
--- a/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt
@@ -31,6 +31,7 @@
const val ACCOUNT = "account"
const val PASSWORD = "password"
const val USER_DETAIL_MODEL = "userDetailModel"
+ const val USER_DEVICE_TYPE = "userDeviceType"
const val CANCEL_ALARM_ACTION = "cancelAlarm"
const val AREA_ID = "110000"
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt
index 019d741..9496bf4 100644
--- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt
@@ -163,4 +163,28 @@
*/
@GET("/statics/deviceStaticsByType")
suspend fun deviceCountByType(@Header("token") token: String): String
+
+ /**
+ * 根据部门获取支持的设备类型
+ */
+ /**
+ * 管网资产统计
+ */
+ @GET("/config/getAuthorByDept")
+ suspend fun obtainAuthorByDept(@Header("token") token: String): String
+
+ /**
+ * 获取设备类型
+ */
+ @GET("/device/type")
+ suspend fun obtainDeviceType(@Header("token") token: String): String
+
+ /**
+ * 获取权属单位
+ */
+ @GET("/dept/tree")
+ suspend fun obtainOwnerShip(
+ @Header("token") token: String,
+ @Query("deptType") deptType: String
+ ): String
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt
index 3985af9..575b2a9 100644
--- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt
@@ -160,4 +160,25 @@
suspend fun deviceCountByType(): String {
return api.deviceCountByType(AuthenticationHelper.token!!)
}
+
+ /**
+ * 根据部门获取支持的设备类型
+ */
+ suspend fun obtainAuthorByDept(): String {
+ return api.obtainAuthorByDept(AuthenticationHelper.token!!)
+ }
+
+ /**
+ * 获取设备类型
+ */
+ suspend fun obtainDeviceType(): String {
+ return api.obtainDeviceType(AuthenticationHelper.token!!)
+ }
+
+ /**
+ * 获取权属单位
+ */
+ suspend fun obtainOwnerShip(deptType: String): String {
+ return api.obtainOwnerShip(AuthenticationHelper.token!!, deptType)
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt
index 2a6d344..abaffb2 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt
@@ -20,8 +20,7 @@
import com.casic.qd.smartwell.utils.Constant
import com.casic.qd.smartwell.utils.DialogHelper
import com.casic.qd.smartwell.utils.LoadState
-import com.casic.qd.smartwell.vm.AlarmListViewModel
-import com.casic.qd.smartwell.vm.CancelAlarmViewModel
+import com.casic.qd.smartwell.vm.AlarmViewModel
import com.pengxh.app.multilib.widget.dialog.AlertControlDialog
import kotlinx.android.synthetic.main.activity_alarm_management.*
import kotlinx.android.synthetic.main.include_empty_view.*
@@ -30,8 +29,7 @@
class AlarmManagementActivity : BaseActivity() {
- private lateinit var alarmListViewModel: AlarmListViewModel
- private lateinit var cancelAlarmViewModel: CancelAlarmViewModel
+ private lateinit var alarmViewModel: AlarmViewModel
private lateinit var weakReferenceHandler: WeakReferenceHandler
private lateinit var alarmListAdapter: AlarmListAdapter
private var dataBeans: MutableList = ArrayList()
@@ -46,8 +44,7 @@
}
override fun initData() {
- alarmListViewModel = ViewModelProvider(this).get(AlarmListViewModel::class.java)
- cancelAlarmViewModel = ViewModelProvider(this).get(CancelAlarmViewModel::class.java)
+ alarmViewModel = ViewModelProvider(this).get(AlarmViewModel::class.java)
weakReferenceHandler = WeakReferenceHandler(this)
//注册广播接收者
BroadcastReceiverManager.instance.addAction(Constant.CANCEL_ALARM_ACTION,
@@ -63,7 +60,7 @@
override fun initEvent() {
obtainAlarmList(pageIndex)
- alarmListViewModel.listModel.observe(this, {
+ alarmViewModel.listModel.observe(this, {
if (it.code == 200) {
val dataRows = it.data?.rows
when {
@@ -101,7 +98,7 @@
obtainAlarmList(pageIndex)
}
- cancelAlarmViewModel.loadState.observe(this, {
+ alarmViewModel.loadState.observe(this, {
when (it) {
is LoadState.Loading -> {
DialogHelper.showLoadingDialog(this, "处理中,请稍后")
@@ -125,7 +122,7 @@
}
private fun obtainAlarmList(pageIndex: Int) {
- alarmListViewModel.obtainAlarmList("", "", "", "", "", "", "1", pageIndex)
+ alarmViewModel.obtainAlarmList("", "", "", "", "", "", "1", pageIndex)
}
private class WeakReferenceHandler(activity: AlarmManagementActivity) :
@@ -175,9 +172,7 @@
"操作失败,告警ID异常".show()
return
}
- activity.cancelAlarmViewModel.obtainOperationResult(
- alarmId!!
- )
+ activity.alarmViewModel.obtainOperationResult(alarmId!!)
}
override fun onCancelClick() {
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt
new file mode 100644
index 0000000..61c68ab
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt
@@ -0,0 +1,208 @@
+package com.casic.qd.smartwell.view
+
+import android.annotation.SuppressLint
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+import android.os.Handler
+import android.os.Looper
+import android.os.Message
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.LinearLayoutManager
+import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.adapter.AlarmListAdapter
+import com.casic.qd.smartwell.base.BaseActivity
+import com.casic.qd.smartwell.extensions.navigatePageTo
+import com.casic.qd.smartwell.extensions.show
+import com.casic.qd.smartwell.extensions.showEmptyPage
+import com.casic.qd.smartwell.model.AlarmListModel
+import com.casic.qd.smartwell.utils.BroadcastReceiverManager
+import com.casic.qd.smartwell.utils.Constant
+import com.casic.qd.smartwell.utils.DialogHelper
+import com.casic.qd.smartwell.utils.LoadState
+import com.casic.qd.smartwell.vm.AlarmViewModel
+import com.casic.qd.smartwell.vm.SearchAlarmViewModel
+import com.pengxh.app.multilib.widget.dialog.AlertControlDialog
+import kotlinx.android.synthetic.main.activity_alarm_search_result.*
+import kotlinx.android.synthetic.main.include_base_title.*
+import kotlinx.android.synthetic.main.include_empty_view.*
+import java.lang.ref.WeakReference
+
+class AlarmSearchResultActivity : BaseActivity() {
+
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+ private lateinit var searchAlarmViewModel: SearchAlarmViewModel
+ private lateinit var alarmViewModel: AlarmViewModel
+ private lateinit var args: ArrayList
+ private lateinit var alarmListAdapter: AlarmListAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var pageIndex = 1
+ private var isRefresh = false
+ private var isLoadMore = false
+
+ override fun initLayoutView(): Int = R.layout.activity_alarm_search_result
+
+ override fun setupTopBarLayout() {
+ titleView.text = "查询结果"
+ }
+
+ override fun initData() {
+ args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!!
+ weakReferenceHandler = WeakReferenceHandler(this)
+ searchAlarmViewModel = ViewModelProvider(this).get(SearchAlarmViewModel::class.java)
+ alarmViewModel = ViewModelProvider(this).get(AlarmViewModel::class.java)
+ //注册广播接收者
+ BroadcastReceiverManager.instance.addAction(Constant.CANCEL_ALARM_ACTION,
+ object : BroadcastReceiver() {
+ override fun onReceive(context: Context?, intent: Intent?) {
+ //收到广播相当于做了一次列表刷新
+ isRefresh = true
+ pageIndex = 1
+ obtainSearchResult(args, pageIndex)
+ }
+ })
+ }
+
+ override fun initEvent() {
+ obtainSearchResult(args, pageIndex)
+ searchAlarmViewModel.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()
+ }
+ dataBeans.addAll(dataRows!!)
+ resultRefreshLayout.finishLoadMore()
+ isLoadMore = false
+ }
+ else -> {
+ dataBeans = dataRows!!
+ }
+ }
+ weakReferenceHandler.sendEmptyMessage(2022041501)
+ }
+ })
+ searchAlarmViewModel.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)
+ }
+
+ //消警状态处理
+ alarmViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "处理中,请稍后")
+ }
+ is LoadState.Success -> {
+ DialogHelper.dismissLoadingDialog()
+ //刷新列表
+ BroadcastReceiverManager.instance.sendBroadcast(
+ Constant.CANCEL_ALARM_ACTION, ""
+ )
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+ }
+
+ private fun obtainSearchResult(args: ArrayList, pageIndex: Int) {
+ searchAlarmViewModel.obtainSearchResult(
+ args[0], args[1], args[2], args[3], args[4], args[5], "1", pageIndex
+ )
+ }
+
+ private class WeakReferenceHandler(activity: AlarmSearchResultActivity) :
+ Handler(Looper.getMainLooper()) {
+ private val reference: WeakReference = WeakReference(activity)
+
+ @SuppressLint("NotifyDataSetChanged")
+ override fun handleMessage(msg: Message) {
+ super.handleMessage(msg)
+ val activity = reference.get()!!
+ if (msg.what == 2022041501) {
+ if (activity.isRefresh || activity.isLoadMore) {
+ activity.alarmListAdapter.notifyDataSetChanged()
+ } else { //首次加载数据
+ if (activity.dataBeans.size == 0) {
+ activity.emptyView!!.showEmptyPage {
+ activity.obtainSearchResult(activity.args, activity.pageIndex)
+ }
+ } else {
+ activity.emptyView!!.hide()
+ activity.alarmListAdapter = AlarmListAdapter(activity, activity.dataBeans)
+ activity.resultRecyclerView!!.layoutManager = LinearLayoutManager(activity)
+ activity.resultRecyclerView!!.adapter = activity.alarmListAdapter
+ activity.alarmListAdapter.setOnItemClickListener(object :
+ AlarmListAdapter.OnItemClickListener {
+ override fun onClicked(position: Int) {
+ val wellId = activity.dataBeans[position].wellId.toString()
+ if (wellId.isBlank()) {
+ "井编号异常,无法查看详情".show()
+ return
+ }
+ activity.navigatePageTo(WellDetailActivity::class.java, wellId)
+ }
+
+ override fun onOperationClicked(position: Int) {
+ AlertControlDialog.Builder()
+ .setContext(activity)
+ .setTitle("确认操作")
+ .setMessage("确定取消报警吗?")
+ .setNegativeButton("取消")
+ .setPositiveButton("确定")
+ .setOnDialogButtonClickListener(object :
+ AlertControlDialog.OnDialogButtonClickListener {
+ override fun onConfirmClick() {
+ val alarmId = activity.dataBeans[position].id
+ if (alarmId.toString().isBlank()) {
+ "操作失败,告警ID异常".show()
+ return
+ }
+ activity.alarmViewModel.obtainOperationResult(alarmId!!)
+ }
+
+ override fun onCancelClick() {
+
+ }
+ }).build().show()
+ }
+ })
+ }
+ }
+ }
+ }
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ //解注册广播接收者,防止内存泄漏
+ BroadcastReceiverManager.instance.destroy(Constant.CANCEL_ALARM_ACTION)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0c249a9..f11ea34 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -46,9 +46,10 @@
-
+
+
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
index 428051e..d2ac7cf 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
@@ -1,13 +1,20 @@
package com.casic.qd.smartwell.extensions
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
import com.github.mikephil.charting.charts.BarChart
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis
import com.github.mikephil.charting.formatter.ValueFormatter
+import com.pengxh.app.multilib.utils.SizeUtil
fun BarChart.init(barLabels: MutableList) {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.animateY(1200, Easing.EaseInOutQuad)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt
index 4aa46bb..e67f075 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt
@@ -1,13 +1,20 @@
package com.casic.qd.smartwell.extensions
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.HorizontalBarChart
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis
import com.github.mikephil.charting.formatter.ValueFormatter
+import com.pengxh.app.multilib.utils.SizeUtil
fun HorizontalBarChart.init(barLabels: MutableList) {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.animateY(1200, Easing.EaseInOutQuad)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt
index 87c1c61..25f238f 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt
@@ -1,13 +1,20 @@
package com.casic.qd.smartwell.extensions
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.LineChart
import com.github.mikephil.charting.components.Legend
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis
+import com.pengxh.app.multilib.utils.SizeUtil
fun LineChart.init() {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.setDrawGridBackground(false)
this.setDrawBorders(false)
this.animateY(1200, Easing.EaseInOutQuad)
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt
index a88e096..3497dc7 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt
@@ -2,11 +2,18 @@
import android.graphics.Color
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.PieChart
import com.github.mikephil.charting.components.Legend
+import com.pengxh.app.multilib.utils.SizeUtil
fun PieChart.init() {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.setUsePercentValues(false) //百分比数字显示
this.description.isEnabled = false
this.dragDecelerationFrictionCoef = 0.95f //图表转动阻力摩擦系数[0,1]
diff --git a/app/src/main/java/com/casic/qd/smartwell/model/DeviceTypeModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/DeviceTypeModel.kt
new file mode 100644
index 0000000..04d2a8a
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/model/DeviceTypeModel.kt
@@ -0,0 +1,14 @@
+package com.casic.qd.smartwell.model
+
+class DeviceTypeModel {
+ var code = 0
+ var data: List? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var deviceType: String? = null
+ var name: String? = null
+ var value: String? = null
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/model/OwnerShipModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/OwnerShipModel.kt
new file mode 100644
index 0000000..7ced62c
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/model/OwnerShipModel.kt
@@ -0,0 +1,23 @@
+package com.casic.qd.smartwell.model
+
+class OwnerShipModel {
+ var code = 0
+ var data: DataBean? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var list: List? = null
+
+ class ListBean {
+ var isChecked = false
+ var code: String? = null
+ var id: String? = null
+ var name: String? = null
+ var isOpen = false
+ var pcodes: String? = null
+ var pid: String? = null
+ var value: String? = null
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt
index 5a509d2..cb85f80 100644
--- a/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt
@@ -31,6 +31,7 @@
const val ACCOUNT = "account"
const val PASSWORD = "password"
const val USER_DETAIL_MODEL = "userDetailModel"
+ const val USER_DEVICE_TYPE = "userDeviceType"
const val CANCEL_ALARM_ACTION = "cancelAlarm"
const val AREA_ID = "110000"
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt
index 019d741..9496bf4 100644
--- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt
@@ -163,4 +163,28 @@
*/
@GET("/statics/deviceStaticsByType")
suspend fun deviceCountByType(@Header("token") token: String): String
+
+ /**
+ * 根据部门获取支持的设备类型
+ */
+ /**
+ * 管网资产统计
+ */
+ @GET("/config/getAuthorByDept")
+ suspend fun obtainAuthorByDept(@Header("token") token: String): String
+
+ /**
+ * 获取设备类型
+ */
+ @GET("/device/type")
+ suspend fun obtainDeviceType(@Header("token") token: String): String
+
+ /**
+ * 获取权属单位
+ */
+ @GET("/dept/tree")
+ suspend fun obtainOwnerShip(
+ @Header("token") token: String,
+ @Query("deptType") deptType: String
+ ): String
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt
index 3985af9..575b2a9 100644
--- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt
@@ -160,4 +160,25 @@
suspend fun deviceCountByType(): String {
return api.deviceCountByType(AuthenticationHelper.token!!)
}
+
+ /**
+ * 根据部门获取支持的设备类型
+ */
+ suspend fun obtainAuthorByDept(): String {
+ return api.obtainAuthorByDept(AuthenticationHelper.token!!)
+ }
+
+ /**
+ * 获取设备类型
+ */
+ suspend fun obtainDeviceType(): String {
+ return api.obtainDeviceType(AuthenticationHelper.token!!)
+ }
+
+ /**
+ * 获取权属单位
+ */
+ suspend fun obtainOwnerShip(deptType: String): String {
+ return api.obtainOwnerShip(AuthenticationHelper.token!!, deptType)
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt
index 2a6d344..abaffb2 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt
@@ -20,8 +20,7 @@
import com.casic.qd.smartwell.utils.Constant
import com.casic.qd.smartwell.utils.DialogHelper
import com.casic.qd.smartwell.utils.LoadState
-import com.casic.qd.smartwell.vm.AlarmListViewModel
-import com.casic.qd.smartwell.vm.CancelAlarmViewModel
+import com.casic.qd.smartwell.vm.AlarmViewModel
import com.pengxh.app.multilib.widget.dialog.AlertControlDialog
import kotlinx.android.synthetic.main.activity_alarm_management.*
import kotlinx.android.synthetic.main.include_empty_view.*
@@ -30,8 +29,7 @@
class AlarmManagementActivity : BaseActivity() {
- private lateinit var alarmListViewModel: AlarmListViewModel
- private lateinit var cancelAlarmViewModel: CancelAlarmViewModel
+ private lateinit var alarmViewModel: AlarmViewModel
private lateinit var weakReferenceHandler: WeakReferenceHandler
private lateinit var alarmListAdapter: AlarmListAdapter
private var dataBeans: MutableList = ArrayList()
@@ -46,8 +44,7 @@
}
override fun initData() {
- alarmListViewModel = ViewModelProvider(this).get(AlarmListViewModel::class.java)
- cancelAlarmViewModel = ViewModelProvider(this).get(CancelAlarmViewModel::class.java)
+ alarmViewModel = ViewModelProvider(this).get(AlarmViewModel::class.java)
weakReferenceHandler = WeakReferenceHandler(this)
//注册广播接收者
BroadcastReceiverManager.instance.addAction(Constant.CANCEL_ALARM_ACTION,
@@ -63,7 +60,7 @@
override fun initEvent() {
obtainAlarmList(pageIndex)
- alarmListViewModel.listModel.observe(this, {
+ alarmViewModel.listModel.observe(this, {
if (it.code == 200) {
val dataRows = it.data?.rows
when {
@@ -101,7 +98,7 @@
obtainAlarmList(pageIndex)
}
- cancelAlarmViewModel.loadState.observe(this, {
+ alarmViewModel.loadState.observe(this, {
when (it) {
is LoadState.Loading -> {
DialogHelper.showLoadingDialog(this, "处理中,请稍后")
@@ -125,7 +122,7 @@
}
private fun obtainAlarmList(pageIndex: Int) {
- alarmListViewModel.obtainAlarmList("", "", "", "", "", "", "1", pageIndex)
+ alarmViewModel.obtainAlarmList("", "", "", "", "", "", "1", pageIndex)
}
private class WeakReferenceHandler(activity: AlarmManagementActivity) :
@@ -175,9 +172,7 @@
"操作失败,告警ID异常".show()
return
}
- activity.cancelAlarmViewModel.obtainOperationResult(
- alarmId!!
- )
+ activity.alarmViewModel.obtainOperationResult(alarmId!!)
}
override fun onCancelClick() {
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt
new file mode 100644
index 0000000..61c68ab
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt
@@ -0,0 +1,208 @@
+package com.casic.qd.smartwell.view
+
+import android.annotation.SuppressLint
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+import android.os.Handler
+import android.os.Looper
+import android.os.Message
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.LinearLayoutManager
+import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.adapter.AlarmListAdapter
+import com.casic.qd.smartwell.base.BaseActivity
+import com.casic.qd.smartwell.extensions.navigatePageTo
+import com.casic.qd.smartwell.extensions.show
+import com.casic.qd.smartwell.extensions.showEmptyPage
+import com.casic.qd.smartwell.model.AlarmListModel
+import com.casic.qd.smartwell.utils.BroadcastReceiverManager
+import com.casic.qd.smartwell.utils.Constant
+import com.casic.qd.smartwell.utils.DialogHelper
+import com.casic.qd.smartwell.utils.LoadState
+import com.casic.qd.smartwell.vm.AlarmViewModel
+import com.casic.qd.smartwell.vm.SearchAlarmViewModel
+import com.pengxh.app.multilib.widget.dialog.AlertControlDialog
+import kotlinx.android.synthetic.main.activity_alarm_search_result.*
+import kotlinx.android.synthetic.main.include_base_title.*
+import kotlinx.android.synthetic.main.include_empty_view.*
+import java.lang.ref.WeakReference
+
+class AlarmSearchResultActivity : BaseActivity() {
+
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+ private lateinit var searchAlarmViewModel: SearchAlarmViewModel
+ private lateinit var alarmViewModel: AlarmViewModel
+ private lateinit var args: ArrayList
+ private lateinit var alarmListAdapter: AlarmListAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var pageIndex = 1
+ private var isRefresh = false
+ private var isLoadMore = false
+
+ override fun initLayoutView(): Int = R.layout.activity_alarm_search_result
+
+ override fun setupTopBarLayout() {
+ titleView.text = "查询结果"
+ }
+
+ override fun initData() {
+ args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!!
+ weakReferenceHandler = WeakReferenceHandler(this)
+ searchAlarmViewModel = ViewModelProvider(this).get(SearchAlarmViewModel::class.java)
+ alarmViewModel = ViewModelProvider(this).get(AlarmViewModel::class.java)
+ //注册广播接收者
+ BroadcastReceiverManager.instance.addAction(Constant.CANCEL_ALARM_ACTION,
+ object : BroadcastReceiver() {
+ override fun onReceive(context: Context?, intent: Intent?) {
+ //收到广播相当于做了一次列表刷新
+ isRefresh = true
+ pageIndex = 1
+ obtainSearchResult(args, pageIndex)
+ }
+ })
+ }
+
+ override fun initEvent() {
+ obtainSearchResult(args, pageIndex)
+ searchAlarmViewModel.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()
+ }
+ dataBeans.addAll(dataRows!!)
+ resultRefreshLayout.finishLoadMore()
+ isLoadMore = false
+ }
+ else -> {
+ dataBeans = dataRows!!
+ }
+ }
+ weakReferenceHandler.sendEmptyMessage(2022041501)
+ }
+ })
+ searchAlarmViewModel.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)
+ }
+
+ //消警状态处理
+ alarmViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "处理中,请稍后")
+ }
+ is LoadState.Success -> {
+ DialogHelper.dismissLoadingDialog()
+ //刷新列表
+ BroadcastReceiverManager.instance.sendBroadcast(
+ Constant.CANCEL_ALARM_ACTION, ""
+ )
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+ }
+
+ private fun obtainSearchResult(args: ArrayList, pageIndex: Int) {
+ searchAlarmViewModel.obtainSearchResult(
+ args[0], args[1], args[2], args[3], args[4], args[5], "1", pageIndex
+ )
+ }
+
+ private class WeakReferenceHandler(activity: AlarmSearchResultActivity) :
+ Handler(Looper.getMainLooper()) {
+ private val reference: WeakReference = WeakReference(activity)
+
+ @SuppressLint("NotifyDataSetChanged")
+ override fun handleMessage(msg: Message) {
+ super.handleMessage(msg)
+ val activity = reference.get()!!
+ if (msg.what == 2022041501) {
+ if (activity.isRefresh || activity.isLoadMore) {
+ activity.alarmListAdapter.notifyDataSetChanged()
+ } else { //首次加载数据
+ if (activity.dataBeans.size == 0) {
+ activity.emptyView!!.showEmptyPage {
+ activity.obtainSearchResult(activity.args, activity.pageIndex)
+ }
+ } else {
+ activity.emptyView!!.hide()
+ activity.alarmListAdapter = AlarmListAdapter(activity, activity.dataBeans)
+ activity.resultRecyclerView!!.layoutManager = LinearLayoutManager(activity)
+ activity.resultRecyclerView!!.adapter = activity.alarmListAdapter
+ activity.alarmListAdapter.setOnItemClickListener(object :
+ AlarmListAdapter.OnItemClickListener {
+ override fun onClicked(position: Int) {
+ val wellId = activity.dataBeans[position].wellId.toString()
+ if (wellId.isBlank()) {
+ "井编号异常,无法查看详情".show()
+ return
+ }
+ activity.navigatePageTo(WellDetailActivity::class.java, wellId)
+ }
+
+ override fun onOperationClicked(position: Int) {
+ AlertControlDialog.Builder()
+ .setContext(activity)
+ .setTitle("确认操作")
+ .setMessage("确定取消报警吗?")
+ .setNegativeButton("取消")
+ .setPositiveButton("确定")
+ .setOnDialogButtonClickListener(object :
+ AlertControlDialog.OnDialogButtonClickListener {
+ override fun onConfirmClick() {
+ val alarmId = activity.dataBeans[position].id
+ if (alarmId.toString().isBlank()) {
+ "操作失败,告警ID异常".show()
+ return
+ }
+ activity.alarmViewModel.obtainOperationResult(alarmId!!)
+ }
+
+ override fun onCancelClick() {
+
+ }
+ }).build().show()
+ }
+ })
+ }
+ }
+ }
+ }
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ //解注册广播接收者,防止内存泄漏
+ BroadcastReceiverManager.instance.destroy(Constant.CANCEL_ALARM_ACTION)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceSearchResultActivity.kt
new file mode 100644
index 0000000..cfc25d2
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceSearchResultActivity.kt
@@ -0,0 +1,21 @@
+package com.casic.qd.smartwell.view
+
+import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseActivity
+
+class DeviceSearchResultActivity : BaseActivity() {
+
+ override fun initLayoutView(): Int = R.layout.activity_device_search_result
+
+ 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 0c249a9..f11ea34 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -46,9 +46,10 @@
-
+
+
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
index 428051e..d2ac7cf 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
@@ -1,13 +1,20 @@
package com.casic.qd.smartwell.extensions
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
import com.github.mikephil.charting.charts.BarChart
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis
import com.github.mikephil.charting.formatter.ValueFormatter
+import com.pengxh.app.multilib.utils.SizeUtil
fun BarChart.init(barLabels: MutableList) {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.animateY(1200, Easing.EaseInOutQuad)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt
index 4aa46bb..e67f075 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt
@@ -1,13 +1,20 @@
package com.casic.qd.smartwell.extensions
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.HorizontalBarChart
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis
import com.github.mikephil.charting.formatter.ValueFormatter
+import com.pengxh.app.multilib.utils.SizeUtil
fun HorizontalBarChart.init(barLabels: MutableList) {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.animateY(1200, Easing.EaseInOutQuad)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt
index 87c1c61..25f238f 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt
@@ -1,13 +1,20 @@
package com.casic.qd.smartwell.extensions
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.LineChart
import com.github.mikephil.charting.components.Legend
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis
+import com.pengxh.app.multilib.utils.SizeUtil
fun LineChart.init() {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.setDrawGridBackground(false)
this.setDrawBorders(false)
this.animateY(1200, Easing.EaseInOutQuad)
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt
index a88e096..3497dc7 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt
@@ -2,11 +2,18 @@
import android.graphics.Color
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.PieChart
import com.github.mikephil.charting.components.Legend
+import com.pengxh.app.multilib.utils.SizeUtil
fun PieChart.init() {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.setUsePercentValues(false) //百分比数字显示
this.description.isEnabled = false
this.dragDecelerationFrictionCoef = 0.95f //图表转动阻力摩擦系数[0,1]
diff --git a/app/src/main/java/com/casic/qd/smartwell/model/DeviceTypeModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/DeviceTypeModel.kt
new file mode 100644
index 0000000..04d2a8a
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/model/DeviceTypeModel.kt
@@ -0,0 +1,14 @@
+package com.casic.qd.smartwell.model
+
+class DeviceTypeModel {
+ var code = 0
+ var data: List? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var deviceType: String? = null
+ var name: String? = null
+ var value: String? = null
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/model/OwnerShipModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/OwnerShipModel.kt
new file mode 100644
index 0000000..7ced62c
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/model/OwnerShipModel.kt
@@ -0,0 +1,23 @@
+package com.casic.qd.smartwell.model
+
+class OwnerShipModel {
+ var code = 0
+ var data: DataBean? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var list: List? = null
+
+ class ListBean {
+ var isChecked = false
+ var code: String? = null
+ var id: String? = null
+ var name: String? = null
+ var isOpen = false
+ var pcodes: String? = null
+ var pid: String? = null
+ var value: String? = null
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt
index 5a509d2..cb85f80 100644
--- a/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt
@@ -31,6 +31,7 @@
const val ACCOUNT = "account"
const val PASSWORD = "password"
const val USER_DETAIL_MODEL = "userDetailModel"
+ const val USER_DEVICE_TYPE = "userDeviceType"
const val CANCEL_ALARM_ACTION = "cancelAlarm"
const val AREA_ID = "110000"
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt
index 019d741..9496bf4 100644
--- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt
@@ -163,4 +163,28 @@
*/
@GET("/statics/deviceStaticsByType")
suspend fun deviceCountByType(@Header("token") token: String): String
+
+ /**
+ * 根据部门获取支持的设备类型
+ */
+ /**
+ * 管网资产统计
+ */
+ @GET("/config/getAuthorByDept")
+ suspend fun obtainAuthorByDept(@Header("token") token: String): String
+
+ /**
+ * 获取设备类型
+ */
+ @GET("/device/type")
+ suspend fun obtainDeviceType(@Header("token") token: String): String
+
+ /**
+ * 获取权属单位
+ */
+ @GET("/dept/tree")
+ suspend fun obtainOwnerShip(
+ @Header("token") token: String,
+ @Query("deptType") deptType: String
+ ): String
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt
index 3985af9..575b2a9 100644
--- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt
@@ -160,4 +160,25 @@
suspend fun deviceCountByType(): String {
return api.deviceCountByType(AuthenticationHelper.token!!)
}
+
+ /**
+ * 根据部门获取支持的设备类型
+ */
+ suspend fun obtainAuthorByDept(): String {
+ return api.obtainAuthorByDept(AuthenticationHelper.token!!)
+ }
+
+ /**
+ * 获取设备类型
+ */
+ suspend fun obtainDeviceType(): String {
+ return api.obtainDeviceType(AuthenticationHelper.token!!)
+ }
+
+ /**
+ * 获取权属单位
+ */
+ suspend fun obtainOwnerShip(deptType: String): String {
+ return api.obtainOwnerShip(AuthenticationHelper.token!!, deptType)
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt
index 2a6d344..abaffb2 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt
@@ -20,8 +20,7 @@
import com.casic.qd.smartwell.utils.Constant
import com.casic.qd.smartwell.utils.DialogHelper
import com.casic.qd.smartwell.utils.LoadState
-import com.casic.qd.smartwell.vm.AlarmListViewModel
-import com.casic.qd.smartwell.vm.CancelAlarmViewModel
+import com.casic.qd.smartwell.vm.AlarmViewModel
import com.pengxh.app.multilib.widget.dialog.AlertControlDialog
import kotlinx.android.synthetic.main.activity_alarm_management.*
import kotlinx.android.synthetic.main.include_empty_view.*
@@ -30,8 +29,7 @@
class AlarmManagementActivity : BaseActivity() {
- private lateinit var alarmListViewModel: AlarmListViewModel
- private lateinit var cancelAlarmViewModel: CancelAlarmViewModel
+ private lateinit var alarmViewModel: AlarmViewModel
private lateinit var weakReferenceHandler: WeakReferenceHandler
private lateinit var alarmListAdapter: AlarmListAdapter
private var dataBeans: MutableList = ArrayList()
@@ -46,8 +44,7 @@
}
override fun initData() {
- alarmListViewModel = ViewModelProvider(this).get(AlarmListViewModel::class.java)
- cancelAlarmViewModel = ViewModelProvider(this).get(CancelAlarmViewModel::class.java)
+ alarmViewModel = ViewModelProvider(this).get(AlarmViewModel::class.java)
weakReferenceHandler = WeakReferenceHandler(this)
//注册广播接收者
BroadcastReceiverManager.instance.addAction(Constant.CANCEL_ALARM_ACTION,
@@ -63,7 +60,7 @@
override fun initEvent() {
obtainAlarmList(pageIndex)
- alarmListViewModel.listModel.observe(this, {
+ alarmViewModel.listModel.observe(this, {
if (it.code == 200) {
val dataRows = it.data?.rows
when {
@@ -101,7 +98,7 @@
obtainAlarmList(pageIndex)
}
- cancelAlarmViewModel.loadState.observe(this, {
+ alarmViewModel.loadState.observe(this, {
when (it) {
is LoadState.Loading -> {
DialogHelper.showLoadingDialog(this, "处理中,请稍后")
@@ -125,7 +122,7 @@
}
private fun obtainAlarmList(pageIndex: Int) {
- alarmListViewModel.obtainAlarmList("", "", "", "", "", "", "1", pageIndex)
+ alarmViewModel.obtainAlarmList("", "", "", "", "", "", "1", pageIndex)
}
private class WeakReferenceHandler(activity: AlarmManagementActivity) :
@@ -175,9 +172,7 @@
"操作失败,告警ID异常".show()
return
}
- activity.cancelAlarmViewModel.obtainOperationResult(
- alarmId!!
- )
+ activity.alarmViewModel.obtainOperationResult(alarmId!!)
}
override fun onCancelClick() {
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt
new file mode 100644
index 0000000..61c68ab
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt
@@ -0,0 +1,208 @@
+package com.casic.qd.smartwell.view
+
+import android.annotation.SuppressLint
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+import android.os.Handler
+import android.os.Looper
+import android.os.Message
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.LinearLayoutManager
+import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.adapter.AlarmListAdapter
+import com.casic.qd.smartwell.base.BaseActivity
+import com.casic.qd.smartwell.extensions.navigatePageTo
+import com.casic.qd.smartwell.extensions.show
+import com.casic.qd.smartwell.extensions.showEmptyPage
+import com.casic.qd.smartwell.model.AlarmListModel
+import com.casic.qd.smartwell.utils.BroadcastReceiverManager
+import com.casic.qd.smartwell.utils.Constant
+import com.casic.qd.smartwell.utils.DialogHelper
+import com.casic.qd.smartwell.utils.LoadState
+import com.casic.qd.smartwell.vm.AlarmViewModel
+import com.casic.qd.smartwell.vm.SearchAlarmViewModel
+import com.pengxh.app.multilib.widget.dialog.AlertControlDialog
+import kotlinx.android.synthetic.main.activity_alarm_search_result.*
+import kotlinx.android.synthetic.main.include_base_title.*
+import kotlinx.android.synthetic.main.include_empty_view.*
+import java.lang.ref.WeakReference
+
+class AlarmSearchResultActivity : BaseActivity() {
+
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+ private lateinit var searchAlarmViewModel: SearchAlarmViewModel
+ private lateinit var alarmViewModel: AlarmViewModel
+ private lateinit var args: ArrayList
+ private lateinit var alarmListAdapter: AlarmListAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var pageIndex = 1
+ private var isRefresh = false
+ private var isLoadMore = false
+
+ override fun initLayoutView(): Int = R.layout.activity_alarm_search_result
+
+ override fun setupTopBarLayout() {
+ titleView.text = "查询结果"
+ }
+
+ override fun initData() {
+ args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!!
+ weakReferenceHandler = WeakReferenceHandler(this)
+ searchAlarmViewModel = ViewModelProvider(this).get(SearchAlarmViewModel::class.java)
+ alarmViewModel = ViewModelProvider(this).get(AlarmViewModel::class.java)
+ //注册广播接收者
+ BroadcastReceiverManager.instance.addAction(Constant.CANCEL_ALARM_ACTION,
+ object : BroadcastReceiver() {
+ override fun onReceive(context: Context?, intent: Intent?) {
+ //收到广播相当于做了一次列表刷新
+ isRefresh = true
+ pageIndex = 1
+ obtainSearchResult(args, pageIndex)
+ }
+ })
+ }
+
+ override fun initEvent() {
+ obtainSearchResult(args, pageIndex)
+ searchAlarmViewModel.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()
+ }
+ dataBeans.addAll(dataRows!!)
+ resultRefreshLayout.finishLoadMore()
+ isLoadMore = false
+ }
+ else -> {
+ dataBeans = dataRows!!
+ }
+ }
+ weakReferenceHandler.sendEmptyMessage(2022041501)
+ }
+ })
+ searchAlarmViewModel.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)
+ }
+
+ //消警状态处理
+ alarmViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "处理中,请稍后")
+ }
+ is LoadState.Success -> {
+ DialogHelper.dismissLoadingDialog()
+ //刷新列表
+ BroadcastReceiverManager.instance.sendBroadcast(
+ Constant.CANCEL_ALARM_ACTION, ""
+ )
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+ }
+
+ private fun obtainSearchResult(args: ArrayList, pageIndex: Int) {
+ searchAlarmViewModel.obtainSearchResult(
+ args[0], args[1], args[2], args[3], args[4], args[5], "1", pageIndex
+ )
+ }
+
+ private class WeakReferenceHandler(activity: AlarmSearchResultActivity) :
+ Handler(Looper.getMainLooper()) {
+ private val reference: WeakReference = WeakReference(activity)
+
+ @SuppressLint("NotifyDataSetChanged")
+ override fun handleMessage(msg: Message) {
+ super.handleMessage(msg)
+ val activity = reference.get()!!
+ if (msg.what == 2022041501) {
+ if (activity.isRefresh || activity.isLoadMore) {
+ activity.alarmListAdapter.notifyDataSetChanged()
+ } else { //首次加载数据
+ if (activity.dataBeans.size == 0) {
+ activity.emptyView!!.showEmptyPage {
+ activity.obtainSearchResult(activity.args, activity.pageIndex)
+ }
+ } else {
+ activity.emptyView!!.hide()
+ activity.alarmListAdapter = AlarmListAdapter(activity, activity.dataBeans)
+ activity.resultRecyclerView!!.layoutManager = LinearLayoutManager(activity)
+ activity.resultRecyclerView!!.adapter = activity.alarmListAdapter
+ activity.alarmListAdapter.setOnItemClickListener(object :
+ AlarmListAdapter.OnItemClickListener {
+ override fun onClicked(position: Int) {
+ val wellId = activity.dataBeans[position].wellId.toString()
+ if (wellId.isBlank()) {
+ "井编号异常,无法查看详情".show()
+ return
+ }
+ activity.navigatePageTo(WellDetailActivity::class.java, wellId)
+ }
+
+ override fun onOperationClicked(position: Int) {
+ AlertControlDialog.Builder()
+ .setContext(activity)
+ .setTitle("确认操作")
+ .setMessage("确定取消报警吗?")
+ .setNegativeButton("取消")
+ .setPositiveButton("确定")
+ .setOnDialogButtonClickListener(object :
+ AlertControlDialog.OnDialogButtonClickListener {
+ override fun onConfirmClick() {
+ val alarmId = activity.dataBeans[position].id
+ if (alarmId.toString().isBlank()) {
+ "操作失败,告警ID异常".show()
+ return
+ }
+ activity.alarmViewModel.obtainOperationResult(alarmId!!)
+ }
+
+ override fun onCancelClick() {
+
+ }
+ }).build().show()
+ }
+ })
+ }
+ }
+ }
+ }
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ //解注册广播接收者,防止内存泄漏
+ BroadcastReceiverManager.instance.destroy(Constant.CANCEL_ALARM_ACTION)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceSearchResultActivity.kt
new file mode 100644
index 0000000..cfc25d2
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceSearchResultActivity.kt
@@ -0,0 +1,21 @@
+package com.casic.qd.smartwell.view
+
+import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseActivity
+
+class DeviceSearchResultActivity : BaseActivity() {
+
+ override fun initLayoutView(): Int = R.layout.activity_device_search_result
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt
index 526fa73..c86ee63 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt
@@ -13,7 +13,7 @@
import com.casic.qd.smartwell.extensions.show
import com.casic.qd.smartwell.utils.*
import com.casic.qd.smartwell.vm.AuthenticateViewModel
-import com.casic.qd.smartwell.vm.LoginInViewModel
+import com.casic.qd.smartwell.vm.LoginViewModel
import com.casic.qd.smartwell.vm.UserDetailViewModel
import com.qmuiteam.qmui.util.QMUIStatusBarHelper
import kotlinx.android.synthetic.main.activity_login.*
@@ -21,7 +21,7 @@
class LoginActivity : BaseActivity() {
private lateinit var authenticateViewModel: AuthenticateViewModel
- private lateinit var loginInViewModel: LoginInViewModel
+ private lateinit var loginViewModel: LoginViewModel
private lateinit var userDetailViewModel: UserDetailViewModel
private val textWatcher = object : TextWatcher {
@@ -54,7 +54,7 @@
userNameView.setText(SaveKeyValues.getValue(Constant.ACCOUNT, "") as String)
userPasswordView.setText(SaveKeyValues.getValue(Constant.PASSWORD, "") as String)
authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java)
- loginInViewModel = ViewModelProvider(this).get(LoginInViewModel::class.java)
+ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java)
userDetailViewModel = ViewModelProvider(this).get(UserDetailViewModel::class.java)
}
@@ -100,18 +100,24 @@
val dataByPublicKey =
RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey!!)
//登录并获取Token,POST请求
- loginInViewModel.login(it.data!!.sid!!, account, dataByPublicKey)
- loginInViewModel.resultModel.observe(this, { loginResult ->
+ loginViewModel.inn(it.data!!.sid!!, account, dataByPublicKey)
+ loginViewModel.resultModel.observe(this, { loginResult ->
if (loginResult.code == 200) {
AuthenticationHelper.saveToken(loginResult.data!!.token!!)
- //获取token之后保存用户信息
+ /**
+ * 获取token之后保存用户信息
+ * */
userDetailViewModel.obtainUserDetail()
+ /**
+ * 根据用户有权查看的设备类型
+ */
+ authenticateViewModel.obtainAuthorByDept()
//验证成功登录
this.navigatePageTo(MainActivity::class.java)
finish()
}
})
- loginInViewModel.loadState.observe(this, { loginState ->
+ loginViewModel.loadState.observe(this, { loginState ->
when (loginState) {
is LoadState.Success -> {
"登录成功".show()
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0c249a9..f11ea34 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -46,9 +46,10 @@
-
+
+
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
index 428051e..d2ac7cf 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
@@ -1,13 +1,20 @@
package com.casic.qd.smartwell.extensions
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
import com.github.mikephil.charting.charts.BarChart
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis
import com.github.mikephil.charting.formatter.ValueFormatter
+import com.pengxh.app.multilib.utils.SizeUtil
fun BarChart.init(barLabels: MutableList) {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.animateY(1200, Easing.EaseInOutQuad)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt
index 4aa46bb..e67f075 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt
@@ -1,13 +1,20 @@
package com.casic.qd.smartwell.extensions
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.HorizontalBarChart
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis
import com.github.mikephil.charting.formatter.ValueFormatter
+import com.pengxh.app.multilib.utils.SizeUtil
fun HorizontalBarChart.init(barLabels: MutableList) {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.animateY(1200, Easing.EaseInOutQuad)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt
index 87c1c61..25f238f 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt
@@ -1,13 +1,20 @@
package com.casic.qd.smartwell.extensions
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.LineChart
import com.github.mikephil.charting.components.Legend
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis
+import com.pengxh.app.multilib.utils.SizeUtil
fun LineChart.init() {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.setDrawGridBackground(false)
this.setDrawBorders(false)
this.animateY(1200, Easing.EaseInOutQuad)
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt
index a88e096..3497dc7 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt
@@ -2,11 +2,18 @@
import android.graphics.Color
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.PieChart
import com.github.mikephil.charting.components.Legend
+import com.pengxh.app.multilib.utils.SizeUtil
fun PieChart.init() {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.setUsePercentValues(false) //百分比数字显示
this.description.isEnabled = false
this.dragDecelerationFrictionCoef = 0.95f //图表转动阻力摩擦系数[0,1]
diff --git a/app/src/main/java/com/casic/qd/smartwell/model/DeviceTypeModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/DeviceTypeModel.kt
new file mode 100644
index 0000000..04d2a8a
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/model/DeviceTypeModel.kt
@@ -0,0 +1,14 @@
+package com.casic.qd.smartwell.model
+
+class DeviceTypeModel {
+ var code = 0
+ var data: List? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var deviceType: String? = null
+ var name: String? = null
+ var value: String? = null
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/model/OwnerShipModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/OwnerShipModel.kt
new file mode 100644
index 0000000..7ced62c
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/model/OwnerShipModel.kt
@@ -0,0 +1,23 @@
+package com.casic.qd.smartwell.model
+
+class OwnerShipModel {
+ var code = 0
+ var data: DataBean? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var list: List? = null
+
+ class ListBean {
+ var isChecked = false
+ var code: String? = null
+ var id: String? = null
+ var name: String? = null
+ var isOpen = false
+ var pcodes: String? = null
+ var pid: String? = null
+ var value: String? = null
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt
index 5a509d2..cb85f80 100644
--- a/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt
@@ -31,6 +31,7 @@
const val ACCOUNT = "account"
const val PASSWORD = "password"
const val USER_DETAIL_MODEL = "userDetailModel"
+ const val USER_DEVICE_TYPE = "userDeviceType"
const val CANCEL_ALARM_ACTION = "cancelAlarm"
const val AREA_ID = "110000"
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt
index 019d741..9496bf4 100644
--- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt
@@ -163,4 +163,28 @@
*/
@GET("/statics/deviceStaticsByType")
suspend fun deviceCountByType(@Header("token") token: String): String
+
+ /**
+ * 根据部门获取支持的设备类型
+ */
+ /**
+ * 管网资产统计
+ */
+ @GET("/config/getAuthorByDept")
+ suspend fun obtainAuthorByDept(@Header("token") token: String): String
+
+ /**
+ * 获取设备类型
+ */
+ @GET("/device/type")
+ suspend fun obtainDeviceType(@Header("token") token: String): String
+
+ /**
+ * 获取权属单位
+ */
+ @GET("/dept/tree")
+ suspend fun obtainOwnerShip(
+ @Header("token") token: String,
+ @Query("deptType") deptType: String
+ ): String
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt
index 3985af9..575b2a9 100644
--- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt
@@ -160,4 +160,25 @@
suspend fun deviceCountByType(): String {
return api.deviceCountByType(AuthenticationHelper.token!!)
}
+
+ /**
+ * 根据部门获取支持的设备类型
+ */
+ suspend fun obtainAuthorByDept(): String {
+ return api.obtainAuthorByDept(AuthenticationHelper.token!!)
+ }
+
+ /**
+ * 获取设备类型
+ */
+ suspend fun obtainDeviceType(): String {
+ return api.obtainDeviceType(AuthenticationHelper.token!!)
+ }
+
+ /**
+ * 获取权属单位
+ */
+ suspend fun obtainOwnerShip(deptType: String): String {
+ return api.obtainOwnerShip(AuthenticationHelper.token!!, deptType)
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt
index 2a6d344..abaffb2 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt
@@ -20,8 +20,7 @@
import com.casic.qd.smartwell.utils.Constant
import com.casic.qd.smartwell.utils.DialogHelper
import com.casic.qd.smartwell.utils.LoadState
-import com.casic.qd.smartwell.vm.AlarmListViewModel
-import com.casic.qd.smartwell.vm.CancelAlarmViewModel
+import com.casic.qd.smartwell.vm.AlarmViewModel
import com.pengxh.app.multilib.widget.dialog.AlertControlDialog
import kotlinx.android.synthetic.main.activity_alarm_management.*
import kotlinx.android.synthetic.main.include_empty_view.*
@@ -30,8 +29,7 @@
class AlarmManagementActivity : BaseActivity() {
- private lateinit var alarmListViewModel: AlarmListViewModel
- private lateinit var cancelAlarmViewModel: CancelAlarmViewModel
+ private lateinit var alarmViewModel: AlarmViewModel
private lateinit var weakReferenceHandler: WeakReferenceHandler
private lateinit var alarmListAdapter: AlarmListAdapter
private var dataBeans: MutableList = ArrayList()
@@ -46,8 +44,7 @@
}
override fun initData() {
- alarmListViewModel = ViewModelProvider(this).get(AlarmListViewModel::class.java)
- cancelAlarmViewModel = ViewModelProvider(this).get(CancelAlarmViewModel::class.java)
+ alarmViewModel = ViewModelProvider(this).get(AlarmViewModel::class.java)
weakReferenceHandler = WeakReferenceHandler(this)
//注册广播接收者
BroadcastReceiverManager.instance.addAction(Constant.CANCEL_ALARM_ACTION,
@@ -63,7 +60,7 @@
override fun initEvent() {
obtainAlarmList(pageIndex)
- alarmListViewModel.listModel.observe(this, {
+ alarmViewModel.listModel.observe(this, {
if (it.code == 200) {
val dataRows = it.data?.rows
when {
@@ -101,7 +98,7 @@
obtainAlarmList(pageIndex)
}
- cancelAlarmViewModel.loadState.observe(this, {
+ alarmViewModel.loadState.observe(this, {
when (it) {
is LoadState.Loading -> {
DialogHelper.showLoadingDialog(this, "处理中,请稍后")
@@ -125,7 +122,7 @@
}
private fun obtainAlarmList(pageIndex: Int) {
- alarmListViewModel.obtainAlarmList("", "", "", "", "", "", "1", pageIndex)
+ alarmViewModel.obtainAlarmList("", "", "", "", "", "", "1", pageIndex)
}
private class WeakReferenceHandler(activity: AlarmManagementActivity) :
@@ -175,9 +172,7 @@
"操作失败,告警ID异常".show()
return
}
- activity.cancelAlarmViewModel.obtainOperationResult(
- alarmId!!
- )
+ activity.alarmViewModel.obtainOperationResult(alarmId!!)
}
override fun onCancelClick() {
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt
new file mode 100644
index 0000000..61c68ab
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt
@@ -0,0 +1,208 @@
+package com.casic.qd.smartwell.view
+
+import android.annotation.SuppressLint
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+import android.os.Handler
+import android.os.Looper
+import android.os.Message
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.LinearLayoutManager
+import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.adapter.AlarmListAdapter
+import com.casic.qd.smartwell.base.BaseActivity
+import com.casic.qd.smartwell.extensions.navigatePageTo
+import com.casic.qd.smartwell.extensions.show
+import com.casic.qd.smartwell.extensions.showEmptyPage
+import com.casic.qd.smartwell.model.AlarmListModel
+import com.casic.qd.smartwell.utils.BroadcastReceiverManager
+import com.casic.qd.smartwell.utils.Constant
+import com.casic.qd.smartwell.utils.DialogHelper
+import com.casic.qd.smartwell.utils.LoadState
+import com.casic.qd.smartwell.vm.AlarmViewModel
+import com.casic.qd.smartwell.vm.SearchAlarmViewModel
+import com.pengxh.app.multilib.widget.dialog.AlertControlDialog
+import kotlinx.android.synthetic.main.activity_alarm_search_result.*
+import kotlinx.android.synthetic.main.include_base_title.*
+import kotlinx.android.synthetic.main.include_empty_view.*
+import java.lang.ref.WeakReference
+
+class AlarmSearchResultActivity : BaseActivity() {
+
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+ private lateinit var searchAlarmViewModel: SearchAlarmViewModel
+ private lateinit var alarmViewModel: AlarmViewModel
+ private lateinit var args: ArrayList
+ private lateinit var alarmListAdapter: AlarmListAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var pageIndex = 1
+ private var isRefresh = false
+ private var isLoadMore = false
+
+ override fun initLayoutView(): Int = R.layout.activity_alarm_search_result
+
+ override fun setupTopBarLayout() {
+ titleView.text = "查询结果"
+ }
+
+ override fun initData() {
+ args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!!
+ weakReferenceHandler = WeakReferenceHandler(this)
+ searchAlarmViewModel = ViewModelProvider(this).get(SearchAlarmViewModel::class.java)
+ alarmViewModel = ViewModelProvider(this).get(AlarmViewModel::class.java)
+ //注册广播接收者
+ BroadcastReceiverManager.instance.addAction(Constant.CANCEL_ALARM_ACTION,
+ object : BroadcastReceiver() {
+ override fun onReceive(context: Context?, intent: Intent?) {
+ //收到广播相当于做了一次列表刷新
+ isRefresh = true
+ pageIndex = 1
+ obtainSearchResult(args, pageIndex)
+ }
+ })
+ }
+
+ override fun initEvent() {
+ obtainSearchResult(args, pageIndex)
+ searchAlarmViewModel.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()
+ }
+ dataBeans.addAll(dataRows!!)
+ resultRefreshLayout.finishLoadMore()
+ isLoadMore = false
+ }
+ else -> {
+ dataBeans = dataRows!!
+ }
+ }
+ weakReferenceHandler.sendEmptyMessage(2022041501)
+ }
+ })
+ searchAlarmViewModel.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)
+ }
+
+ //消警状态处理
+ alarmViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "处理中,请稍后")
+ }
+ is LoadState.Success -> {
+ DialogHelper.dismissLoadingDialog()
+ //刷新列表
+ BroadcastReceiverManager.instance.sendBroadcast(
+ Constant.CANCEL_ALARM_ACTION, ""
+ )
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+ }
+
+ private fun obtainSearchResult(args: ArrayList, pageIndex: Int) {
+ searchAlarmViewModel.obtainSearchResult(
+ args[0], args[1], args[2], args[3], args[4], args[5], "1", pageIndex
+ )
+ }
+
+ private class WeakReferenceHandler(activity: AlarmSearchResultActivity) :
+ Handler(Looper.getMainLooper()) {
+ private val reference: WeakReference = WeakReference(activity)
+
+ @SuppressLint("NotifyDataSetChanged")
+ override fun handleMessage(msg: Message) {
+ super.handleMessage(msg)
+ val activity = reference.get()!!
+ if (msg.what == 2022041501) {
+ if (activity.isRefresh || activity.isLoadMore) {
+ activity.alarmListAdapter.notifyDataSetChanged()
+ } else { //首次加载数据
+ if (activity.dataBeans.size == 0) {
+ activity.emptyView!!.showEmptyPage {
+ activity.obtainSearchResult(activity.args, activity.pageIndex)
+ }
+ } else {
+ activity.emptyView!!.hide()
+ activity.alarmListAdapter = AlarmListAdapter(activity, activity.dataBeans)
+ activity.resultRecyclerView!!.layoutManager = LinearLayoutManager(activity)
+ activity.resultRecyclerView!!.adapter = activity.alarmListAdapter
+ activity.alarmListAdapter.setOnItemClickListener(object :
+ AlarmListAdapter.OnItemClickListener {
+ override fun onClicked(position: Int) {
+ val wellId = activity.dataBeans[position].wellId.toString()
+ if (wellId.isBlank()) {
+ "井编号异常,无法查看详情".show()
+ return
+ }
+ activity.navigatePageTo(WellDetailActivity::class.java, wellId)
+ }
+
+ override fun onOperationClicked(position: Int) {
+ AlertControlDialog.Builder()
+ .setContext(activity)
+ .setTitle("确认操作")
+ .setMessage("确定取消报警吗?")
+ .setNegativeButton("取消")
+ .setPositiveButton("确定")
+ .setOnDialogButtonClickListener(object :
+ AlertControlDialog.OnDialogButtonClickListener {
+ override fun onConfirmClick() {
+ val alarmId = activity.dataBeans[position].id
+ if (alarmId.toString().isBlank()) {
+ "操作失败,告警ID异常".show()
+ return
+ }
+ activity.alarmViewModel.obtainOperationResult(alarmId!!)
+ }
+
+ override fun onCancelClick() {
+
+ }
+ }).build().show()
+ }
+ })
+ }
+ }
+ }
+ }
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ //解注册广播接收者,防止内存泄漏
+ BroadcastReceiverManager.instance.destroy(Constant.CANCEL_ALARM_ACTION)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceSearchResultActivity.kt
new file mode 100644
index 0000000..cfc25d2
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceSearchResultActivity.kt
@@ -0,0 +1,21 @@
+package com.casic.qd.smartwell.view
+
+import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseActivity
+
+class DeviceSearchResultActivity : BaseActivity() {
+
+ override fun initLayoutView(): Int = R.layout.activity_device_search_result
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt
index 526fa73..c86ee63 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt
@@ -13,7 +13,7 @@
import com.casic.qd.smartwell.extensions.show
import com.casic.qd.smartwell.utils.*
import com.casic.qd.smartwell.vm.AuthenticateViewModel
-import com.casic.qd.smartwell.vm.LoginInViewModel
+import com.casic.qd.smartwell.vm.LoginViewModel
import com.casic.qd.smartwell.vm.UserDetailViewModel
import com.qmuiteam.qmui.util.QMUIStatusBarHelper
import kotlinx.android.synthetic.main.activity_login.*
@@ -21,7 +21,7 @@
class LoginActivity : BaseActivity() {
private lateinit var authenticateViewModel: AuthenticateViewModel
- private lateinit var loginInViewModel: LoginInViewModel
+ private lateinit var loginViewModel: LoginViewModel
private lateinit var userDetailViewModel: UserDetailViewModel
private val textWatcher = object : TextWatcher {
@@ -54,7 +54,7 @@
userNameView.setText(SaveKeyValues.getValue(Constant.ACCOUNT, "") as String)
userPasswordView.setText(SaveKeyValues.getValue(Constant.PASSWORD, "") as String)
authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java)
- loginInViewModel = ViewModelProvider(this).get(LoginInViewModel::class.java)
+ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java)
userDetailViewModel = ViewModelProvider(this).get(UserDetailViewModel::class.java)
}
@@ -100,18 +100,24 @@
val dataByPublicKey =
RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey!!)
//登录并获取Token,POST请求
- loginInViewModel.login(it.data!!.sid!!, account, dataByPublicKey)
- loginInViewModel.resultModel.observe(this, { loginResult ->
+ loginViewModel.inn(it.data!!.sid!!, account, dataByPublicKey)
+ loginViewModel.resultModel.observe(this, { loginResult ->
if (loginResult.code == 200) {
AuthenticationHelper.saveToken(loginResult.data!!.token!!)
- //获取token之后保存用户信息
+ /**
+ * 获取token之后保存用户信息
+ * */
userDetailViewModel.obtainUserDetail()
+ /**
+ * 根据用户有权查看的设备类型
+ */
+ authenticateViewModel.obtainAuthorByDept()
//验证成功登录
this.navigatePageTo(MainActivity::class.java)
finish()
}
})
- loginInViewModel.loadState.observe(this, { loginState ->
+ loginViewModel.loadState.observe(this, { loginState ->
when (loginState) {
is LoadState.Success -> {
"登录成功".show()
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt
index 3f497c9..02435a3 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt
@@ -17,11 +17,8 @@
import com.casic.qd.smartwell.extensions.*
import com.casic.qd.smartwell.model.BannerImageModel
import com.casic.qd.smartwell.model.LineChartEntryModel
-import com.casic.qd.smartwell.utils.AuthenticationHelper
-import com.casic.qd.smartwell.utils.ChartViewHelper
-import com.casic.qd.smartwell.utils.Constant
-import com.casic.qd.smartwell.utils.PageNavigationManager
-import com.casic.qd.smartwell.vm.LoginOutViewModel
+import com.casic.qd.smartwell.utils.*
+import com.casic.qd.smartwell.vm.LoginViewModel
import com.casic.qd.smartwell.vm.WaterStatisticsViewModel
import com.github.mikephil.charting.data.Entry
import com.pengxh.app.multilib.widget.dialog.AlertControlDialog
@@ -38,7 +35,7 @@
private val context: Context = this@MainActivity
private var clickTime: Long = 0
- private lateinit var loginOutViewModel: LoginOutViewModel
+ private lateinit var loginViewModel: LoginViewModel
private lateinit var waterViewModel: WaterStatisticsViewModel
private val xAxisDate: MutableList = ArrayList()
private val entryModels: MutableList = ArrayList()
@@ -111,7 +108,7 @@
})
//初始化vm
- loginOutViewModel = ViewModelProvider(this).get(LoginOutViewModel::class.java)
+ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java)
waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java)
weakReferenceHandler = WeakReferenceHandler(this)
}
@@ -127,19 +124,20 @@
.setOnDialogButtonClickListener(object :
AlertControlDialog.OnDialogButtonClickListener {
override fun onConfirmClick() {
- loginOutViewModel.loginOut()
+ loginViewModel.out()
}
override fun onCancelClick() {}
}).build().show()
}
- loginOutViewModel.resultModel.observe(this, {
- if (it.code == 200) {
+ loginViewModel.loadState.observe(this, {
+ if (it == LoadState.Success) {
AuthenticationHelper.removeToken()
this.navigatePageTo(LoginActivity::class.java)
PageNavigationManager.finishAllActivity()
}
})
+
rightOptionView.setOnClickListener {
navigatePageTo(AlarmManagementActivity::class.java)
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0c249a9..f11ea34 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -46,9 +46,10 @@
-
+
+
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
index 428051e..d2ac7cf 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
@@ -1,13 +1,20 @@
package com.casic.qd.smartwell.extensions
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
import com.github.mikephil.charting.charts.BarChart
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis
import com.github.mikephil.charting.formatter.ValueFormatter
+import com.pengxh.app.multilib.utils.SizeUtil
fun BarChart.init(barLabels: MutableList) {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.animateY(1200, Easing.EaseInOutQuad)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt
index 4aa46bb..e67f075 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt
@@ -1,13 +1,20 @@
package com.casic.qd.smartwell.extensions
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.HorizontalBarChart
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis
import com.github.mikephil.charting.formatter.ValueFormatter
+import com.pengxh.app.multilib.utils.SizeUtil
fun HorizontalBarChart.init(barLabels: MutableList) {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.animateY(1200, Easing.EaseInOutQuad)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt
index 87c1c61..25f238f 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt
@@ -1,13 +1,20 @@
package com.casic.qd.smartwell.extensions
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.LineChart
import com.github.mikephil.charting.components.Legend
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis
+import com.pengxh.app.multilib.utils.SizeUtil
fun LineChart.init() {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.setDrawGridBackground(false)
this.setDrawBorders(false)
this.animateY(1200, Easing.EaseInOutQuad)
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt
index a88e096..3497dc7 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt
@@ -2,11 +2,18 @@
import android.graphics.Color
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.PieChart
import com.github.mikephil.charting.components.Legend
+import com.pengxh.app.multilib.utils.SizeUtil
fun PieChart.init() {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.setUsePercentValues(false) //百分比数字显示
this.description.isEnabled = false
this.dragDecelerationFrictionCoef = 0.95f //图表转动阻力摩擦系数[0,1]
diff --git a/app/src/main/java/com/casic/qd/smartwell/model/DeviceTypeModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/DeviceTypeModel.kt
new file mode 100644
index 0000000..04d2a8a
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/model/DeviceTypeModel.kt
@@ -0,0 +1,14 @@
+package com.casic.qd.smartwell.model
+
+class DeviceTypeModel {
+ var code = 0
+ var data: List? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var deviceType: String? = null
+ var name: String? = null
+ var value: String? = null
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/model/OwnerShipModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/OwnerShipModel.kt
new file mode 100644
index 0000000..7ced62c
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/model/OwnerShipModel.kt
@@ -0,0 +1,23 @@
+package com.casic.qd.smartwell.model
+
+class OwnerShipModel {
+ var code = 0
+ var data: DataBean? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var list: List? = null
+
+ class ListBean {
+ var isChecked = false
+ var code: String? = null
+ var id: String? = null
+ var name: String? = null
+ var isOpen = false
+ var pcodes: String? = null
+ var pid: String? = null
+ var value: String? = null
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt
index 5a509d2..cb85f80 100644
--- a/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt
@@ -31,6 +31,7 @@
const val ACCOUNT = "account"
const val PASSWORD = "password"
const val USER_DETAIL_MODEL = "userDetailModel"
+ const val USER_DEVICE_TYPE = "userDeviceType"
const val CANCEL_ALARM_ACTION = "cancelAlarm"
const val AREA_ID = "110000"
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt
index 019d741..9496bf4 100644
--- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt
@@ -163,4 +163,28 @@
*/
@GET("/statics/deviceStaticsByType")
suspend fun deviceCountByType(@Header("token") token: String): String
+
+ /**
+ * 根据部门获取支持的设备类型
+ */
+ /**
+ * 管网资产统计
+ */
+ @GET("/config/getAuthorByDept")
+ suspend fun obtainAuthorByDept(@Header("token") token: String): String
+
+ /**
+ * 获取设备类型
+ */
+ @GET("/device/type")
+ suspend fun obtainDeviceType(@Header("token") token: String): String
+
+ /**
+ * 获取权属单位
+ */
+ @GET("/dept/tree")
+ suspend fun obtainOwnerShip(
+ @Header("token") token: String,
+ @Query("deptType") deptType: String
+ ): String
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt
index 3985af9..575b2a9 100644
--- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt
@@ -160,4 +160,25 @@
suspend fun deviceCountByType(): String {
return api.deviceCountByType(AuthenticationHelper.token!!)
}
+
+ /**
+ * 根据部门获取支持的设备类型
+ */
+ suspend fun obtainAuthorByDept(): String {
+ return api.obtainAuthorByDept(AuthenticationHelper.token!!)
+ }
+
+ /**
+ * 获取设备类型
+ */
+ suspend fun obtainDeviceType(): String {
+ return api.obtainDeviceType(AuthenticationHelper.token!!)
+ }
+
+ /**
+ * 获取权属单位
+ */
+ suspend fun obtainOwnerShip(deptType: String): String {
+ return api.obtainOwnerShip(AuthenticationHelper.token!!, deptType)
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt
index 2a6d344..abaffb2 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt
@@ -20,8 +20,7 @@
import com.casic.qd.smartwell.utils.Constant
import com.casic.qd.smartwell.utils.DialogHelper
import com.casic.qd.smartwell.utils.LoadState
-import com.casic.qd.smartwell.vm.AlarmListViewModel
-import com.casic.qd.smartwell.vm.CancelAlarmViewModel
+import com.casic.qd.smartwell.vm.AlarmViewModel
import com.pengxh.app.multilib.widget.dialog.AlertControlDialog
import kotlinx.android.synthetic.main.activity_alarm_management.*
import kotlinx.android.synthetic.main.include_empty_view.*
@@ -30,8 +29,7 @@
class AlarmManagementActivity : BaseActivity() {
- private lateinit var alarmListViewModel: AlarmListViewModel
- private lateinit var cancelAlarmViewModel: CancelAlarmViewModel
+ private lateinit var alarmViewModel: AlarmViewModel
private lateinit var weakReferenceHandler: WeakReferenceHandler
private lateinit var alarmListAdapter: AlarmListAdapter
private var dataBeans: MutableList = ArrayList()
@@ -46,8 +44,7 @@
}
override fun initData() {
- alarmListViewModel = ViewModelProvider(this).get(AlarmListViewModel::class.java)
- cancelAlarmViewModel = ViewModelProvider(this).get(CancelAlarmViewModel::class.java)
+ alarmViewModel = ViewModelProvider(this).get(AlarmViewModel::class.java)
weakReferenceHandler = WeakReferenceHandler(this)
//注册广播接收者
BroadcastReceiverManager.instance.addAction(Constant.CANCEL_ALARM_ACTION,
@@ -63,7 +60,7 @@
override fun initEvent() {
obtainAlarmList(pageIndex)
- alarmListViewModel.listModel.observe(this, {
+ alarmViewModel.listModel.observe(this, {
if (it.code == 200) {
val dataRows = it.data?.rows
when {
@@ -101,7 +98,7 @@
obtainAlarmList(pageIndex)
}
- cancelAlarmViewModel.loadState.observe(this, {
+ alarmViewModel.loadState.observe(this, {
when (it) {
is LoadState.Loading -> {
DialogHelper.showLoadingDialog(this, "处理中,请稍后")
@@ -125,7 +122,7 @@
}
private fun obtainAlarmList(pageIndex: Int) {
- alarmListViewModel.obtainAlarmList("", "", "", "", "", "", "1", pageIndex)
+ alarmViewModel.obtainAlarmList("", "", "", "", "", "", "1", pageIndex)
}
private class WeakReferenceHandler(activity: AlarmManagementActivity) :
@@ -175,9 +172,7 @@
"操作失败,告警ID异常".show()
return
}
- activity.cancelAlarmViewModel.obtainOperationResult(
- alarmId!!
- )
+ activity.alarmViewModel.obtainOperationResult(alarmId!!)
}
override fun onCancelClick() {
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt
new file mode 100644
index 0000000..61c68ab
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt
@@ -0,0 +1,208 @@
+package com.casic.qd.smartwell.view
+
+import android.annotation.SuppressLint
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+import android.os.Handler
+import android.os.Looper
+import android.os.Message
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.LinearLayoutManager
+import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.adapter.AlarmListAdapter
+import com.casic.qd.smartwell.base.BaseActivity
+import com.casic.qd.smartwell.extensions.navigatePageTo
+import com.casic.qd.smartwell.extensions.show
+import com.casic.qd.smartwell.extensions.showEmptyPage
+import com.casic.qd.smartwell.model.AlarmListModel
+import com.casic.qd.smartwell.utils.BroadcastReceiverManager
+import com.casic.qd.smartwell.utils.Constant
+import com.casic.qd.smartwell.utils.DialogHelper
+import com.casic.qd.smartwell.utils.LoadState
+import com.casic.qd.smartwell.vm.AlarmViewModel
+import com.casic.qd.smartwell.vm.SearchAlarmViewModel
+import com.pengxh.app.multilib.widget.dialog.AlertControlDialog
+import kotlinx.android.synthetic.main.activity_alarm_search_result.*
+import kotlinx.android.synthetic.main.include_base_title.*
+import kotlinx.android.synthetic.main.include_empty_view.*
+import java.lang.ref.WeakReference
+
+class AlarmSearchResultActivity : BaseActivity() {
+
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+ private lateinit var searchAlarmViewModel: SearchAlarmViewModel
+ private lateinit var alarmViewModel: AlarmViewModel
+ private lateinit var args: ArrayList
+ private lateinit var alarmListAdapter: AlarmListAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var pageIndex = 1
+ private var isRefresh = false
+ private var isLoadMore = false
+
+ override fun initLayoutView(): Int = R.layout.activity_alarm_search_result
+
+ override fun setupTopBarLayout() {
+ titleView.text = "查询结果"
+ }
+
+ override fun initData() {
+ args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!!
+ weakReferenceHandler = WeakReferenceHandler(this)
+ searchAlarmViewModel = ViewModelProvider(this).get(SearchAlarmViewModel::class.java)
+ alarmViewModel = ViewModelProvider(this).get(AlarmViewModel::class.java)
+ //注册广播接收者
+ BroadcastReceiverManager.instance.addAction(Constant.CANCEL_ALARM_ACTION,
+ object : BroadcastReceiver() {
+ override fun onReceive(context: Context?, intent: Intent?) {
+ //收到广播相当于做了一次列表刷新
+ isRefresh = true
+ pageIndex = 1
+ obtainSearchResult(args, pageIndex)
+ }
+ })
+ }
+
+ override fun initEvent() {
+ obtainSearchResult(args, pageIndex)
+ searchAlarmViewModel.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()
+ }
+ dataBeans.addAll(dataRows!!)
+ resultRefreshLayout.finishLoadMore()
+ isLoadMore = false
+ }
+ else -> {
+ dataBeans = dataRows!!
+ }
+ }
+ weakReferenceHandler.sendEmptyMessage(2022041501)
+ }
+ })
+ searchAlarmViewModel.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)
+ }
+
+ //消警状态处理
+ alarmViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "处理中,请稍后")
+ }
+ is LoadState.Success -> {
+ DialogHelper.dismissLoadingDialog()
+ //刷新列表
+ BroadcastReceiverManager.instance.sendBroadcast(
+ Constant.CANCEL_ALARM_ACTION, ""
+ )
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+ }
+
+ private fun obtainSearchResult(args: ArrayList, pageIndex: Int) {
+ searchAlarmViewModel.obtainSearchResult(
+ args[0], args[1], args[2], args[3], args[4], args[5], "1", pageIndex
+ )
+ }
+
+ private class WeakReferenceHandler(activity: AlarmSearchResultActivity) :
+ Handler(Looper.getMainLooper()) {
+ private val reference: WeakReference = WeakReference(activity)
+
+ @SuppressLint("NotifyDataSetChanged")
+ override fun handleMessage(msg: Message) {
+ super.handleMessage(msg)
+ val activity = reference.get()!!
+ if (msg.what == 2022041501) {
+ if (activity.isRefresh || activity.isLoadMore) {
+ activity.alarmListAdapter.notifyDataSetChanged()
+ } else { //首次加载数据
+ if (activity.dataBeans.size == 0) {
+ activity.emptyView!!.showEmptyPage {
+ activity.obtainSearchResult(activity.args, activity.pageIndex)
+ }
+ } else {
+ activity.emptyView!!.hide()
+ activity.alarmListAdapter = AlarmListAdapter(activity, activity.dataBeans)
+ activity.resultRecyclerView!!.layoutManager = LinearLayoutManager(activity)
+ activity.resultRecyclerView!!.adapter = activity.alarmListAdapter
+ activity.alarmListAdapter.setOnItemClickListener(object :
+ AlarmListAdapter.OnItemClickListener {
+ override fun onClicked(position: Int) {
+ val wellId = activity.dataBeans[position].wellId.toString()
+ if (wellId.isBlank()) {
+ "井编号异常,无法查看详情".show()
+ return
+ }
+ activity.navigatePageTo(WellDetailActivity::class.java, wellId)
+ }
+
+ override fun onOperationClicked(position: Int) {
+ AlertControlDialog.Builder()
+ .setContext(activity)
+ .setTitle("确认操作")
+ .setMessage("确定取消报警吗?")
+ .setNegativeButton("取消")
+ .setPositiveButton("确定")
+ .setOnDialogButtonClickListener(object :
+ AlertControlDialog.OnDialogButtonClickListener {
+ override fun onConfirmClick() {
+ val alarmId = activity.dataBeans[position].id
+ if (alarmId.toString().isBlank()) {
+ "操作失败,告警ID异常".show()
+ return
+ }
+ activity.alarmViewModel.obtainOperationResult(alarmId!!)
+ }
+
+ override fun onCancelClick() {
+
+ }
+ }).build().show()
+ }
+ })
+ }
+ }
+ }
+ }
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ //解注册广播接收者,防止内存泄漏
+ BroadcastReceiverManager.instance.destroy(Constant.CANCEL_ALARM_ACTION)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceSearchResultActivity.kt
new file mode 100644
index 0000000..cfc25d2
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceSearchResultActivity.kt
@@ -0,0 +1,21 @@
+package com.casic.qd.smartwell.view
+
+import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseActivity
+
+class DeviceSearchResultActivity : BaseActivity() {
+
+ override fun initLayoutView(): Int = R.layout.activity_device_search_result
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt
index 526fa73..c86ee63 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt
@@ -13,7 +13,7 @@
import com.casic.qd.smartwell.extensions.show
import com.casic.qd.smartwell.utils.*
import com.casic.qd.smartwell.vm.AuthenticateViewModel
-import com.casic.qd.smartwell.vm.LoginInViewModel
+import com.casic.qd.smartwell.vm.LoginViewModel
import com.casic.qd.smartwell.vm.UserDetailViewModel
import com.qmuiteam.qmui.util.QMUIStatusBarHelper
import kotlinx.android.synthetic.main.activity_login.*
@@ -21,7 +21,7 @@
class LoginActivity : BaseActivity() {
private lateinit var authenticateViewModel: AuthenticateViewModel
- private lateinit var loginInViewModel: LoginInViewModel
+ private lateinit var loginViewModel: LoginViewModel
private lateinit var userDetailViewModel: UserDetailViewModel
private val textWatcher = object : TextWatcher {
@@ -54,7 +54,7 @@
userNameView.setText(SaveKeyValues.getValue(Constant.ACCOUNT, "") as String)
userPasswordView.setText(SaveKeyValues.getValue(Constant.PASSWORD, "") as String)
authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java)
- loginInViewModel = ViewModelProvider(this).get(LoginInViewModel::class.java)
+ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java)
userDetailViewModel = ViewModelProvider(this).get(UserDetailViewModel::class.java)
}
@@ -100,18 +100,24 @@
val dataByPublicKey =
RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey!!)
//登录并获取Token,POST请求
- loginInViewModel.login(it.data!!.sid!!, account, dataByPublicKey)
- loginInViewModel.resultModel.observe(this, { loginResult ->
+ loginViewModel.inn(it.data!!.sid!!, account, dataByPublicKey)
+ loginViewModel.resultModel.observe(this, { loginResult ->
if (loginResult.code == 200) {
AuthenticationHelper.saveToken(loginResult.data!!.token!!)
- //获取token之后保存用户信息
+ /**
+ * 获取token之后保存用户信息
+ * */
userDetailViewModel.obtainUserDetail()
+ /**
+ * 根据用户有权查看的设备类型
+ */
+ authenticateViewModel.obtainAuthorByDept()
//验证成功登录
this.navigatePageTo(MainActivity::class.java)
finish()
}
})
- loginInViewModel.loadState.observe(this, { loginState ->
+ loginViewModel.loadState.observe(this, { loginState ->
when (loginState) {
is LoadState.Success -> {
"登录成功".show()
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt
index 3f497c9..02435a3 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt
@@ -17,11 +17,8 @@
import com.casic.qd.smartwell.extensions.*
import com.casic.qd.smartwell.model.BannerImageModel
import com.casic.qd.smartwell.model.LineChartEntryModel
-import com.casic.qd.smartwell.utils.AuthenticationHelper
-import com.casic.qd.smartwell.utils.ChartViewHelper
-import com.casic.qd.smartwell.utils.Constant
-import com.casic.qd.smartwell.utils.PageNavigationManager
-import com.casic.qd.smartwell.vm.LoginOutViewModel
+import com.casic.qd.smartwell.utils.*
+import com.casic.qd.smartwell.vm.LoginViewModel
import com.casic.qd.smartwell.vm.WaterStatisticsViewModel
import com.github.mikephil.charting.data.Entry
import com.pengxh.app.multilib.widget.dialog.AlertControlDialog
@@ -38,7 +35,7 @@
private val context: Context = this@MainActivity
private var clickTime: Long = 0
- private lateinit var loginOutViewModel: LoginOutViewModel
+ private lateinit var loginViewModel: LoginViewModel
private lateinit var waterViewModel: WaterStatisticsViewModel
private val xAxisDate: MutableList = ArrayList()
private val entryModels: MutableList = ArrayList()
@@ -111,7 +108,7 @@
})
//初始化vm
- loginOutViewModel = ViewModelProvider(this).get(LoginOutViewModel::class.java)
+ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java)
waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java)
weakReferenceHandler = WeakReferenceHandler(this)
}
@@ -127,19 +124,20 @@
.setOnDialogButtonClickListener(object :
AlertControlDialog.OnDialogButtonClickListener {
override fun onConfirmClick() {
- loginOutViewModel.loginOut()
+ loginViewModel.out()
}
override fun onCancelClick() {}
}).build().show()
}
- loginOutViewModel.resultModel.observe(this, {
- if (it.code == 200) {
+ loginViewModel.loadState.observe(this, {
+ if (it == LoadState.Success) {
AuthenticationHelper.removeToken()
this.navigatePageTo(LoginActivity::class.java)
PageNavigationManager.finishAllActivity()
}
})
+
rightOptionView.setOnClickListener {
navigatePageTo(AlarmManagementActivity::class.java)
}
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt
index 954cf2d..8f54163 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt
@@ -6,20 +6,23 @@
import com.casic.qd.smartwell.extensions.*
import com.casic.qd.smartwell.model.AreaModel
import com.casic.qd.smartwell.utils.Constant
-import com.casic.qd.smartwell.vm.AlarmContentViewModel
-import com.casic.qd.smartwell.vm.AlarmTypeViewModel
+import com.casic.qd.smartwell.vm.AlarmViewModel
import com.casic.qd.smartwell.vm.AreaViewModel
import com.casic.qd.smartwell.widgets.BottomAreaSheet
import com.jzxiang.pickerview.TimePickerDialog
import com.jzxiang.pickerview.data.Type
import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder
import kotlinx.android.synthetic.main.activity_alarm_search.*
+import kotlinx.android.synthetic.main.activity_alarm_search.areaView
+import kotlinx.android.synthetic.main.activity_alarm_search.clearButton
+import kotlinx.android.synthetic.main.activity_alarm_search.searchButton
+import kotlinx.android.synthetic.main.activity_alarm_search.wellCodeView
+import kotlinx.android.synthetic.main.activity_search_record.*
import kotlinx.android.synthetic.main.include_base_title.*
class SearchAlarmActivity : BaseActivity() {
- private lateinit var alarmTypeViewModel: AlarmTypeViewModel
- private lateinit var alarmContentViewModel: AlarmContentViewModel
+ private lateinit var alarmViewModel: AlarmViewModel
private lateinit var areaViewModel: AreaViewModel
private var alarmType = ""
private var alarmContent = ""
@@ -33,18 +36,16 @@
override fun initData() {
//告警类型
- alarmTypeViewModel = ViewModelProvider(this).get(AlarmTypeViewModel::class.java)
- //告警内容
- alarmContentViewModel = ViewModelProvider(this).get(AlarmContentViewModel::class.java)
+ alarmViewModel = ViewModelProvider(this).get(AlarmViewModel::class.java)
//区域
areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java)
}
override fun initEvent() {
alarmTypeView.setOnClickListener {
- alarmTypeViewModel.obtainAlarmType()
+ alarmViewModel.obtainAlarmType()
}
- alarmTypeViewModel.typeModel.observe(this, {
+ alarmViewModel.typeModel.observe(this, {
if (it.code == 200) {
val sheetBuilder = BottomListSheetBuilder(this)
sheetBuilder.setTitle("告警类型")
@@ -65,9 +66,9 @@
alarmContentView.setOnClickListener {
//获取类型对应的报警内容
- alarmContentViewModel.obtainAlarmContent(alarmType)
+ alarmViewModel.obtainAlarmContent(alarmType)
}
- alarmContentViewModel.contentModel.observe(this, {
+ alarmViewModel.contentModel.observe(this, {
if (it.code == 200) {
val sheetBuilder = BottomListSheetBuilder(this)
sheetBuilder.setTitle("告警内容")
@@ -152,7 +153,7 @@
searchButton.setOnClickListener {
//页面跳转,将查询参数传过去
navigatePageTo(
- SearchResultActivity::class.java, addAll(
+ AlarmSearchResultActivity::class.java, addAll(
wellCodeView.text.toString().trim(),
alarmType,
areaId,
@@ -165,6 +166,7 @@
clearButton.setChangeAlphaWhenPress(true)
clearButton.setOnClickListener {
+ wellCodeView.setText("")
alarmTypeView.text = ""
alarmContentView.text = ""
areaView.text = ""
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0c249a9..f11ea34 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -46,9 +46,10 @@
-
+
+
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
index 428051e..d2ac7cf 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
@@ -1,13 +1,20 @@
package com.casic.qd.smartwell.extensions
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
import com.github.mikephil.charting.charts.BarChart
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis
import com.github.mikephil.charting.formatter.ValueFormatter
+import com.pengxh.app.multilib.utils.SizeUtil
fun BarChart.init(barLabels: MutableList) {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.animateY(1200, Easing.EaseInOutQuad)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt
index 4aa46bb..e67f075 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt
@@ -1,13 +1,20 @@
package com.casic.qd.smartwell.extensions
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.HorizontalBarChart
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis
import com.github.mikephil.charting.formatter.ValueFormatter
+import com.pengxh.app.multilib.utils.SizeUtil
fun HorizontalBarChart.init(barLabels: MutableList) {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.animateY(1200, Easing.EaseInOutQuad)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt
index 87c1c61..25f238f 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt
@@ -1,13 +1,20 @@
package com.casic.qd.smartwell.extensions
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.LineChart
import com.github.mikephil.charting.components.Legend
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis
+import com.pengxh.app.multilib.utils.SizeUtil
fun LineChart.init() {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.setDrawGridBackground(false)
this.setDrawBorders(false)
this.animateY(1200, Easing.EaseInOutQuad)
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt
index a88e096..3497dc7 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt
@@ -2,11 +2,18 @@
import android.graphics.Color
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.PieChart
import com.github.mikephil.charting.components.Legend
+import com.pengxh.app.multilib.utils.SizeUtil
fun PieChart.init() {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.setUsePercentValues(false) //百分比数字显示
this.description.isEnabled = false
this.dragDecelerationFrictionCoef = 0.95f //图表转动阻力摩擦系数[0,1]
diff --git a/app/src/main/java/com/casic/qd/smartwell/model/DeviceTypeModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/DeviceTypeModel.kt
new file mode 100644
index 0000000..04d2a8a
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/model/DeviceTypeModel.kt
@@ -0,0 +1,14 @@
+package com.casic.qd.smartwell.model
+
+class DeviceTypeModel {
+ var code = 0
+ var data: List? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var deviceType: String? = null
+ var name: String? = null
+ var value: String? = null
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/model/OwnerShipModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/OwnerShipModel.kt
new file mode 100644
index 0000000..7ced62c
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/model/OwnerShipModel.kt
@@ -0,0 +1,23 @@
+package com.casic.qd.smartwell.model
+
+class OwnerShipModel {
+ var code = 0
+ var data: DataBean? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var list: List? = null
+
+ class ListBean {
+ var isChecked = false
+ var code: String? = null
+ var id: String? = null
+ var name: String? = null
+ var isOpen = false
+ var pcodes: String? = null
+ var pid: String? = null
+ var value: String? = null
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt
index 5a509d2..cb85f80 100644
--- a/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt
@@ -31,6 +31,7 @@
const val ACCOUNT = "account"
const val PASSWORD = "password"
const val USER_DETAIL_MODEL = "userDetailModel"
+ const val USER_DEVICE_TYPE = "userDeviceType"
const val CANCEL_ALARM_ACTION = "cancelAlarm"
const val AREA_ID = "110000"
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt
index 019d741..9496bf4 100644
--- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt
@@ -163,4 +163,28 @@
*/
@GET("/statics/deviceStaticsByType")
suspend fun deviceCountByType(@Header("token") token: String): String
+
+ /**
+ * 根据部门获取支持的设备类型
+ */
+ /**
+ * 管网资产统计
+ */
+ @GET("/config/getAuthorByDept")
+ suspend fun obtainAuthorByDept(@Header("token") token: String): String
+
+ /**
+ * 获取设备类型
+ */
+ @GET("/device/type")
+ suspend fun obtainDeviceType(@Header("token") token: String): String
+
+ /**
+ * 获取权属单位
+ */
+ @GET("/dept/tree")
+ suspend fun obtainOwnerShip(
+ @Header("token") token: String,
+ @Query("deptType") deptType: String
+ ): String
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt
index 3985af9..575b2a9 100644
--- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt
@@ -160,4 +160,25 @@
suspend fun deviceCountByType(): String {
return api.deviceCountByType(AuthenticationHelper.token!!)
}
+
+ /**
+ * 根据部门获取支持的设备类型
+ */
+ suspend fun obtainAuthorByDept(): String {
+ return api.obtainAuthorByDept(AuthenticationHelper.token!!)
+ }
+
+ /**
+ * 获取设备类型
+ */
+ suspend fun obtainDeviceType(): String {
+ return api.obtainDeviceType(AuthenticationHelper.token!!)
+ }
+
+ /**
+ * 获取权属单位
+ */
+ suspend fun obtainOwnerShip(deptType: String): String {
+ return api.obtainOwnerShip(AuthenticationHelper.token!!, deptType)
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt
index 2a6d344..abaffb2 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt
@@ -20,8 +20,7 @@
import com.casic.qd.smartwell.utils.Constant
import com.casic.qd.smartwell.utils.DialogHelper
import com.casic.qd.smartwell.utils.LoadState
-import com.casic.qd.smartwell.vm.AlarmListViewModel
-import com.casic.qd.smartwell.vm.CancelAlarmViewModel
+import com.casic.qd.smartwell.vm.AlarmViewModel
import com.pengxh.app.multilib.widget.dialog.AlertControlDialog
import kotlinx.android.synthetic.main.activity_alarm_management.*
import kotlinx.android.synthetic.main.include_empty_view.*
@@ -30,8 +29,7 @@
class AlarmManagementActivity : BaseActivity() {
- private lateinit var alarmListViewModel: AlarmListViewModel
- private lateinit var cancelAlarmViewModel: CancelAlarmViewModel
+ private lateinit var alarmViewModel: AlarmViewModel
private lateinit var weakReferenceHandler: WeakReferenceHandler
private lateinit var alarmListAdapter: AlarmListAdapter
private var dataBeans: MutableList = ArrayList()
@@ -46,8 +44,7 @@
}
override fun initData() {
- alarmListViewModel = ViewModelProvider(this).get(AlarmListViewModel::class.java)
- cancelAlarmViewModel = ViewModelProvider(this).get(CancelAlarmViewModel::class.java)
+ alarmViewModel = ViewModelProvider(this).get(AlarmViewModel::class.java)
weakReferenceHandler = WeakReferenceHandler(this)
//注册广播接收者
BroadcastReceiverManager.instance.addAction(Constant.CANCEL_ALARM_ACTION,
@@ -63,7 +60,7 @@
override fun initEvent() {
obtainAlarmList(pageIndex)
- alarmListViewModel.listModel.observe(this, {
+ alarmViewModel.listModel.observe(this, {
if (it.code == 200) {
val dataRows = it.data?.rows
when {
@@ -101,7 +98,7 @@
obtainAlarmList(pageIndex)
}
- cancelAlarmViewModel.loadState.observe(this, {
+ alarmViewModel.loadState.observe(this, {
when (it) {
is LoadState.Loading -> {
DialogHelper.showLoadingDialog(this, "处理中,请稍后")
@@ -125,7 +122,7 @@
}
private fun obtainAlarmList(pageIndex: Int) {
- alarmListViewModel.obtainAlarmList("", "", "", "", "", "", "1", pageIndex)
+ alarmViewModel.obtainAlarmList("", "", "", "", "", "", "1", pageIndex)
}
private class WeakReferenceHandler(activity: AlarmManagementActivity) :
@@ -175,9 +172,7 @@
"操作失败,告警ID异常".show()
return
}
- activity.cancelAlarmViewModel.obtainOperationResult(
- alarmId!!
- )
+ activity.alarmViewModel.obtainOperationResult(alarmId!!)
}
override fun onCancelClick() {
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt
new file mode 100644
index 0000000..61c68ab
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt
@@ -0,0 +1,208 @@
+package com.casic.qd.smartwell.view
+
+import android.annotation.SuppressLint
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+import android.os.Handler
+import android.os.Looper
+import android.os.Message
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.LinearLayoutManager
+import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.adapter.AlarmListAdapter
+import com.casic.qd.smartwell.base.BaseActivity
+import com.casic.qd.smartwell.extensions.navigatePageTo
+import com.casic.qd.smartwell.extensions.show
+import com.casic.qd.smartwell.extensions.showEmptyPage
+import com.casic.qd.smartwell.model.AlarmListModel
+import com.casic.qd.smartwell.utils.BroadcastReceiverManager
+import com.casic.qd.smartwell.utils.Constant
+import com.casic.qd.smartwell.utils.DialogHelper
+import com.casic.qd.smartwell.utils.LoadState
+import com.casic.qd.smartwell.vm.AlarmViewModel
+import com.casic.qd.smartwell.vm.SearchAlarmViewModel
+import com.pengxh.app.multilib.widget.dialog.AlertControlDialog
+import kotlinx.android.synthetic.main.activity_alarm_search_result.*
+import kotlinx.android.synthetic.main.include_base_title.*
+import kotlinx.android.synthetic.main.include_empty_view.*
+import java.lang.ref.WeakReference
+
+class AlarmSearchResultActivity : BaseActivity() {
+
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+ private lateinit var searchAlarmViewModel: SearchAlarmViewModel
+ private lateinit var alarmViewModel: AlarmViewModel
+ private lateinit var args: ArrayList
+ private lateinit var alarmListAdapter: AlarmListAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var pageIndex = 1
+ private var isRefresh = false
+ private var isLoadMore = false
+
+ override fun initLayoutView(): Int = R.layout.activity_alarm_search_result
+
+ override fun setupTopBarLayout() {
+ titleView.text = "查询结果"
+ }
+
+ override fun initData() {
+ args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!!
+ weakReferenceHandler = WeakReferenceHandler(this)
+ searchAlarmViewModel = ViewModelProvider(this).get(SearchAlarmViewModel::class.java)
+ alarmViewModel = ViewModelProvider(this).get(AlarmViewModel::class.java)
+ //注册广播接收者
+ BroadcastReceiverManager.instance.addAction(Constant.CANCEL_ALARM_ACTION,
+ object : BroadcastReceiver() {
+ override fun onReceive(context: Context?, intent: Intent?) {
+ //收到广播相当于做了一次列表刷新
+ isRefresh = true
+ pageIndex = 1
+ obtainSearchResult(args, pageIndex)
+ }
+ })
+ }
+
+ override fun initEvent() {
+ obtainSearchResult(args, pageIndex)
+ searchAlarmViewModel.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()
+ }
+ dataBeans.addAll(dataRows!!)
+ resultRefreshLayout.finishLoadMore()
+ isLoadMore = false
+ }
+ else -> {
+ dataBeans = dataRows!!
+ }
+ }
+ weakReferenceHandler.sendEmptyMessage(2022041501)
+ }
+ })
+ searchAlarmViewModel.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)
+ }
+
+ //消警状态处理
+ alarmViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "处理中,请稍后")
+ }
+ is LoadState.Success -> {
+ DialogHelper.dismissLoadingDialog()
+ //刷新列表
+ BroadcastReceiverManager.instance.sendBroadcast(
+ Constant.CANCEL_ALARM_ACTION, ""
+ )
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+ }
+
+ private fun obtainSearchResult(args: ArrayList, pageIndex: Int) {
+ searchAlarmViewModel.obtainSearchResult(
+ args[0], args[1], args[2], args[3], args[4], args[5], "1", pageIndex
+ )
+ }
+
+ private class WeakReferenceHandler(activity: AlarmSearchResultActivity) :
+ Handler(Looper.getMainLooper()) {
+ private val reference: WeakReference = WeakReference(activity)
+
+ @SuppressLint("NotifyDataSetChanged")
+ override fun handleMessage(msg: Message) {
+ super.handleMessage(msg)
+ val activity = reference.get()!!
+ if (msg.what == 2022041501) {
+ if (activity.isRefresh || activity.isLoadMore) {
+ activity.alarmListAdapter.notifyDataSetChanged()
+ } else { //首次加载数据
+ if (activity.dataBeans.size == 0) {
+ activity.emptyView!!.showEmptyPage {
+ activity.obtainSearchResult(activity.args, activity.pageIndex)
+ }
+ } else {
+ activity.emptyView!!.hide()
+ activity.alarmListAdapter = AlarmListAdapter(activity, activity.dataBeans)
+ activity.resultRecyclerView!!.layoutManager = LinearLayoutManager(activity)
+ activity.resultRecyclerView!!.adapter = activity.alarmListAdapter
+ activity.alarmListAdapter.setOnItemClickListener(object :
+ AlarmListAdapter.OnItemClickListener {
+ override fun onClicked(position: Int) {
+ val wellId = activity.dataBeans[position].wellId.toString()
+ if (wellId.isBlank()) {
+ "井编号异常,无法查看详情".show()
+ return
+ }
+ activity.navigatePageTo(WellDetailActivity::class.java, wellId)
+ }
+
+ override fun onOperationClicked(position: Int) {
+ AlertControlDialog.Builder()
+ .setContext(activity)
+ .setTitle("确认操作")
+ .setMessage("确定取消报警吗?")
+ .setNegativeButton("取消")
+ .setPositiveButton("确定")
+ .setOnDialogButtonClickListener(object :
+ AlertControlDialog.OnDialogButtonClickListener {
+ override fun onConfirmClick() {
+ val alarmId = activity.dataBeans[position].id
+ if (alarmId.toString().isBlank()) {
+ "操作失败,告警ID异常".show()
+ return
+ }
+ activity.alarmViewModel.obtainOperationResult(alarmId!!)
+ }
+
+ override fun onCancelClick() {
+
+ }
+ }).build().show()
+ }
+ })
+ }
+ }
+ }
+ }
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ //解注册广播接收者,防止内存泄漏
+ BroadcastReceiverManager.instance.destroy(Constant.CANCEL_ALARM_ACTION)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceSearchResultActivity.kt
new file mode 100644
index 0000000..cfc25d2
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceSearchResultActivity.kt
@@ -0,0 +1,21 @@
+package com.casic.qd.smartwell.view
+
+import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseActivity
+
+class DeviceSearchResultActivity : BaseActivity() {
+
+ override fun initLayoutView(): Int = R.layout.activity_device_search_result
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt
index 526fa73..c86ee63 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt
@@ -13,7 +13,7 @@
import com.casic.qd.smartwell.extensions.show
import com.casic.qd.smartwell.utils.*
import com.casic.qd.smartwell.vm.AuthenticateViewModel
-import com.casic.qd.smartwell.vm.LoginInViewModel
+import com.casic.qd.smartwell.vm.LoginViewModel
import com.casic.qd.smartwell.vm.UserDetailViewModel
import com.qmuiteam.qmui.util.QMUIStatusBarHelper
import kotlinx.android.synthetic.main.activity_login.*
@@ -21,7 +21,7 @@
class LoginActivity : BaseActivity() {
private lateinit var authenticateViewModel: AuthenticateViewModel
- private lateinit var loginInViewModel: LoginInViewModel
+ private lateinit var loginViewModel: LoginViewModel
private lateinit var userDetailViewModel: UserDetailViewModel
private val textWatcher = object : TextWatcher {
@@ -54,7 +54,7 @@
userNameView.setText(SaveKeyValues.getValue(Constant.ACCOUNT, "") as String)
userPasswordView.setText(SaveKeyValues.getValue(Constant.PASSWORD, "") as String)
authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java)
- loginInViewModel = ViewModelProvider(this).get(LoginInViewModel::class.java)
+ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java)
userDetailViewModel = ViewModelProvider(this).get(UserDetailViewModel::class.java)
}
@@ -100,18 +100,24 @@
val dataByPublicKey =
RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey!!)
//登录并获取Token,POST请求
- loginInViewModel.login(it.data!!.sid!!, account, dataByPublicKey)
- loginInViewModel.resultModel.observe(this, { loginResult ->
+ loginViewModel.inn(it.data!!.sid!!, account, dataByPublicKey)
+ loginViewModel.resultModel.observe(this, { loginResult ->
if (loginResult.code == 200) {
AuthenticationHelper.saveToken(loginResult.data!!.token!!)
- //获取token之后保存用户信息
+ /**
+ * 获取token之后保存用户信息
+ * */
userDetailViewModel.obtainUserDetail()
+ /**
+ * 根据用户有权查看的设备类型
+ */
+ authenticateViewModel.obtainAuthorByDept()
//验证成功登录
this.navigatePageTo(MainActivity::class.java)
finish()
}
})
- loginInViewModel.loadState.observe(this, { loginState ->
+ loginViewModel.loadState.observe(this, { loginState ->
when (loginState) {
is LoadState.Success -> {
"登录成功".show()
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt
index 3f497c9..02435a3 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt
@@ -17,11 +17,8 @@
import com.casic.qd.smartwell.extensions.*
import com.casic.qd.smartwell.model.BannerImageModel
import com.casic.qd.smartwell.model.LineChartEntryModel
-import com.casic.qd.smartwell.utils.AuthenticationHelper
-import com.casic.qd.smartwell.utils.ChartViewHelper
-import com.casic.qd.smartwell.utils.Constant
-import com.casic.qd.smartwell.utils.PageNavigationManager
-import com.casic.qd.smartwell.vm.LoginOutViewModel
+import com.casic.qd.smartwell.utils.*
+import com.casic.qd.smartwell.vm.LoginViewModel
import com.casic.qd.smartwell.vm.WaterStatisticsViewModel
import com.github.mikephil.charting.data.Entry
import com.pengxh.app.multilib.widget.dialog.AlertControlDialog
@@ -38,7 +35,7 @@
private val context: Context = this@MainActivity
private var clickTime: Long = 0
- private lateinit var loginOutViewModel: LoginOutViewModel
+ private lateinit var loginViewModel: LoginViewModel
private lateinit var waterViewModel: WaterStatisticsViewModel
private val xAxisDate: MutableList = ArrayList()
private val entryModels: MutableList = ArrayList()
@@ -111,7 +108,7 @@
})
//初始化vm
- loginOutViewModel = ViewModelProvider(this).get(LoginOutViewModel::class.java)
+ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java)
waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java)
weakReferenceHandler = WeakReferenceHandler(this)
}
@@ -127,19 +124,20 @@
.setOnDialogButtonClickListener(object :
AlertControlDialog.OnDialogButtonClickListener {
override fun onConfirmClick() {
- loginOutViewModel.loginOut()
+ loginViewModel.out()
}
override fun onCancelClick() {}
}).build().show()
}
- loginOutViewModel.resultModel.observe(this, {
- if (it.code == 200) {
+ loginViewModel.loadState.observe(this, {
+ if (it == LoadState.Success) {
AuthenticationHelper.removeToken()
this.navigatePageTo(LoginActivity::class.java)
PageNavigationManager.finishAllActivity()
}
})
+
rightOptionView.setOnClickListener {
navigatePageTo(AlarmManagementActivity::class.java)
}
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt
index 954cf2d..8f54163 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt
@@ -6,20 +6,23 @@
import com.casic.qd.smartwell.extensions.*
import com.casic.qd.smartwell.model.AreaModel
import com.casic.qd.smartwell.utils.Constant
-import com.casic.qd.smartwell.vm.AlarmContentViewModel
-import com.casic.qd.smartwell.vm.AlarmTypeViewModel
+import com.casic.qd.smartwell.vm.AlarmViewModel
import com.casic.qd.smartwell.vm.AreaViewModel
import com.casic.qd.smartwell.widgets.BottomAreaSheet
import com.jzxiang.pickerview.TimePickerDialog
import com.jzxiang.pickerview.data.Type
import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder
import kotlinx.android.synthetic.main.activity_alarm_search.*
+import kotlinx.android.synthetic.main.activity_alarm_search.areaView
+import kotlinx.android.synthetic.main.activity_alarm_search.clearButton
+import kotlinx.android.synthetic.main.activity_alarm_search.searchButton
+import kotlinx.android.synthetic.main.activity_alarm_search.wellCodeView
+import kotlinx.android.synthetic.main.activity_search_record.*
import kotlinx.android.synthetic.main.include_base_title.*
class SearchAlarmActivity : BaseActivity() {
- private lateinit var alarmTypeViewModel: AlarmTypeViewModel
- private lateinit var alarmContentViewModel: AlarmContentViewModel
+ private lateinit var alarmViewModel: AlarmViewModel
private lateinit var areaViewModel: AreaViewModel
private var alarmType = ""
private var alarmContent = ""
@@ -33,18 +36,16 @@
override fun initData() {
//告警类型
- alarmTypeViewModel = ViewModelProvider(this).get(AlarmTypeViewModel::class.java)
- //告警内容
- alarmContentViewModel = ViewModelProvider(this).get(AlarmContentViewModel::class.java)
+ alarmViewModel = ViewModelProvider(this).get(AlarmViewModel::class.java)
//区域
areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java)
}
override fun initEvent() {
alarmTypeView.setOnClickListener {
- alarmTypeViewModel.obtainAlarmType()
+ alarmViewModel.obtainAlarmType()
}
- alarmTypeViewModel.typeModel.observe(this, {
+ alarmViewModel.typeModel.observe(this, {
if (it.code == 200) {
val sheetBuilder = BottomListSheetBuilder(this)
sheetBuilder.setTitle("告警类型")
@@ -65,9 +66,9 @@
alarmContentView.setOnClickListener {
//获取类型对应的报警内容
- alarmContentViewModel.obtainAlarmContent(alarmType)
+ alarmViewModel.obtainAlarmContent(alarmType)
}
- alarmContentViewModel.contentModel.observe(this, {
+ alarmViewModel.contentModel.observe(this, {
if (it.code == 200) {
val sheetBuilder = BottomListSheetBuilder(this)
sheetBuilder.setTitle("告警内容")
@@ -152,7 +153,7 @@
searchButton.setOnClickListener {
//页面跳转,将查询参数传过去
navigatePageTo(
- SearchResultActivity::class.java, addAll(
+ AlarmSearchResultActivity::class.java, addAll(
wellCodeView.text.toString().trim(),
alarmType,
areaId,
@@ -165,6 +166,7 @@
clearButton.setChangeAlphaWhenPress(true)
clearButton.setOnClickListener {
+ wellCodeView.setText("")
alarmTypeView.text = ""
alarmContentView.text = ""
areaView.text = ""
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchRecordActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchRecordActivity.kt
index a459183..853b311 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/SearchRecordActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchRecordActivity.kt
@@ -1,18 +1,41 @@
package com.casic.qd.smartwell.view
+import androidx.lifecycle.ViewModelProvider
import com.casic.qd.smartwell.R
import com.casic.qd.smartwell.base.BaseActivity
+import com.casic.qd.smartwell.extensions.addAll
+import com.casic.qd.smartwell.extensions.navigatePageTo
+import com.casic.qd.smartwell.model.AreaModel
+import com.casic.qd.smartwell.model.DeviceTypeModel
+import com.casic.qd.smartwell.model.OwnerShipModel
+import com.casic.qd.smartwell.utils.Constant
+import com.casic.qd.smartwell.utils.SaveKeyValues
+import com.casic.qd.smartwell.vm.AreaViewModel
+import com.casic.qd.smartwell.vm.AuthenticateViewModel
+import com.casic.qd.smartwell.vm.DeviceViewModel
+import com.casic.qd.smartwell.widgets.BottomAreaSheet
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet
+import kotlinx.android.synthetic.main.activity_search_record.*
import kotlinx.android.synthetic.main.include_base_title.*
/**
* @author a203
* @description 记录查询界面
- * @package com.casic.qd.smartwell.view
* @date 2022/2/17 14:33
* @email 290677893@qq.com
*/
class SearchRecordActivity : BaseActivity() {
+ private val kTag = "SearchRecordActivity"
+ private lateinit var deviceViewModel: DeviceViewModel
+ private lateinit var authenticateViewModel: AuthenticateViewModel
+ private lateinit var areaViewModel: AreaViewModel
+ private var authenticatedType: MutableList = ArrayList()
+ private var deviceTypeValue = ""
+ private var areaId = ""
+
override fun initLayoutView(): Int = R.layout.activity_search_record
override fun setupTopBarLayout() {
@@ -20,10 +43,135 @@
}
override fun initData() {
-
+ val userDeviceJson = SaveKeyValues.getValue(Constant.USER_DEVICE_TYPE, "") as String
+ if (userDeviceJson.isNotBlank()) {
+ authenticatedType = Gson().fromJson(
+ userDeviceJson, object : TypeToken>() {}.type
+ )
+ }
+ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java)
+ authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java)
+ areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java)
}
override fun initEvent() {
+ deviceTypeView.setOnClickListener {
+ /**
+ * 获取全部设备类型
+ * */
+ deviceViewModel.obtainDeviceType()
+ }
+ deviceViewModel.typeModel.observe(this, {
+ if (it.code == 200) {
+ val authenticatedModel: MutableList = ArrayList()
+ it.data?.forEach { deviceModel ->
+ if (deviceModel.value in authenticatedType) {
+ authenticatedModel.add(deviceModel)
+ }
+ }
+ val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(this)
+ sheetBuilder.setTitle("设备类型")
+ authenticatedModel.forEach { deviceModel ->
+ sheetBuilder.addItem(deviceModel.name)
+ }
+ sheetBuilder.setGravityCenter(true)
+ .setOnSheetItemClickListener { dialog, _, position, tag ->
+ deviceTypeView.text = tag
+ this.deviceTypeValue = authenticatedModel[position].value.toString()
+ dialog.dismiss()
+ }.build().show()
+ }
+ })
+
+ ownerShipView.setOnClickListener {
+ authenticateViewModel.obtainOwnerShip("")
+ }
+ authenticateViewModel.resultModel.observe(this, {
+ if (it.code == 200) {
+ val ownerShipModel: MutableList = ArrayList()
+ it.data?.list?.forEach { listBean ->
+ ownerShipModel.add(listBean)
+ }
+ val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(this)
+ sheetBuilder.setTitle("权属单位")
+ ownerShipModel.forEach { model ->
+ sheetBuilder.addItem(model.name)
+ }
+ sheetBuilder.setGravityCenter(true)
+ .setOnSheetItemClickListener { dialog, _, _, tag ->
+ ownerShipView.text = tag
+
+ dialog.dismiss()
+ }.build().show()
+ }
+ })
+
+ deviceStateView.setOnClickListener {
+ QMUIBottomSheet.BottomListSheetBuilder(this)
+ .setTitle("在线情况")
+ .addItem("在线")
+ .addItem("离线")
+ .setGravityCenter(true)
+ .setOnSheetItemClickListener { dialog, _, _, tag ->
+ deviceStateView.text = tag
+
+ dialog.dismiss()
+ }.build().show()
+ }
+
+ areaView.setOnClickListener {
+ areaViewModel.obtainArea()
+ }
+ areaViewModel.areaModel.observe(this, {
+ if (it.code == 200) {
+ val firstLevelArea: MutableList = ArrayList()
+ val secondLevelArea: MutableList = ArrayList()
+ val thirdLevelArea: MutableList = ArrayList()
+ it.data?.forEach { dataBean ->
+ when (dataBean.level) {
+ 2 -> firstLevelArea.add(dataBean)
+ 3 -> secondLevelArea.add(dataBean)
+ 4 -> thirdLevelArea.add(dataBean)
+ }
+ }
+
+ // 绑定区域
+ BottomAreaSheet.Builder()
+ .setContext(this)
+ .setFirstAreaData(firstLevelArea)
+ .setSecondAreaData(secondLevelArea)
+ .setThirdAreaData(thirdLevelArea)
+ .setOnActionSheetListener(object : BottomAreaSheet.OnActionSheetListener {
+ override fun onAreaSelected(area: String?, id: String?) {
+ areaView.text = area
+ areaId = id.toString()
+ }
+ }).build().show()
+ }
+ })
+
+ searchButton.setChangeAlphaWhenPress(true)
+ searchButton.setOnClickListener {
+ //页面跳转,将查询参数传过去
+ navigatePageTo(
+ DeviceSearchResultActivity::class.java, addAll(
+ wellCodeView.text.toString().trim(),
+ deviceTypeValue,
+ "权属单位",
+ "在线情况",
+ areaId
+ )
+ )
+ }
+
+ clearButton.setChangeAlphaWhenPress(true)
+ clearButton.setOnClickListener {
+ wellCodeView.setText("")
+ deviceTypeView.text = ""
+ ownerShipView.text = ""
+ deviceStateView.text = ""
+ areaView.text = ""
+ }
}
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0c249a9..f11ea34 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -46,9 +46,10 @@
-
+
+
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
index 428051e..d2ac7cf 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
@@ -1,13 +1,20 @@
package com.casic.qd.smartwell.extensions
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
import com.github.mikephil.charting.charts.BarChart
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis
import com.github.mikephil.charting.formatter.ValueFormatter
+import com.pengxh.app.multilib.utils.SizeUtil
fun BarChart.init(barLabels: MutableList) {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.animateY(1200, Easing.EaseInOutQuad)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt
index 4aa46bb..e67f075 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt
@@ -1,13 +1,20 @@
package com.casic.qd.smartwell.extensions
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.HorizontalBarChart
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis
import com.github.mikephil.charting.formatter.ValueFormatter
+import com.pengxh.app.multilib.utils.SizeUtil
fun HorizontalBarChart.init(barLabels: MutableList) {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.animateY(1200, Easing.EaseInOutQuad)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt
index 87c1c61..25f238f 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt
@@ -1,13 +1,20 @@
package com.casic.qd.smartwell.extensions
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.LineChart
import com.github.mikephil.charting.components.Legend
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis
+import com.pengxh.app.multilib.utils.SizeUtil
fun LineChart.init() {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.setDrawGridBackground(false)
this.setDrawBorders(false)
this.animateY(1200, Easing.EaseInOutQuad)
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt
index a88e096..3497dc7 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt
@@ -2,11 +2,18 @@
import android.graphics.Color
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.PieChart
import com.github.mikephil.charting.components.Legend
+import com.pengxh.app.multilib.utils.SizeUtil
fun PieChart.init() {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.setUsePercentValues(false) //百分比数字显示
this.description.isEnabled = false
this.dragDecelerationFrictionCoef = 0.95f //图表转动阻力摩擦系数[0,1]
diff --git a/app/src/main/java/com/casic/qd/smartwell/model/DeviceTypeModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/DeviceTypeModel.kt
new file mode 100644
index 0000000..04d2a8a
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/model/DeviceTypeModel.kt
@@ -0,0 +1,14 @@
+package com.casic.qd.smartwell.model
+
+class DeviceTypeModel {
+ var code = 0
+ var data: List? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var deviceType: String? = null
+ var name: String? = null
+ var value: String? = null
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/model/OwnerShipModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/OwnerShipModel.kt
new file mode 100644
index 0000000..7ced62c
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/model/OwnerShipModel.kt
@@ -0,0 +1,23 @@
+package com.casic.qd.smartwell.model
+
+class OwnerShipModel {
+ var code = 0
+ var data: DataBean? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var list: List? = null
+
+ class ListBean {
+ var isChecked = false
+ var code: String? = null
+ var id: String? = null
+ var name: String? = null
+ var isOpen = false
+ var pcodes: String? = null
+ var pid: String? = null
+ var value: String? = null
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt
index 5a509d2..cb85f80 100644
--- a/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt
@@ -31,6 +31,7 @@
const val ACCOUNT = "account"
const val PASSWORD = "password"
const val USER_DETAIL_MODEL = "userDetailModel"
+ const val USER_DEVICE_TYPE = "userDeviceType"
const val CANCEL_ALARM_ACTION = "cancelAlarm"
const val AREA_ID = "110000"
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt
index 019d741..9496bf4 100644
--- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt
@@ -163,4 +163,28 @@
*/
@GET("/statics/deviceStaticsByType")
suspend fun deviceCountByType(@Header("token") token: String): String
+
+ /**
+ * 根据部门获取支持的设备类型
+ */
+ /**
+ * 管网资产统计
+ */
+ @GET("/config/getAuthorByDept")
+ suspend fun obtainAuthorByDept(@Header("token") token: String): String
+
+ /**
+ * 获取设备类型
+ */
+ @GET("/device/type")
+ suspend fun obtainDeviceType(@Header("token") token: String): String
+
+ /**
+ * 获取权属单位
+ */
+ @GET("/dept/tree")
+ suspend fun obtainOwnerShip(
+ @Header("token") token: String,
+ @Query("deptType") deptType: String
+ ): String
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt
index 3985af9..575b2a9 100644
--- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt
@@ -160,4 +160,25 @@
suspend fun deviceCountByType(): String {
return api.deviceCountByType(AuthenticationHelper.token!!)
}
+
+ /**
+ * 根据部门获取支持的设备类型
+ */
+ suspend fun obtainAuthorByDept(): String {
+ return api.obtainAuthorByDept(AuthenticationHelper.token!!)
+ }
+
+ /**
+ * 获取设备类型
+ */
+ suspend fun obtainDeviceType(): String {
+ return api.obtainDeviceType(AuthenticationHelper.token!!)
+ }
+
+ /**
+ * 获取权属单位
+ */
+ suspend fun obtainOwnerShip(deptType: String): String {
+ return api.obtainOwnerShip(AuthenticationHelper.token!!, deptType)
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt
index 2a6d344..abaffb2 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt
@@ -20,8 +20,7 @@
import com.casic.qd.smartwell.utils.Constant
import com.casic.qd.smartwell.utils.DialogHelper
import com.casic.qd.smartwell.utils.LoadState
-import com.casic.qd.smartwell.vm.AlarmListViewModel
-import com.casic.qd.smartwell.vm.CancelAlarmViewModel
+import com.casic.qd.smartwell.vm.AlarmViewModel
import com.pengxh.app.multilib.widget.dialog.AlertControlDialog
import kotlinx.android.synthetic.main.activity_alarm_management.*
import kotlinx.android.synthetic.main.include_empty_view.*
@@ -30,8 +29,7 @@
class AlarmManagementActivity : BaseActivity() {
- private lateinit var alarmListViewModel: AlarmListViewModel
- private lateinit var cancelAlarmViewModel: CancelAlarmViewModel
+ private lateinit var alarmViewModel: AlarmViewModel
private lateinit var weakReferenceHandler: WeakReferenceHandler
private lateinit var alarmListAdapter: AlarmListAdapter
private var dataBeans: MutableList = ArrayList()
@@ -46,8 +44,7 @@
}
override fun initData() {
- alarmListViewModel = ViewModelProvider(this).get(AlarmListViewModel::class.java)
- cancelAlarmViewModel = ViewModelProvider(this).get(CancelAlarmViewModel::class.java)
+ alarmViewModel = ViewModelProvider(this).get(AlarmViewModel::class.java)
weakReferenceHandler = WeakReferenceHandler(this)
//注册广播接收者
BroadcastReceiverManager.instance.addAction(Constant.CANCEL_ALARM_ACTION,
@@ -63,7 +60,7 @@
override fun initEvent() {
obtainAlarmList(pageIndex)
- alarmListViewModel.listModel.observe(this, {
+ alarmViewModel.listModel.observe(this, {
if (it.code == 200) {
val dataRows = it.data?.rows
when {
@@ -101,7 +98,7 @@
obtainAlarmList(pageIndex)
}
- cancelAlarmViewModel.loadState.observe(this, {
+ alarmViewModel.loadState.observe(this, {
when (it) {
is LoadState.Loading -> {
DialogHelper.showLoadingDialog(this, "处理中,请稍后")
@@ -125,7 +122,7 @@
}
private fun obtainAlarmList(pageIndex: Int) {
- alarmListViewModel.obtainAlarmList("", "", "", "", "", "", "1", pageIndex)
+ alarmViewModel.obtainAlarmList("", "", "", "", "", "", "1", pageIndex)
}
private class WeakReferenceHandler(activity: AlarmManagementActivity) :
@@ -175,9 +172,7 @@
"操作失败,告警ID异常".show()
return
}
- activity.cancelAlarmViewModel.obtainOperationResult(
- alarmId!!
- )
+ activity.alarmViewModel.obtainOperationResult(alarmId!!)
}
override fun onCancelClick() {
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt
new file mode 100644
index 0000000..61c68ab
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt
@@ -0,0 +1,208 @@
+package com.casic.qd.smartwell.view
+
+import android.annotation.SuppressLint
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+import android.os.Handler
+import android.os.Looper
+import android.os.Message
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.LinearLayoutManager
+import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.adapter.AlarmListAdapter
+import com.casic.qd.smartwell.base.BaseActivity
+import com.casic.qd.smartwell.extensions.navigatePageTo
+import com.casic.qd.smartwell.extensions.show
+import com.casic.qd.smartwell.extensions.showEmptyPage
+import com.casic.qd.smartwell.model.AlarmListModel
+import com.casic.qd.smartwell.utils.BroadcastReceiverManager
+import com.casic.qd.smartwell.utils.Constant
+import com.casic.qd.smartwell.utils.DialogHelper
+import com.casic.qd.smartwell.utils.LoadState
+import com.casic.qd.smartwell.vm.AlarmViewModel
+import com.casic.qd.smartwell.vm.SearchAlarmViewModel
+import com.pengxh.app.multilib.widget.dialog.AlertControlDialog
+import kotlinx.android.synthetic.main.activity_alarm_search_result.*
+import kotlinx.android.synthetic.main.include_base_title.*
+import kotlinx.android.synthetic.main.include_empty_view.*
+import java.lang.ref.WeakReference
+
+class AlarmSearchResultActivity : BaseActivity() {
+
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+ private lateinit var searchAlarmViewModel: SearchAlarmViewModel
+ private lateinit var alarmViewModel: AlarmViewModel
+ private lateinit var args: ArrayList
+ private lateinit var alarmListAdapter: AlarmListAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var pageIndex = 1
+ private var isRefresh = false
+ private var isLoadMore = false
+
+ override fun initLayoutView(): Int = R.layout.activity_alarm_search_result
+
+ override fun setupTopBarLayout() {
+ titleView.text = "查询结果"
+ }
+
+ override fun initData() {
+ args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!!
+ weakReferenceHandler = WeakReferenceHandler(this)
+ searchAlarmViewModel = ViewModelProvider(this).get(SearchAlarmViewModel::class.java)
+ alarmViewModel = ViewModelProvider(this).get(AlarmViewModel::class.java)
+ //注册广播接收者
+ BroadcastReceiverManager.instance.addAction(Constant.CANCEL_ALARM_ACTION,
+ object : BroadcastReceiver() {
+ override fun onReceive(context: Context?, intent: Intent?) {
+ //收到广播相当于做了一次列表刷新
+ isRefresh = true
+ pageIndex = 1
+ obtainSearchResult(args, pageIndex)
+ }
+ })
+ }
+
+ override fun initEvent() {
+ obtainSearchResult(args, pageIndex)
+ searchAlarmViewModel.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()
+ }
+ dataBeans.addAll(dataRows!!)
+ resultRefreshLayout.finishLoadMore()
+ isLoadMore = false
+ }
+ else -> {
+ dataBeans = dataRows!!
+ }
+ }
+ weakReferenceHandler.sendEmptyMessage(2022041501)
+ }
+ })
+ searchAlarmViewModel.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)
+ }
+
+ //消警状态处理
+ alarmViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "处理中,请稍后")
+ }
+ is LoadState.Success -> {
+ DialogHelper.dismissLoadingDialog()
+ //刷新列表
+ BroadcastReceiverManager.instance.sendBroadcast(
+ Constant.CANCEL_ALARM_ACTION, ""
+ )
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+ }
+
+ private fun obtainSearchResult(args: ArrayList, pageIndex: Int) {
+ searchAlarmViewModel.obtainSearchResult(
+ args[0], args[1], args[2], args[3], args[4], args[5], "1", pageIndex
+ )
+ }
+
+ private class WeakReferenceHandler(activity: AlarmSearchResultActivity) :
+ Handler(Looper.getMainLooper()) {
+ private val reference: WeakReference = WeakReference(activity)
+
+ @SuppressLint("NotifyDataSetChanged")
+ override fun handleMessage(msg: Message) {
+ super.handleMessage(msg)
+ val activity = reference.get()!!
+ if (msg.what == 2022041501) {
+ if (activity.isRefresh || activity.isLoadMore) {
+ activity.alarmListAdapter.notifyDataSetChanged()
+ } else { //首次加载数据
+ if (activity.dataBeans.size == 0) {
+ activity.emptyView!!.showEmptyPage {
+ activity.obtainSearchResult(activity.args, activity.pageIndex)
+ }
+ } else {
+ activity.emptyView!!.hide()
+ activity.alarmListAdapter = AlarmListAdapter(activity, activity.dataBeans)
+ activity.resultRecyclerView!!.layoutManager = LinearLayoutManager(activity)
+ activity.resultRecyclerView!!.adapter = activity.alarmListAdapter
+ activity.alarmListAdapter.setOnItemClickListener(object :
+ AlarmListAdapter.OnItemClickListener {
+ override fun onClicked(position: Int) {
+ val wellId = activity.dataBeans[position].wellId.toString()
+ if (wellId.isBlank()) {
+ "井编号异常,无法查看详情".show()
+ return
+ }
+ activity.navigatePageTo(WellDetailActivity::class.java, wellId)
+ }
+
+ override fun onOperationClicked(position: Int) {
+ AlertControlDialog.Builder()
+ .setContext(activity)
+ .setTitle("确认操作")
+ .setMessage("确定取消报警吗?")
+ .setNegativeButton("取消")
+ .setPositiveButton("确定")
+ .setOnDialogButtonClickListener(object :
+ AlertControlDialog.OnDialogButtonClickListener {
+ override fun onConfirmClick() {
+ val alarmId = activity.dataBeans[position].id
+ if (alarmId.toString().isBlank()) {
+ "操作失败,告警ID异常".show()
+ return
+ }
+ activity.alarmViewModel.obtainOperationResult(alarmId!!)
+ }
+
+ override fun onCancelClick() {
+
+ }
+ }).build().show()
+ }
+ })
+ }
+ }
+ }
+ }
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ //解注册广播接收者,防止内存泄漏
+ BroadcastReceiverManager.instance.destroy(Constant.CANCEL_ALARM_ACTION)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceSearchResultActivity.kt
new file mode 100644
index 0000000..cfc25d2
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceSearchResultActivity.kt
@@ -0,0 +1,21 @@
+package com.casic.qd.smartwell.view
+
+import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseActivity
+
+class DeviceSearchResultActivity : BaseActivity() {
+
+ override fun initLayoutView(): Int = R.layout.activity_device_search_result
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt
index 526fa73..c86ee63 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt
@@ -13,7 +13,7 @@
import com.casic.qd.smartwell.extensions.show
import com.casic.qd.smartwell.utils.*
import com.casic.qd.smartwell.vm.AuthenticateViewModel
-import com.casic.qd.smartwell.vm.LoginInViewModel
+import com.casic.qd.smartwell.vm.LoginViewModel
import com.casic.qd.smartwell.vm.UserDetailViewModel
import com.qmuiteam.qmui.util.QMUIStatusBarHelper
import kotlinx.android.synthetic.main.activity_login.*
@@ -21,7 +21,7 @@
class LoginActivity : BaseActivity() {
private lateinit var authenticateViewModel: AuthenticateViewModel
- private lateinit var loginInViewModel: LoginInViewModel
+ private lateinit var loginViewModel: LoginViewModel
private lateinit var userDetailViewModel: UserDetailViewModel
private val textWatcher = object : TextWatcher {
@@ -54,7 +54,7 @@
userNameView.setText(SaveKeyValues.getValue(Constant.ACCOUNT, "") as String)
userPasswordView.setText(SaveKeyValues.getValue(Constant.PASSWORD, "") as String)
authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java)
- loginInViewModel = ViewModelProvider(this).get(LoginInViewModel::class.java)
+ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java)
userDetailViewModel = ViewModelProvider(this).get(UserDetailViewModel::class.java)
}
@@ -100,18 +100,24 @@
val dataByPublicKey =
RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey!!)
//登录并获取Token,POST请求
- loginInViewModel.login(it.data!!.sid!!, account, dataByPublicKey)
- loginInViewModel.resultModel.observe(this, { loginResult ->
+ loginViewModel.inn(it.data!!.sid!!, account, dataByPublicKey)
+ loginViewModel.resultModel.observe(this, { loginResult ->
if (loginResult.code == 200) {
AuthenticationHelper.saveToken(loginResult.data!!.token!!)
- //获取token之后保存用户信息
+ /**
+ * 获取token之后保存用户信息
+ * */
userDetailViewModel.obtainUserDetail()
+ /**
+ * 根据用户有权查看的设备类型
+ */
+ authenticateViewModel.obtainAuthorByDept()
//验证成功登录
this.navigatePageTo(MainActivity::class.java)
finish()
}
})
- loginInViewModel.loadState.observe(this, { loginState ->
+ loginViewModel.loadState.observe(this, { loginState ->
when (loginState) {
is LoadState.Success -> {
"登录成功".show()
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt
index 3f497c9..02435a3 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt
@@ -17,11 +17,8 @@
import com.casic.qd.smartwell.extensions.*
import com.casic.qd.smartwell.model.BannerImageModel
import com.casic.qd.smartwell.model.LineChartEntryModel
-import com.casic.qd.smartwell.utils.AuthenticationHelper
-import com.casic.qd.smartwell.utils.ChartViewHelper
-import com.casic.qd.smartwell.utils.Constant
-import com.casic.qd.smartwell.utils.PageNavigationManager
-import com.casic.qd.smartwell.vm.LoginOutViewModel
+import com.casic.qd.smartwell.utils.*
+import com.casic.qd.smartwell.vm.LoginViewModel
import com.casic.qd.smartwell.vm.WaterStatisticsViewModel
import com.github.mikephil.charting.data.Entry
import com.pengxh.app.multilib.widget.dialog.AlertControlDialog
@@ -38,7 +35,7 @@
private val context: Context = this@MainActivity
private var clickTime: Long = 0
- private lateinit var loginOutViewModel: LoginOutViewModel
+ private lateinit var loginViewModel: LoginViewModel
private lateinit var waterViewModel: WaterStatisticsViewModel
private val xAxisDate: MutableList = ArrayList()
private val entryModels: MutableList = ArrayList()
@@ -111,7 +108,7 @@
})
//初始化vm
- loginOutViewModel = ViewModelProvider(this).get(LoginOutViewModel::class.java)
+ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java)
waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java)
weakReferenceHandler = WeakReferenceHandler(this)
}
@@ -127,19 +124,20 @@
.setOnDialogButtonClickListener(object :
AlertControlDialog.OnDialogButtonClickListener {
override fun onConfirmClick() {
- loginOutViewModel.loginOut()
+ loginViewModel.out()
}
override fun onCancelClick() {}
}).build().show()
}
- loginOutViewModel.resultModel.observe(this, {
- if (it.code == 200) {
+ loginViewModel.loadState.observe(this, {
+ if (it == LoadState.Success) {
AuthenticationHelper.removeToken()
this.navigatePageTo(LoginActivity::class.java)
PageNavigationManager.finishAllActivity()
}
})
+
rightOptionView.setOnClickListener {
navigatePageTo(AlarmManagementActivity::class.java)
}
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt
index 954cf2d..8f54163 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt
@@ -6,20 +6,23 @@
import com.casic.qd.smartwell.extensions.*
import com.casic.qd.smartwell.model.AreaModel
import com.casic.qd.smartwell.utils.Constant
-import com.casic.qd.smartwell.vm.AlarmContentViewModel
-import com.casic.qd.smartwell.vm.AlarmTypeViewModel
+import com.casic.qd.smartwell.vm.AlarmViewModel
import com.casic.qd.smartwell.vm.AreaViewModel
import com.casic.qd.smartwell.widgets.BottomAreaSheet
import com.jzxiang.pickerview.TimePickerDialog
import com.jzxiang.pickerview.data.Type
import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder
import kotlinx.android.synthetic.main.activity_alarm_search.*
+import kotlinx.android.synthetic.main.activity_alarm_search.areaView
+import kotlinx.android.synthetic.main.activity_alarm_search.clearButton
+import kotlinx.android.synthetic.main.activity_alarm_search.searchButton
+import kotlinx.android.synthetic.main.activity_alarm_search.wellCodeView
+import kotlinx.android.synthetic.main.activity_search_record.*
import kotlinx.android.synthetic.main.include_base_title.*
class SearchAlarmActivity : BaseActivity() {
- private lateinit var alarmTypeViewModel: AlarmTypeViewModel
- private lateinit var alarmContentViewModel: AlarmContentViewModel
+ private lateinit var alarmViewModel: AlarmViewModel
private lateinit var areaViewModel: AreaViewModel
private var alarmType = ""
private var alarmContent = ""
@@ -33,18 +36,16 @@
override fun initData() {
//告警类型
- alarmTypeViewModel = ViewModelProvider(this).get(AlarmTypeViewModel::class.java)
- //告警内容
- alarmContentViewModel = ViewModelProvider(this).get(AlarmContentViewModel::class.java)
+ alarmViewModel = ViewModelProvider(this).get(AlarmViewModel::class.java)
//区域
areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java)
}
override fun initEvent() {
alarmTypeView.setOnClickListener {
- alarmTypeViewModel.obtainAlarmType()
+ alarmViewModel.obtainAlarmType()
}
- alarmTypeViewModel.typeModel.observe(this, {
+ alarmViewModel.typeModel.observe(this, {
if (it.code == 200) {
val sheetBuilder = BottomListSheetBuilder(this)
sheetBuilder.setTitle("告警类型")
@@ -65,9 +66,9 @@
alarmContentView.setOnClickListener {
//获取类型对应的报警内容
- alarmContentViewModel.obtainAlarmContent(alarmType)
+ alarmViewModel.obtainAlarmContent(alarmType)
}
- alarmContentViewModel.contentModel.observe(this, {
+ alarmViewModel.contentModel.observe(this, {
if (it.code == 200) {
val sheetBuilder = BottomListSheetBuilder(this)
sheetBuilder.setTitle("告警内容")
@@ -152,7 +153,7 @@
searchButton.setOnClickListener {
//页面跳转,将查询参数传过去
navigatePageTo(
- SearchResultActivity::class.java, addAll(
+ AlarmSearchResultActivity::class.java, addAll(
wellCodeView.text.toString().trim(),
alarmType,
areaId,
@@ -165,6 +166,7 @@
clearButton.setChangeAlphaWhenPress(true)
clearButton.setOnClickListener {
+ wellCodeView.setText("")
alarmTypeView.text = ""
alarmContentView.text = ""
areaView.text = ""
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchRecordActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchRecordActivity.kt
index a459183..853b311 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/SearchRecordActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchRecordActivity.kt
@@ -1,18 +1,41 @@
package com.casic.qd.smartwell.view
+import androidx.lifecycle.ViewModelProvider
import com.casic.qd.smartwell.R
import com.casic.qd.smartwell.base.BaseActivity
+import com.casic.qd.smartwell.extensions.addAll
+import com.casic.qd.smartwell.extensions.navigatePageTo
+import com.casic.qd.smartwell.model.AreaModel
+import com.casic.qd.smartwell.model.DeviceTypeModel
+import com.casic.qd.smartwell.model.OwnerShipModel
+import com.casic.qd.smartwell.utils.Constant
+import com.casic.qd.smartwell.utils.SaveKeyValues
+import com.casic.qd.smartwell.vm.AreaViewModel
+import com.casic.qd.smartwell.vm.AuthenticateViewModel
+import com.casic.qd.smartwell.vm.DeviceViewModel
+import com.casic.qd.smartwell.widgets.BottomAreaSheet
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet
+import kotlinx.android.synthetic.main.activity_search_record.*
import kotlinx.android.synthetic.main.include_base_title.*
/**
* @author a203
* @description 记录查询界面
- * @package com.casic.qd.smartwell.view
* @date 2022/2/17 14:33
* @email 290677893@qq.com
*/
class SearchRecordActivity : BaseActivity() {
+ private val kTag = "SearchRecordActivity"
+ private lateinit var deviceViewModel: DeviceViewModel
+ private lateinit var authenticateViewModel: AuthenticateViewModel
+ private lateinit var areaViewModel: AreaViewModel
+ private var authenticatedType: MutableList = ArrayList()
+ private var deviceTypeValue = ""
+ private var areaId = ""
+
override fun initLayoutView(): Int = R.layout.activity_search_record
override fun setupTopBarLayout() {
@@ -20,10 +43,135 @@
}
override fun initData() {
-
+ val userDeviceJson = SaveKeyValues.getValue(Constant.USER_DEVICE_TYPE, "") as String
+ if (userDeviceJson.isNotBlank()) {
+ authenticatedType = Gson().fromJson(
+ userDeviceJson, object : TypeToken>() {}.type
+ )
+ }
+ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java)
+ authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java)
+ areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java)
}
override fun initEvent() {
+ deviceTypeView.setOnClickListener {
+ /**
+ * 获取全部设备类型
+ * */
+ deviceViewModel.obtainDeviceType()
+ }
+ deviceViewModel.typeModel.observe(this, {
+ if (it.code == 200) {
+ val authenticatedModel: MutableList = ArrayList()
+ it.data?.forEach { deviceModel ->
+ if (deviceModel.value in authenticatedType) {
+ authenticatedModel.add(deviceModel)
+ }
+ }
+ val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(this)
+ sheetBuilder.setTitle("设备类型")
+ authenticatedModel.forEach { deviceModel ->
+ sheetBuilder.addItem(deviceModel.name)
+ }
+ sheetBuilder.setGravityCenter(true)
+ .setOnSheetItemClickListener { dialog, _, position, tag ->
+ deviceTypeView.text = tag
+ this.deviceTypeValue = authenticatedModel[position].value.toString()
+ dialog.dismiss()
+ }.build().show()
+ }
+ })
+
+ ownerShipView.setOnClickListener {
+ authenticateViewModel.obtainOwnerShip("")
+ }
+ authenticateViewModel.resultModel.observe(this, {
+ if (it.code == 200) {
+ val ownerShipModel: MutableList = ArrayList()
+ it.data?.list?.forEach { listBean ->
+ ownerShipModel.add(listBean)
+ }
+ val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(this)
+ sheetBuilder.setTitle("权属单位")
+ ownerShipModel.forEach { model ->
+ sheetBuilder.addItem(model.name)
+ }
+ sheetBuilder.setGravityCenter(true)
+ .setOnSheetItemClickListener { dialog, _, _, tag ->
+ ownerShipView.text = tag
+
+ dialog.dismiss()
+ }.build().show()
+ }
+ })
+
+ deviceStateView.setOnClickListener {
+ QMUIBottomSheet.BottomListSheetBuilder(this)
+ .setTitle("在线情况")
+ .addItem("在线")
+ .addItem("离线")
+ .setGravityCenter(true)
+ .setOnSheetItemClickListener { dialog, _, _, tag ->
+ deviceStateView.text = tag
+
+ dialog.dismiss()
+ }.build().show()
+ }
+
+ areaView.setOnClickListener {
+ areaViewModel.obtainArea()
+ }
+ areaViewModel.areaModel.observe(this, {
+ if (it.code == 200) {
+ val firstLevelArea: MutableList = ArrayList()
+ val secondLevelArea: MutableList = ArrayList()
+ val thirdLevelArea: MutableList = ArrayList()
+ it.data?.forEach { dataBean ->
+ when (dataBean.level) {
+ 2 -> firstLevelArea.add(dataBean)
+ 3 -> secondLevelArea.add(dataBean)
+ 4 -> thirdLevelArea.add(dataBean)
+ }
+ }
+
+ // 绑定区域
+ BottomAreaSheet.Builder()
+ .setContext(this)
+ .setFirstAreaData(firstLevelArea)
+ .setSecondAreaData(secondLevelArea)
+ .setThirdAreaData(thirdLevelArea)
+ .setOnActionSheetListener(object : BottomAreaSheet.OnActionSheetListener {
+ override fun onAreaSelected(area: String?, id: String?) {
+ areaView.text = area
+ areaId = id.toString()
+ }
+ }).build().show()
+ }
+ })
+
+ searchButton.setChangeAlphaWhenPress(true)
+ searchButton.setOnClickListener {
+ //页面跳转,将查询参数传过去
+ navigatePageTo(
+ DeviceSearchResultActivity::class.java, addAll(
+ wellCodeView.text.toString().trim(),
+ deviceTypeValue,
+ "权属单位",
+ "在线情况",
+ areaId
+ )
+ )
+ }
+
+ clearButton.setChangeAlphaWhenPress(true)
+ clearButton.setOnClickListener {
+ wellCodeView.setText("")
+ deviceTypeView.text = ""
+ ownerShipView.text = ""
+ deviceStateView.text = ""
+ areaView.text = ""
+ }
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchResultActivity.kt
deleted file mode 100644
index 988b53d..0000000
--- a/app/src/main/java/com/casic/qd/smartwell/view/SearchResultActivity.kt
+++ /dev/null
@@ -1,222 +0,0 @@
-package com.casic.qd.smartwell.view
-
-import android.annotation.SuppressLint
-import android.content.BroadcastReceiver
-import android.content.Context
-import android.content.Intent
-import android.os.Handler
-import android.os.Looper
-import android.os.Message
-import androidx.lifecycle.ViewModelProvider
-import androidx.recyclerview.widget.LinearLayoutManager
-import com.casic.qd.smartwell.R
-import com.casic.qd.smartwell.adapter.AlarmListAdapter
-import com.casic.qd.smartwell.base.BaseActivity
-import com.casic.qd.smartwell.extensions.navigatePageTo
-import com.casic.qd.smartwell.extensions.show
-import com.casic.qd.smartwell.extensions.showEmptyPage
-import com.casic.qd.smartwell.model.AlarmListModel
-import com.casic.qd.smartwell.utils.BroadcastReceiverManager
-import com.casic.qd.smartwell.utils.Constant
-import com.casic.qd.smartwell.utils.DialogHelper
-import com.casic.qd.smartwell.utils.LoadState
-import com.casic.qd.smartwell.vm.CancelAlarmViewModel
-import com.casic.qd.smartwell.vm.SearchAlarmViewModel
-import com.casic.qd.smartwell.widgets.CancelAlarmDialog
-import kotlinx.android.synthetic.main.activity_alarm_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 searchAlarmViewModel: SearchAlarmViewModel
- private lateinit var cancelAlarmViewModel: CancelAlarmViewModel
- private lateinit var args: ArrayList
- private lateinit var alarmListAdapter: AlarmListAdapter
- private var dataBeans: MutableList = ArrayList()
- private var pageIndex = 1
- private var isRefresh = false
- private var isLoadMore = false
-
- override fun initLayoutView(): Int = R.layout.activity_alarm_search_result
-
- override fun setupTopBarLayout() {
- titleView.text = "查询结果"
- }
-
- override fun initData() {
- args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!!
- weakReferenceHandler = WeakReferenceHandler(this)
- searchAlarmViewModel = ViewModelProvider(this).get(SearchAlarmViewModel::class.java)
- cancelAlarmViewModel = ViewModelProvider(this).get(CancelAlarmViewModel::class.java)
- //注册广播接收者
- BroadcastReceiverManager.instance.addAction(Constant.CANCEL_ALARM_ACTION,
- object : BroadcastReceiver() {
- override fun onReceive(context: Context?, intent: Intent?) {
- //收到广播相当于做了一次列表刷新
- isRefresh = true
- pageIndex = 1
- obtainSearchResult(args, pageIndex)
- }
- })
- }
-
- override fun initEvent() {
- obtainSearchResult(args, pageIndex)
- searchAlarmViewModel.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()
- }
- dataBeans.addAll(dataRows!!)
- resultRefreshLayout.finishLoadMore()
- isLoadMore = false
- }
- else -> {
- dataBeans = dataRows!!
- }
- }
- weakReferenceHandler.sendEmptyMessage(2022041501)
- }
- })
- searchAlarmViewModel.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)
- }
-
- //消警状态处理
- cancelAlarmViewModel.loadState.observe(this, {
- when (it) {
- is LoadState.Loading -> {
- DialogHelper.showLoadingDialog(this, "处理中,请稍后")
- }
- is LoadState.Success -> {
- DialogHelper.dismissLoadingDialog()
- //刷新列表
- BroadcastReceiverManager.instance.sendBroadcast(
- Constant.CANCEL_ALARM_ACTION, ""
- )
- }
- else -> {
- DialogHelper.dismissLoadingDialog()
- }
- }
- })
- }
-
- private fun obtainSearchResult(args: ArrayList, pageIndex: Int) {
- searchAlarmViewModel.obtainSearchResult(
- args[0], args[1], args[2], args[3], args[4], args[5], "1", pageIndex
- )
- }
-
- private class WeakReferenceHandler(activity: SearchResultActivity) :
- Handler(Looper.getMainLooper()) {
- private val reference: WeakReference = WeakReference(activity)
-
- @SuppressLint("NotifyDataSetChanged")
- override fun handleMessage(msg: Message) {
- super.handleMessage(msg)
- val activity = reference.get()!!
- if (msg.what == 2022041501) {
- if (activity.isRefresh || activity.isLoadMore) {
- activity.alarmListAdapter.notifyDataSetChanged()
- } else { //首次加载数据
- if (activity.dataBeans.size == 0) {
- activity.emptyView!!.showEmptyPage {
- activity.obtainSearchResult(activity.args, activity.pageIndex)
- }
- } else {
- activity.emptyView!!.hide()
- activity.alarmListAdapter = AlarmListAdapter(activity, activity.dataBeans)
- activity.resultRecyclerView!!.layoutManager = LinearLayoutManager(activity)
- activity.resultRecyclerView!!.adapter = activity.alarmListAdapter
- activity.alarmListAdapter.setOnItemClickListener(object :
- AlarmListAdapter.OnItemClickListener {
- override fun onClicked(position: Int) {
- val wellId = activity.dataBeans[position].wellId.toString()
- if (wellId.isBlank()) {
- "井编号异常,无法查看详情".show()
- return
- }
- activity.navigatePageTo(WellDetailActivity::class.java, wellId)
- }
-
- override fun onOperationClicked(position: Int) {
- val wellDetail = activity.dataBeans[position]
- CancelAlarmDialog.Builder()
- .setContext(activity)
- .setTitle("取消告警")
- .setHintMessage("请输入详细的告警取消原因")
- .setNegativeButton("取消")
- .setPositiveButton("确定")
- .setOnDialogButtonClickListener(object :
- CancelAlarmDialog.OnDialogButtonClickListener {
- override fun onConfirmClick(
- spinnerValue: String, inputValue: String
- ) {
- /**
- * http://111.198.10.15:20104/alarm/cancelAlarm?id=&jobStatus=3&handleMessage=2fsdf
- * POST
- * */
- val alarmId = wellDetail.id
- if (alarmId.toString().isBlank()) {
- "操作失败,告警ID异常".show()
- return
- }
- val jobStatus = when (spinnerValue) {
- "已处理" -> "3"
- "无需处理" -> "4"
- else -> ""
- }
- activity.cancelAlarmViewModel.obtainOperationResult(
- alarmId!!
- )
- }
-
- override fun onCancelClick() {
-
- }
- }).build().show()
- }
- })
- }
- }
- }
- }
- }
-
- override fun onDestroy() {
- super.onDestroy()
- //解注册广播接收者,防止内存泄漏
- BroadcastReceiverManager.instance.destroy(Constant.CANCEL_ALARM_ACTION)
- }
-}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0c249a9..f11ea34 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -46,9 +46,10 @@
-
+
+
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
index 428051e..d2ac7cf 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
@@ -1,13 +1,20 @@
package com.casic.qd.smartwell.extensions
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
import com.github.mikephil.charting.charts.BarChart
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis
import com.github.mikephil.charting.formatter.ValueFormatter
+import com.pengxh.app.multilib.utils.SizeUtil
fun BarChart.init(barLabels: MutableList) {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.animateY(1200, Easing.EaseInOutQuad)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt
index 4aa46bb..e67f075 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt
@@ -1,13 +1,20 @@
package com.casic.qd.smartwell.extensions
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.HorizontalBarChart
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis
import com.github.mikephil.charting.formatter.ValueFormatter
+import com.pengxh.app.multilib.utils.SizeUtil
fun HorizontalBarChart.init(barLabels: MutableList) {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.animateY(1200, Easing.EaseInOutQuad)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt
index 87c1c61..25f238f 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt
@@ -1,13 +1,20 @@
package com.casic.qd.smartwell.extensions
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.LineChart
import com.github.mikephil.charting.components.Legend
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis
+import com.pengxh.app.multilib.utils.SizeUtil
fun LineChart.init() {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.setDrawGridBackground(false)
this.setDrawBorders(false)
this.animateY(1200, Easing.EaseInOutQuad)
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt
index a88e096..3497dc7 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt
@@ -2,11 +2,18 @@
import android.graphics.Color
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.PieChart
import com.github.mikephil.charting.components.Legend
+import com.pengxh.app.multilib.utils.SizeUtil
fun PieChart.init() {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.setUsePercentValues(false) //百分比数字显示
this.description.isEnabled = false
this.dragDecelerationFrictionCoef = 0.95f //图表转动阻力摩擦系数[0,1]
diff --git a/app/src/main/java/com/casic/qd/smartwell/model/DeviceTypeModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/DeviceTypeModel.kt
new file mode 100644
index 0000000..04d2a8a
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/model/DeviceTypeModel.kt
@@ -0,0 +1,14 @@
+package com.casic.qd.smartwell.model
+
+class DeviceTypeModel {
+ var code = 0
+ var data: List? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var deviceType: String? = null
+ var name: String? = null
+ var value: String? = null
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/model/OwnerShipModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/OwnerShipModel.kt
new file mode 100644
index 0000000..7ced62c
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/model/OwnerShipModel.kt
@@ -0,0 +1,23 @@
+package com.casic.qd.smartwell.model
+
+class OwnerShipModel {
+ var code = 0
+ var data: DataBean? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var list: List? = null
+
+ class ListBean {
+ var isChecked = false
+ var code: String? = null
+ var id: String? = null
+ var name: String? = null
+ var isOpen = false
+ var pcodes: String? = null
+ var pid: String? = null
+ var value: String? = null
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt
index 5a509d2..cb85f80 100644
--- a/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt
@@ -31,6 +31,7 @@
const val ACCOUNT = "account"
const val PASSWORD = "password"
const val USER_DETAIL_MODEL = "userDetailModel"
+ const val USER_DEVICE_TYPE = "userDeviceType"
const val CANCEL_ALARM_ACTION = "cancelAlarm"
const val AREA_ID = "110000"
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt
index 019d741..9496bf4 100644
--- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt
@@ -163,4 +163,28 @@
*/
@GET("/statics/deviceStaticsByType")
suspend fun deviceCountByType(@Header("token") token: String): String
+
+ /**
+ * 根据部门获取支持的设备类型
+ */
+ /**
+ * 管网资产统计
+ */
+ @GET("/config/getAuthorByDept")
+ suspend fun obtainAuthorByDept(@Header("token") token: String): String
+
+ /**
+ * 获取设备类型
+ */
+ @GET("/device/type")
+ suspend fun obtainDeviceType(@Header("token") token: String): String
+
+ /**
+ * 获取权属单位
+ */
+ @GET("/dept/tree")
+ suspend fun obtainOwnerShip(
+ @Header("token") token: String,
+ @Query("deptType") deptType: String
+ ): String
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt
index 3985af9..575b2a9 100644
--- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt
@@ -160,4 +160,25 @@
suspend fun deviceCountByType(): String {
return api.deviceCountByType(AuthenticationHelper.token!!)
}
+
+ /**
+ * 根据部门获取支持的设备类型
+ */
+ suspend fun obtainAuthorByDept(): String {
+ return api.obtainAuthorByDept(AuthenticationHelper.token!!)
+ }
+
+ /**
+ * 获取设备类型
+ */
+ suspend fun obtainDeviceType(): String {
+ return api.obtainDeviceType(AuthenticationHelper.token!!)
+ }
+
+ /**
+ * 获取权属单位
+ */
+ suspend fun obtainOwnerShip(deptType: String): String {
+ return api.obtainOwnerShip(AuthenticationHelper.token!!, deptType)
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt
index 2a6d344..abaffb2 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt
@@ -20,8 +20,7 @@
import com.casic.qd.smartwell.utils.Constant
import com.casic.qd.smartwell.utils.DialogHelper
import com.casic.qd.smartwell.utils.LoadState
-import com.casic.qd.smartwell.vm.AlarmListViewModel
-import com.casic.qd.smartwell.vm.CancelAlarmViewModel
+import com.casic.qd.smartwell.vm.AlarmViewModel
import com.pengxh.app.multilib.widget.dialog.AlertControlDialog
import kotlinx.android.synthetic.main.activity_alarm_management.*
import kotlinx.android.synthetic.main.include_empty_view.*
@@ -30,8 +29,7 @@
class AlarmManagementActivity : BaseActivity() {
- private lateinit var alarmListViewModel: AlarmListViewModel
- private lateinit var cancelAlarmViewModel: CancelAlarmViewModel
+ private lateinit var alarmViewModel: AlarmViewModel
private lateinit var weakReferenceHandler: WeakReferenceHandler
private lateinit var alarmListAdapter: AlarmListAdapter
private var dataBeans: MutableList = ArrayList()
@@ -46,8 +44,7 @@
}
override fun initData() {
- alarmListViewModel = ViewModelProvider(this).get(AlarmListViewModel::class.java)
- cancelAlarmViewModel = ViewModelProvider(this).get(CancelAlarmViewModel::class.java)
+ alarmViewModel = ViewModelProvider(this).get(AlarmViewModel::class.java)
weakReferenceHandler = WeakReferenceHandler(this)
//注册广播接收者
BroadcastReceiverManager.instance.addAction(Constant.CANCEL_ALARM_ACTION,
@@ -63,7 +60,7 @@
override fun initEvent() {
obtainAlarmList(pageIndex)
- alarmListViewModel.listModel.observe(this, {
+ alarmViewModel.listModel.observe(this, {
if (it.code == 200) {
val dataRows = it.data?.rows
when {
@@ -101,7 +98,7 @@
obtainAlarmList(pageIndex)
}
- cancelAlarmViewModel.loadState.observe(this, {
+ alarmViewModel.loadState.observe(this, {
when (it) {
is LoadState.Loading -> {
DialogHelper.showLoadingDialog(this, "处理中,请稍后")
@@ -125,7 +122,7 @@
}
private fun obtainAlarmList(pageIndex: Int) {
- alarmListViewModel.obtainAlarmList("", "", "", "", "", "", "1", pageIndex)
+ alarmViewModel.obtainAlarmList("", "", "", "", "", "", "1", pageIndex)
}
private class WeakReferenceHandler(activity: AlarmManagementActivity) :
@@ -175,9 +172,7 @@
"操作失败,告警ID异常".show()
return
}
- activity.cancelAlarmViewModel.obtainOperationResult(
- alarmId!!
- )
+ activity.alarmViewModel.obtainOperationResult(alarmId!!)
}
override fun onCancelClick() {
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt
new file mode 100644
index 0000000..61c68ab
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt
@@ -0,0 +1,208 @@
+package com.casic.qd.smartwell.view
+
+import android.annotation.SuppressLint
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+import android.os.Handler
+import android.os.Looper
+import android.os.Message
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.LinearLayoutManager
+import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.adapter.AlarmListAdapter
+import com.casic.qd.smartwell.base.BaseActivity
+import com.casic.qd.smartwell.extensions.navigatePageTo
+import com.casic.qd.smartwell.extensions.show
+import com.casic.qd.smartwell.extensions.showEmptyPage
+import com.casic.qd.smartwell.model.AlarmListModel
+import com.casic.qd.smartwell.utils.BroadcastReceiverManager
+import com.casic.qd.smartwell.utils.Constant
+import com.casic.qd.smartwell.utils.DialogHelper
+import com.casic.qd.smartwell.utils.LoadState
+import com.casic.qd.smartwell.vm.AlarmViewModel
+import com.casic.qd.smartwell.vm.SearchAlarmViewModel
+import com.pengxh.app.multilib.widget.dialog.AlertControlDialog
+import kotlinx.android.synthetic.main.activity_alarm_search_result.*
+import kotlinx.android.synthetic.main.include_base_title.*
+import kotlinx.android.synthetic.main.include_empty_view.*
+import java.lang.ref.WeakReference
+
+class AlarmSearchResultActivity : BaseActivity() {
+
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+ private lateinit var searchAlarmViewModel: SearchAlarmViewModel
+ private lateinit var alarmViewModel: AlarmViewModel
+ private lateinit var args: ArrayList
+ private lateinit var alarmListAdapter: AlarmListAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var pageIndex = 1
+ private var isRefresh = false
+ private var isLoadMore = false
+
+ override fun initLayoutView(): Int = R.layout.activity_alarm_search_result
+
+ override fun setupTopBarLayout() {
+ titleView.text = "查询结果"
+ }
+
+ override fun initData() {
+ args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!!
+ weakReferenceHandler = WeakReferenceHandler(this)
+ searchAlarmViewModel = ViewModelProvider(this).get(SearchAlarmViewModel::class.java)
+ alarmViewModel = ViewModelProvider(this).get(AlarmViewModel::class.java)
+ //注册广播接收者
+ BroadcastReceiverManager.instance.addAction(Constant.CANCEL_ALARM_ACTION,
+ object : BroadcastReceiver() {
+ override fun onReceive(context: Context?, intent: Intent?) {
+ //收到广播相当于做了一次列表刷新
+ isRefresh = true
+ pageIndex = 1
+ obtainSearchResult(args, pageIndex)
+ }
+ })
+ }
+
+ override fun initEvent() {
+ obtainSearchResult(args, pageIndex)
+ searchAlarmViewModel.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()
+ }
+ dataBeans.addAll(dataRows!!)
+ resultRefreshLayout.finishLoadMore()
+ isLoadMore = false
+ }
+ else -> {
+ dataBeans = dataRows!!
+ }
+ }
+ weakReferenceHandler.sendEmptyMessage(2022041501)
+ }
+ })
+ searchAlarmViewModel.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)
+ }
+
+ //消警状态处理
+ alarmViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "处理中,请稍后")
+ }
+ is LoadState.Success -> {
+ DialogHelper.dismissLoadingDialog()
+ //刷新列表
+ BroadcastReceiverManager.instance.sendBroadcast(
+ Constant.CANCEL_ALARM_ACTION, ""
+ )
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+ }
+
+ private fun obtainSearchResult(args: ArrayList, pageIndex: Int) {
+ searchAlarmViewModel.obtainSearchResult(
+ args[0], args[1], args[2], args[3], args[4], args[5], "1", pageIndex
+ )
+ }
+
+ private class WeakReferenceHandler(activity: AlarmSearchResultActivity) :
+ Handler(Looper.getMainLooper()) {
+ private val reference: WeakReference = WeakReference(activity)
+
+ @SuppressLint("NotifyDataSetChanged")
+ override fun handleMessage(msg: Message) {
+ super.handleMessage(msg)
+ val activity = reference.get()!!
+ if (msg.what == 2022041501) {
+ if (activity.isRefresh || activity.isLoadMore) {
+ activity.alarmListAdapter.notifyDataSetChanged()
+ } else { //首次加载数据
+ if (activity.dataBeans.size == 0) {
+ activity.emptyView!!.showEmptyPage {
+ activity.obtainSearchResult(activity.args, activity.pageIndex)
+ }
+ } else {
+ activity.emptyView!!.hide()
+ activity.alarmListAdapter = AlarmListAdapter(activity, activity.dataBeans)
+ activity.resultRecyclerView!!.layoutManager = LinearLayoutManager(activity)
+ activity.resultRecyclerView!!.adapter = activity.alarmListAdapter
+ activity.alarmListAdapter.setOnItemClickListener(object :
+ AlarmListAdapter.OnItemClickListener {
+ override fun onClicked(position: Int) {
+ val wellId = activity.dataBeans[position].wellId.toString()
+ if (wellId.isBlank()) {
+ "井编号异常,无法查看详情".show()
+ return
+ }
+ activity.navigatePageTo(WellDetailActivity::class.java, wellId)
+ }
+
+ override fun onOperationClicked(position: Int) {
+ AlertControlDialog.Builder()
+ .setContext(activity)
+ .setTitle("确认操作")
+ .setMessage("确定取消报警吗?")
+ .setNegativeButton("取消")
+ .setPositiveButton("确定")
+ .setOnDialogButtonClickListener(object :
+ AlertControlDialog.OnDialogButtonClickListener {
+ override fun onConfirmClick() {
+ val alarmId = activity.dataBeans[position].id
+ if (alarmId.toString().isBlank()) {
+ "操作失败,告警ID异常".show()
+ return
+ }
+ activity.alarmViewModel.obtainOperationResult(alarmId!!)
+ }
+
+ override fun onCancelClick() {
+
+ }
+ }).build().show()
+ }
+ })
+ }
+ }
+ }
+ }
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ //解注册广播接收者,防止内存泄漏
+ BroadcastReceiverManager.instance.destroy(Constant.CANCEL_ALARM_ACTION)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceSearchResultActivity.kt
new file mode 100644
index 0000000..cfc25d2
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceSearchResultActivity.kt
@@ -0,0 +1,21 @@
+package com.casic.qd.smartwell.view
+
+import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseActivity
+
+class DeviceSearchResultActivity : BaseActivity() {
+
+ override fun initLayoutView(): Int = R.layout.activity_device_search_result
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt
index 526fa73..c86ee63 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt
@@ -13,7 +13,7 @@
import com.casic.qd.smartwell.extensions.show
import com.casic.qd.smartwell.utils.*
import com.casic.qd.smartwell.vm.AuthenticateViewModel
-import com.casic.qd.smartwell.vm.LoginInViewModel
+import com.casic.qd.smartwell.vm.LoginViewModel
import com.casic.qd.smartwell.vm.UserDetailViewModel
import com.qmuiteam.qmui.util.QMUIStatusBarHelper
import kotlinx.android.synthetic.main.activity_login.*
@@ -21,7 +21,7 @@
class LoginActivity : BaseActivity() {
private lateinit var authenticateViewModel: AuthenticateViewModel
- private lateinit var loginInViewModel: LoginInViewModel
+ private lateinit var loginViewModel: LoginViewModel
private lateinit var userDetailViewModel: UserDetailViewModel
private val textWatcher = object : TextWatcher {
@@ -54,7 +54,7 @@
userNameView.setText(SaveKeyValues.getValue(Constant.ACCOUNT, "") as String)
userPasswordView.setText(SaveKeyValues.getValue(Constant.PASSWORD, "") as String)
authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java)
- loginInViewModel = ViewModelProvider(this).get(LoginInViewModel::class.java)
+ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java)
userDetailViewModel = ViewModelProvider(this).get(UserDetailViewModel::class.java)
}
@@ -100,18 +100,24 @@
val dataByPublicKey =
RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey!!)
//登录并获取Token,POST请求
- loginInViewModel.login(it.data!!.sid!!, account, dataByPublicKey)
- loginInViewModel.resultModel.observe(this, { loginResult ->
+ loginViewModel.inn(it.data!!.sid!!, account, dataByPublicKey)
+ loginViewModel.resultModel.observe(this, { loginResult ->
if (loginResult.code == 200) {
AuthenticationHelper.saveToken(loginResult.data!!.token!!)
- //获取token之后保存用户信息
+ /**
+ * 获取token之后保存用户信息
+ * */
userDetailViewModel.obtainUserDetail()
+ /**
+ * 根据用户有权查看的设备类型
+ */
+ authenticateViewModel.obtainAuthorByDept()
//验证成功登录
this.navigatePageTo(MainActivity::class.java)
finish()
}
})
- loginInViewModel.loadState.observe(this, { loginState ->
+ loginViewModel.loadState.observe(this, { loginState ->
when (loginState) {
is LoadState.Success -> {
"登录成功".show()
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt
index 3f497c9..02435a3 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt
@@ -17,11 +17,8 @@
import com.casic.qd.smartwell.extensions.*
import com.casic.qd.smartwell.model.BannerImageModel
import com.casic.qd.smartwell.model.LineChartEntryModel
-import com.casic.qd.smartwell.utils.AuthenticationHelper
-import com.casic.qd.smartwell.utils.ChartViewHelper
-import com.casic.qd.smartwell.utils.Constant
-import com.casic.qd.smartwell.utils.PageNavigationManager
-import com.casic.qd.smartwell.vm.LoginOutViewModel
+import com.casic.qd.smartwell.utils.*
+import com.casic.qd.smartwell.vm.LoginViewModel
import com.casic.qd.smartwell.vm.WaterStatisticsViewModel
import com.github.mikephil.charting.data.Entry
import com.pengxh.app.multilib.widget.dialog.AlertControlDialog
@@ -38,7 +35,7 @@
private val context: Context = this@MainActivity
private var clickTime: Long = 0
- private lateinit var loginOutViewModel: LoginOutViewModel
+ private lateinit var loginViewModel: LoginViewModel
private lateinit var waterViewModel: WaterStatisticsViewModel
private val xAxisDate: MutableList = ArrayList()
private val entryModels: MutableList = ArrayList()
@@ -111,7 +108,7 @@
})
//初始化vm
- loginOutViewModel = ViewModelProvider(this).get(LoginOutViewModel::class.java)
+ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java)
waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java)
weakReferenceHandler = WeakReferenceHandler(this)
}
@@ -127,19 +124,20 @@
.setOnDialogButtonClickListener(object :
AlertControlDialog.OnDialogButtonClickListener {
override fun onConfirmClick() {
- loginOutViewModel.loginOut()
+ loginViewModel.out()
}
override fun onCancelClick() {}
}).build().show()
}
- loginOutViewModel.resultModel.observe(this, {
- if (it.code == 200) {
+ loginViewModel.loadState.observe(this, {
+ if (it == LoadState.Success) {
AuthenticationHelper.removeToken()
this.navigatePageTo(LoginActivity::class.java)
PageNavigationManager.finishAllActivity()
}
})
+
rightOptionView.setOnClickListener {
navigatePageTo(AlarmManagementActivity::class.java)
}
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt
index 954cf2d..8f54163 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt
@@ -6,20 +6,23 @@
import com.casic.qd.smartwell.extensions.*
import com.casic.qd.smartwell.model.AreaModel
import com.casic.qd.smartwell.utils.Constant
-import com.casic.qd.smartwell.vm.AlarmContentViewModel
-import com.casic.qd.smartwell.vm.AlarmTypeViewModel
+import com.casic.qd.smartwell.vm.AlarmViewModel
import com.casic.qd.smartwell.vm.AreaViewModel
import com.casic.qd.smartwell.widgets.BottomAreaSheet
import com.jzxiang.pickerview.TimePickerDialog
import com.jzxiang.pickerview.data.Type
import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder
import kotlinx.android.synthetic.main.activity_alarm_search.*
+import kotlinx.android.synthetic.main.activity_alarm_search.areaView
+import kotlinx.android.synthetic.main.activity_alarm_search.clearButton
+import kotlinx.android.synthetic.main.activity_alarm_search.searchButton
+import kotlinx.android.synthetic.main.activity_alarm_search.wellCodeView
+import kotlinx.android.synthetic.main.activity_search_record.*
import kotlinx.android.synthetic.main.include_base_title.*
class SearchAlarmActivity : BaseActivity() {
- private lateinit var alarmTypeViewModel: AlarmTypeViewModel
- private lateinit var alarmContentViewModel: AlarmContentViewModel
+ private lateinit var alarmViewModel: AlarmViewModel
private lateinit var areaViewModel: AreaViewModel
private var alarmType = ""
private var alarmContent = ""
@@ -33,18 +36,16 @@
override fun initData() {
//告警类型
- alarmTypeViewModel = ViewModelProvider(this).get(AlarmTypeViewModel::class.java)
- //告警内容
- alarmContentViewModel = ViewModelProvider(this).get(AlarmContentViewModel::class.java)
+ alarmViewModel = ViewModelProvider(this).get(AlarmViewModel::class.java)
//区域
areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java)
}
override fun initEvent() {
alarmTypeView.setOnClickListener {
- alarmTypeViewModel.obtainAlarmType()
+ alarmViewModel.obtainAlarmType()
}
- alarmTypeViewModel.typeModel.observe(this, {
+ alarmViewModel.typeModel.observe(this, {
if (it.code == 200) {
val sheetBuilder = BottomListSheetBuilder(this)
sheetBuilder.setTitle("告警类型")
@@ -65,9 +66,9 @@
alarmContentView.setOnClickListener {
//获取类型对应的报警内容
- alarmContentViewModel.obtainAlarmContent(alarmType)
+ alarmViewModel.obtainAlarmContent(alarmType)
}
- alarmContentViewModel.contentModel.observe(this, {
+ alarmViewModel.contentModel.observe(this, {
if (it.code == 200) {
val sheetBuilder = BottomListSheetBuilder(this)
sheetBuilder.setTitle("告警内容")
@@ -152,7 +153,7 @@
searchButton.setOnClickListener {
//页面跳转,将查询参数传过去
navigatePageTo(
- SearchResultActivity::class.java, addAll(
+ AlarmSearchResultActivity::class.java, addAll(
wellCodeView.text.toString().trim(),
alarmType,
areaId,
@@ -165,6 +166,7 @@
clearButton.setChangeAlphaWhenPress(true)
clearButton.setOnClickListener {
+ wellCodeView.setText("")
alarmTypeView.text = ""
alarmContentView.text = ""
areaView.text = ""
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchRecordActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchRecordActivity.kt
index a459183..853b311 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/SearchRecordActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchRecordActivity.kt
@@ -1,18 +1,41 @@
package com.casic.qd.smartwell.view
+import androidx.lifecycle.ViewModelProvider
import com.casic.qd.smartwell.R
import com.casic.qd.smartwell.base.BaseActivity
+import com.casic.qd.smartwell.extensions.addAll
+import com.casic.qd.smartwell.extensions.navigatePageTo
+import com.casic.qd.smartwell.model.AreaModel
+import com.casic.qd.smartwell.model.DeviceTypeModel
+import com.casic.qd.smartwell.model.OwnerShipModel
+import com.casic.qd.smartwell.utils.Constant
+import com.casic.qd.smartwell.utils.SaveKeyValues
+import com.casic.qd.smartwell.vm.AreaViewModel
+import com.casic.qd.smartwell.vm.AuthenticateViewModel
+import com.casic.qd.smartwell.vm.DeviceViewModel
+import com.casic.qd.smartwell.widgets.BottomAreaSheet
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet
+import kotlinx.android.synthetic.main.activity_search_record.*
import kotlinx.android.synthetic.main.include_base_title.*
/**
* @author a203
* @description 记录查询界面
- * @package com.casic.qd.smartwell.view
* @date 2022/2/17 14:33
* @email 290677893@qq.com
*/
class SearchRecordActivity : BaseActivity() {
+ private val kTag = "SearchRecordActivity"
+ private lateinit var deviceViewModel: DeviceViewModel
+ private lateinit var authenticateViewModel: AuthenticateViewModel
+ private lateinit var areaViewModel: AreaViewModel
+ private var authenticatedType: MutableList = ArrayList()
+ private var deviceTypeValue = ""
+ private var areaId = ""
+
override fun initLayoutView(): Int = R.layout.activity_search_record
override fun setupTopBarLayout() {
@@ -20,10 +43,135 @@
}
override fun initData() {
-
+ val userDeviceJson = SaveKeyValues.getValue(Constant.USER_DEVICE_TYPE, "") as String
+ if (userDeviceJson.isNotBlank()) {
+ authenticatedType = Gson().fromJson(
+ userDeviceJson, object : TypeToken>() {}.type
+ )
+ }
+ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java)
+ authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java)
+ areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java)
}
override fun initEvent() {
+ deviceTypeView.setOnClickListener {
+ /**
+ * 获取全部设备类型
+ * */
+ deviceViewModel.obtainDeviceType()
+ }
+ deviceViewModel.typeModel.observe(this, {
+ if (it.code == 200) {
+ val authenticatedModel: MutableList = ArrayList()
+ it.data?.forEach { deviceModel ->
+ if (deviceModel.value in authenticatedType) {
+ authenticatedModel.add(deviceModel)
+ }
+ }
+ val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(this)
+ sheetBuilder.setTitle("设备类型")
+ authenticatedModel.forEach { deviceModel ->
+ sheetBuilder.addItem(deviceModel.name)
+ }
+ sheetBuilder.setGravityCenter(true)
+ .setOnSheetItemClickListener { dialog, _, position, tag ->
+ deviceTypeView.text = tag
+ this.deviceTypeValue = authenticatedModel[position].value.toString()
+ dialog.dismiss()
+ }.build().show()
+ }
+ })
+
+ ownerShipView.setOnClickListener {
+ authenticateViewModel.obtainOwnerShip("")
+ }
+ authenticateViewModel.resultModel.observe(this, {
+ if (it.code == 200) {
+ val ownerShipModel: MutableList = ArrayList()
+ it.data?.list?.forEach { listBean ->
+ ownerShipModel.add(listBean)
+ }
+ val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(this)
+ sheetBuilder.setTitle("权属单位")
+ ownerShipModel.forEach { model ->
+ sheetBuilder.addItem(model.name)
+ }
+ sheetBuilder.setGravityCenter(true)
+ .setOnSheetItemClickListener { dialog, _, _, tag ->
+ ownerShipView.text = tag
+
+ dialog.dismiss()
+ }.build().show()
+ }
+ })
+
+ deviceStateView.setOnClickListener {
+ QMUIBottomSheet.BottomListSheetBuilder(this)
+ .setTitle("在线情况")
+ .addItem("在线")
+ .addItem("离线")
+ .setGravityCenter(true)
+ .setOnSheetItemClickListener { dialog, _, _, tag ->
+ deviceStateView.text = tag
+
+ dialog.dismiss()
+ }.build().show()
+ }
+
+ areaView.setOnClickListener {
+ areaViewModel.obtainArea()
+ }
+ areaViewModel.areaModel.observe(this, {
+ if (it.code == 200) {
+ val firstLevelArea: MutableList = ArrayList()
+ val secondLevelArea: MutableList = ArrayList()
+ val thirdLevelArea: MutableList = ArrayList()
+ it.data?.forEach { dataBean ->
+ when (dataBean.level) {
+ 2 -> firstLevelArea.add(dataBean)
+ 3 -> secondLevelArea.add(dataBean)
+ 4 -> thirdLevelArea.add(dataBean)
+ }
+ }
+
+ // 绑定区域
+ BottomAreaSheet.Builder()
+ .setContext(this)
+ .setFirstAreaData(firstLevelArea)
+ .setSecondAreaData(secondLevelArea)
+ .setThirdAreaData(thirdLevelArea)
+ .setOnActionSheetListener(object : BottomAreaSheet.OnActionSheetListener {
+ override fun onAreaSelected(area: String?, id: String?) {
+ areaView.text = area
+ areaId = id.toString()
+ }
+ }).build().show()
+ }
+ })
+
+ searchButton.setChangeAlphaWhenPress(true)
+ searchButton.setOnClickListener {
+ //页面跳转,将查询参数传过去
+ navigatePageTo(
+ DeviceSearchResultActivity::class.java, addAll(
+ wellCodeView.text.toString().trim(),
+ deviceTypeValue,
+ "权属单位",
+ "在线情况",
+ areaId
+ )
+ )
+ }
+
+ clearButton.setChangeAlphaWhenPress(true)
+ clearButton.setOnClickListener {
+ wellCodeView.setText("")
+ deviceTypeView.text = ""
+ ownerShipView.text = ""
+ deviceStateView.text = ""
+ areaView.text = ""
+ }
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchResultActivity.kt
deleted file mode 100644
index 988b53d..0000000
--- a/app/src/main/java/com/casic/qd/smartwell/view/SearchResultActivity.kt
+++ /dev/null
@@ -1,222 +0,0 @@
-package com.casic.qd.smartwell.view
-
-import android.annotation.SuppressLint
-import android.content.BroadcastReceiver
-import android.content.Context
-import android.content.Intent
-import android.os.Handler
-import android.os.Looper
-import android.os.Message
-import androidx.lifecycle.ViewModelProvider
-import androidx.recyclerview.widget.LinearLayoutManager
-import com.casic.qd.smartwell.R
-import com.casic.qd.smartwell.adapter.AlarmListAdapter
-import com.casic.qd.smartwell.base.BaseActivity
-import com.casic.qd.smartwell.extensions.navigatePageTo
-import com.casic.qd.smartwell.extensions.show
-import com.casic.qd.smartwell.extensions.showEmptyPage
-import com.casic.qd.smartwell.model.AlarmListModel
-import com.casic.qd.smartwell.utils.BroadcastReceiverManager
-import com.casic.qd.smartwell.utils.Constant
-import com.casic.qd.smartwell.utils.DialogHelper
-import com.casic.qd.smartwell.utils.LoadState
-import com.casic.qd.smartwell.vm.CancelAlarmViewModel
-import com.casic.qd.smartwell.vm.SearchAlarmViewModel
-import com.casic.qd.smartwell.widgets.CancelAlarmDialog
-import kotlinx.android.synthetic.main.activity_alarm_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 searchAlarmViewModel: SearchAlarmViewModel
- private lateinit var cancelAlarmViewModel: CancelAlarmViewModel
- private lateinit var args: ArrayList
- private lateinit var alarmListAdapter: AlarmListAdapter
- private var dataBeans: MutableList = ArrayList()
- private var pageIndex = 1
- private var isRefresh = false
- private var isLoadMore = false
-
- override fun initLayoutView(): Int = R.layout.activity_alarm_search_result
-
- override fun setupTopBarLayout() {
- titleView.text = "查询结果"
- }
-
- override fun initData() {
- args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!!
- weakReferenceHandler = WeakReferenceHandler(this)
- searchAlarmViewModel = ViewModelProvider(this).get(SearchAlarmViewModel::class.java)
- cancelAlarmViewModel = ViewModelProvider(this).get(CancelAlarmViewModel::class.java)
- //注册广播接收者
- BroadcastReceiverManager.instance.addAction(Constant.CANCEL_ALARM_ACTION,
- object : BroadcastReceiver() {
- override fun onReceive(context: Context?, intent: Intent?) {
- //收到广播相当于做了一次列表刷新
- isRefresh = true
- pageIndex = 1
- obtainSearchResult(args, pageIndex)
- }
- })
- }
-
- override fun initEvent() {
- obtainSearchResult(args, pageIndex)
- searchAlarmViewModel.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()
- }
- dataBeans.addAll(dataRows!!)
- resultRefreshLayout.finishLoadMore()
- isLoadMore = false
- }
- else -> {
- dataBeans = dataRows!!
- }
- }
- weakReferenceHandler.sendEmptyMessage(2022041501)
- }
- })
- searchAlarmViewModel.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)
- }
-
- //消警状态处理
- cancelAlarmViewModel.loadState.observe(this, {
- when (it) {
- is LoadState.Loading -> {
- DialogHelper.showLoadingDialog(this, "处理中,请稍后")
- }
- is LoadState.Success -> {
- DialogHelper.dismissLoadingDialog()
- //刷新列表
- BroadcastReceiverManager.instance.sendBroadcast(
- Constant.CANCEL_ALARM_ACTION, ""
- )
- }
- else -> {
- DialogHelper.dismissLoadingDialog()
- }
- }
- })
- }
-
- private fun obtainSearchResult(args: ArrayList, pageIndex: Int) {
- searchAlarmViewModel.obtainSearchResult(
- args[0], args[1], args[2], args[3], args[4], args[5], "1", pageIndex
- )
- }
-
- private class WeakReferenceHandler(activity: SearchResultActivity) :
- Handler(Looper.getMainLooper()) {
- private val reference: WeakReference = WeakReference(activity)
-
- @SuppressLint("NotifyDataSetChanged")
- override fun handleMessage(msg: Message) {
- super.handleMessage(msg)
- val activity = reference.get()!!
- if (msg.what == 2022041501) {
- if (activity.isRefresh || activity.isLoadMore) {
- activity.alarmListAdapter.notifyDataSetChanged()
- } else { //首次加载数据
- if (activity.dataBeans.size == 0) {
- activity.emptyView!!.showEmptyPage {
- activity.obtainSearchResult(activity.args, activity.pageIndex)
- }
- } else {
- activity.emptyView!!.hide()
- activity.alarmListAdapter = AlarmListAdapter(activity, activity.dataBeans)
- activity.resultRecyclerView!!.layoutManager = LinearLayoutManager(activity)
- activity.resultRecyclerView!!.adapter = activity.alarmListAdapter
- activity.alarmListAdapter.setOnItemClickListener(object :
- AlarmListAdapter.OnItemClickListener {
- override fun onClicked(position: Int) {
- val wellId = activity.dataBeans[position].wellId.toString()
- if (wellId.isBlank()) {
- "井编号异常,无法查看详情".show()
- return
- }
- activity.navigatePageTo(WellDetailActivity::class.java, wellId)
- }
-
- override fun onOperationClicked(position: Int) {
- val wellDetail = activity.dataBeans[position]
- CancelAlarmDialog.Builder()
- .setContext(activity)
- .setTitle("取消告警")
- .setHintMessage("请输入详细的告警取消原因")
- .setNegativeButton("取消")
- .setPositiveButton("确定")
- .setOnDialogButtonClickListener(object :
- CancelAlarmDialog.OnDialogButtonClickListener {
- override fun onConfirmClick(
- spinnerValue: String, inputValue: String
- ) {
- /**
- * http://111.198.10.15:20104/alarm/cancelAlarm?id=&jobStatus=3&handleMessage=2fsdf
- * POST
- * */
- val alarmId = wellDetail.id
- if (alarmId.toString().isBlank()) {
- "操作失败,告警ID异常".show()
- return
- }
- val jobStatus = when (spinnerValue) {
- "已处理" -> "3"
- "无需处理" -> "4"
- else -> ""
- }
- activity.cancelAlarmViewModel.obtainOperationResult(
- alarmId!!
- )
- }
-
- override fun onCancelClick() {
-
- }
- }).build().show()
- }
- })
- }
- }
- }
- }
- }
-
- override fun onDestroy() {
- super.onDestroy()
- //解注册广播接收者,防止内存泄漏
- BroadcastReceiverManager.instance.destroy(Constant.CANCEL_ALARM_ACTION)
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt
index 003d39e..7c050bb 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt
@@ -5,11 +5,13 @@
import com.casic.qd.smartwell.R
import com.casic.qd.smartwell.base.BaseActivity
import com.casic.qd.smartwell.extensions.navigatePageTo
+import com.casic.qd.smartwell.vm.AuthenticateViewModel
import com.casic.qd.smartwell.vm.UserDetailViewModel
class SplashScreenActivity : BaseActivity() {
private lateinit var userDetailViewModel: UserDetailViewModel
+ private lateinit var authenticateViewModel: AuthenticateViewModel
override fun initLayoutView(): Int = R.layout.activity_splash
@@ -19,6 +21,7 @@
override fun initData() {
userDetailViewModel = ViewModelProvider(this).get(UserDetailViewModel::class.java)
+ authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java)
}
override fun initEvent() {
@@ -27,7 +30,14 @@
private val countDownTimer = object : CountDownTimer(1000, 500) {
override fun onFinish() {
+ /**
+ * 获取token之后保存用户信息
+ * */
userDetailViewModel.obtainUserDetail()
+ /**
+ * 根据用户有权查看的设备类型
+ */
+ authenticateViewModel.obtainAuthorByDept()
userDetailViewModel.flag.observe(this@SplashScreenActivity, {
if (it) {
navigatePageTo(MainActivity::class.java)
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0c249a9..f11ea34 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -46,9 +46,10 @@
-
+
+
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
index 428051e..d2ac7cf 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
@@ -1,13 +1,20 @@
package com.casic.qd.smartwell.extensions
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
import com.github.mikephil.charting.charts.BarChart
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis
import com.github.mikephil.charting.formatter.ValueFormatter
+import com.pengxh.app.multilib.utils.SizeUtil
fun BarChart.init(barLabels: MutableList) {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.animateY(1200, Easing.EaseInOutQuad)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt
index 4aa46bb..e67f075 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt
@@ -1,13 +1,20 @@
package com.casic.qd.smartwell.extensions
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.HorizontalBarChart
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis
import com.github.mikephil.charting.formatter.ValueFormatter
+import com.pengxh.app.multilib.utils.SizeUtil
fun HorizontalBarChart.init(barLabels: MutableList) {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.animateY(1200, Easing.EaseInOutQuad)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt
index 87c1c61..25f238f 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt
@@ -1,13 +1,20 @@
package com.casic.qd.smartwell.extensions
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.LineChart
import com.github.mikephil.charting.components.Legend
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis
+import com.pengxh.app.multilib.utils.SizeUtil
fun LineChart.init() {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.setDrawGridBackground(false)
this.setDrawBorders(false)
this.animateY(1200, Easing.EaseInOutQuad)
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt
index a88e096..3497dc7 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt
@@ -2,11 +2,18 @@
import android.graphics.Color
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.PieChart
import com.github.mikephil.charting.components.Legend
+import com.pengxh.app.multilib.utils.SizeUtil
fun PieChart.init() {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.setUsePercentValues(false) //百分比数字显示
this.description.isEnabled = false
this.dragDecelerationFrictionCoef = 0.95f //图表转动阻力摩擦系数[0,1]
diff --git a/app/src/main/java/com/casic/qd/smartwell/model/DeviceTypeModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/DeviceTypeModel.kt
new file mode 100644
index 0000000..04d2a8a
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/model/DeviceTypeModel.kt
@@ -0,0 +1,14 @@
+package com.casic.qd.smartwell.model
+
+class DeviceTypeModel {
+ var code = 0
+ var data: List? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var deviceType: String? = null
+ var name: String? = null
+ var value: String? = null
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/model/OwnerShipModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/OwnerShipModel.kt
new file mode 100644
index 0000000..7ced62c
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/model/OwnerShipModel.kt
@@ -0,0 +1,23 @@
+package com.casic.qd.smartwell.model
+
+class OwnerShipModel {
+ var code = 0
+ var data: DataBean? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var list: List? = null
+
+ class ListBean {
+ var isChecked = false
+ var code: String? = null
+ var id: String? = null
+ var name: String? = null
+ var isOpen = false
+ var pcodes: String? = null
+ var pid: String? = null
+ var value: String? = null
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt
index 5a509d2..cb85f80 100644
--- a/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt
@@ -31,6 +31,7 @@
const val ACCOUNT = "account"
const val PASSWORD = "password"
const val USER_DETAIL_MODEL = "userDetailModel"
+ const val USER_DEVICE_TYPE = "userDeviceType"
const val CANCEL_ALARM_ACTION = "cancelAlarm"
const val AREA_ID = "110000"
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt
index 019d741..9496bf4 100644
--- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt
@@ -163,4 +163,28 @@
*/
@GET("/statics/deviceStaticsByType")
suspend fun deviceCountByType(@Header("token") token: String): String
+
+ /**
+ * 根据部门获取支持的设备类型
+ */
+ /**
+ * 管网资产统计
+ */
+ @GET("/config/getAuthorByDept")
+ suspend fun obtainAuthorByDept(@Header("token") token: String): String
+
+ /**
+ * 获取设备类型
+ */
+ @GET("/device/type")
+ suspend fun obtainDeviceType(@Header("token") token: String): String
+
+ /**
+ * 获取权属单位
+ */
+ @GET("/dept/tree")
+ suspend fun obtainOwnerShip(
+ @Header("token") token: String,
+ @Query("deptType") deptType: String
+ ): String
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt
index 3985af9..575b2a9 100644
--- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt
@@ -160,4 +160,25 @@
suspend fun deviceCountByType(): String {
return api.deviceCountByType(AuthenticationHelper.token!!)
}
+
+ /**
+ * 根据部门获取支持的设备类型
+ */
+ suspend fun obtainAuthorByDept(): String {
+ return api.obtainAuthorByDept(AuthenticationHelper.token!!)
+ }
+
+ /**
+ * 获取设备类型
+ */
+ suspend fun obtainDeviceType(): String {
+ return api.obtainDeviceType(AuthenticationHelper.token!!)
+ }
+
+ /**
+ * 获取权属单位
+ */
+ suspend fun obtainOwnerShip(deptType: String): String {
+ return api.obtainOwnerShip(AuthenticationHelper.token!!, deptType)
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt
index 2a6d344..abaffb2 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt
@@ -20,8 +20,7 @@
import com.casic.qd.smartwell.utils.Constant
import com.casic.qd.smartwell.utils.DialogHelper
import com.casic.qd.smartwell.utils.LoadState
-import com.casic.qd.smartwell.vm.AlarmListViewModel
-import com.casic.qd.smartwell.vm.CancelAlarmViewModel
+import com.casic.qd.smartwell.vm.AlarmViewModel
import com.pengxh.app.multilib.widget.dialog.AlertControlDialog
import kotlinx.android.synthetic.main.activity_alarm_management.*
import kotlinx.android.synthetic.main.include_empty_view.*
@@ -30,8 +29,7 @@
class AlarmManagementActivity : BaseActivity() {
- private lateinit var alarmListViewModel: AlarmListViewModel
- private lateinit var cancelAlarmViewModel: CancelAlarmViewModel
+ private lateinit var alarmViewModel: AlarmViewModel
private lateinit var weakReferenceHandler: WeakReferenceHandler
private lateinit var alarmListAdapter: AlarmListAdapter
private var dataBeans: MutableList = ArrayList()
@@ -46,8 +44,7 @@
}
override fun initData() {
- alarmListViewModel = ViewModelProvider(this).get(AlarmListViewModel::class.java)
- cancelAlarmViewModel = ViewModelProvider(this).get(CancelAlarmViewModel::class.java)
+ alarmViewModel = ViewModelProvider(this).get(AlarmViewModel::class.java)
weakReferenceHandler = WeakReferenceHandler(this)
//注册广播接收者
BroadcastReceiverManager.instance.addAction(Constant.CANCEL_ALARM_ACTION,
@@ -63,7 +60,7 @@
override fun initEvent() {
obtainAlarmList(pageIndex)
- alarmListViewModel.listModel.observe(this, {
+ alarmViewModel.listModel.observe(this, {
if (it.code == 200) {
val dataRows = it.data?.rows
when {
@@ -101,7 +98,7 @@
obtainAlarmList(pageIndex)
}
- cancelAlarmViewModel.loadState.observe(this, {
+ alarmViewModel.loadState.observe(this, {
when (it) {
is LoadState.Loading -> {
DialogHelper.showLoadingDialog(this, "处理中,请稍后")
@@ -125,7 +122,7 @@
}
private fun obtainAlarmList(pageIndex: Int) {
- alarmListViewModel.obtainAlarmList("", "", "", "", "", "", "1", pageIndex)
+ alarmViewModel.obtainAlarmList("", "", "", "", "", "", "1", pageIndex)
}
private class WeakReferenceHandler(activity: AlarmManagementActivity) :
@@ -175,9 +172,7 @@
"操作失败,告警ID异常".show()
return
}
- activity.cancelAlarmViewModel.obtainOperationResult(
- alarmId!!
- )
+ activity.alarmViewModel.obtainOperationResult(alarmId!!)
}
override fun onCancelClick() {
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt
new file mode 100644
index 0000000..61c68ab
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt
@@ -0,0 +1,208 @@
+package com.casic.qd.smartwell.view
+
+import android.annotation.SuppressLint
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+import android.os.Handler
+import android.os.Looper
+import android.os.Message
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.LinearLayoutManager
+import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.adapter.AlarmListAdapter
+import com.casic.qd.smartwell.base.BaseActivity
+import com.casic.qd.smartwell.extensions.navigatePageTo
+import com.casic.qd.smartwell.extensions.show
+import com.casic.qd.smartwell.extensions.showEmptyPage
+import com.casic.qd.smartwell.model.AlarmListModel
+import com.casic.qd.smartwell.utils.BroadcastReceiverManager
+import com.casic.qd.smartwell.utils.Constant
+import com.casic.qd.smartwell.utils.DialogHelper
+import com.casic.qd.smartwell.utils.LoadState
+import com.casic.qd.smartwell.vm.AlarmViewModel
+import com.casic.qd.smartwell.vm.SearchAlarmViewModel
+import com.pengxh.app.multilib.widget.dialog.AlertControlDialog
+import kotlinx.android.synthetic.main.activity_alarm_search_result.*
+import kotlinx.android.synthetic.main.include_base_title.*
+import kotlinx.android.synthetic.main.include_empty_view.*
+import java.lang.ref.WeakReference
+
+class AlarmSearchResultActivity : BaseActivity() {
+
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+ private lateinit var searchAlarmViewModel: SearchAlarmViewModel
+ private lateinit var alarmViewModel: AlarmViewModel
+ private lateinit var args: ArrayList
+ private lateinit var alarmListAdapter: AlarmListAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var pageIndex = 1
+ private var isRefresh = false
+ private var isLoadMore = false
+
+ override fun initLayoutView(): Int = R.layout.activity_alarm_search_result
+
+ override fun setupTopBarLayout() {
+ titleView.text = "查询结果"
+ }
+
+ override fun initData() {
+ args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!!
+ weakReferenceHandler = WeakReferenceHandler(this)
+ searchAlarmViewModel = ViewModelProvider(this).get(SearchAlarmViewModel::class.java)
+ alarmViewModel = ViewModelProvider(this).get(AlarmViewModel::class.java)
+ //注册广播接收者
+ BroadcastReceiverManager.instance.addAction(Constant.CANCEL_ALARM_ACTION,
+ object : BroadcastReceiver() {
+ override fun onReceive(context: Context?, intent: Intent?) {
+ //收到广播相当于做了一次列表刷新
+ isRefresh = true
+ pageIndex = 1
+ obtainSearchResult(args, pageIndex)
+ }
+ })
+ }
+
+ override fun initEvent() {
+ obtainSearchResult(args, pageIndex)
+ searchAlarmViewModel.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()
+ }
+ dataBeans.addAll(dataRows!!)
+ resultRefreshLayout.finishLoadMore()
+ isLoadMore = false
+ }
+ else -> {
+ dataBeans = dataRows!!
+ }
+ }
+ weakReferenceHandler.sendEmptyMessage(2022041501)
+ }
+ })
+ searchAlarmViewModel.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)
+ }
+
+ //消警状态处理
+ alarmViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "处理中,请稍后")
+ }
+ is LoadState.Success -> {
+ DialogHelper.dismissLoadingDialog()
+ //刷新列表
+ BroadcastReceiverManager.instance.sendBroadcast(
+ Constant.CANCEL_ALARM_ACTION, ""
+ )
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+ }
+
+ private fun obtainSearchResult(args: ArrayList, pageIndex: Int) {
+ searchAlarmViewModel.obtainSearchResult(
+ args[0], args[1], args[2], args[3], args[4], args[5], "1", pageIndex
+ )
+ }
+
+ private class WeakReferenceHandler(activity: AlarmSearchResultActivity) :
+ Handler(Looper.getMainLooper()) {
+ private val reference: WeakReference = WeakReference(activity)
+
+ @SuppressLint("NotifyDataSetChanged")
+ override fun handleMessage(msg: Message) {
+ super.handleMessage(msg)
+ val activity = reference.get()!!
+ if (msg.what == 2022041501) {
+ if (activity.isRefresh || activity.isLoadMore) {
+ activity.alarmListAdapter.notifyDataSetChanged()
+ } else { //首次加载数据
+ if (activity.dataBeans.size == 0) {
+ activity.emptyView!!.showEmptyPage {
+ activity.obtainSearchResult(activity.args, activity.pageIndex)
+ }
+ } else {
+ activity.emptyView!!.hide()
+ activity.alarmListAdapter = AlarmListAdapter(activity, activity.dataBeans)
+ activity.resultRecyclerView!!.layoutManager = LinearLayoutManager(activity)
+ activity.resultRecyclerView!!.adapter = activity.alarmListAdapter
+ activity.alarmListAdapter.setOnItemClickListener(object :
+ AlarmListAdapter.OnItemClickListener {
+ override fun onClicked(position: Int) {
+ val wellId = activity.dataBeans[position].wellId.toString()
+ if (wellId.isBlank()) {
+ "井编号异常,无法查看详情".show()
+ return
+ }
+ activity.navigatePageTo(WellDetailActivity::class.java, wellId)
+ }
+
+ override fun onOperationClicked(position: Int) {
+ AlertControlDialog.Builder()
+ .setContext(activity)
+ .setTitle("确认操作")
+ .setMessage("确定取消报警吗?")
+ .setNegativeButton("取消")
+ .setPositiveButton("确定")
+ .setOnDialogButtonClickListener(object :
+ AlertControlDialog.OnDialogButtonClickListener {
+ override fun onConfirmClick() {
+ val alarmId = activity.dataBeans[position].id
+ if (alarmId.toString().isBlank()) {
+ "操作失败,告警ID异常".show()
+ return
+ }
+ activity.alarmViewModel.obtainOperationResult(alarmId!!)
+ }
+
+ override fun onCancelClick() {
+
+ }
+ }).build().show()
+ }
+ })
+ }
+ }
+ }
+ }
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ //解注册广播接收者,防止内存泄漏
+ BroadcastReceiverManager.instance.destroy(Constant.CANCEL_ALARM_ACTION)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceSearchResultActivity.kt
new file mode 100644
index 0000000..cfc25d2
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceSearchResultActivity.kt
@@ -0,0 +1,21 @@
+package com.casic.qd.smartwell.view
+
+import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseActivity
+
+class DeviceSearchResultActivity : BaseActivity() {
+
+ override fun initLayoutView(): Int = R.layout.activity_device_search_result
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt
index 526fa73..c86ee63 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt
@@ -13,7 +13,7 @@
import com.casic.qd.smartwell.extensions.show
import com.casic.qd.smartwell.utils.*
import com.casic.qd.smartwell.vm.AuthenticateViewModel
-import com.casic.qd.smartwell.vm.LoginInViewModel
+import com.casic.qd.smartwell.vm.LoginViewModel
import com.casic.qd.smartwell.vm.UserDetailViewModel
import com.qmuiteam.qmui.util.QMUIStatusBarHelper
import kotlinx.android.synthetic.main.activity_login.*
@@ -21,7 +21,7 @@
class LoginActivity : BaseActivity() {
private lateinit var authenticateViewModel: AuthenticateViewModel
- private lateinit var loginInViewModel: LoginInViewModel
+ private lateinit var loginViewModel: LoginViewModel
private lateinit var userDetailViewModel: UserDetailViewModel
private val textWatcher = object : TextWatcher {
@@ -54,7 +54,7 @@
userNameView.setText(SaveKeyValues.getValue(Constant.ACCOUNT, "") as String)
userPasswordView.setText(SaveKeyValues.getValue(Constant.PASSWORD, "") as String)
authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java)
- loginInViewModel = ViewModelProvider(this).get(LoginInViewModel::class.java)
+ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java)
userDetailViewModel = ViewModelProvider(this).get(UserDetailViewModel::class.java)
}
@@ -100,18 +100,24 @@
val dataByPublicKey =
RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey!!)
//登录并获取Token,POST请求
- loginInViewModel.login(it.data!!.sid!!, account, dataByPublicKey)
- loginInViewModel.resultModel.observe(this, { loginResult ->
+ loginViewModel.inn(it.data!!.sid!!, account, dataByPublicKey)
+ loginViewModel.resultModel.observe(this, { loginResult ->
if (loginResult.code == 200) {
AuthenticationHelper.saveToken(loginResult.data!!.token!!)
- //获取token之后保存用户信息
+ /**
+ * 获取token之后保存用户信息
+ * */
userDetailViewModel.obtainUserDetail()
+ /**
+ * 根据用户有权查看的设备类型
+ */
+ authenticateViewModel.obtainAuthorByDept()
//验证成功登录
this.navigatePageTo(MainActivity::class.java)
finish()
}
})
- loginInViewModel.loadState.observe(this, { loginState ->
+ loginViewModel.loadState.observe(this, { loginState ->
when (loginState) {
is LoadState.Success -> {
"登录成功".show()
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt
index 3f497c9..02435a3 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt
@@ -17,11 +17,8 @@
import com.casic.qd.smartwell.extensions.*
import com.casic.qd.smartwell.model.BannerImageModel
import com.casic.qd.smartwell.model.LineChartEntryModel
-import com.casic.qd.smartwell.utils.AuthenticationHelper
-import com.casic.qd.smartwell.utils.ChartViewHelper
-import com.casic.qd.smartwell.utils.Constant
-import com.casic.qd.smartwell.utils.PageNavigationManager
-import com.casic.qd.smartwell.vm.LoginOutViewModel
+import com.casic.qd.smartwell.utils.*
+import com.casic.qd.smartwell.vm.LoginViewModel
import com.casic.qd.smartwell.vm.WaterStatisticsViewModel
import com.github.mikephil.charting.data.Entry
import com.pengxh.app.multilib.widget.dialog.AlertControlDialog
@@ -38,7 +35,7 @@
private val context: Context = this@MainActivity
private var clickTime: Long = 0
- private lateinit var loginOutViewModel: LoginOutViewModel
+ private lateinit var loginViewModel: LoginViewModel
private lateinit var waterViewModel: WaterStatisticsViewModel
private val xAxisDate: MutableList = ArrayList()
private val entryModels: MutableList = ArrayList()
@@ -111,7 +108,7 @@
})
//初始化vm
- loginOutViewModel = ViewModelProvider(this).get(LoginOutViewModel::class.java)
+ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java)
waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java)
weakReferenceHandler = WeakReferenceHandler(this)
}
@@ -127,19 +124,20 @@
.setOnDialogButtonClickListener(object :
AlertControlDialog.OnDialogButtonClickListener {
override fun onConfirmClick() {
- loginOutViewModel.loginOut()
+ loginViewModel.out()
}
override fun onCancelClick() {}
}).build().show()
}
- loginOutViewModel.resultModel.observe(this, {
- if (it.code == 200) {
+ loginViewModel.loadState.observe(this, {
+ if (it == LoadState.Success) {
AuthenticationHelper.removeToken()
this.navigatePageTo(LoginActivity::class.java)
PageNavigationManager.finishAllActivity()
}
})
+
rightOptionView.setOnClickListener {
navigatePageTo(AlarmManagementActivity::class.java)
}
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt
index 954cf2d..8f54163 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt
@@ -6,20 +6,23 @@
import com.casic.qd.smartwell.extensions.*
import com.casic.qd.smartwell.model.AreaModel
import com.casic.qd.smartwell.utils.Constant
-import com.casic.qd.smartwell.vm.AlarmContentViewModel
-import com.casic.qd.smartwell.vm.AlarmTypeViewModel
+import com.casic.qd.smartwell.vm.AlarmViewModel
import com.casic.qd.smartwell.vm.AreaViewModel
import com.casic.qd.smartwell.widgets.BottomAreaSheet
import com.jzxiang.pickerview.TimePickerDialog
import com.jzxiang.pickerview.data.Type
import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder
import kotlinx.android.synthetic.main.activity_alarm_search.*
+import kotlinx.android.synthetic.main.activity_alarm_search.areaView
+import kotlinx.android.synthetic.main.activity_alarm_search.clearButton
+import kotlinx.android.synthetic.main.activity_alarm_search.searchButton
+import kotlinx.android.synthetic.main.activity_alarm_search.wellCodeView
+import kotlinx.android.synthetic.main.activity_search_record.*
import kotlinx.android.synthetic.main.include_base_title.*
class SearchAlarmActivity : BaseActivity() {
- private lateinit var alarmTypeViewModel: AlarmTypeViewModel
- private lateinit var alarmContentViewModel: AlarmContentViewModel
+ private lateinit var alarmViewModel: AlarmViewModel
private lateinit var areaViewModel: AreaViewModel
private var alarmType = ""
private var alarmContent = ""
@@ -33,18 +36,16 @@
override fun initData() {
//告警类型
- alarmTypeViewModel = ViewModelProvider(this).get(AlarmTypeViewModel::class.java)
- //告警内容
- alarmContentViewModel = ViewModelProvider(this).get(AlarmContentViewModel::class.java)
+ alarmViewModel = ViewModelProvider(this).get(AlarmViewModel::class.java)
//区域
areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java)
}
override fun initEvent() {
alarmTypeView.setOnClickListener {
- alarmTypeViewModel.obtainAlarmType()
+ alarmViewModel.obtainAlarmType()
}
- alarmTypeViewModel.typeModel.observe(this, {
+ alarmViewModel.typeModel.observe(this, {
if (it.code == 200) {
val sheetBuilder = BottomListSheetBuilder(this)
sheetBuilder.setTitle("告警类型")
@@ -65,9 +66,9 @@
alarmContentView.setOnClickListener {
//获取类型对应的报警内容
- alarmContentViewModel.obtainAlarmContent(alarmType)
+ alarmViewModel.obtainAlarmContent(alarmType)
}
- alarmContentViewModel.contentModel.observe(this, {
+ alarmViewModel.contentModel.observe(this, {
if (it.code == 200) {
val sheetBuilder = BottomListSheetBuilder(this)
sheetBuilder.setTitle("告警内容")
@@ -152,7 +153,7 @@
searchButton.setOnClickListener {
//页面跳转,将查询参数传过去
navigatePageTo(
- SearchResultActivity::class.java, addAll(
+ AlarmSearchResultActivity::class.java, addAll(
wellCodeView.text.toString().trim(),
alarmType,
areaId,
@@ -165,6 +166,7 @@
clearButton.setChangeAlphaWhenPress(true)
clearButton.setOnClickListener {
+ wellCodeView.setText("")
alarmTypeView.text = ""
alarmContentView.text = ""
areaView.text = ""
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchRecordActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchRecordActivity.kt
index a459183..853b311 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/SearchRecordActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchRecordActivity.kt
@@ -1,18 +1,41 @@
package com.casic.qd.smartwell.view
+import androidx.lifecycle.ViewModelProvider
import com.casic.qd.smartwell.R
import com.casic.qd.smartwell.base.BaseActivity
+import com.casic.qd.smartwell.extensions.addAll
+import com.casic.qd.smartwell.extensions.navigatePageTo
+import com.casic.qd.smartwell.model.AreaModel
+import com.casic.qd.smartwell.model.DeviceTypeModel
+import com.casic.qd.smartwell.model.OwnerShipModel
+import com.casic.qd.smartwell.utils.Constant
+import com.casic.qd.smartwell.utils.SaveKeyValues
+import com.casic.qd.smartwell.vm.AreaViewModel
+import com.casic.qd.smartwell.vm.AuthenticateViewModel
+import com.casic.qd.smartwell.vm.DeviceViewModel
+import com.casic.qd.smartwell.widgets.BottomAreaSheet
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet
+import kotlinx.android.synthetic.main.activity_search_record.*
import kotlinx.android.synthetic.main.include_base_title.*
/**
* @author a203
* @description 记录查询界面
- * @package com.casic.qd.smartwell.view
* @date 2022/2/17 14:33
* @email 290677893@qq.com
*/
class SearchRecordActivity : BaseActivity() {
+ private val kTag = "SearchRecordActivity"
+ private lateinit var deviceViewModel: DeviceViewModel
+ private lateinit var authenticateViewModel: AuthenticateViewModel
+ private lateinit var areaViewModel: AreaViewModel
+ private var authenticatedType: MutableList = ArrayList()
+ private var deviceTypeValue = ""
+ private var areaId = ""
+
override fun initLayoutView(): Int = R.layout.activity_search_record
override fun setupTopBarLayout() {
@@ -20,10 +43,135 @@
}
override fun initData() {
-
+ val userDeviceJson = SaveKeyValues.getValue(Constant.USER_DEVICE_TYPE, "") as String
+ if (userDeviceJson.isNotBlank()) {
+ authenticatedType = Gson().fromJson(
+ userDeviceJson, object : TypeToken>() {}.type
+ )
+ }
+ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java)
+ authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java)
+ areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java)
}
override fun initEvent() {
+ deviceTypeView.setOnClickListener {
+ /**
+ * 获取全部设备类型
+ * */
+ deviceViewModel.obtainDeviceType()
+ }
+ deviceViewModel.typeModel.observe(this, {
+ if (it.code == 200) {
+ val authenticatedModel: MutableList = ArrayList()
+ it.data?.forEach { deviceModel ->
+ if (deviceModel.value in authenticatedType) {
+ authenticatedModel.add(deviceModel)
+ }
+ }
+ val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(this)
+ sheetBuilder.setTitle("设备类型")
+ authenticatedModel.forEach { deviceModel ->
+ sheetBuilder.addItem(deviceModel.name)
+ }
+ sheetBuilder.setGravityCenter(true)
+ .setOnSheetItemClickListener { dialog, _, position, tag ->
+ deviceTypeView.text = tag
+ this.deviceTypeValue = authenticatedModel[position].value.toString()
+ dialog.dismiss()
+ }.build().show()
+ }
+ })
+
+ ownerShipView.setOnClickListener {
+ authenticateViewModel.obtainOwnerShip("")
+ }
+ authenticateViewModel.resultModel.observe(this, {
+ if (it.code == 200) {
+ val ownerShipModel: MutableList = ArrayList()
+ it.data?.list?.forEach { listBean ->
+ ownerShipModel.add(listBean)
+ }
+ val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(this)
+ sheetBuilder.setTitle("权属单位")
+ ownerShipModel.forEach { model ->
+ sheetBuilder.addItem(model.name)
+ }
+ sheetBuilder.setGravityCenter(true)
+ .setOnSheetItemClickListener { dialog, _, _, tag ->
+ ownerShipView.text = tag
+
+ dialog.dismiss()
+ }.build().show()
+ }
+ })
+
+ deviceStateView.setOnClickListener {
+ QMUIBottomSheet.BottomListSheetBuilder(this)
+ .setTitle("在线情况")
+ .addItem("在线")
+ .addItem("离线")
+ .setGravityCenter(true)
+ .setOnSheetItemClickListener { dialog, _, _, tag ->
+ deviceStateView.text = tag
+
+ dialog.dismiss()
+ }.build().show()
+ }
+
+ areaView.setOnClickListener {
+ areaViewModel.obtainArea()
+ }
+ areaViewModel.areaModel.observe(this, {
+ if (it.code == 200) {
+ val firstLevelArea: MutableList = ArrayList()
+ val secondLevelArea: MutableList = ArrayList()
+ val thirdLevelArea: MutableList = ArrayList()
+ it.data?.forEach { dataBean ->
+ when (dataBean.level) {
+ 2 -> firstLevelArea.add(dataBean)
+ 3 -> secondLevelArea.add(dataBean)
+ 4 -> thirdLevelArea.add(dataBean)
+ }
+ }
+
+ // 绑定区域
+ BottomAreaSheet.Builder()
+ .setContext(this)
+ .setFirstAreaData(firstLevelArea)
+ .setSecondAreaData(secondLevelArea)
+ .setThirdAreaData(thirdLevelArea)
+ .setOnActionSheetListener(object : BottomAreaSheet.OnActionSheetListener {
+ override fun onAreaSelected(area: String?, id: String?) {
+ areaView.text = area
+ areaId = id.toString()
+ }
+ }).build().show()
+ }
+ })
+
+ searchButton.setChangeAlphaWhenPress(true)
+ searchButton.setOnClickListener {
+ //页面跳转,将查询参数传过去
+ navigatePageTo(
+ DeviceSearchResultActivity::class.java, addAll(
+ wellCodeView.text.toString().trim(),
+ deviceTypeValue,
+ "权属单位",
+ "在线情况",
+ areaId
+ )
+ )
+ }
+
+ clearButton.setChangeAlphaWhenPress(true)
+ clearButton.setOnClickListener {
+ wellCodeView.setText("")
+ deviceTypeView.text = ""
+ ownerShipView.text = ""
+ deviceStateView.text = ""
+ areaView.text = ""
+ }
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchResultActivity.kt
deleted file mode 100644
index 988b53d..0000000
--- a/app/src/main/java/com/casic/qd/smartwell/view/SearchResultActivity.kt
+++ /dev/null
@@ -1,222 +0,0 @@
-package com.casic.qd.smartwell.view
-
-import android.annotation.SuppressLint
-import android.content.BroadcastReceiver
-import android.content.Context
-import android.content.Intent
-import android.os.Handler
-import android.os.Looper
-import android.os.Message
-import androidx.lifecycle.ViewModelProvider
-import androidx.recyclerview.widget.LinearLayoutManager
-import com.casic.qd.smartwell.R
-import com.casic.qd.smartwell.adapter.AlarmListAdapter
-import com.casic.qd.smartwell.base.BaseActivity
-import com.casic.qd.smartwell.extensions.navigatePageTo
-import com.casic.qd.smartwell.extensions.show
-import com.casic.qd.smartwell.extensions.showEmptyPage
-import com.casic.qd.smartwell.model.AlarmListModel
-import com.casic.qd.smartwell.utils.BroadcastReceiverManager
-import com.casic.qd.smartwell.utils.Constant
-import com.casic.qd.smartwell.utils.DialogHelper
-import com.casic.qd.smartwell.utils.LoadState
-import com.casic.qd.smartwell.vm.CancelAlarmViewModel
-import com.casic.qd.smartwell.vm.SearchAlarmViewModel
-import com.casic.qd.smartwell.widgets.CancelAlarmDialog
-import kotlinx.android.synthetic.main.activity_alarm_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 searchAlarmViewModel: SearchAlarmViewModel
- private lateinit var cancelAlarmViewModel: CancelAlarmViewModel
- private lateinit var args: ArrayList
- private lateinit var alarmListAdapter: AlarmListAdapter
- private var dataBeans: MutableList = ArrayList()
- private var pageIndex = 1
- private var isRefresh = false
- private var isLoadMore = false
-
- override fun initLayoutView(): Int = R.layout.activity_alarm_search_result
-
- override fun setupTopBarLayout() {
- titleView.text = "查询结果"
- }
-
- override fun initData() {
- args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!!
- weakReferenceHandler = WeakReferenceHandler(this)
- searchAlarmViewModel = ViewModelProvider(this).get(SearchAlarmViewModel::class.java)
- cancelAlarmViewModel = ViewModelProvider(this).get(CancelAlarmViewModel::class.java)
- //注册广播接收者
- BroadcastReceiverManager.instance.addAction(Constant.CANCEL_ALARM_ACTION,
- object : BroadcastReceiver() {
- override fun onReceive(context: Context?, intent: Intent?) {
- //收到广播相当于做了一次列表刷新
- isRefresh = true
- pageIndex = 1
- obtainSearchResult(args, pageIndex)
- }
- })
- }
-
- override fun initEvent() {
- obtainSearchResult(args, pageIndex)
- searchAlarmViewModel.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()
- }
- dataBeans.addAll(dataRows!!)
- resultRefreshLayout.finishLoadMore()
- isLoadMore = false
- }
- else -> {
- dataBeans = dataRows!!
- }
- }
- weakReferenceHandler.sendEmptyMessage(2022041501)
- }
- })
- searchAlarmViewModel.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)
- }
-
- //消警状态处理
- cancelAlarmViewModel.loadState.observe(this, {
- when (it) {
- is LoadState.Loading -> {
- DialogHelper.showLoadingDialog(this, "处理中,请稍后")
- }
- is LoadState.Success -> {
- DialogHelper.dismissLoadingDialog()
- //刷新列表
- BroadcastReceiverManager.instance.sendBroadcast(
- Constant.CANCEL_ALARM_ACTION, ""
- )
- }
- else -> {
- DialogHelper.dismissLoadingDialog()
- }
- }
- })
- }
-
- private fun obtainSearchResult(args: ArrayList, pageIndex: Int) {
- searchAlarmViewModel.obtainSearchResult(
- args[0], args[1], args[2], args[3], args[4], args[5], "1", pageIndex
- )
- }
-
- private class WeakReferenceHandler(activity: SearchResultActivity) :
- Handler(Looper.getMainLooper()) {
- private val reference: WeakReference = WeakReference(activity)
-
- @SuppressLint("NotifyDataSetChanged")
- override fun handleMessage(msg: Message) {
- super.handleMessage(msg)
- val activity = reference.get()!!
- if (msg.what == 2022041501) {
- if (activity.isRefresh || activity.isLoadMore) {
- activity.alarmListAdapter.notifyDataSetChanged()
- } else { //首次加载数据
- if (activity.dataBeans.size == 0) {
- activity.emptyView!!.showEmptyPage {
- activity.obtainSearchResult(activity.args, activity.pageIndex)
- }
- } else {
- activity.emptyView!!.hide()
- activity.alarmListAdapter = AlarmListAdapter(activity, activity.dataBeans)
- activity.resultRecyclerView!!.layoutManager = LinearLayoutManager(activity)
- activity.resultRecyclerView!!.adapter = activity.alarmListAdapter
- activity.alarmListAdapter.setOnItemClickListener(object :
- AlarmListAdapter.OnItemClickListener {
- override fun onClicked(position: Int) {
- val wellId = activity.dataBeans[position].wellId.toString()
- if (wellId.isBlank()) {
- "井编号异常,无法查看详情".show()
- return
- }
- activity.navigatePageTo(WellDetailActivity::class.java, wellId)
- }
-
- override fun onOperationClicked(position: Int) {
- val wellDetail = activity.dataBeans[position]
- CancelAlarmDialog.Builder()
- .setContext(activity)
- .setTitle("取消告警")
- .setHintMessage("请输入详细的告警取消原因")
- .setNegativeButton("取消")
- .setPositiveButton("确定")
- .setOnDialogButtonClickListener(object :
- CancelAlarmDialog.OnDialogButtonClickListener {
- override fun onConfirmClick(
- spinnerValue: String, inputValue: String
- ) {
- /**
- * http://111.198.10.15:20104/alarm/cancelAlarm?id=&jobStatus=3&handleMessage=2fsdf
- * POST
- * */
- val alarmId = wellDetail.id
- if (alarmId.toString().isBlank()) {
- "操作失败,告警ID异常".show()
- return
- }
- val jobStatus = when (spinnerValue) {
- "已处理" -> "3"
- "无需处理" -> "4"
- else -> ""
- }
- activity.cancelAlarmViewModel.obtainOperationResult(
- alarmId!!
- )
- }
-
- override fun onCancelClick() {
-
- }
- }).build().show()
- }
- })
- }
- }
- }
- }
- }
-
- override fun onDestroy() {
- super.onDestroy()
- //解注册广播接收者,防止内存泄漏
- BroadcastReceiverManager.instance.destroy(Constant.CANCEL_ALARM_ACTION)
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt
index 003d39e..7c050bb 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt
@@ -5,11 +5,13 @@
import com.casic.qd.smartwell.R
import com.casic.qd.smartwell.base.BaseActivity
import com.casic.qd.smartwell.extensions.navigatePageTo
+import com.casic.qd.smartwell.vm.AuthenticateViewModel
import com.casic.qd.smartwell.vm.UserDetailViewModel
class SplashScreenActivity : BaseActivity() {
private lateinit var userDetailViewModel: UserDetailViewModel
+ private lateinit var authenticateViewModel: AuthenticateViewModel
override fun initLayoutView(): Int = R.layout.activity_splash
@@ -19,6 +21,7 @@
override fun initData() {
userDetailViewModel = ViewModelProvider(this).get(UserDetailViewModel::class.java)
+ authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java)
}
override fun initEvent() {
@@ -27,7 +30,14 @@
private val countDownTimer = object : CountDownTimer(1000, 500) {
override fun onFinish() {
+ /**
+ * 获取token之后保存用户信息
+ * */
userDetailViewModel.obtainUserDetail()
+ /**
+ * 根据用户有权查看的设备类型
+ */
+ authenticateViewModel.obtainAuthorByDept()
userDetailViewModel.flag.observe(this@SplashScreenActivity, {
if (it) {
navigatePageTo(MainActivity::class.java)
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt
index 0129d7e..2d59345 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt
@@ -9,8 +9,8 @@
import com.casic.qd.smartwell.extensions.*
import com.casic.qd.smartwell.utils.ChartViewHelper
import com.casic.qd.smartwell.utils.Constant
-import com.casic.qd.smartwell.vm.AlarmListViewModel
-import com.casic.qd.smartwell.vm.DeviceStatisticsViewModel
+import com.casic.qd.smartwell.vm.AlarmViewModel
+import com.casic.qd.smartwell.vm.DeviceViewModel
import com.casic.qd.smartwell.vm.WaterStatisticsViewModel
import com.casic.qd.smartwell.widgets.DateSelectDialog
import com.github.mikephil.charting.data.BarEntry
@@ -29,8 +29,8 @@
private val context: Context = this@StatisticsActivity
private lateinit var waterViewModel: WaterStatisticsViewModel
- private lateinit var deviceViewModel: DeviceStatisticsViewModel
- private lateinit var alarmViewModel: AlarmListViewModel
+ private lateinit var deviceViewModel: DeviceViewModel
+ private lateinit var alarmViewModel: AlarmViewModel
override fun initLayoutView(): Int = R.layout.activity_statistics
@@ -40,8 +40,8 @@
override fun initData() {
waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java)
- deviceViewModel = ViewModelProvider(this).get(DeviceStatisticsViewModel::class.java)
- alarmViewModel = ViewModelProvider(this).get(AlarmListViewModel::class.java)
+ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java)
+ alarmViewModel = ViewModelProvider(this).get(AlarmViewModel::class.java)
}
override fun initEvent() {
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0c249a9..f11ea34 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -46,9 +46,10 @@
-
+
+
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
index 428051e..d2ac7cf 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
@@ -1,13 +1,20 @@
package com.casic.qd.smartwell.extensions
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
import com.github.mikephil.charting.charts.BarChart
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis
import com.github.mikephil.charting.formatter.ValueFormatter
+import com.pengxh.app.multilib.utils.SizeUtil
fun BarChart.init(barLabels: MutableList) {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.animateY(1200, Easing.EaseInOutQuad)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt
index 4aa46bb..e67f075 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt
@@ -1,13 +1,20 @@
package com.casic.qd.smartwell.extensions
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.HorizontalBarChart
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis
import com.github.mikephil.charting.formatter.ValueFormatter
+import com.pengxh.app.multilib.utils.SizeUtil
fun HorizontalBarChart.init(barLabels: MutableList) {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.animateY(1200, Easing.EaseInOutQuad)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt
index 87c1c61..25f238f 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt
@@ -1,13 +1,20 @@
package com.casic.qd.smartwell.extensions
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.LineChart
import com.github.mikephil.charting.components.Legend
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis
+import com.pengxh.app.multilib.utils.SizeUtil
fun LineChart.init() {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.setDrawGridBackground(false)
this.setDrawBorders(false)
this.animateY(1200, Easing.EaseInOutQuad)
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt
index a88e096..3497dc7 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt
@@ -2,11 +2,18 @@
import android.graphics.Color
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.PieChart
import com.github.mikephil.charting.components.Legend
+import com.pengxh.app.multilib.utils.SizeUtil
fun PieChart.init() {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.setUsePercentValues(false) //百分比数字显示
this.description.isEnabled = false
this.dragDecelerationFrictionCoef = 0.95f //图表转动阻力摩擦系数[0,1]
diff --git a/app/src/main/java/com/casic/qd/smartwell/model/DeviceTypeModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/DeviceTypeModel.kt
new file mode 100644
index 0000000..04d2a8a
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/model/DeviceTypeModel.kt
@@ -0,0 +1,14 @@
+package com.casic.qd.smartwell.model
+
+class DeviceTypeModel {
+ var code = 0
+ var data: List? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var deviceType: String? = null
+ var name: String? = null
+ var value: String? = null
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/model/OwnerShipModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/OwnerShipModel.kt
new file mode 100644
index 0000000..7ced62c
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/model/OwnerShipModel.kt
@@ -0,0 +1,23 @@
+package com.casic.qd.smartwell.model
+
+class OwnerShipModel {
+ var code = 0
+ var data: DataBean? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var list: List? = null
+
+ class ListBean {
+ var isChecked = false
+ var code: String? = null
+ var id: String? = null
+ var name: String? = null
+ var isOpen = false
+ var pcodes: String? = null
+ var pid: String? = null
+ var value: String? = null
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt
index 5a509d2..cb85f80 100644
--- a/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt
@@ -31,6 +31,7 @@
const val ACCOUNT = "account"
const val PASSWORD = "password"
const val USER_DETAIL_MODEL = "userDetailModel"
+ const val USER_DEVICE_TYPE = "userDeviceType"
const val CANCEL_ALARM_ACTION = "cancelAlarm"
const val AREA_ID = "110000"
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt
index 019d741..9496bf4 100644
--- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt
@@ -163,4 +163,28 @@
*/
@GET("/statics/deviceStaticsByType")
suspend fun deviceCountByType(@Header("token") token: String): String
+
+ /**
+ * 根据部门获取支持的设备类型
+ */
+ /**
+ * 管网资产统计
+ */
+ @GET("/config/getAuthorByDept")
+ suspend fun obtainAuthorByDept(@Header("token") token: String): String
+
+ /**
+ * 获取设备类型
+ */
+ @GET("/device/type")
+ suspend fun obtainDeviceType(@Header("token") token: String): String
+
+ /**
+ * 获取权属单位
+ */
+ @GET("/dept/tree")
+ suspend fun obtainOwnerShip(
+ @Header("token") token: String,
+ @Query("deptType") deptType: String
+ ): String
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt
index 3985af9..575b2a9 100644
--- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt
@@ -160,4 +160,25 @@
suspend fun deviceCountByType(): String {
return api.deviceCountByType(AuthenticationHelper.token!!)
}
+
+ /**
+ * 根据部门获取支持的设备类型
+ */
+ suspend fun obtainAuthorByDept(): String {
+ return api.obtainAuthorByDept(AuthenticationHelper.token!!)
+ }
+
+ /**
+ * 获取设备类型
+ */
+ suspend fun obtainDeviceType(): String {
+ return api.obtainDeviceType(AuthenticationHelper.token!!)
+ }
+
+ /**
+ * 获取权属单位
+ */
+ suspend fun obtainOwnerShip(deptType: String): String {
+ return api.obtainOwnerShip(AuthenticationHelper.token!!, deptType)
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt
index 2a6d344..abaffb2 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt
@@ -20,8 +20,7 @@
import com.casic.qd.smartwell.utils.Constant
import com.casic.qd.smartwell.utils.DialogHelper
import com.casic.qd.smartwell.utils.LoadState
-import com.casic.qd.smartwell.vm.AlarmListViewModel
-import com.casic.qd.smartwell.vm.CancelAlarmViewModel
+import com.casic.qd.smartwell.vm.AlarmViewModel
import com.pengxh.app.multilib.widget.dialog.AlertControlDialog
import kotlinx.android.synthetic.main.activity_alarm_management.*
import kotlinx.android.synthetic.main.include_empty_view.*
@@ -30,8 +29,7 @@
class AlarmManagementActivity : BaseActivity() {
- private lateinit var alarmListViewModel: AlarmListViewModel
- private lateinit var cancelAlarmViewModel: CancelAlarmViewModel
+ private lateinit var alarmViewModel: AlarmViewModel
private lateinit var weakReferenceHandler: WeakReferenceHandler
private lateinit var alarmListAdapter: AlarmListAdapter
private var dataBeans: MutableList = ArrayList()
@@ -46,8 +44,7 @@
}
override fun initData() {
- alarmListViewModel = ViewModelProvider(this).get(AlarmListViewModel::class.java)
- cancelAlarmViewModel = ViewModelProvider(this).get(CancelAlarmViewModel::class.java)
+ alarmViewModel = ViewModelProvider(this).get(AlarmViewModel::class.java)
weakReferenceHandler = WeakReferenceHandler(this)
//注册广播接收者
BroadcastReceiverManager.instance.addAction(Constant.CANCEL_ALARM_ACTION,
@@ -63,7 +60,7 @@
override fun initEvent() {
obtainAlarmList(pageIndex)
- alarmListViewModel.listModel.observe(this, {
+ alarmViewModel.listModel.observe(this, {
if (it.code == 200) {
val dataRows = it.data?.rows
when {
@@ -101,7 +98,7 @@
obtainAlarmList(pageIndex)
}
- cancelAlarmViewModel.loadState.observe(this, {
+ alarmViewModel.loadState.observe(this, {
when (it) {
is LoadState.Loading -> {
DialogHelper.showLoadingDialog(this, "处理中,请稍后")
@@ -125,7 +122,7 @@
}
private fun obtainAlarmList(pageIndex: Int) {
- alarmListViewModel.obtainAlarmList("", "", "", "", "", "", "1", pageIndex)
+ alarmViewModel.obtainAlarmList("", "", "", "", "", "", "1", pageIndex)
}
private class WeakReferenceHandler(activity: AlarmManagementActivity) :
@@ -175,9 +172,7 @@
"操作失败,告警ID异常".show()
return
}
- activity.cancelAlarmViewModel.obtainOperationResult(
- alarmId!!
- )
+ activity.alarmViewModel.obtainOperationResult(alarmId!!)
}
override fun onCancelClick() {
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt
new file mode 100644
index 0000000..61c68ab
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt
@@ -0,0 +1,208 @@
+package com.casic.qd.smartwell.view
+
+import android.annotation.SuppressLint
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+import android.os.Handler
+import android.os.Looper
+import android.os.Message
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.LinearLayoutManager
+import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.adapter.AlarmListAdapter
+import com.casic.qd.smartwell.base.BaseActivity
+import com.casic.qd.smartwell.extensions.navigatePageTo
+import com.casic.qd.smartwell.extensions.show
+import com.casic.qd.smartwell.extensions.showEmptyPage
+import com.casic.qd.smartwell.model.AlarmListModel
+import com.casic.qd.smartwell.utils.BroadcastReceiverManager
+import com.casic.qd.smartwell.utils.Constant
+import com.casic.qd.smartwell.utils.DialogHelper
+import com.casic.qd.smartwell.utils.LoadState
+import com.casic.qd.smartwell.vm.AlarmViewModel
+import com.casic.qd.smartwell.vm.SearchAlarmViewModel
+import com.pengxh.app.multilib.widget.dialog.AlertControlDialog
+import kotlinx.android.synthetic.main.activity_alarm_search_result.*
+import kotlinx.android.synthetic.main.include_base_title.*
+import kotlinx.android.synthetic.main.include_empty_view.*
+import java.lang.ref.WeakReference
+
+class AlarmSearchResultActivity : BaseActivity() {
+
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+ private lateinit var searchAlarmViewModel: SearchAlarmViewModel
+ private lateinit var alarmViewModel: AlarmViewModel
+ private lateinit var args: ArrayList
+ private lateinit var alarmListAdapter: AlarmListAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var pageIndex = 1
+ private var isRefresh = false
+ private var isLoadMore = false
+
+ override fun initLayoutView(): Int = R.layout.activity_alarm_search_result
+
+ override fun setupTopBarLayout() {
+ titleView.text = "查询结果"
+ }
+
+ override fun initData() {
+ args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!!
+ weakReferenceHandler = WeakReferenceHandler(this)
+ searchAlarmViewModel = ViewModelProvider(this).get(SearchAlarmViewModel::class.java)
+ alarmViewModel = ViewModelProvider(this).get(AlarmViewModel::class.java)
+ //注册广播接收者
+ BroadcastReceiverManager.instance.addAction(Constant.CANCEL_ALARM_ACTION,
+ object : BroadcastReceiver() {
+ override fun onReceive(context: Context?, intent: Intent?) {
+ //收到广播相当于做了一次列表刷新
+ isRefresh = true
+ pageIndex = 1
+ obtainSearchResult(args, pageIndex)
+ }
+ })
+ }
+
+ override fun initEvent() {
+ obtainSearchResult(args, pageIndex)
+ searchAlarmViewModel.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()
+ }
+ dataBeans.addAll(dataRows!!)
+ resultRefreshLayout.finishLoadMore()
+ isLoadMore = false
+ }
+ else -> {
+ dataBeans = dataRows!!
+ }
+ }
+ weakReferenceHandler.sendEmptyMessage(2022041501)
+ }
+ })
+ searchAlarmViewModel.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)
+ }
+
+ //消警状态处理
+ alarmViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "处理中,请稍后")
+ }
+ is LoadState.Success -> {
+ DialogHelper.dismissLoadingDialog()
+ //刷新列表
+ BroadcastReceiverManager.instance.sendBroadcast(
+ Constant.CANCEL_ALARM_ACTION, ""
+ )
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+ }
+
+ private fun obtainSearchResult(args: ArrayList, pageIndex: Int) {
+ searchAlarmViewModel.obtainSearchResult(
+ args[0], args[1], args[2], args[3], args[4], args[5], "1", pageIndex
+ )
+ }
+
+ private class WeakReferenceHandler(activity: AlarmSearchResultActivity) :
+ Handler(Looper.getMainLooper()) {
+ private val reference: WeakReference = WeakReference(activity)
+
+ @SuppressLint("NotifyDataSetChanged")
+ override fun handleMessage(msg: Message) {
+ super.handleMessage(msg)
+ val activity = reference.get()!!
+ if (msg.what == 2022041501) {
+ if (activity.isRefresh || activity.isLoadMore) {
+ activity.alarmListAdapter.notifyDataSetChanged()
+ } else { //首次加载数据
+ if (activity.dataBeans.size == 0) {
+ activity.emptyView!!.showEmptyPage {
+ activity.obtainSearchResult(activity.args, activity.pageIndex)
+ }
+ } else {
+ activity.emptyView!!.hide()
+ activity.alarmListAdapter = AlarmListAdapter(activity, activity.dataBeans)
+ activity.resultRecyclerView!!.layoutManager = LinearLayoutManager(activity)
+ activity.resultRecyclerView!!.adapter = activity.alarmListAdapter
+ activity.alarmListAdapter.setOnItemClickListener(object :
+ AlarmListAdapter.OnItemClickListener {
+ override fun onClicked(position: Int) {
+ val wellId = activity.dataBeans[position].wellId.toString()
+ if (wellId.isBlank()) {
+ "井编号异常,无法查看详情".show()
+ return
+ }
+ activity.navigatePageTo(WellDetailActivity::class.java, wellId)
+ }
+
+ override fun onOperationClicked(position: Int) {
+ AlertControlDialog.Builder()
+ .setContext(activity)
+ .setTitle("确认操作")
+ .setMessage("确定取消报警吗?")
+ .setNegativeButton("取消")
+ .setPositiveButton("确定")
+ .setOnDialogButtonClickListener(object :
+ AlertControlDialog.OnDialogButtonClickListener {
+ override fun onConfirmClick() {
+ val alarmId = activity.dataBeans[position].id
+ if (alarmId.toString().isBlank()) {
+ "操作失败,告警ID异常".show()
+ return
+ }
+ activity.alarmViewModel.obtainOperationResult(alarmId!!)
+ }
+
+ override fun onCancelClick() {
+
+ }
+ }).build().show()
+ }
+ })
+ }
+ }
+ }
+ }
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ //解注册广播接收者,防止内存泄漏
+ BroadcastReceiverManager.instance.destroy(Constant.CANCEL_ALARM_ACTION)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceSearchResultActivity.kt
new file mode 100644
index 0000000..cfc25d2
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceSearchResultActivity.kt
@@ -0,0 +1,21 @@
+package com.casic.qd.smartwell.view
+
+import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseActivity
+
+class DeviceSearchResultActivity : BaseActivity() {
+
+ override fun initLayoutView(): Int = R.layout.activity_device_search_result
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt
index 526fa73..c86ee63 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt
@@ -13,7 +13,7 @@
import com.casic.qd.smartwell.extensions.show
import com.casic.qd.smartwell.utils.*
import com.casic.qd.smartwell.vm.AuthenticateViewModel
-import com.casic.qd.smartwell.vm.LoginInViewModel
+import com.casic.qd.smartwell.vm.LoginViewModel
import com.casic.qd.smartwell.vm.UserDetailViewModel
import com.qmuiteam.qmui.util.QMUIStatusBarHelper
import kotlinx.android.synthetic.main.activity_login.*
@@ -21,7 +21,7 @@
class LoginActivity : BaseActivity() {
private lateinit var authenticateViewModel: AuthenticateViewModel
- private lateinit var loginInViewModel: LoginInViewModel
+ private lateinit var loginViewModel: LoginViewModel
private lateinit var userDetailViewModel: UserDetailViewModel
private val textWatcher = object : TextWatcher {
@@ -54,7 +54,7 @@
userNameView.setText(SaveKeyValues.getValue(Constant.ACCOUNT, "") as String)
userPasswordView.setText(SaveKeyValues.getValue(Constant.PASSWORD, "") as String)
authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java)
- loginInViewModel = ViewModelProvider(this).get(LoginInViewModel::class.java)
+ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java)
userDetailViewModel = ViewModelProvider(this).get(UserDetailViewModel::class.java)
}
@@ -100,18 +100,24 @@
val dataByPublicKey =
RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey!!)
//登录并获取Token,POST请求
- loginInViewModel.login(it.data!!.sid!!, account, dataByPublicKey)
- loginInViewModel.resultModel.observe(this, { loginResult ->
+ loginViewModel.inn(it.data!!.sid!!, account, dataByPublicKey)
+ loginViewModel.resultModel.observe(this, { loginResult ->
if (loginResult.code == 200) {
AuthenticationHelper.saveToken(loginResult.data!!.token!!)
- //获取token之后保存用户信息
+ /**
+ * 获取token之后保存用户信息
+ * */
userDetailViewModel.obtainUserDetail()
+ /**
+ * 根据用户有权查看的设备类型
+ */
+ authenticateViewModel.obtainAuthorByDept()
//验证成功登录
this.navigatePageTo(MainActivity::class.java)
finish()
}
})
- loginInViewModel.loadState.observe(this, { loginState ->
+ loginViewModel.loadState.observe(this, { loginState ->
when (loginState) {
is LoadState.Success -> {
"登录成功".show()
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt
index 3f497c9..02435a3 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt
@@ -17,11 +17,8 @@
import com.casic.qd.smartwell.extensions.*
import com.casic.qd.smartwell.model.BannerImageModel
import com.casic.qd.smartwell.model.LineChartEntryModel
-import com.casic.qd.smartwell.utils.AuthenticationHelper
-import com.casic.qd.smartwell.utils.ChartViewHelper
-import com.casic.qd.smartwell.utils.Constant
-import com.casic.qd.smartwell.utils.PageNavigationManager
-import com.casic.qd.smartwell.vm.LoginOutViewModel
+import com.casic.qd.smartwell.utils.*
+import com.casic.qd.smartwell.vm.LoginViewModel
import com.casic.qd.smartwell.vm.WaterStatisticsViewModel
import com.github.mikephil.charting.data.Entry
import com.pengxh.app.multilib.widget.dialog.AlertControlDialog
@@ -38,7 +35,7 @@
private val context: Context = this@MainActivity
private var clickTime: Long = 0
- private lateinit var loginOutViewModel: LoginOutViewModel
+ private lateinit var loginViewModel: LoginViewModel
private lateinit var waterViewModel: WaterStatisticsViewModel
private val xAxisDate: MutableList = ArrayList()
private val entryModels: MutableList = ArrayList()
@@ -111,7 +108,7 @@
})
//初始化vm
- loginOutViewModel = ViewModelProvider(this).get(LoginOutViewModel::class.java)
+ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java)
waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java)
weakReferenceHandler = WeakReferenceHandler(this)
}
@@ -127,19 +124,20 @@
.setOnDialogButtonClickListener(object :
AlertControlDialog.OnDialogButtonClickListener {
override fun onConfirmClick() {
- loginOutViewModel.loginOut()
+ loginViewModel.out()
}
override fun onCancelClick() {}
}).build().show()
}
- loginOutViewModel.resultModel.observe(this, {
- if (it.code == 200) {
+ loginViewModel.loadState.observe(this, {
+ if (it == LoadState.Success) {
AuthenticationHelper.removeToken()
this.navigatePageTo(LoginActivity::class.java)
PageNavigationManager.finishAllActivity()
}
})
+
rightOptionView.setOnClickListener {
navigatePageTo(AlarmManagementActivity::class.java)
}
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt
index 954cf2d..8f54163 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt
@@ -6,20 +6,23 @@
import com.casic.qd.smartwell.extensions.*
import com.casic.qd.smartwell.model.AreaModel
import com.casic.qd.smartwell.utils.Constant
-import com.casic.qd.smartwell.vm.AlarmContentViewModel
-import com.casic.qd.smartwell.vm.AlarmTypeViewModel
+import com.casic.qd.smartwell.vm.AlarmViewModel
import com.casic.qd.smartwell.vm.AreaViewModel
import com.casic.qd.smartwell.widgets.BottomAreaSheet
import com.jzxiang.pickerview.TimePickerDialog
import com.jzxiang.pickerview.data.Type
import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder
import kotlinx.android.synthetic.main.activity_alarm_search.*
+import kotlinx.android.synthetic.main.activity_alarm_search.areaView
+import kotlinx.android.synthetic.main.activity_alarm_search.clearButton
+import kotlinx.android.synthetic.main.activity_alarm_search.searchButton
+import kotlinx.android.synthetic.main.activity_alarm_search.wellCodeView
+import kotlinx.android.synthetic.main.activity_search_record.*
import kotlinx.android.synthetic.main.include_base_title.*
class SearchAlarmActivity : BaseActivity() {
- private lateinit var alarmTypeViewModel: AlarmTypeViewModel
- private lateinit var alarmContentViewModel: AlarmContentViewModel
+ private lateinit var alarmViewModel: AlarmViewModel
private lateinit var areaViewModel: AreaViewModel
private var alarmType = ""
private var alarmContent = ""
@@ -33,18 +36,16 @@
override fun initData() {
//告警类型
- alarmTypeViewModel = ViewModelProvider(this).get(AlarmTypeViewModel::class.java)
- //告警内容
- alarmContentViewModel = ViewModelProvider(this).get(AlarmContentViewModel::class.java)
+ alarmViewModel = ViewModelProvider(this).get(AlarmViewModel::class.java)
//区域
areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java)
}
override fun initEvent() {
alarmTypeView.setOnClickListener {
- alarmTypeViewModel.obtainAlarmType()
+ alarmViewModel.obtainAlarmType()
}
- alarmTypeViewModel.typeModel.observe(this, {
+ alarmViewModel.typeModel.observe(this, {
if (it.code == 200) {
val sheetBuilder = BottomListSheetBuilder(this)
sheetBuilder.setTitle("告警类型")
@@ -65,9 +66,9 @@
alarmContentView.setOnClickListener {
//获取类型对应的报警内容
- alarmContentViewModel.obtainAlarmContent(alarmType)
+ alarmViewModel.obtainAlarmContent(alarmType)
}
- alarmContentViewModel.contentModel.observe(this, {
+ alarmViewModel.contentModel.observe(this, {
if (it.code == 200) {
val sheetBuilder = BottomListSheetBuilder(this)
sheetBuilder.setTitle("告警内容")
@@ -152,7 +153,7 @@
searchButton.setOnClickListener {
//页面跳转,将查询参数传过去
navigatePageTo(
- SearchResultActivity::class.java, addAll(
+ AlarmSearchResultActivity::class.java, addAll(
wellCodeView.text.toString().trim(),
alarmType,
areaId,
@@ -165,6 +166,7 @@
clearButton.setChangeAlphaWhenPress(true)
clearButton.setOnClickListener {
+ wellCodeView.setText("")
alarmTypeView.text = ""
alarmContentView.text = ""
areaView.text = ""
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchRecordActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchRecordActivity.kt
index a459183..853b311 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/SearchRecordActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchRecordActivity.kt
@@ -1,18 +1,41 @@
package com.casic.qd.smartwell.view
+import androidx.lifecycle.ViewModelProvider
import com.casic.qd.smartwell.R
import com.casic.qd.smartwell.base.BaseActivity
+import com.casic.qd.smartwell.extensions.addAll
+import com.casic.qd.smartwell.extensions.navigatePageTo
+import com.casic.qd.smartwell.model.AreaModel
+import com.casic.qd.smartwell.model.DeviceTypeModel
+import com.casic.qd.smartwell.model.OwnerShipModel
+import com.casic.qd.smartwell.utils.Constant
+import com.casic.qd.smartwell.utils.SaveKeyValues
+import com.casic.qd.smartwell.vm.AreaViewModel
+import com.casic.qd.smartwell.vm.AuthenticateViewModel
+import com.casic.qd.smartwell.vm.DeviceViewModel
+import com.casic.qd.smartwell.widgets.BottomAreaSheet
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet
+import kotlinx.android.synthetic.main.activity_search_record.*
import kotlinx.android.synthetic.main.include_base_title.*
/**
* @author a203
* @description 记录查询界面
- * @package com.casic.qd.smartwell.view
* @date 2022/2/17 14:33
* @email 290677893@qq.com
*/
class SearchRecordActivity : BaseActivity() {
+ private val kTag = "SearchRecordActivity"
+ private lateinit var deviceViewModel: DeviceViewModel
+ private lateinit var authenticateViewModel: AuthenticateViewModel
+ private lateinit var areaViewModel: AreaViewModel
+ private var authenticatedType: MutableList = ArrayList()
+ private var deviceTypeValue = ""
+ private var areaId = ""
+
override fun initLayoutView(): Int = R.layout.activity_search_record
override fun setupTopBarLayout() {
@@ -20,10 +43,135 @@
}
override fun initData() {
-
+ val userDeviceJson = SaveKeyValues.getValue(Constant.USER_DEVICE_TYPE, "") as String
+ if (userDeviceJson.isNotBlank()) {
+ authenticatedType = Gson().fromJson(
+ userDeviceJson, object : TypeToken>() {}.type
+ )
+ }
+ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java)
+ authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java)
+ areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java)
}
override fun initEvent() {
+ deviceTypeView.setOnClickListener {
+ /**
+ * 获取全部设备类型
+ * */
+ deviceViewModel.obtainDeviceType()
+ }
+ deviceViewModel.typeModel.observe(this, {
+ if (it.code == 200) {
+ val authenticatedModel: MutableList = ArrayList()
+ it.data?.forEach { deviceModel ->
+ if (deviceModel.value in authenticatedType) {
+ authenticatedModel.add(deviceModel)
+ }
+ }
+ val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(this)
+ sheetBuilder.setTitle("设备类型")
+ authenticatedModel.forEach { deviceModel ->
+ sheetBuilder.addItem(deviceModel.name)
+ }
+ sheetBuilder.setGravityCenter(true)
+ .setOnSheetItemClickListener { dialog, _, position, tag ->
+ deviceTypeView.text = tag
+ this.deviceTypeValue = authenticatedModel[position].value.toString()
+ dialog.dismiss()
+ }.build().show()
+ }
+ })
+
+ ownerShipView.setOnClickListener {
+ authenticateViewModel.obtainOwnerShip("")
+ }
+ authenticateViewModel.resultModel.observe(this, {
+ if (it.code == 200) {
+ val ownerShipModel: MutableList = ArrayList()
+ it.data?.list?.forEach { listBean ->
+ ownerShipModel.add(listBean)
+ }
+ val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(this)
+ sheetBuilder.setTitle("权属单位")
+ ownerShipModel.forEach { model ->
+ sheetBuilder.addItem(model.name)
+ }
+ sheetBuilder.setGravityCenter(true)
+ .setOnSheetItemClickListener { dialog, _, _, tag ->
+ ownerShipView.text = tag
+
+ dialog.dismiss()
+ }.build().show()
+ }
+ })
+
+ deviceStateView.setOnClickListener {
+ QMUIBottomSheet.BottomListSheetBuilder(this)
+ .setTitle("在线情况")
+ .addItem("在线")
+ .addItem("离线")
+ .setGravityCenter(true)
+ .setOnSheetItemClickListener { dialog, _, _, tag ->
+ deviceStateView.text = tag
+
+ dialog.dismiss()
+ }.build().show()
+ }
+
+ areaView.setOnClickListener {
+ areaViewModel.obtainArea()
+ }
+ areaViewModel.areaModel.observe(this, {
+ if (it.code == 200) {
+ val firstLevelArea: MutableList = ArrayList()
+ val secondLevelArea: MutableList = ArrayList()
+ val thirdLevelArea: MutableList = ArrayList()
+ it.data?.forEach { dataBean ->
+ when (dataBean.level) {
+ 2 -> firstLevelArea.add(dataBean)
+ 3 -> secondLevelArea.add(dataBean)
+ 4 -> thirdLevelArea.add(dataBean)
+ }
+ }
+
+ // 绑定区域
+ BottomAreaSheet.Builder()
+ .setContext(this)
+ .setFirstAreaData(firstLevelArea)
+ .setSecondAreaData(secondLevelArea)
+ .setThirdAreaData(thirdLevelArea)
+ .setOnActionSheetListener(object : BottomAreaSheet.OnActionSheetListener {
+ override fun onAreaSelected(area: String?, id: String?) {
+ areaView.text = area
+ areaId = id.toString()
+ }
+ }).build().show()
+ }
+ })
+
+ searchButton.setChangeAlphaWhenPress(true)
+ searchButton.setOnClickListener {
+ //页面跳转,将查询参数传过去
+ navigatePageTo(
+ DeviceSearchResultActivity::class.java, addAll(
+ wellCodeView.text.toString().trim(),
+ deviceTypeValue,
+ "权属单位",
+ "在线情况",
+ areaId
+ )
+ )
+ }
+
+ clearButton.setChangeAlphaWhenPress(true)
+ clearButton.setOnClickListener {
+ wellCodeView.setText("")
+ deviceTypeView.text = ""
+ ownerShipView.text = ""
+ deviceStateView.text = ""
+ areaView.text = ""
+ }
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchResultActivity.kt
deleted file mode 100644
index 988b53d..0000000
--- a/app/src/main/java/com/casic/qd/smartwell/view/SearchResultActivity.kt
+++ /dev/null
@@ -1,222 +0,0 @@
-package com.casic.qd.smartwell.view
-
-import android.annotation.SuppressLint
-import android.content.BroadcastReceiver
-import android.content.Context
-import android.content.Intent
-import android.os.Handler
-import android.os.Looper
-import android.os.Message
-import androidx.lifecycle.ViewModelProvider
-import androidx.recyclerview.widget.LinearLayoutManager
-import com.casic.qd.smartwell.R
-import com.casic.qd.smartwell.adapter.AlarmListAdapter
-import com.casic.qd.smartwell.base.BaseActivity
-import com.casic.qd.smartwell.extensions.navigatePageTo
-import com.casic.qd.smartwell.extensions.show
-import com.casic.qd.smartwell.extensions.showEmptyPage
-import com.casic.qd.smartwell.model.AlarmListModel
-import com.casic.qd.smartwell.utils.BroadcastReceiverManager
-import com.casic.qd.smartwell.utils.Constant
-import com.casic.qd.smartwell.utils.DialogHelper
-import com.casic.qd.smartwell.utils.LoadState
-import com.casic.qd.smartwell.vm.CancelAlarmViewModel
-import com.casic.qd.smartwell.vm.SearchAlarmViewModel
-import com.casic.qd.smartwell.widgets.CancelAlarmDialog
-import kotlinx.android.synthetic.main.activity_alarm_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 searchAlarmViewModel: SearchAlarmViewModel
- private lateinit var cancelAlarmViewModel: CancelAlarmViewModel
- private lateinit var args: ArrayList
- private lateinit var alarmListAdapter: AlarmListAdapter
- private var dataBeans: MutableList = ArrayList()
- private var pageIndex = 1
- private var isRefresh = false
- private var isLoadMore = false
-
- override fun initLayoutView(): Int = R.layout.activity_alarm_search_result
-
- override fun setupTopBarLayout() {
- titleView.text = "查询结果"
- }
-
- override fun initData() {
- args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!!
- weakReferenceHandler = WeakReferenceHandler(this)
- searchAlarmViewModel = ViewModelProvider(this).get(SearchAlarmViewModel::class.java)
- cancelAlarmViewModel = ViewModelProvider(this).get(CancelAlarmViewModel::class.java)
- //注册广播接收者
- BroadcastReceiverManager.instance.addAction(Constant.CANCEL_ALARM_ACTION,
- object : BroadcastReceiver() {
- override fun onReceive(context: Context?, intent: Intent?) {
- //收到广播相当于做了一次列表刷新
- isRefresh = true
- pageIndex = 1
- obtainSearchResult(args, pageIndex)
- }
- })
- }
-
- override fun initEvent() {
- obtainSearchResult(args, pageIndex)
- searchAlarmViewModel.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()
- }
- dataBeans.addAll(dataRows!!)
- resultRefreshLayout.finishLoadMore()
- isLoadMore = false
- }
- else -> {
- dataBeans = dataRows!!
- }
- }
- weakReferenceHandler.sendEmptyMessage(2022041501)
- }
- })
- searchAlarmViewModel.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)
- }
-
- //消警状态处理
- cancelAlarmViewModel.loadState.observe(this, {
- when (it) {
- is LoadState.Loading -> {
- DialogHelper.showLoadingDialog(this, "处理中,请稍后")
- }
- is LoadState.Success -> {
- DialogHelper.dismissLoadingDialog()
- //刷新列表
- BroadcastReceiverManager.instance.sendBroadcast(
- Constant.CANCEL_ALARM_ACTION, ""
- )
- }
- else -> {
- DialogHelper.dismissLoadingDialog()
- }
- }
- })
- }
-
- private fun obtainSearchResult(args: ArrayList, pageIndex: Int) {
- searchAlarmViewModel.obtainSearchResult(
- args[0], args[1], args[2], args[3], args[4], args[5], "1", pageIndex
- )
- }
-
- private class WeakReferenceHandler(activity: SearchResultActivity) :
- Handler(Looper.getMainLooper()) {
- private val reference: WeakReference = WeakReference(activity)
-
- @SuppressLint("NotifyDataSetChanged")
- override fun handleMessage(msg: Message) {
- super.handleMessage(msg)
- val activity = reference.get()!!
- if (msg.what == 2022041501) {
- if (activity.isRefresh || activity.isLoadMore) {
- activity.alarmListAdapter.notifyDataSetChanged()
- } else { //首次加载数据
- if (activity.dataBeans.size == 0) {
- activity.emptyView!!.showEmptyPage {
- activity.obtainSearchResult(activity.args, activity.pageIndex)
- }
- } else {
- activity.emptyView!!.hide()
- activity.alarmListAdapter = AlarmListAdapter(activity, activity.dataBeans)
- activity.resultRecyclerView!!.layoutManager = LinearLayoutManager(activity)
- activity.resultRecyclerView!!.adapter = activity.alarmListAdapter
- activity.alarmListAdapter.setOnItemClickListener(object :
- AlarmListAdapter.OnItemClickListener {
- override fun onClicked(position: Int) {
- val wellId = activity.dataBeans[position].wellId.toString()
- if (wellId.isBlank()) {
- "井编号异常,无法查看详情".show()
- return
- }
- activity.navigatePageTo(WellDetailActivity::class.java, wellId)
- }
-
- override fun onOperationClicked(position: Int) {
- val wellDetail = activity.dataBeans[position]
- CancelAlarmDialog.Builder()
- .setContext(activity)
- .setTitle("取消告警")
- .setHintMessage("请输入详细的告警取消原因")
- .setNegativeButton("取消")
- .setPositiveButton("确定")
- .setOnDialogButtonClickListener(object :
- CancelAlarmDialog.OnDialogButtonClickListener {
- override fun onConfirmClick(
- spinnerValue: String, inputValue: String
- ) {
- /**
- * http://111.198.10.15:20104/alarm/cancelAlarm?id=&jobStatus=3&handleMessage=2fsdf
- * POST
- * */
- val alarmId = wellDetail.id
- if (alarmId.toString().isBlank()) {
- "操作失败,告警ID异常".show()
- return
- }
- val jobStatus = when (spinnerValue) {
- "已处理" -> "3"
- "无需处理" -> "4"
- else -> ""
- }
- activity.cancelAlarmViewModel.obtainOperationResult(
- alarmId!!
- )
- }
-
- override fun onCancelClick() {
-
- }
- }).build().show()
- }
- })
- }
- }
- }
- }
- }
-
- override fun onDestroy() {
- super.onDestroy()
- //解注册广播接收者,防止内存泄漏
- BroadcastReceiverManager.instance.destroy(Constant.CANCEL_ALARM_ACTION)
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt
index 003d39e..7c050bb 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt
@@ -5,11 +5,13 @@
import com.casic.qd.smartwell.R
import com.casic.qd.smartwell.base.BaseActivity
import com.casic.qd.smartwell.extensions.navigatePageTo
+import com.casic.qd.smartwell.vm.AuthenticateViewModel
import com.casic.qd.smartwell.vm.UserDetailViewModel
class SplashScreenActivity : BaseActivity() {
private lateinit var userDetailViewModel: UserDetailViewModel
+ private lateinit var authenticateViewModel: AuthenticateViewModel
override fun initLayoutView(): Int = R.layout.activity_splash
@@ -19,6 +21,7 @@
override fun initData() {
userDetailViewModel = ViewModelProvider(this).get(UserDetailViewModel::class.java)
+ authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java)
}
override fun initEvent() {
@@ -27,7 +30,14 @@
private val countDownTimer = object : CountDownTimer(1000, 500) {
override fun onFinish() {
+ /**
+ * 获取token之后保存用户信息
+ * */
userDetailViewModel.obtainUserDetail()
+ /**
+ * 根据用户有权查看的设备类型
+ */
+ authenticateViewModel.obtainAuthorByDept()
userDetailViewModel.flag.observe(this@SplashScreenActivity, {
if (it) {
navigatePageTo(MainActivity::class.java)
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt
index 0129d7e..2d59345 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt
@@ -9,8 +9,8 @@
import com.casic.qd.smartwell.extensions.*
import com.casic.qd.smartwell.utils.ChartViewHelper
import com.casic.qd.smartwell.utils.Constant
-import com.casic.qd.smartwell.vm.AlarmListViewModel
-import com.casic.qd.smartwell.vm.DeviceStatisticsViewModel
+import com.casic.qd.smartwell.vm.AlarmViewModel
+import com.casic.qd.smartwell.vm.DeviceViewModel
import com.casic.qd.smartwell.vm.WaterStatisticsViewModel
import com.casic.qd.smartwell.widgets.DateSelectDialog
import com.github.mikephil.charting.data.BarEntry
@@ -29,8 +29,8 @@
private val context: Context = this@StatisticsActivity
private lateinit var waterViewModel: WaterStatisticsViewModel
- private lateinit var deviceViewModel: DeviceStatisticsViewModel
- private lateinit var alarmViewModel: AlarmListViewModel
+ private lateinit var deviceViewModel: DeviceViewModel
+ private lateinit var alarmViewModel: AlarmViewModel
override fun initLayoutView(): Int = R.layout.activity_statistics
@@ -40,8 +40,8 @@
override fun initData() {
waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java)
- deviceViewModel = ViewModelProvider(this).get(DeviceStatisticsViewModel::class.java)
- alarmViewModel = ViewModelProvider(this).get(AlarmListViewModel::class.java)
+ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java)
+ alarmViewModel = ViewModelProvider(this).get(AlarmViewModel::class.java)
}
override fun initEvent() {
diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/AlarmContentViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/AlarmContentViewModel.kt
deleted file mode 100644
index b12b37f..0000000
--- a/app/src/main/java/com/casic/qd/smartwell/vm/AlarmContentViewModel.kt
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.casic.qd.smartwell.vm
-
-import android.util.Log
-import androidx.lifecycle.MutableLiveData
-import com.casic.qd.smartwell.base.BaseViewModel
-import com.casic.qd.smartwell.extensions.launch
-import com.casic.qd.smartwell.extensions.separateResponseCode
-import com.casic.qd.smartwell.extensions.show
-import com.casic.qd.smartwell.extensions.toErrorMessage
-import com.casic.qd.smartwell.model.AlarmContentModel
-import com.casic.qd.smartwell.utils.retrofit.RetrofitServiceManager
-import com.google.gson.Gson
-import com.google.gson.reflect.TypeToken
-
-class AlarmContentViewModel : BaseViewModel() {
-
- private val kTag = "AlarmContentViewModel"
- private val gson = Gson()
- val contentModel = MutableLiveData()
-
- fun obtainAlarmContent(type: String) = launch({
- val response = RetrofitServiceManager.obtainAlarmContent(type)
- val responseCode = response.separateResponseCode()
- if (responseCode == 200) {
- contentModel.value = gson.fromJson(
- response, object : TypeToken() {}.type
- )
- } else {
- response.toErrorMessage().show()
- }
- }, {
- Log.e(kTag, it.toString(), it)
- "服务器异常".show()
- })
-}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0c249a9..f11ea34 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -46,9 +46,10 @@
-
+
+
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
index 428051e..d2ac7cf 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
@@ -1,13 +1,20 @@
package com.casic.qd.smartwell.extensions
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
import com.github.mikephil.charting.charts.BarChart
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis
import com.github.mikephil.charting.formatter.ValueFormatter
+import com.pengxh.app.multilib.utils.SizeUtil
fun BarChart.init(barLabels: MutableList) {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.animateY(1200, Easing.EaseInOutQuad)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt
index 4aa46bb..e67f075 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt
@@ -1,13 +1,20 @@
package com.casic.qd.smartwell.extensions
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.HorizontalBarChart
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis
import com.github.mikephil.charting.formatter.ValueFormatter
+import com.pengxh.app.multilib.utils.SizeUtil
fun HorizontalBarChart.init(barLabels: MutableList) {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.animateY(1200, Easing.EaseInOutQuad)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt
index 87c1c61..25f238f 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt
@@ -1,13 +1,20 @@
package com.casic.qd.smartwell.extensions
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.LineChart
import com.github.mikephil.charting.components.Legend
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis
+import com.pengxh.app.multilib.utils.SizeUtil
fun LineChart.init() {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.setDrawGridBackground(false)
this.setDrawBorders(false)
this.animateY(1200, Easing.EaseInOutQuad)
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt
index a88e096..3497dc7 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt
@@ -2,11 +2,18 @@
import android.graphics.Color
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.PieChart
import com.github.mikephil.charting.components.Legend
+import com.pengxh.app.multilib.utils.SizeUtil
fun PieChart.init() {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.setUsePercentValues(false) //百分比数字显示
this.description.isEnabled = false
this.dragDecelerationFrictionCoef = 0.95f //图表转动阻力摩擦系数[0,1]
diff --git a/app/src/main/java/com/casic/qd/smartwell/model/DeviceTypeModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/DeviceTypeModel.kt
new file mode 100644
index 0000000..04d2a8a
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/model/DeviceTypeModel.kt
@@ -0,0 +1,14 @@
+package com.casic.qd.smartwell.model
+
+class DeviceTypeModel {
+ var code = 0
+ var data: List? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var deviceType: String? = null
+ var name: String? = null
+ var value: String? = null
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/model/OwnerShipModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/OwnerShipModel.kt
new file mode 100644
index 0000000..7ced62c
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/model/OwnerShipModel.kt
@@ -0,0 +1,23 @@
+package com.casic.qd.smartwell.model
+
+class OwnerShipModel {
+ var code = 0
+ var data: DataBean? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var list: List? = null
+
+ class ListBean {
+ var isChecked = false
+ var code: String? = null
+ var id: String? = null
+ var name: String? = null
+ var isOpen = false
+ var pcodes: String? = null
+ var pid: String? = null
+ var value: String? = null
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt
index 5a509d2..cb85f80 100644
--- a/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt
@@ -31,6 +31,7 @@
const val ACCOUNT = "account"
const val PASSWORD = "password"
const val USER_DETAIL_MODEL = "userDetailModel"
+ const val USER_DEVICE_TYPE = "userDeviceType"
const val CANCEL_ALARM_ACTION = "cancelAlarm"
const val AREA_ID = "110000"
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt
index 019d741..9496bf4 100644
--- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt
@@ -163,4 +163,28 @@
*/
@GET("/statics/deviceStaticsByType")
suspend fun deviceCountByType(@Header("token") token: String): String
+
+ /**
+ * 根据部门获取支持的设备类型
+ */
+ /**
+ * 管网资产统计
+ */
+ @GET("/config/getAuthorByDept")
+ suspend fun obtainAuthorByDept(@Header("token") token: String): String
+
+ /**
+ * 获取设备类型
+ */
+ @GET("/device/type")
+ suspend fun obtainDeviceType(@Header("token") token: String): String
+
+ /**
+ * 获取权属单位
+ */
+ @GET("/dept/tree")
+ suspend fun obtainOwnerShip(
+ @Header("token") token: String,
+ @Query("deptType") deptType: String
+ ): String
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt
index 3985af9..575b2a9 100644
--- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt
@@ -160,4 +160,25 @@
suspend fun deviceCountByType(): String {
return api.deviceCountByType(AuthenticationHelper.token!!)
}
+
+ /**
+ * 根据部门获取支持的设备类型
+ */
+ suspend fun obtainAuthorByDept(): String {
+ return api.obtainAuthorByDept(AuthenticationHelper.token!!)
+ }
+
+ /**
+ * 获取设备类型
+ */
+ suspend fun obtainDeviceType(): String {
+ return api.obtainDeviceType(AuthenticationHelper.token!!)
+ }
+
+ /**
+ * 获取权属单位
+ */
+ suspend fun obtainOwnerShip(deptType: String): String {
+ return api.obtainOwnerShip(AuthenticationHelper.token!!, deptType)
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt
index 2a6d344..abaffb2 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt
@@ -20,8 +20,7 @@
import com.casic.qd.smartwell.utils.Constant
import com.casic.qd.smartwell.utils.DialogHelper
import com.casic.qd.smartwell.utils.LoadState
-import com.casic.qd.smartwell.vm.AlarmListViewModel
-import com.casic.qd.smartwell.vm.CancelAlarmViewModel
+import com.casic.qd.smartwell.vm.AlarmViewModel
import com.pengxh.app.multilib.widget.dialog.AlertControlDialog
import kotlinx.android.synthetic.main.activity_alarm_management.*
import kotlinx.android.synthetic.main.include_empty_view.*
@@ -30,8 +29,7 @@
class AlarmManagementActivity : BaseActivity() {
- private lateinit var alarmListViewModel: AlarmListViewModel
- private lateinit var cancelAlarmViewModel: CancelAlarmViewModel
+ private lateinit var alarmViewModel: AlarmViewModel
private lateinit var weakReferenceHandler: WeakReferenceHandler
private lateinit var alarmListAdapter: AlarmListAdapter
private var dataBeans: MutableList = ArrayList()
@@ -46,8 +44,7 @@
}
override fun initData() {
- alarmListViewModel = ViewModelProvider(this).get(AlarmListViewModel::class.java)
- cancelAlarmViewModel = ViewModelProvider(this).get(CancelAlarmViewModel::class.java)
+ alarmViewModel = ViewModelProvider(this).get(AlarmViewModel::class.java)
weakReferenceHandler = WeakReferenceHandler(this)
//注册广播接收者
BroadcastReceiverManager.instance.addAction(Constant.CANCEL_ALARM_ACTION,
@@ -63,7 +60,7 @@
override fun initEvent() {
obtainAlarmList(pageIndex)
- alarmListViewModel.listModel.observe(this, {
+ alarmViewModel.listModel.observe(this, {
if (it.code == 200) {
val dataRows = it.data?.rows
when {
@@ -101,7 +98,7 @@
obtainAlarmList(pageIndex)
}
- cancelAlarmViewModel.loadState.observe(this, {
+ alarmViewModel.loadState.observe(this, {
when (it) {
is LoadState.Loading -> {
DialogHelper.showLoadingDialog(this, "处理中,请稍后")
@@ -125,7 +122,7 @@
}
private fun obtainAlarmList(pageIndex: Int) {
- alarmListViewModel.obtainAlarmList("", "", "", "", "", "", "1", pageIndex)
+ alarmViewModel.obtainAlarmList("", "", "", "", "", "", "1", pageIndex)
}
private class WeakReferenceHandler(activity: AlarmManagementActivity) :
@@ -175,9 +172,7 @@
"操作失败,告警ID异常".show()
return
}
- activity.cancelAlarmViewModel.obtainOperationResult(
- alarmId!!
- )
+ activity.alarmViewModel.obtainOperationResult(alarmId!!)
}
override fun onCancelClick() {
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt
new file mode 100644
index 0000000..61c68ab
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt
@@ -0,0 +1,208 @@
+package com.casic.qd.smartwell.view
+
+import android.annotation.SuppressLint
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+import android.os.Handler
+import android.os.Looper
+import android.os.Message
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.LinearLayoutManager
+import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.adapter.AlarmListAdapter
+import com.casic.qd.smartwell.base.BaseActivity
+import com.casic.qd.smartwell.extensions.navigatePageTo
+import com.casic.qd.smartwell.extensions.show
+import com.casic.qd.smartwell.extensions.showEmptyPage
+import com.casic.qd.smartwell.model.AlarmListModel
+import com.casic.qd.smartwell.utils.BroadcastReceiverManager
+import com.casic.qd.smartwell.utils.Constant
+import com.casic.qd.smartwell.utils.DialogHelper
+import com.casic.qd.smartwell.utils.LoadState
+import com.casic.qd.smartwell.vm.AlarmViewModel
+import com.casic.qd.smartwell.vm.SearchAlarmViewModel
+import com.pengxh.app.multilib.widget.dialog.AlertControlDialog
+import kotlinx.android.synthetic.main.activity_alarm_search_result.*
+import kotlinx.android.synthetic.main.include_base_title.*
+import kotlinx.android.synthetic.main.include_empty_view.*
+import java.lang.ref.WeakReference
+
+class AlarmSearchResultActivity : BaseActivity() {
+
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+ private lateinit var searchAlarmViewModel: SearchAlarmViewModel
+ private lateinit var alarmViewModel: AlarmViewModel
+ private lateinit var args: ArrayList
+ private lateinit var alarmListAdapter: AlarmListAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var pageIndex = 1
+ private var isRefresh = false
+ private var isLoadMore = false
+
+ override fun initLayoutView(): Int = R.layout.activity_alarm_search_result
+
+ override fun setupTopBarLayout() {
+ titleView.text = "查询结果"
+ }
+
+ override fun initData() {
+ args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!!
+ weakReferenceHandler = WeakReferenceHandler(this)
+ searchAlarmViewModel = ViewModelProvider(this).get(SearchAlarmViewModel::class.java)
+ alarmViewModel = ViewModelProvider(this).get(AlarmViewModel::class.java)
+ //注册广播接收者
+ BroadcastReceiverManager.instance.addAction(Constant.CANCEL_ALARM_ACTION,
+ object : BroadcastReceiver() {
+ override fun onReceive(context: Context?, intent: Intent?) {
+ //收到广播相当于做了一次列表刷新
+ isRefresh = true
+ pageIndex = 1
+ obtainSearchResult(args, pageIndex)
+ }
+ })
+ }
+
+ override fun initEvent() {
+ obtainSearchResult(args, pageIndex)
+ searchAlarmViewModel.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()
+ }
+ dataBeans.addAll(dataRows!!)
+ resultRefreshLayout.finishLoadMore()
+ isLoadMore = false
+ }
+ else -> {
+ dataBeans = dataRows!!
+ }
+ }
+ weakReferenceHandler.sendEmptyMessage(2022041501)
+ }
+ })
+ searchAlarmViewModel.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)
+ }
+
+ //消警状态处理
+ alarmViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "处理中,请稍后")
+ }
+ is LoadState.Success -> {
+ DialogHelper.dismissLoadingDialog()
+ //刷新列表
+ BroadcastReceiverManager.instance.sendBroadcast(
+ Constant.CANCEL_ALARM_ACTION, ""
+ )
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+ }
+
+ private fun obtainSearchResult(args: ArrayList, pageIndex: Int) {
+ searchAlarmViewModel.obtainSearchResult(
+ args[0], args[1], args[2], args[3], args[4], args[5], "1", pageIndex
+ )
+ }
+
+ private class WeakReferenceHandler(activity: AlarmSearchResultActivity) :
+ Handler(Looper.getMainLooper()) {
+ private val reference: WeakReference = WeakReference(activity)
+
+ @SuppressLint("NotifyDataSetChanged")
+ override fun handleMessage(msg: Message) {
+ super.handleMessage(msg)
+ val activity = reference.get()!!
+ if (msg.what == 2022041501) {
+ if (activity.isRefresh || activity.isLoadMore) {
+ activity.alarmListAdapter.notifyDataSetChanged()
+ } else { //首次加载数据
+ if (activity.dataBeans.size == 0) {
+ activity.emptyView!!.showEmptyPage {
+ activity.obtainSearchResult(activity.args, activity.pageIndex)
+ }
+ } else {
+ activity.emptyView!!.hide()
+ activity.alarmListAdapter = AlarmListAdapter(activity, activity.dataBeans)
+ activity.resultRecyclerView!!.layoutManager = LinearLayoutManager(activity)
+ activity.resultRecyclerView!!.adapter = activity.alarmListAdapter
+ activity.alarmListAdapter.setOnItemClickListener(object :
+ AlarmListAdapter.OnItemClickListener {
+ override fun onClicked(position: Int) {
+ val wellId = activity.dataBeans[position].wellId.toString()
+ if (wellId.isBlank()) {
+ "井编号异常,无法查看详情".show()
+ return
+ }
+ activity.navigatePageTo(WellDetailActivity::class.java, wellId)
+ }
+
+ override fun onOperationClicked(position: Int) {
+ AlertControlDialog.Builder()
+ .setContext(activity)
+ .setTitle("确认操作")
+ .setMessage("确定取消报警吗?")
+ .setNegativeButton("取消")
+ .setPositiveButton("确定")
+ .setOnDialogButtonClickListener(object :
+ AlertControlDialog.OnDialogButtonClickListener {
+ override fun onConfirmClick() {
+ val alarmId = activity.dataBeans[position].id
+ if (alarmId.toString().isBlank()) {
+ "操作失败,告警ID异常".show()
+ return
+ }
+ activity.alarmViewModel.obtainOperationResult(alarmId!!)
+ }
+
+ override fun onCancelClick() {
+
+ }
+ }).build().show()
+ }
+ })
+ }
+ }
+ }
+ }
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ //解注册广播接收者,防止内存泄漏
+ BroadcastReceiverManager.instance.destroy(Constant.CANCEL_ALARM_ACTION)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceSearchResultActivity.kt
new file mode 100644
index 0000000..cfc25d2
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceSearchResultActivity.kt
@@ -0,0 +1,21 @@
+package com.casic.qd.smartwell.view
+
+import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseActivity
+
+class DeviceSearchResultActivity : BaseActivity() {
+
+ override fun initLayoutView(): Int = R.layout.activity_device_search_result
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt
index 526fa73..c86ee63 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt
@@ -13,7 +13,7 @@
import com.casic.qd.smartwell.extensions.show
import com.casic.qd.smartwell.utils.*
import com.casic.qd.smartwell.vm.AuthenticateViewModel
-import com.casic.qd.smartwell.vm.LoginInViewModel
+import com.casic.qd.smartwell.vm.LoginViewModel
import com.casic.qd.smartwell.vm.UserDetailViewModel
import com.qmuiteam.qmui.util.QMUIStatusBarHelper
import kotlinx.android.synthetic.main.activity_login.*
@@ -21,7 +21,7 @@
class LoginActivity : BaseActivity() {
private lateinit var authenticateViewModel: AuthenticateViewModel
- private lateinit var loginInViewModel: LoginInViewModel
+ private lateinit var loginViewModel: LoginViewModel
private lateinit var userDetailViewModel: UserDetailViewModel
private val textWatcher = object : TextWatcher {
@@ -54,7 +54,7 @@
userNameView.setText(SaveKeyValues.getValue(Constant.ACCOUNT, "") as String)
userPasswordView.setText(SaveKeyValues.getValue(Constant.PASSWORD, "") as String)
authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java)
- loginInViewModel = ViewModelProvider(this).get(LoginInViewModel::class.java)
+ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java)
userDetailViewModel = ViewModelProvider(this).get(UserDetailViewModel::class.java)
}
@@ -100,18 +100,24 @@
val dataByPublicKey =
RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey!!)
//登录并获取Token,POST请求
- loginInViewModel.login(it.data!!.sid!!, account, dataByPublicKey)
- loginInViewModel.resultModel.observe(this, { loginResult ->
+ loginViewModel.inn(it.data!!.sid!!, account, dataByPublicKey)
+ loginViewModel.resultModel.observe(this, { loginResult ->
if (loginResult.code == 200) {
AuthenticationHelper.saveToken(loginResult.data!!.token!!)
- //获取token之后保存用户信息
+ /**
+ * 获取token之后保存用户信息
+ * */
userDetailViewModel.obtainUserDetail()
+ /**
+ * 根据用户有权查看的设备类型
+ */
+ authenticateViewModel.obtainAuthorByDept()
//验证成功登录
this.navigatePageTo(MainActivity::class.java)
finish()
}
})
- loginInViewModel.loadState.observe(this, { loginState ->
+ loginViewModel.loadState.observe(this, { loginState ->
when (loginState) {
is LoadState.Success -> {
"登录成功".show()
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt
index 3f497c9..02435a3 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt
@@ -17,11 +17,8 @@
import com.casic.qd.smartwell.extensions.*
import com.casic.qd.smartwell.model.BannerImageModel
import com.casic.qd.smartwell.model.LineChartEntryModel
-import com.casic.qd.smartwell.utils.AuthenticationHelper
-import com.casic.qd.smartwell.utils.ChartViewHelper
-import com.casic.qd.smartwell.utils.Constant
-import com.casic.qd.smartwell.utils.PageNavigationManager
-import com.casic.qd.smartwell.vm.LoginOutViewModel
+import com.casic.qd.smartwell.utils.*
+import com.casic.qd.smartwell.vm.LoginViewModel
import com.casic.qd.smartwell.vm.WaterStatisticsViewModel
import com.github.mikephil.charting.data.Entry
import com.pengxh.app.multilib.widget.dialog.AlertControlDialog
@@ -38,7 +35,7 @@
private val context: Context = this@MainActivity
private var clickTime: Long = 0
- private lateinit var loginOutViewModel: LoginOutViewModel
+ private lateinit var loginViewModel: LoginViewModel
private lateinit var waterViewModel: WaterStatisticsViewModel
private val xAxisDate: MutableList = ArrayList()
private val entryModels: MutableList = ArrayList()
@@ -111,7 +108,7 @@
})
//初始化vm
- loginOutViewModel = ViewModelProvider(this).get(LoginOutViewModel::class.java)
+ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java)
waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java)
weakReferenceHandler = WeakReferenceHandler(this)
}
@@ -127,19 +124,20 @@
.setOnDialogButtonClickListener(object :
AlertControlDialog.OnDialogButtonClickListener {
override fun onConfirmClick() {
- loginOutViewModel.loginOut()
+ loginViewModel.out()
}
override fun onCancelClick() {}
}).build().show()
}
- loginOutViewModel.resultModel.observe(this, {
- if (it.code == 200) {
+ loginViewModel.loadState.observe(this, {
+ if (it == LoadState.Success) {
AuthenticationHelper.removeToken()
this.navigatePageTo(LoginActivity::class.java)
PageNavigationManager.finishAllActivity()
}
})
+
rightOptionView.setOnClickListener {
navigatePageTo(AlarmManagementActivity::class.java)
}
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt
index 954cf2d..8f54163 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt
@@ -6,20 +6,23 @@
import com.casic.qd.smartwell.extensions.*
import com.casic.qd.smartwell.model.AreaModel
import com.casic.qd.smartwell.utils.Constant
-import com.casic.qd.smartwell.vm.AlarmContentViewModel
-import com.casic.qd.smartwell.vm.AlarmTypeViewModel
+import com.casic.qd.smartwell.vm.AlarmViewModel
import com.casic.qd.smartwell.vm.AreaViewModel
import com.casic.qd.smartwell.widgets.BottomAreaSheet
import com.jzxiang.pickerview.TimePickerDialog
import com.jzxiang.pickerview.data.Type
import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder
import kotlinx.android.synthetic.main.activity_alarm_search.*
+import kotlinx.android.synthetic.main.activity_alarm_search.areaView
+import kotlinx.android.synthetic.main.activity_alarm_search.clearButton
+import kotlinx.android.synthetic.main.activity_alarm_search.searchButton
+import kotlinx.android.synthetic.main.activity_alarm_search.wellCodeView
+import kotlinx.android.synthetic.main.activity_search_record.*
import kotlinx.android.synthetic.main.include_base_title.*
class SearchAlarmActivity : BaseActivity() {
- private lateinit var alarmTypeViewModel: AlarmTypeViewModel
- private lateinit var alarmContentViewModel: AlarmContentViewModel
+ private lateinit var alarmViewModel: AlarmViewModel
private lateinit var areaViewModel: AreaViewModel
private var alarmType = ""
private var alarmContent = ""
@@ -33,18 +36,16 @@
override fun initData() {
//告警类型
- alarmTypeViewModel = ViewModelProvider(this).get(AlarmTypeViewModel::class.java)
- //告警内容
- alarmContentViewModel = ViewModelProvider(this).get(AlarmContentViewModel::class.java)
+ alarmViewModel = ViewModelProvider(this).get(AlarmViewModel::class.java)
//区域
areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java)
}
override fun initEvent() {
alarmTypeView.setOnClickListener {
- alarmTypeViewModel.obtainAlarmType()
+ alarmViewModel.obtainAlarmType()
}
- alarmTypeViewModel.typeModel.observe(this, {
+ alarmViewModel.typeModel.observe(this, {
if (it.code == 200) {
val sheetBuilder = BottomListSheetBuilder(this)
sheetBuilder.setTitle("告警类型")
@@ -65,9 +66,9 @@
alarmContentView.setOnClickListener {
//获取类型对应的报警内容
- alarmContentViewModel.obtainAlarmContent(alarmType)
+ alarmViewModel.obtainAlarmContent(alarmType)
}
- alarmContentViewModel.contentModel.observe(this, {
+ alarmViewModel.contentModel.observe(this, {
if (it.code == 200) {
val sheetBuilder = BottomListSheetBuilder(this)
sheetBuilder.setTitle("告警内容")
@@ -152,7 +153,7 @@
searchButton.setOnClickListener {
//页面跳转,将查询参数传过去
navigatePageTo(
- SearchResultActivity::class.java, addAll(
+ AlarmSearchResultActivity::class.java, addAll(
wellCodeView.text.toString().trim(),
alarmType,
areaId,
@@ -165,6 +166,7 @@
clearButton.setChangeAlphaWhenPress(true)
clearButton.setOnClickListener {
+ wellCodeView.setText("")
alarmTypeView.text = ""
alarmContentView.text = ""
areaView.text = ""
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchRecordActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchRecordActivity.kt
index a459183..853b311 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/SearchRecordActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchRecordActivity.kt
@@ -1,18 +1,41 @@
package com.casic.qd.smartwell.view
+import androidx.lifecycle.ViewModelProvider
import com.casic.qd.smartwell.R
import com.casic.qd.smartwell.base.BaseActivity
+import com.casic.qd.smartwell.extensions.addAll
+import com.casic.qd.smartwell.extensions.navigatePageTo
+import com.casic.qd.smartwell.model.AreaModel
+import com.casic.qd.smartwell.model.DeviceTypeModel
+import com.casic.qd.smartwell.model.OwnerShipModel
+import com.casic.qd.smartwell.utils.Constant
+import com.casic.qd.smartwell.utils.SaveKeyValues
+import com.casic.qd.smartwell.vm.AreaViewModel
+import com.casic.qd.smartwell.vm.AuthenticateViewModel
+import com.casic.qd.smartwell.vm.DeviceViewModel
+import com.casic.qd.smartwell.widgets.BottomAreaSheet
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet
+import kotlinx.android.synthetic.main.activity_search_record.*
import kotlinx.android.synthetic.main.include_base_title.*
/**
* @author a203
* @description 记录查询界面
- * @package com.casic.qd.smartwell.view
* @date 2022/2/17 14:33
* @email 290677893@qq.com
*/
class SearchRecordActivity : BaseActivity() {
+ private val kTag = "SearchRecordActivity"
+ private lateinit var deviceViewModel: DeviceViewModel
+ private lateinit var authenticateViewModel: AuthenticateViewModel
+ private lateinit var areaViewModel: AreaViewModel
+ private var authenticatedType: MutableList = ArrayList()
+ private var deviceTypeValue = ""
+ private var areaId = ""
+
override fun initLayoutView(): Int = R.layout.activity_search_record
override fun setupTopBarLayout() {
@@ -20,10 +43,135 @@
}
override fun initData() {
-
+ val userDeviceJson = SaveKeyValues.getValue(Constant.USER_DEVICE_TYPE, "") as String
+ if (userDeviceJson.isNotBlank()) {
+ authenticatedType = Gson().fromJson(
+ userDeviceJson, object : TypeToken>() {}.type
+ )
+ }
+ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java)
+ authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java)
+ areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java)
}
override fun initEvent() {
+ deviceTypeView.setOnClickListener {
+ /**
+ * 获取全部设备类型
+ * */
+ deviceViewModel.obtainDeviceType()
+ }
+ deviceViewModel.typeModel.observe(this, {
+ if (it.code == 200) {
+ val authenticatedModel: MutableList = ArrayList()
+ it.data?.forEach { deviceModel ->
+ if (deviceModel.value in authenticatedType) {
+ authenticatedModel.add(deviceModel)
+ }
+ }
+ val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(this)
+ sheetBuilder.setTitle("设备类型")
+ authenticatedModel.forEach { deviceModel ->
+ sheetBuilder.addItem(deviceModel.name)
+ }
+ sheetBuilder.setGravityCenter(true)
+ .setOnSheetItemClickListener { dialog, _, position, tag ->
+ deviceTypeView.text = tag
+ this.deviceTypeValue = authenticatedModel[position].value.toString()
+ dialog.dismiss()
+ }.build().show()
+ }
+ })
+
+ ownerShipView.setOnClickListener {
+ authenticateViewModel.obtainOwnerShip("")
+ }
+ authenticateViewModel.resultModel.observe(this, {
+ if (it.code == 200) {
+ val ownerShipModel: MutableList = ArrayList()
+ it.data?.list?.forEach { listBean ->
+ ownerShipModel.add(listBean)
+ }
+ val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(this)
+ sheetBuilder.setTitle("权属单位")
+ ownerShipModel.forEach { model ->
+ sheetBuilder.addItem(model.name)
+ }
+ sheetBuilder.setGravityCenter(true)
+ .setOnSheetItemClickListener { dialog, _, _, tag ->
+ ownerShipView.text = tag
+
+ dialog.dismiss()
+ }.build().show()
+ }
+ })
+
+ deviceStateView.setOnClickListener {
+ QMUIBottomSheet.BottomListSheetBuilder(this)
+ .setTitle("在线情况")
+ .addItem("在线")
+ .addItem("离线")
+ .setGravityCenter(true)
+ .setOnSheetItemClickListener { dialog, _, _, tag ->
+ deviceStateView.text = tag
+
+ dialog.dismiss()
+ }.build().show()
+ }
+
+ areaView.setOnClickListener {
+ areaViewModel.obtainArea()
+ }
+ areaViewModel.areaModel.observe(this, {
+ if (it.code == 200) {
+ val firstLevelArea: MutableList = ArrayList()
+ val secondLevelArea: MutableList = ArrayList()
+ val thirdLevelArea: MutableList = ArrayList()
+ it.data?.forEach { dataBean ->
+ when (dataBean.level) {
+ 2 -> firstLevelArea.add(dataBean)
+ 3 -> secondLevelArea.add(dataBean)
+ 4 -> thirdLevelArea.add(dataBean)
+ }
+ }
+
+ // 绑定区域
+ BottomAreaSheet.Builder()
+ .setContext(this)
+ .setFirstAreaData(firstLevelArea)
+ .setSecondAreaData(secondLevelArea)
+ .setThirdAreaData(thirdLevelArea)
+ .setOnActionSheetListener(object : BottomAreaSheet.OnActionSheetListener {
+ override fun onAreaSelected(area: String?, id: String?) {
+ areaView.text = area
+ areaId = id.toString()
+ }
+ }).build().show()
+ }
+ })
+
+ searchButton.setChangeAlphaWhenPress(true)
+ searchButton.setOnClickListener {
+ //页面跳转,将查询参数传过去
+ navigatePageTo(
+ DeviceSearchResultActivity::class.java, addAll(
+ wellCodeView.text.toString().trim(),
+ deviceTypeValue,
+ "权属单位",
+ "在线情况",
+ areaId
+ )
+ )
+ }
+
+ clearButton.setChangeAlphaWhenPress(true)
+ clearButton.setOnClickListener {
+ wellCodeView.setText("")
+ deviceTypeView.text = ""
+ ownerShipView.text = ""
+ deviceStateView.text = ""
+ areaView.text = ""
+ }
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchResultActivity.kt
deleted file mode 100644
index 988b53d..0000000
--- a/app/src/main/java/com/casic/qd/smartwell/view/SearchResultActivity.kt
+++ /dev/null
@@ -1,222 +0,0 @@
-package com.casic.qd.smartwell.view
-
-import android.annotation.SuppressLint
-import android.content.BroadcastReceiver
-import android.content.Context
-import android.content.Intent
-import android.os.Handler
-import android.os.Looper
-import android.os.Message
-import androidx.lifecycle.ViewModelProvider
-import androidx.recyclerview.widget.LinearLayoutManager
-import com.casic.qd.smartwell.R
-import com.casic.qd.smartwell.adapter.AlarmListAdapter
-import com.casic.qd.smartwell.base.BaseActivity
-import com.casic.qd.smartwell.extensions.navigatePageTo
-import com.casic.qd.smartwell.extensions.show
-import com.casic.qd.smartwell.extensions.showEmptyPage
-import com.casic.qd.smartwell.model.AlarmListModel
-import com.casic.qd.smartwell.utils.BroadcastReceiverManager
-import com.casic.qd.smartwell.utils.Constant
-import com.casic.qd.smartwell.utils.DialogHelper
-import com.casic.qd.smartwell.utils.LoadState
-import com.casic.qd.smartwell.vm.CancelAlarmViewModel
-import com.casic.qd.smartwell.vm.SearchAlarmViewModel
-import com.casic.qd.smartwell.widgets.CancelAlarmDialog
-import kotlinx.android.synthetic.main.activity_alarm_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 searchAlarmViewModel: SearchAlarmViewModel
- private lateinit var cancelAlarmViewModel: CancelAlarmViewModel
- private lateinit var args: ArrayList
- private lateinit var alarmListAdapter: AlarmListAdapter
- private var dataBeans: MutableList = ArrayList()
- private var pageIndex = 1
- private var isRefresh = false
- private var isLoadMore = false
-
- override fun initLayoutView(): Int = R.layout.activity_alarm_search_result
-
- override fun setupTopBarLayout() {
- titleView.text = "查询结果"
- }
-
- override fun initData() {
- args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!!
- weakReferenceHandler = WeakReferenceHandler(this)
- searchAlarmViewModel = ViewModelProvider(this).get(SearchAlarmViewModel::class.java)
- cancelAlarmViewModel = ViewModelProvider(this).get(CancelAlarmViewModel::class.java)
- //注册广播接收者
- BroadcastReceiverManager.instance.addAction(Constant.CANCEL_ALARM_ACTION,
- object : BroadcastReceiver() {
- override fun onReceive(context: Context?, intent: Intent?) {
- //收到广播相当于做了一次列表刷新
- isRefresh = true
- pageIndex = 1
- obtainSearchResult(args, pageIndex)
- }
- })
- }
-
- override fun initEvent() {
- obtainSearchResult(args, pageIndex)
- searchAlarmViewModel.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()
- }
- dataBeans.addAll(dataRows!!)
- resultRefreshLayout.finishLoadMore()
- isLoadMore = false
- }
- else -> {
- dataBeans = dataRows!!
- }
- }
- weakReferenceHandler.sendEmptyMessage(2022041501)
- }
- })
- searchAlarmViewModel.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)
- }
-
- //消警状态处理
- cancelAlarmViewModel.loadState.observe(this, {
- when (it) {
- is LoadState.Loading -> {
- DialogHelper.showLoadingDialog(this, "处理中,请稍后")
- }
- is LoadState.Success -> {
- DialogHelper.dismissLoadingDialog()
- //刷新列表
- BroadcastReceiverManager.instance.sendBroadcast(
- Constant.CANCEL_ALARM_ACTION, ""
- )
- }
- else -> {
- DialogHelper.dismissLoadingDialog()
- }
- }
- })
- }
-
- private fun obtainSearchResult(args: ArrayList, pageIndex: Int) {
- searchAlarmViewModel.obtainSearchResult(
- args[0], args[1], args[2], args[3], args[4], args[5], "1", pageIndex
- )
- }
-
- private class WeakReferenceHandler(activity: SearchResultActivity) :
- Handler(Looper.getMainLooper()) {
- private val reference: WeakReference = WeakReference(activity)
-
- @SuppressLint("NotifyDataSetChanged")
- override fun handleMessage(msg: Message) {
- super.handleMessage(msg)
- val activity = reference.get()!!
- if (msg.what == 2022041501) {
- if (activity.isRefresh || activity.isLoadMore) {
- activity.alarmListAdapter.notifyDataSetChanged()
- } else { //首次加载数据
- if (activity.dataBeans.size == 0) {
- activity.emptyView!!.showEmptyPage {
- activity.obtainSearchResult(activity.args, activity.pageIndex)
- }
- } else {
- activity.emptyView!!.hide()
- activity.alarmListAdapter = AlarmListAdapter(activity, activity.dataBeans)
- activity.resultRecyclerView!!.layoutManager = LinearLayoutManager(activity)
- activity.resultRecyclerView!!.adapter = activity.alarmListAdapter
- activity.alarmListAdapter.setOnItemClickListener(object :
- AlarmListAdapter.OnItemClickListener {
- override fun onClicked(position: Int) {
- val wellId = activity.dataBeans[position].wellId.toString()
- if (wellId.isBlank()) {
- "井编号异常,无法查看详情".show()
- return
- }
- activity.navigatePageTo(WellDetailActivity::class.java, wellId)
- }
-
- override fun onOperationClicked(position: Int) {
- val wellDetail = activity.dataBeans[position]
- CancelAlarmDialog.Builder()
- .setContext(activity)
- .setTitle("取消告警")
- .setHintMessage("请输入详细的告警取消原因")
- .setNegativeButton("取消")
- .setPositiveButton("确定")
- .setOnDialogButtonClickListener(object :
- CancelAlarmDialog.OnDialogButtonClickListener {
- override fun onConfirmClick(
- spinnerValue: String, inputValue: String
- ) {
- /**
- * http://111.198.10.15:20104/alarm/cancelAlarm?id=&jobStatus=3&handleMessage=2fsdf
- * POST
- * */
- val alarmId = wellDetail.id
- if (alarmId.toString().isBlank()) {
- "操作失败,告警ID异常".show()
- return
- }
- val jobStatus = when (spinnerValue) {
- "已处理" -> "3"
- "无需处理" -> "4"
- else -> ""
- }
- activity.cancelAlarmViewModel.obtainOperationResult(
- alarmId!!
- )
- }
-
- override fun onCancelClick() {
-
- }
- }).build().show()
- }
- })
- }
- }
- }
- }
- }
-
- override fun onDestroy() {
- super.onDestroy()
- //解注册广播接收者,防止内存泄漏
- BroadcastReceiverManager.instance.destroy(Constant.CANCEL_ALARM_ACTION)
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt
index 003d39e..7c050bb 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt
@@ -5,11 +5,13 @@
import com.casic.qd.smartwell.R
import com.casic.qd.smartwell.base.BaseActivity
import com.casic.qd.smartwell.extensions.navigatePageTo
+import com.casic.qd.smartwell.vm.AuthenticateViewModel
import com.casic.qd.smartwell.vm.UserDetailViewModel
class SplashScreenActivity : BaseActivity() {
private lateinit var userDetailViewModel: UserDetailViewModel
+ private lateinit var authenticateViewModel: AuthenticateViewModel
override fun initLayoutView(): Int = R.layout.activity_splash
@@ -19,6 +21,7 @@
override fun initData() {
userDetailViewModel = ViewModelProvider(this).get(UserDetailViewModel::class.java)
+ authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java)
}
override fun initEvent() {
@@ -27,7 +30,14 @@
private val countDownTimer = object : CountDownTimer(1000, 500) {
override fun onFinish() {
+ /**
+ * 获取token之后保存用户信息
+ * */
userDetailViewModel.obtainUserDetail()
+ /**
+ * 根据用户有权查看的设备类型
+ */
+ authenticateViewModel.obtainAuthorByDept()
userDetailViewModel.flag.observe(this@SplashScreenActivity, {
if (it) {
navigatePageTo(MainActivity::class.java)
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt
index 0129d7e..2d59345 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt
@@ -9,8 +9,8 @@
import com.casic.qd.smartwell.extensions.*
import com.casic.qd.smartwell.utils.ChartViewHelper
import com.casic.qd.smartwell.utils.Constant
-import com.casic.qd.smartwell.vm.AlarmListViewModel
-import com.casic.qd.smartwell.vm.DeviceStatisticsViewModel
+import com.casic.qd.smartwell.vm.AlarmViewModel
+import com.casic.qd.smartwell.vm.DeviceViewModel
import com.casic.qd.smartwell.vm.WaterStatisticsViewModel
import com.casic.qd.smartwell.widgets.DateSelectDialog
import com.github.mikephil.charting.data.BarEntry
@@ -29,8 +29,8 @@
private val context: Context = this@StatisticsActivity
private lateinit var waterViewModel: WaterStatisticsViewModel
- private lateinit var deviceViewModel: DeviceStatisticsViewModel
- private lateinit var alarmViewModel: AlarmListViewModel
+ private lateinit var deviceViewModel: DeviceViewModel
+ private lateinit var alarmViewModel: AlarmViewModel
override fun initLayoutView(): Int = R.layout.activity_statistics
@@ -40,8 +40,8 @@
override fun initData() {
waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java)
- deviceViewModel = ViewModelProvider(this).get(DeviceStatisticsViewModel::class.java)
- alarmViewModel = ViewModelProvider(this).get(AlarmListViewModel::class.java)
+ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java)
+ alarmViewModel = ViewModelProvider(this).get(AlarmViewModel::class.java)
}
override fun initEvent() {
diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/AlarmContentViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/AlarmContentViewModel.kt
deleted file mode 100644
index b12b37f..0000000
--- a/app/src/main/java/com/casic/qd/smartwell/vm/AlarmContentViewModel.kt
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.casic.qd.smartwell.vm
-
-import android.util.Log
-import androidx.lifecycle.MutableLiveData
-import com.casic.qd.smartwell.base.BaseViewModel
-import com.casic.qd.smartwell.extensions.launch
-import com.casic.qd.smartwell.extensions.separateResponseCode
-import com.casic.qd.smartwell.extensions.show
-import com.casic.qd.smartwell.extensions.toErrorMessage
-import com.casic.qd.smartwell.model.AlarmContentModel
-import com.casic.qd.smartwell.utils.retrofit.RetrofitServiceManager
-import com.google.gson.Gson
-import com.google.gson.reflect.TypeToken
-
-class AlarmContentViewModel : BaseViewModel() {
-
- private val kTag = "AlarmContentViewModel"
- private val gson = Gson()
- val contentModel = MutableLiveData()
-
- fun obtainAlarmContent(type: String) = launch({
- val response = RetrofitServiceManager.obtainAlarmContent(type)
- val responseCode = response.separateResponseCode()
- if (responseCode == 200) {
- contentModel.value = gson.fromJson(
- response, object : TypeToken() {}.type
- )
- } else {
- response.toErrorMessage().show()
- }
- }, {
- Log.e(kTag, it.toString(), it)
- "服务器异常".show()
- })
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/AlarmListViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/AlarmListViewModel.kt
deleted file mode 100644
index c4282d1..0000000
--- a/app/src/main/java/com/casic/qd/smartwell/vm/AlarmListViewModel.kt
+++ /dev/null
@@ -1,73 +0,0 @@
-package com.casic.qd.smartwell.vm
-
-import android.util.Log
-import androidx.lifecycle.MutableLiveData
-import com.casic.qd.smartwell.base.BaseViewModel
-import com.casic.qd.smartwell.extensions.launch
-import com.casic.qd.smartwell.extensions.separateResponseCode
-import com.casic.qd.smartwell.extensions.show
-import com.casic.qd.smartwell.extensions.toErrorMessage
-import com.casic.qd.smartwell.model.AlarmListModel
-import com.casic.qd.smartwell.model.AlarmSecondAreaModel
-import com.casic.qd.smartwell.utils.retrofit.RetrofitServiceManager
-import com.google.gson.Gson
-import com.google.gson.reflect.TypeToken
-
-class AlarmListViewModel : BaseViewModel() {
-
- private val kTag = "AlarmListViewModel"
- private val gson = Gson()
- val listModel = MutableLiveData()
- val areaDataModel = MutableLiveData()
-
- fun obtainAlarmList(
- keywords: String,
- alarmType: String,
- areaId: String,
- alarmContentType: String,
- beginTime: String,
- endTime: String,
- status: String,
- page: Int
- ) = launch({
- val response = RetrofitServiceManager.obtainAlarmList(
- keywords,
- alarmType,
- areaId,
- alarmContentType,
- beginTime,
- endTime,
- status,
- page
- )
- val responseCode = response.separateResponseCode()
- if (responseCode == 200) {
- listModel.value = gson.fromJson(
- response, object : TypeToken() {}.type
- )
- } else {
- response.toErrorMessage().show()
- }
- }, {
- Log.e(kTag, it.toString(), it)
- "服务器异常".show()
- })
-
- /**
- * 获取近日告警统计
- */
- fun alarmCountBySecondArea(areaId: String, startTime: String, endTime: String) = launch({
- val response = RetrofitServiceManager.alarmCountBySecondArea(areaId, startTime, endTime)
- val responseCode = response.separateResponseCode()
- if (responseCode == 200) {
- areaDataModel.value = gson.fromJson(
- response, object : TypeToken() {}.type
- )
- } else {
- response.toErrorMessage().show()
- }
- }, {
- Log.e(kTag, it.toString(), it)
- "服务器异常".show()
- })
-}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0c249a9..f11ea34 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -46,9 +46,10 @@
-
+
+
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
index 428051e..d2ac7cf 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt
@@ -1,13 +1,20 @@
package com.casic.qd.smartwell.extensions
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
import com.github.mikephil.charting.charts.BarChart
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis
import com.github.mikephil.charting.formatter.ValueFormatter
+import com.pengxh.app.multilib.utils.SizeUtil
fun BarChart.init(barLabels: MutableList) {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.animateY(1200, Easing.EaseInOutQuad)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt
index 4aa46bb..e67f075 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt
@@ -1,13 +1,20 @@
package com.casic.qd.smartwell.extensions
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.HorizontalBarChart
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis
import com.github.mikephil.charting.formatter.ValueFormatter
+import com.pengxh.app.multilib.utils.SizeUtil
fun HorizontalBarChart.init(barLabels: MutableList) {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.animateY(1200, Easing.EaseInOutQuad)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt
index 87c1c61..25f238f 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt
@@ -1,13 +1,20 @@
package com.casic.qd.smartwell.extensions
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.LineChart
import com.github.mikephil.charting.components.Legend
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.components.YAxis
+import com.pengxh.app.multilib.utils.SizeUtil
fun LineChart.init() {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.setDrawGridBackground(false)
this.setDrawBorders(false)
this.animateY(1200, Easing.EaseInOutQuad)
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt
index a88e096..3497dc7 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt
@@ -2,11 +2,18 @@
import android.graphics.Color
import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
+import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.PieChart
import com.github.mikephil.charting.components.Legend
+import com.pengxh.app.multilib.utils.SizeUtil
fun PieChart.init() {
+ this.setNoDataText("数据渲染中,请稍后...")
+ this.setNoDataTextColor(R.color.orangeTextColor)
+ this.getPaint(Chart.PAINT_INFO).textSize =
+ SizeUtil.dp2px(BaseApplication.obtainInstance(), 14f).toFloat()
this.setUsePercentValues(false) //百分比数字显示
this.description.isEnabled = false
this.dragDecelerationFrictionCoef = 0.95f //图表转动阻力摩擦系数[0,1]
diff --git a/app/src/main/java/com/casic/qd/smartwell/model/DeviceTypeModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/DeviceTypeModel.kt
new file mode 100644
index 0000000..04d2a8a
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/model/DeviceTypeModel.kt
@@ -0,0 +1,14 @@
+package com.casic.qd.smartwell.model
+
+class DeviceTypeModel {
+ var code = 0
+ var data: List? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var deviceType: String? = null
+ var name: String? = null
+ var value: String? = null
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/model/OwnerShipModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/OwnerShipModel.kt
new file mode 100644
index 0000000..7ced62c
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/model/OwnerShipModel.kt
@@ -0,0 +1,23 @@
+package com.casic.qd.smartwell.model
+
+class OwnerShipModel {
+ var code = 0
+ var data: DataBean? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var list: List? = null
+
+ class ListBean {
+ var isChecked = false
+ var code: String? = null
+ var id: String? = null
+ var name: String? = null
+ var isOpen = false
+ var pcodes: String? = null
+ var pid: String? = null
+ var value: String? = null
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt
index 5a509d2..cb85f80 100644
--- a/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt
@@ -31,6 +31,7 @@
const val ACCOUNT = "account"
const val PASSWORD = "password"
const val USER_DETAIL_MODEL = "userDetailModel"
+ const val USER_DEVICE_TYPE = "userDeviceType"
const val CANCEL_ALARM_ACTION = "cancelAlarm"
const val AREA_ID = "110000"
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt
index 019d741..9496bf4 100644
--- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitService.kt
@@ -163,4 +163,28 @@
*/
@GET("/statics/deviceStaticsByType")
suspend fun deviceCountByType(@Header("token") token: String): String
+
+ /**
+ * 根据部门获取支持的设备类型
+ */
+ /**
+ * 管网资产统计
+ */
+ @GET("/config/getAuthorByDept")
+ suspend fun obtainAuthorByDept(@Header("token") token: String): String
+
+ /**
+ * 获取设备类型
+ */
+ @GET("/device/type")
+ suspend fun obtainDeviceType(@Header("token") token: String): String
+
+ /**
+ * 获取权属单位
+ */
+ @GET("/dept/tree")
+ suspend fun obtainOwnerShip(
+ @Header("token") token: String,
+ @Query("deptType") deptType: String
+ ): String
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt
index 3985af9..575b2a9 100644
--- a/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/utils/retrofit/RetrofitServiceManager.kt
@@ -160,4 +160,25 @@
suspend fun deviceCountByType(): String {
return api.deviceCountByType(AuthenticationHelper.token!!)
}
+
+ /**
+ * 根据部门获取支持的设备类型
+ */
+ suspend fun obtainAuthorByDept(): String {
+ return api.obtainAuthorByDept(AuthenticationHelper.token!!)
+ }
+
+ /**
+ * 获取设备类型
+ */
+ suspend fun obtainDeviceType(): String {
+ return api.obtainDeviceType(AuthenticationHelper.token!!)
+ }
+
+ /**
+ * 获取权属单位
+ */
+ suspend fun obtainOwnerShip(deptType: String): String {
+ return api.obtainOwnerShip(AuthenticationHelper.token!!, deptType)
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt
index 2a6d344..abaffb2 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt
@@ -20,8 +20,7 @@
import com.casic.qd.smartwell.utils.Constant
import com.casic.qd.smartwell.utils.DialogHelper
import com.casic.qd.smartwell.utils.LoadState
-import com.casic.qd.smartwell.vm.AlarmListViewModel
-import com.casic.qd.smartwell.vm.CancelAlarmViewModel
+import com.casic.qd.smartwell.vm.AlarmViewModel
import com.pengxh.app.multilib.widget.dialog.AlertControlDialog
import kotlinx.android.synthetic.main.activity_alarm_management.*
import kotlinx.android.synthetic.main.include_empty_view.*
@@ -30,8 +29,7 @@
class AlarmManagementActivity : BaseActivity() {
- private lateinit var alarmListViewModel: AlarmListViewModel
- private lateinit var cancelAlarmViewModel: CancelAlarmViewModel
+ private lateinit var alarmViewModel: AlarmViewModel
private lateinit var weakReferenceHandler: WeakReferenceHandler
private lateinit var alarmListAdapter: AlarmListAdapter
private var dataBeans: MutableList = ArrayList()
@@ -46,8 +44,7 @@
}
override fun initData() {
- alarmListViewModel = ViewModelProvider(this).get(AlarmListViewModel::class.java)
- cancelAlarmViewModel = ViewModelProvider(this).get(CancelAlarmViewModel::class.java)
+ alarmViewModel = ViewModelProvider(this).get(AlarmViewModel::class.java)
weakReferenceHandler = WeakReferenceHandler(this)
//注册广播接收者
BroadcastReceiverManager.instance.addAction(Constant.CANCEL_ALARM_ACTION,
@@ -63,7 +60,7 @@
override fun initEvent() {
obtainAlarmList(pageIndex)
- alarmListViewModel.listModel.observe(this, {
+ alarmViewModel.listModel.observe(this, {
if (it.code == 200) {
val dataRows = it.data?.rows
when {
@@ -101,7 +98,7 @@
obtainAlarmList(pageIndex)
}
- cancelAlarmViewModel.loadState.observe(this, {
+ alarmViewModel.loadState.observe(this, {
when (it) {
is LoadState.Loading -> {
DialogHelper.showLoadingDialog(this, "处理中,请稍后")
@@ -125,7 +122,7 @@
}
private fun obtainAlarmList(pageIndex: Int) {
- alarmListViewModel.obtainAlarmList("", "", "", "", "", "", "1", pageIndex)
+ alarmViewModel.obtainAlarmList("", "", "", "", "", "", "1", pageIndex)
}
private class WeakReferenceHandler(activity: AlarmManagementActivity) :
@@ -175,9 +172,7 @@
"操作失败,告警ID异常".show()
return
}
- activity.cancelAlarmViewModel.obtainOperationResult(
- alarmId!!
- )
+ activity.alarmViewModel.obtainOperationResult(alarmId!!)
}
override fun onCancelClick() {
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt
new file mode 100644
index 0000000..61c68ab
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt
@@ -0,0 +1,208 @@
+package com.casic.qd.smartwell.view
+
+import android.annotation.SuppressLint
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+import android.os.Handler
+import android.os.Looper
+import android.os.Message
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.LinearLayoutManager
+import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.adapter.AlarmListAdapter
+import com.casic.qd.smartwell.base.BaseActivity
+import com.casic.qd.smartwell.extensions.navigatePageTo
+import com.casic.qd.smartwell.extensions.show
+import com.casic.qd.smartwell.extensions.showEmptyPage
+import com.casic.qd.smartwell.model.AlarmListModel
+import com.casic.qd.smartwell.utils.BroadcastReceiverManager
+import com.casic.qd.smartwell.utils.Constant
+import com.casic.qd.smartwell.utils.DialogHelper
+import com.casic.qd.smartwell.utils.LoadState
+import com.casic.qd.smartwell.vm.AlarmViewModel
+import com.casic.qd.smartwell.vm.SearchAlarmViewModel
+import com.pengxh.app.multilib.widget.dialog.AlertControlDialog
+import kotlinx.android.synthetic.main.activity_alarm_search_result.*
+import kotlinx.android.synthetic.main.include_base_title.*
+import kotlinx.android.synthetic.main.include_empty_view.*
+import java.lang.ref.WeakReference
+
+class AlarmSearchResultActivity : BaseActivity() {
+
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+ private lateinit var searchAlarmViewModel: SearchAlarmViewModel
+ private lateinit var alarmViewModel: AlarmViewModel
+ private lateinit var args: ArrayList
+ private lateinit var alarmListAdapter: AlarmListAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var pageIndex = 1
+ private var isRefresh = false
+ private var isLoadMore = false
+
+ override fun initLayoutView(): Int = R.layout.activity_alarm_search_result
+
+ override fun setupTopBarLayout() {
+ titleView.text = "查询结果"
+ }
+
+ override fun initData() {
+ args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!!
+ weakReferenceHandler = WeakReferenceHandler(this)
+ searchAlarmViewModel = ViewModelProvider(this).get(SearchAlarmViewModel::class.java)
+ alarmViewModel = ViewModelProvider(this).get(AlarmViewModel::class.java)
+ //注册广播接收者
+ BroadcastReceiverManager.instance.addAction(Constant.CANCEL_ALARM_ACTION,
+ object : BroadcastReceiver() {
+ override fun onReceive(context: Context?, intent: Intent?) {
+ //收到广播相当于做了一次列表刷新
+ isRefresh = true
+ pageIndex = 1
+ obtainSearchResult(args, pageIndex)
+ }
+ })
+ }
+
+ override fun initEvent() {
+ obtainSearchResult(args, pageIndex)
+ searchAlarmViewModel.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()
+ }
+ dataBeans.addAll(dataRows!!)
+ resultRefreshLayout.finishLoadMore()
+ isLoadMore = false
+ }
+ else -> {
+ dataBeans = dataRows!!
+ }
+ }
+ weakReferenceHandler.sendEmptyMessage(2022041501)
+ }
+ })
+ searchAlarmViewModel.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)
+ }
+
+ //消警状态处理
+ alarmViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "处理中,请稍后")
+ }
+ is LoadState.Success -> {
+ DialogHelper.dismissLoadingDialog()
+ //刷新列表
+ BroadcastReceiverManager.instance.sendBroadcast(
+ Constant.CANCEL_ALARM_ACTION, ""
+ )
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+ }
+
+ private fun obtainSearchResult(args: ArrayList, pageIndex: Int) {
+ searchAlarmViewModel.obtainSearchResult(
+ args[0], args[1], args[2], args[3], args[4], args[5], "1", pageIndex
+ )
+ }
+
+ private class WeakReferenceHandler(activity: AlarmSearchResultActivity) :
+ Handler(Looper.getMainLooper()) {
+ private val reference: WeakReference = WeakReference(activity)
+
+ @SuppressLint("NotifyDataSetChanged")
+ override fun handleMessage(msg: Message) {
+ super.handleMessage(msg)
+ val activity = reference.get()!!
+ if (msg.what == 2022041501) {
+ if (activity.isRefresh || activity.isLoadMore) {
+ activity.alarmListAdapter.notifyDataSetChanged()
+ } else { //首次加载数据
+ if (activity.dataBeans.size == 0) {
+ activity.emptyView!!.showEmptyPage {
+ activity.obtainSearchResult(activity.args, activity.pageIndex)
+ }
+ } else {
+ activity.emptyView!!.hide()
+ activity.alarmListAdapter = AlarmListAdapter(activity, activity.dataBeans)
+ activity.resultRecyclerView!!.layoutManager = LinearLayoutManager(activity)
+ activity.resultRecyclerView!!.adapter = activity.alarmListAdapter
+ activity.alarmListAdapter.setOnItemClickListener(object :
+ AlarmListAdapter.OnItemClickListener {
+ override fun onClicked(position: Int) {
+ val wellId = activity.dataBeans[position].wellId.toString()
+ if (wellId.isBlank()) {
+ "井编号异常,无法查看详情".show()
+ return
+ }
+ activity.navigatePageTo(WellDetailActivity::class.java, wellId)
+ }
+
+ override fun onOperationClicked(position: Int) {
+ AlertControlDialog.Builder()
+ .setContext(activity)
+ .setTitle("确认操作")
+ .setMessage("确定取消报警吗?")
+ .setNegativeButton("取消")
+ .setPositiveButton("确定")
+ .setOnDialogButtonClickListener(object :
+ AlertControlDialog.OnDialogButtonClickListener {
+ override fun onConfirmClick() {
+ val alarmId = activity.dataBeans[position].id
+ if (alarmId.toString().isBlank()) {
+ "操作失败,告警ID异常".show()
+ return
+ }
+ activity.alarmViewModel.obtainOperationResult(alarmId!!)
+ }
+
+ override fun onCancelClick() {
+
+ }
+ }).build().show()
+ }
+ })
+ }
+ }
+ }
+ }
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ //解注册广播接收者,防止内存泄漏
+ BroadcastReceiverManager.instance.destroy(Constant.CANCEL_ALARM_ACTION)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceSearchResultActivity.kt
new file mode 100644
index 0000000..cfc25d2
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceSearchResultActivity.kt
@@ -0,0 +1,21 @@
+package com.casic.qd.smartwell.view
+
+import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseActivity
+
+class DeviceSearchResultActivity : BaseActivity() {
+
+ override fun initLayoutView(): Int = R.layout.activity_device_search_result
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt
index 526fa73..c86ee63 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt
@@ -13,7 +13,7 @@
import com.casic.qd.smartwell.extensions.show
import com.casic.qd.smartwell.utils.*
import com.casic.qd.smartwell.vm.AuthenticateViewModel
-import com.casic.qd.smartwell.vm.LoginInViewModel
+import com.casic.qd.smartwell.vm.LoginViewModel
import com.casic.qd.smartwell.vm.UserDetailViewModel
import com.qmuiteam.qmui.util.QMUIStatusBarHelper
import kotlinx.android.synthetic.main.activity_login.*
@@ -21,7 +21,7 @@
class LoginActivity : BaseActivity() {
private lateinit var authenticateViewModel: AuthenticateViewModel
- private lateinit var loginInViewModel: LoginInViewModel
+ private lateinit var loginViewModel: LoginViewModel
private lateinit var userDetailViewModel: UserDetailViewModel
private val textWatcher = object : TextWatcher {
@@ -54,7 +54,7 @@
userNameView.setText(SaveKeyValues.getValue(Constant.ACCOUNT, "") as String)
userPasswordView.setText(SaveKeyValues.getValue(Constant.PASSWORD, "") as String)
authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java)
- loginInViewModel = ViewModelProvider(this).get(LoginInViewModel::class.java)
+ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java)
userDetailViewModel = ViewModelProvider(this).get(UserDetailViewModel::class.java)
}
@@ -100,18 +100,24 @@
val dataByPublicKey =
RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey!!)
//登录并获取Token,POST请求
- loginInViewModel.login(it.data!!.sid!!, account, dataByPublicKey)
- loginInViewModel.resultModel.observe(this, { loginResult ->
+ loginViewModel.inn(it.data!!.sid!!, account, dataByPublicKey)
+ loginViewModel.resultModel.observe(this, { loginResult ->
if (loginResult.code == 200) {
AuthenticationHelper.saveToken(loginResult.data!!.token!!)
- //获取token之后保存用户信息
+ /**
+ * 获取token之后保存用户信息
+ * */
userDetailViewModel.obtainUserDetail()
+ /**
+ * 根据用户有权查看的设备类型
+ */
+ authenticateViewModel.obtainAuthorByDept()
//验证成功登录
this.navigatePageTo(MainActivity::class.java)
finish()
}
})
- loginInViewModel.loadState.observe(this, { loginState ->
+ loginViewModel.loadState.observe(this, { loginState ->
when (loginState) {
is LoadState.Success -> {
"登录成功".show()
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt
index 3f497c9..02435a3 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt
@@ -17,11 +17,8 @@
import com.casic.qd.smartwell.extensions.*
import com.casic.qd.smartwell.model.BannerImageModel
import com.casic.qd.smartwell.model.LineChartEntryModel
-import com.casic.qd.smartwell.utils.AuthenticationHelper
-import com.casic.qd.smartwell.utils.ChartViewHelper
-import com.casic.qd.smartwell.utils.Constant
-import com.casic.qd.smartwell.utils.PageNavigationManager
-import com.casic.qd.smartwell.vm.LoginOutViewModel
+import com.casic.qd.smartwell.utils.*
+import com.casic.qd.smartwell.vm.LoginViewModel
import com.casic.qd.smartwell.vm.WaterStatisticsViewModel
import com.github.mikephil.charting.data.Entry
import com.pengxh.app.multilib.widget.dialog.AlertControlDialog
@@ -38,7 +35,7 @@
private val context: Context = this@MainActivity
private var clickTime: Long = 0
- private lateinit var loginOutViewModel: LoginOutViewModel
+ private lateinit var loginViewModel: LoginViewModel
private lateinit var waterViewModel: WaterStatisticsViewModel
private val xAxisDate: MutableList = ArrayList()
private val entryModels: MutableList = ArrayList()
@@ -111,7 +108,7 @@
})
//初始化vm
- loginOutViewModel = ViewModelProvider(this).get(LoginOutViewModel::class.java)
+ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java)
waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java)
weakReferenceHandler = WeakReferenceHandler(this)
}
@@ -127,19 +124,20 @@
.setOnDialogButtonClickListener(object :
AlertControlDialog.OnDialogButtonClickListener {
override fun onConfirmClick() {
- loginOutViewModel.loginOut()
+ loginViewModel.out()
}
override fun onCancelClick() {}
}).build().show()
}
- loginOutViewModel.resultModel.observe(this, {
- if (it.code == 200) {
+ loginViewModel.loadState.observe(this, {
+ if (it == LoadState.Success) {
AuthenticationHelper.removeToken()
this.navigatePageTo(LoginActivity::class.java)
PageNavigationManager.finishAllActivity()
}
})
+
rightOptionView.setOnClickListener {
navigatePageTo(AlarmManagementActivity::class.java)
}
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt
index 954cf2d..8f54163 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt
@@ -6,20 +6,23 @@
import com.casic.qd.smartwell.extensions.*
import com.casic.qd.smartwell.model.AreaModel
import com.casic.qd.smartwell.utils.Constant
-import com.casic.qd.smartwell.vm.AlarmContentViewModel
-import com.casic.qd.smartwell.vm.AlarmTypeViewModel
+import com.casic.qd.smartwell.vm.AlarmViewModel
import com.casic.qd.smartwell.vm.AreaViewModel
import com.casic.qd.smartwell.widgets.BottomAreaSheet
import com.jzxiang.pickerview.TimePickerDialog
import com.jzxiang.pickerview.data.Type
import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder
import kotlinx.android.synthetic.main.activity_alarm_search.*
+import kotlinx.android.synthetic.main.activity_alarm_search.areaView
+import kotlinx.android.synthetic.main.activity_alarm_search.clearButton
+import kotlinx.android.synthetic.main.activity_alarm_search.searchButton
+import kotlinx.android.synthetic.main.activity_alarm_search.wellCodeView
+import kotlinx.android.synthetic.main.activity_search_record.*
import kotlinx.android.synthetic.main.include_base_title.*
class SearchAlarmActivity : BaseActivity() {
- private lateinit var alarmTypeViewModel: AlarmTypeViewModel
- private lateinit var alarmContentViewModel: AlarmContentViewModel
+ private lateinit var alarmViewModel: AlarmViewModel
private lateinit var areaViewModel: AreaViewModel
private var alarmType = ""
private var alarmContent = ""
@@ -33,18 +36,16 @@
override fun initData() {
//告警类型
- alarmTypeViewModel = ViewModelProvider(this).get(AlarmTypeViewModel::class.java)
- //告警内容
- alarmContentViewModel = ViewModelProvider(this).get(AlarmContentViewModel::class.java)
+ alarmViewModel = ViewModelProvider(this).get(AlarmViewModel::class.java)
//区域
areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java)
}
override fun initEvent() {
alarmTypeView.setOnClickListener {
- alarmTypeViewModel.obtainAlarmType()
+ alarmViewModel.obtainAlarmType()
}
- alarmTypeViewModel.typeModel.observe(this, {
+ alarmViewModel.typeModel.observe(this, {
if (it.code == 200) {
val sheetBuilder = BottomListSheetBuilder(this)
sheetBuilder.setTitle("告警类型")
@@ -65,9 +66,9 @@
alarmContentView.setOnClickListener {
//获取类型对应的报警内容
- alarmContentViewModel.obtainAlarmContent(alarmType)
+ alarmViewModel.obtainAlarmContent(alarmType)
}
- alarmContentViewModel.contentModel.observe(this, {
+ alarmViewModel.contentModel.observe(this, {
if (it.code == 200) {
val sheetBuilder = BottomListSheetBuilder(this)
sheetBuilder.setTitle("告警内容")
@@ -152,7 +153,7 @@
searchButton.setOnClickListener {
//页面跳转,将查询参数传过去
navigatePageTo(
- SearchResultActivity::class.java, addAll(
+ AlarmSearchResultActivity::class.java, addAll(
wellCodeView.text.toString().trim(),
alarmType,
areaId,
@@ -165,6 +166,7 @@
clearButton.setChangeAlphaWhenPress(true)
clearButton.setOnClickListener {
+ wellCodeView.setText("")
alarmTypeView.text = ""
alarmContentView.text = ""
areaView.text = ""
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchRecordActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchRecordActivity.kt
index a459183..853b311 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/SearchRecordActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchRecordActivity.kt
@@ -1,18 +1,41 @@
package com.casic.qd.smartwell.view
+import androidx.lifecycle.ViewModelProvider
import com.casic.qd.smartwell.R
import com.casic.qd.smartwell.base.BaseActivity
+import com.casic.qd.smartwell.extensions.addAll
+import com.casic.qd.smartwell.extensions.navigatePageTo
+import com.casic.qd.smartwell.model.AreaModel
+import com.casic.qd.smartwell.model.DeviceTypeModel
+import com.casic.qd.smartwell.model.OwnerShipModel
+import com.casic.qd.smartwell.utils.Constant
+import com.casic.qd.smartwell.utils.SaveKeyValues
+import com.casic.qd.smartwell.vm.AreaViewModel
+import com.casic.qd.smartwell.vm.AuthenticateViewModel
+import com.casic.qd.smartwell.vm.DeviceViewModel
+import com.casic.qd.smartwell.widgets.BottomAreaSheet
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet
+import kotlinx.android.synthetic.main.activity_search_record.*
import kotlinx.android.synthetic.main.include_base_title.*
/**
* @author a203
* @description 记录查询界面
- * @package com.casic.qd.smartwell.view
* @date 2022/2/17 14:33
* @email 290677893@qq.com
*/
class SearchRecordActivity : BaseActivity() {
+ private val kTag = "SearchRecordActivity"
+ private lateinit var deviceViewModel: DeviceViewModel
+ private lateinit var authenticateViewModel: AuthenticateViewModel
+ private lateinit var areaViewModel: AreaViewModel
+ private var authenticatedType: MutableList = ArrayList()
+ private var deviceTypeValue = ""
+ private var areaId = ""
+
override fun initLayoutView(): Int = R.layout.activity_search_record
override fun setupTopBarLayout() {
@@ -20,10 +43,135 @@
}
override fun initData() {
-
+ val userDeviceJson = SaveKeyValues.getValue(Constant.USER_DEVICE_TYPE, "") as String
+ if (userDeviceJson.isNotBlank()) {
+ authenticatedType = Gson().fromJson(
+ userDeviceJson, object : TypeToken>() {}.type
+ )
+ }
+ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java)
+ authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java)
+ areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java)
}
override fun initEvent() {
+ deviceTypeView.setOnClickListener {
+ /**
+ * 获取全部设备类型
+ * */
+ deviceViewModel.obtainDeviceType()
+ }
+ deviceViewModel.typeModel.observe(this, {
+ if (it.code == 200) {
+ val authenticatedModel: MutableList = ArrayList()
+ it.data?.forEach { deviceModel ->
+ if (deviceModel.value in authenticatedType) {
+ authenticatedModel.add(deviceModel)
+ }
+ }
+ val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(this)
+ sheetBuilder.setTitle("设备类型")
+ authenticatedModel.forEach { deviceModel ->
+ sheetBuilder.addItem(deviceModel.name)
+ }
+ sheetBuilder.setGravityCenter(true)
+ .setOnSheetItemClickListener { dialog, _, position, tag ->
+ deviceTypeView.text = tag
+ this.deviceTypeValue = authenticatedModel[position].value.toString()
+ dialog.dismiss()
+ }.build().show()
+ }
+ })
+
+ ownerShipView.setOnClickListener {
+ authenticateViewModel.obtainOwnerShip("")
+ }
+ authenticateViewModel.resultModel.observe(this, {
+ if (it.code == 200) {
+ val ownerShipModel: MutableList = ArrayList()
+ it.data?.list?.forEach { listBean ->
+ ownerShipModel.add(listBean)
+ }
+ val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(this)
+ sheetBuilder.setTitle("权属单位")
+ ownerShipModel.forEach { model ->
+ sheetBuilder.addItem(model.name)
+ }
+ sheetBuilder.setGravityCenter(true)
+ .setOnSheetItemClickListener { dialog, _, _, tag ->
+ ownerShipView.text = tag
+
+ dialog.dismiss()
+ }.build().show()
+ }
+ })
+
+ deviceStateView.setOnClickListener {
+ QMUIBottomSheet.BottomListSheetBuilder(this)
+ .setTitle("在线情况")
+ .addItem("在线")
+ .addItem("离线")
+ .setGravityCenter(true)
+ .setOnSheetItemClickListener { dialog, _, _, tag ->
+ deviceStateView.text = tag
+
+ dialog.dismiss()
+ }.build().show()
+ }
+
+ areaView.setOnClickListener {
+ areaViewModel.obtainArea()
+ }
+ areaViewModel.areaModel.observe(this, {
+ if (it.code == 200) {
+ val firstLevelArea: MutableList = ArrayList()
+ val secondLevelArea: MutableList = ArrayList()
+ val thirdLevelArea: MutableList = ArrayList()
+ it.data?.forEach { dataBean ->
+ when (dataBean.level) {
+ 2 -> firstLevelArea.add(dataBean)
+ 3 -> secondLevelArea.add(dataBean)
+ 4 -> thirdLevelArea.add(dataBean)
+ }
+ }
+
+ // 绑定区域
+ BottomAreaSheet.Builder()
+ .setContext(this)
+ .setFirstAreaData(firstLevelArea)
+ .setSecondAreaData(secondLevelArea)
+ .setThirdAreaData(thirdLevelArea)
+ .setOnActionSheetListener(object : BottomAreaSheet.OnActionSheetListener {
+ override fun onAreaSelected(area: String?, id: String?) {
+ areaView.text = area
+ areaId = id.toString()
+ }
+ }).build().show()
+ }
+ })
+
+ searchButton.setChangeAlphaWhenPress(true)
+ searchButton.setOnClickListener {
+ //页面跳转,将查询参数传过去
+ navigatePageTo(
+ DeviceSearchResultActivity::class.java, addAll(
+ wellCodeView.text.toString().trim(),
+ deviceTypeValue,
+ "权属单位",
+ "在线情况",
+ areaId
+ )
+ )
+ }
+
+ clearButton.setChangeAlphaWhenPress(true)
+ clearButton.setOnClickListener {
+ wellCodeView.setText("")
+ deviceTypeView.text = ""
+ ownerShipView.text = ""
+ deviceStateView.text = ""
+ areaView.text = ""
+ }
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchResultActivity.kt
deleted file mode 100644
index 988b53d..0000000
--- a/app/src/main/java/com/casic/qd/smartwell/view/SearchResultActivity.kt
+++ /dev/null
@@ -1,222 +0,0 @@
-package com.casic.qd.smartwell.view
-
-import android.annotation.SuppressLint
-import android.content.BroadcastReceiver
-import android.content.Context
-import android.content.Intent
-import android.os.Handler
-import android.os.Looper
-import android.os.Message
-import androidx.lifecycle.ViewModelProvider
-import androidx.recyclerview.widget.LinearLayoutManager
-import com.casic.qd.smartwell.R
-import com.casic.qd.smartwell.adapter.AlarmListAdapter
-import com.casic.qd.smartwell.base.BaseActivity
-import com.casic.qd.smartwell.extensions.navigatePageTo
-import com.casic.qd.smartwell.extensions.show
-import com.casic.qd.smartwell.extensions.showEmptyPage
-import com.casic.qd.smartwell.model.AlarmListModel
-import com.casic.qd.smartwell.utils.BroadcastReceiverManager
-import com.casic.qd.smartwell.utils.Constant
-import com.casic.qd.smartwell.utils.DialogHelper
-import com.casic.qd.smartwell.utils.LoadState
-import com.casic.qd.smartwell.vm.CancelAlarmViewModel
-import com.casic.qd.smartwell.vm.SearchAlarmViewModel
-import com.casic.qd.smartwell.widgets.CancelAlarmDialog
-import kotlinx.android.synthetic.main.activity_alarm_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 searchAlarmViewModel: SearchAlarmViewModel
- private lateinit var cancelAlarmViewModel: CancelAlarmViewModel
- private lateinit var args: ArrayList
- private lateinit var alarmListAdapter: AlarmListAdapter
- private var dataBeans: MutableList = ArrayList()
- private var pageIndex = 1
- private var isRefresh = false
- private var isLoadMore = false
-
- override fun initLayoutView(): Int = R.layout.activity_alarm_search_result
-
- override fun setupTopBarLayout() {
- titleView.text = "查询结果"
- }
-
- override fun initData() {
- args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!!
- weakReferenceHandler = WeakReferenceHandler(this)
- searchAlarmViewModel = ViewModelProvider(this).get(SearchAlarmViewModel::class.java)
- cancelAlarmViewModel = ViewModelProvider(this).get(CancelAlarmViewModel::class.java)
- //注册广播接收者
- BroadcastReceiverManager.instance.addAction(Constant.CANCEL_ALARM_ACTION,
- object : BroadcastReceiver() {
- override fun onReceive(context: Context?, intent: Intent?) {
- //收到广播相当于做了一次列表刷新
- isRefresh = true
- pageIndex = 1
- obtainSearchResult(args, pageIndex)
- }
- })
- }
-
- override fun initEvent() {
- obtainSearchResult(args, pageIndex)
- searchAlarmViewModel.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()
- }
- dataBeans.addAll(dataRows!!)
- resultRefreshLayout.finishLoadMore()
- isLoadMore = false
- }
- else -> {
- dataBeans = dataRows!!
- }
- }
- weakReferenceHandler.sendEmptyMessage(2022041501)
- }
- })
- searchAlarmViewModel.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)
- }
-
- //消警状态处理
- cancelAlarmViewModel.loadState.observe(this, {
- when (it) {
- is LoadState.Loading -> {
- DialogHelper.showLoadingDialog(this, "处理中,请稍后")
- }
- is LoadState.Success -> {
- DialogHelper.dismissLoadingDialog()
- //刷新列表
- BroadcastReceiverManager.instance.sendBroadcast(
- Constant.CANCEL_ALARM_ACTION, ""
- )
- }
- else -> {
- DialogHelper.dismissLoadingDialog()
- }
- }
- })
- }
-
- private fun obtainSearchResult(args: ArrayList, pageIndex: Int) {
- searchAlarmViewModel.obtainSearchResult(
- args[0], args[1], args[2], args[3], args[4], args[5], "1", pageIndex
- )
- }
-
- private class WeakReferenceHandler(activity: SearchResultActivity) :
- Handler(Looper.getMainLooper()) {
- private val reference: WeakReference = WeakReference(activity)
-
- @SuppressLint("NotifyDataSetChanged")
- override fun handleMessage(msg: Message) {
- super.handleMessage(msg)
- val activity = reference.get()!!
- if (msg.what == 2022041501) {
- if (activity.isRefresh || activity.isLoadMore) {
- activity.alarmListAdapter.notifyDataSetChanged()
- } else { //首次加载数据
- if (activity.dataBeans.size == 0) {
- activity.emptyView!!.showEmptyPage {
- activity.obtainSearchResult(activity.args, activity.pageIndex)
- }
- } else {
- activity.emptyView!!.hide()
- activity.alarmListAdapter = AlarmListAdapter(activity, activity.dataBeans)
- activity.resultRecyclerView!!.layoutManager = LinearLayoutManager(activity)
- activity.resultRecyclerView!!.adapter = activity.alarmListAdapter
- activity.alarmListAdapter.setOnItemClickListener(object :
- AlarmListAdapter.OnItemClickListener {
- override fun onClicked(position: Int) {
- val wellId = activity.dataBeans[position].wellId.toString()
- if (wellId.isBlank()) {
- "井编号异常,无法查看详情".show()
- return
- }
- activity.navigatePageTo(WellDetailActivity::class.java, wellId)
- }
-
- override fun onOperationClicked(position: Int) {
- val wellDetail = activity.dataBeans[position]
- CancelAlarmDialog.Builder()
- .setContext(activity)
- .setTitle("取消告警")
- .setHintMessage("请输入详细的告警取消原因")
- .setNegativeButton("取消")
- .setPositiveButton("确定")
- .setOnDialogButtonClickListener(object :
- CancelAlarmDialog.OnDialogButtonClickListener {
- override fun onConfirmClick(
- spinnerValue: String, inputValue: String
- ) {
- /**
- * http://111.198.10.15:20104/alarm/cancelAlarm?id=&jobStatus=3&handleMessage=2fsdf
- * POST
- * */
- val alarmId = wellDetail.id
- if (alarmId.toString().isBlank()) {
- "操作失败,告警ID异常".show()
- return
- }
- val jobStatus = when (spinnerValue) {
- "已处理" -> "3"
- "无需处理" -> "4"
- else -> ""
- }
- activity.cancelAlarmViewModel.obtainOperationResult(
- alarmId!!
- )
- }
-
- override fun onCancelClick() {
-
- }
- }).build().show()
- }
- })
- }
- }
- }
- }
- }
-
- override fun onDestroy() {
- super.onDestroy()
- //解注册广播接收者,防止内存泄漏
- BroadcastReceiverManager.instance.destroy(Constant.CANCEL_ALARM_ACTION)
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt
index 003d39e..7c050bb 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt
@@ -5,11 +5,13 @@
import com.casic.qd.smartwell.R
import com.casic.qd.smartwell.base.BaseActivity
import com.casic.qd.smartwell.extensions.navigatePageTo
+import com.casic.qd.smartwell.vm.AuthenticateViewModel
import com.casic.qd.smartwell.vm.UserDetailViewModel
class SplashScreenActivity : BaseActivity() {
private lateinit var userDetailViewModel: UserDetailViewModel
+ private lateinit var authenticateViewModel: AuthenticateViewModel
override fun initLayoutView(): Int = R.layout.activity_splash
@@ -19,6 +21,7 @@
override fun initData() {
userDetailViewModel = ViewModelProvider(this).get(UserDetailViewModel::class.java)
+ authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java)
}
override fun initEvent() {
@@ -27,7 +30,14 @@
private val countDownTimer = object : CountDownTimer(1000, 500) {
override fun onFinish() {
+ /**
+ * 获取token之后保存用户信息
+ * */
userDetailViewModel.obtainUserDetail()
+ /**
+ * 根据用户有权查看的设备类型
+ */
+ authenticateViewModel.obtainAuthorByDept()
userDetailViewModel.flag.observe(this@SplashScreenActivity, {
if (it) {
navigatePageTo(MainActivity::class.java)
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt
index 0129d7e..2d59345 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt
@@ -9,8 +9,8 @@
import com.casic.qd.smartwell.extensions.*
import com.casic.qd.smartwell.utils.ChartViewHelper
import com.casic.qd.smartwell.utils.Constant
-import com.casic.qd.smartwell.vm.AlarmListViewModel
-import com.casic.qd.smartwell.vm.DeviceStatisticsViewModel
+import com.casic.qd.smartwell.vm.AlarmViewModel
+import com.casic.qd.smartwell.vm.DeviceViewModel
import com.casic.qd.smartwell.vm.WaterStatisticsViewModel
import com.casic.qd.smartwell.widgets.DateSelectDialog
import com.github.mikephil.charting.data.BarEntry
@@ -29,8 +29,8 @@
private val context: Context = this@StatisticsActivity
private lateinit var waterViewModel: WaterStatisticsViewModel
- private lateinit var deviceViewModel: DeviceStatisticsViewModel
- private lateinit var alarmViewModel: AlarmListViewModel
+ private lateinit var deviceViewModel: DeviceViewModel
+ private lateinit var alarmViewModel: AlarmViewModel
override fun initLayoutView(): Int = R.layout.activity_statistics
@@ -40,8 +40,8 @@
override fun initData() {
waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java)
- deviceViewModel = ViewModelProvider(this).get(DeviceStatisticsViewModel::class.java)
- alarmViewModel = ViewModelProvider(this).get(AlarmListViewModel::class.java)
+ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java)
+ alarmViewModel = ViewModelProvider(this).get(AlarmViewModel::class.java)
}
override fun initEvent() {
diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/AlarmContentViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/AlarmContentViewModel.kt
deleted file mode 100644
index b12b37f..0000000
--- a/app/src/main/java/com/casic/qd/smartwell/vm/AlarmContentViewModel.kt
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.casic.qd.smartwell.vm
-
-import android.util.Log
-import androidx.lifecycle.MutableLiveData
-import com.casic.qd.smartwell.base.BaseViewModel
-import com.casic.qd.smartwell.extensions.launch
-import com.casic.qd.smartwell.extensions.separateResponseCode
-import com.casic.qd.smartwell.extensions.show
-import com.casic.qd.smartwell.extensions.toErrorMessage
-import com.casic.qd.smartwell.model.AlarmContentModel
-import com.casic.qd.smartwell.utils.retrofit.RetrofitServiceManager
-import com.google.gson.Gson
-import com.google.gson.reflect.TypeToken
-
-class AlarmContentViewModel : BaseViewModel() {
-
- private val kTag = "AlarmContentViewModel"
- private val gson = Gson()
- val contentModel = MutableLiveData()
-
- fun obtainAlarmContent(type: String) = launch({
- val response = RetrofitServiceManager.obtainAlarmContent(type)
- val responseCode = response.separateResponseCode()
- if (responseCode == 200) {
- contentModel.value = gson.fromJson(
- response, object : TypeToken() {}.type
- )
- } else {
- response.toErrorMessage().show()
- }
- }, {
- Log.e(kTag, it.toString(), it)
- "服务器异常".show()
- })
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/AlarmListViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/AlarmListViewModel.kt
deleted file mode 100644
index c4282d1..0000000
--- a/app/src/main/java/com/casic/qd/smartwell/vm/AlarmListViewModel.kt
+++ /dev/null
@@ -1,73 +0,0 @@
-package com.casic.qd.smartwell.vm
-
-import android.util.Log
-import androidx.lifecycle.MutableLiveData
-import com.casic.qd.smartwell.base.BaseViewModel
-import com.casic.qd.smartwell.extensions.launch
-import com.casic.qd.smartwell.extensions.separateResponseCode
-import com.casic.qd.smartwell.extensions.show
-import com.casic.qd.smartwell.extensions.toErrorMessage
-import com.casic.qd.smartwell.model.AlarmListModel
-import com.casic.qd.smartwell.model.AlarmSecondAreaModel
-import com.casic.qd.smartwell.utils.retrofit.RetrofitServiceManager
-import com.google.gson.Gson
-import com.google.gson.reflect.TypeToken
-
-class AlarmListViewModel : BaseViewModel() {
-
- private val kTag = "AlarmListViewModel"
- private val gson = Gson()
- val listModel = MutableLiveData()
- val areaDataModel = MutableLiveData()
-
- fun obtainAlarmList(
- keywords: String,
- alarmType: String,
- areaId: String,
- alarmContentType: String,
- beginTime: String,
- endTime: String,
- status: String,
- page: Int
- ) = launch({
- val response = RetrofitServiceManager.obtainAlarmList(
- keywords,
- alarmType,
- areaId,
- alarmContentType,
- beginTime,
- endTime,
- status,
- page
- )
- val responseCode = response.separateResponseCode()
- if (responseCode == 200) {
- listModel.value = gson.fromJson(
- response, object : TypeToken() {}.type
- )
- } else {
- response.toErrorMessage().show()
- }
- }, {
- Log.e(kTag, it.toString(), it)
- "服务器异常".show()
- })
-
- /**
- * 获取近日告警统计
- */
- fun alarmCountBySecondArea(areaId: String, startTime: String, endTime: String) = launch({
- val response = RetrofitServiceManager.alarmCountBySecondArea(areaId, startTime, endTime)
- val responseCode = response.separateResponseCode()
- if (responseCode == 200) {
- areaDataModel.value = gson.fromJson(
- response, object : TypeToken() {}.type
- )
- } else {
- response.toErrorMessage().show()
- }
- }, {
- Log.e(kTag, it.toString(), it)
- "服务器异常".show()
- })
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/AlarmTypeViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/AlarmTypeViewModel.kt
deleted file mode 100644
index c98d93c..0000000
--- a/app/src/main/java/com/casic/qd/smartwell/vm/AlarmTypeViewModel.kt
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.casic.qd.smartwell.vm
-
-import android.util.Log
-import androidx.lifecycle.MutableLiveData
-import com.casic.qd.smartwell.base.BaseViewModel
-import com.casic.qd.smartwell.extensions.launch
-import com.casic.qd.smartwell.extensions.separateResponseCode
-import com.casic.qd.smartwell.extensions.show
-import com.casic.qd.smartwell.extensions.toErrorMessage
-import com.casic.qd.smartwell.model.AlarmTypeModel
-import com.casic.qd.smartwell.utils.retrofit.RetrofitServiceManager
-import com.google.gson.Gson
-import com.google.gson.reflect.TypeToken
-
-class AlarmTypeViewModel : BaseViewModel() {
-
- private val kTag = "AlarmTypeViewModel"
- private val gson = Gson()
- val typeModel = MutableLiveData()
-
- fun obtainAlarmType() = launch({
- val response = RetrofitServiceManager.obtainAlarmType()
- val responseCode = response.separateResponseCode()
- if (responseCode == 200) {
- typeModel.value = gson.fromJson(
- response, object : TypeToken() {}.type
- )
- } else {
- response.toErrorMessage().show()
- }
- }, {
- Log.e(kTag, it.toString(), it)
- "服务器异常".show()
- })
-}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0c249a9..f11ea34 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -46,9 +46,10 @@