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 cb85a39..428051e 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 @@ -14,6 +14,8 @@ this.setScaleEnabled(false) //去掉描述 this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false val xAxis: XAxis = this.xAxis xAxis.textColor = R.color.mainTextColor.convertColor() xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 @@ -34,6 +36,4 @@ rightAxis.isEnabled = false val leftAxis: YAxis = this.axisLeft leftAxis.axisMinimum = 0f - //不显示图例 - this.legend.isEnabled = false } \ No newline at end of file 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 cb85a39..428051e 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 @@ -14,6 +14,8 @@ this.setScaleEnabled(false) //去掉描述 this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false val xAxis: XAxis = this.xAxis xAxis.textColor = R.color.mainTextColor.convertColor() xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 @@ -34,6 +36,4 @@ rightAxis.isEnabled = false val leftAxis: YAxis = this.axisLeft leftAxis.axisMinimum = 0f - //不显示图例 - this.legend.isEnabled = false } \ No newline at end of file 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 new file mode 100644 index 0000000..4aa46bb --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt @@ -0,0 +1,38 @@ +package com.casic.qd.smartwell.extensions + +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +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 + +fun HorizontalBarChart.init(barLabels: MutableList) { + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.mainTextColor.convertColor() + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file 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 cb85a39..428051e 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 @@ -14,6 +14,8 @@ this.setScaleEnabled(false) //去掉描述 this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false val xAxis: XAxis = this.xAxis xAxis.textColor = R.color.mainTextColor.convertColor() xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 @@ -34,6 +36,4 @@ rightAxis.isEnabled = false val leftAxis: YAxis = this.axisLeft leftAxis.axisMinimum = 0f - //不显示图例 - this.legend.isEnabled = false } \ No newline at end of file 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 new file mode 100644 index 0000000..4aa46bb --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt @@ -0,0 +1,38 @@ +package com.casic.qd.smartwell.extensions + +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +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 + +fun HorizontalBarChart.init(barLabels: MutableList) { + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.mainTextColor.convertColor() + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/model/DeviceStatisticsModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/DeviceStatisticsModel.kt new file mode 100644 index 0000000..12e14a4 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/model/DeviceStatisticsModel.kt @@ -0,0 +1,13 @@ +package com.casic.qd.smartwell.model + +class DeviceStatisticsModel { + var code = 0 + var data: List? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var deviceType: String? = null + var deviceCount: String? = null + } +} \ No newline at end of file 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 cb85a39..428051e 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 @@ -14,6 +14,8 @@ this.setScaleEnabled(false) //去掉描述 this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false val xAxis: XAxis = this.xAxis xAxis.textColor = R.color.mainTextColor.convertColor() xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 @@ -34,6 +36,4 @@ rightAxis.isEnabled = false val leftAxis: YAxis = this.axisLeft leftAxis.axisMinimum = 0f - //不显示图例 - this.legend.isEnabled = false } \ No newline at end of file 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 new file mode 100644 index 0000000..4aa46bb --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt @@ -0,0 +1,38 @@ +package com.casic.qd.smartwell.extensions + +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +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 + +fun HorizontalBarChart.init(barLabels: MutableList) { + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.mainTextColor.convertColor() + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/model/DeviceStatisticsModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/DeviceStatisticsModel.kt new file mode 100644 index 0000000..12e14a4 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/model/DeviceStatisticsModel.kt @@ -0,0 +1,13 @@ +package com.casic.qd.smartwell.model + +class DeviceStatisticsModel { + var code = 0 + var data: List? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var deviceType: String? = null + var deviceCount: String? = null + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt index f6a0cc0..c7dd1e3 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt @@ -7,6 +7,7 @@ import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.widgets.DetailsMarkerView import com.github.mikephil.charting.charts.BarChart +import com.github.mikephil.charting.charts.HorizontalBarChart import com.github.mikephil.charting.charts.LineChart import com.github.mikephil.charting.charts.PieChart import com.github.mikephil.charting.data.* @@ -83,7 +84,7 @@ } /** - * 柱状图 + * 竖直柱状图 * */ fun setBarChartData(chart: BarChart, xAxisLabel: MutableList, entries: List) { //每次加载数据都初始化饼图 @@ -105,6 +106,32 @@ } /** + * 横向柱状图 + * */ + fun setBarChartData( + chart: HorizontalBarChart, + xAxisLabel: MutableList, + entries: List + ) { + //每次加载数据都初始化饼图 + chart.init(xAxisLabel) + val barDataSets: MutableList = ArrayList() + //绑定数据 + val dataSet = BarDataSet(entries, "") + dataSet.color = R.color.color_1.convertColor() + dataSet.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return decimalFormat.format(value.toDouble()) + } + } + barDataSets.add(dataSet) + val barData = BarData(barDataSets) + barData.barWidth = 0.5f + chart.data = barData + chart.invalidate() + } + + /** * 饼图 * */ fun setPieChartData(chart: PieChart, entries: List) { 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 cb85a39..428051e 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 @@ -14,6 +14,8 @@ this.setScaleEnabled(false) //去掉描述 this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false val xAxis: XAxis = this.xAxis xAxis.textColor = R.color.mainTextColor.convertColor() xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 @@ -34,6 +36,4 @@ rightAxis.isEnabled = false val leftAxis: YAxis = this.axisLeft leftAxis.axisMinimum = 0f - //不显示图例 - this.legend.isEnabled = false } \ No newline at end of file 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 new file mode 100644 index 0000000..4aa46bb --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt @@ -0,0 +1,38 @@ +package com.casic.qd.smartwell.extensions + +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +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 + +fun HorizontalBarChart.init(barLabels: MutableList) { + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.mainTextColor.convertColor() + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/model/DeviceStatisticsModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/DeviceStatisticsModel.kt new file mode 100644 index 0000000..12e14a4 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/model/DeviceStatisticsModel.kt @@ -0,0 +1,13 @@ +package com.casic.qd.smartwell.model + +class DeviceStatisticsModel { + var code = 0 + var data: List? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var deviceType: String? = null + var deviceCount: String? = null + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt index f6a0cc0..c7dd1e3 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt @@ -7,6 +7,7 @@ import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.widgets.DetailsMarkerView import com.github.mikephil.charting.charts.BarChart +import com.github.mikephil.charting.charts.HorizontalBarChart import com.github.mikephil.charting.charts.LineChart import com.github.mikephil.charting.charts.PieChart import com.github.mikephil.charting.data.* @@ -83,7 +84,7 @@ } /** - * 柱状图 + * 竖直柱状图 * */ fun setBarChartData(chart: BarChart, xAxisLabel: MutableList, entries: List) { //每次加载数据都初始化饼图 @@ -105,6 +106,32 @@ } /** + * 横向柱状图 + * */ + fun setBarChartData( + chart: HorizontalBarChart, + xAxisLabel: MutableList, + entries: List + ) { + //每次加载数据都初始化饼图 + chart.init(xAxisLabel) + val barDataSets: MutableList = ArrayList() + //绑定数据 + val dataSet = BarDataSet(entries, "") + dataSet.color = R.color.color_1.convertColor() + dataSet.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return decimalFormat.format(value.toDouble()) + } + } + barDataSets.add(dataSet) + val barData = BarData(barDataSets) + barData.barWidth = 0.5f + chart.data = barData + chart.invalidate() + } + + /** * 饼图 * */ fun setPieChartData(chart: PieChart, entries: List) { 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 ec597e6..084f470 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 @@ -140,4 +140,10 @@ @Query("startTime") startTime: String, @Query("endTime") endTime: String ): String + + /** + * 管网资产统计 + */ + @GET("/statics/deviceStaticsByType") + suspend fun deviceCountByType(@Header("token") token: String): String } \ No newline at end of file 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 cb85a39..428051e 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 @@ -14,6 +14,8 @@ this.setScaleEnabled(false) //去掉描述 this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false val xAxis: XAxis = this.xAxis xAxis.textColor = R.color.mainTextColor.convertColor() xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 @@ -34,6 +36,4 @@ rightAxis.isEnabled = false val leftAxis: YAxis = this.axisLeft leftAxis.axisMinimum = 0f - //不显示图例 - this.legend.isEnabled = false } \ No newline at end of file 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 new file mode 100644 index 0000000..4aa46bb --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt @@ -0,0 +1,38 @@ +package com.casic.qd.smartwell.extensions + +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +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 + +fun HorizontalBarChart.init(barLabels: MutableList) { + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.mainTextColor.convertColor() + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/model/DeviceStatisticsModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/DeviceStatisticsModel.kt new file mode 100644 index 0000000..12e14a4 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/model/DeviceStatisticsModel.kt @@ -0,0 +1,13 @@ +package com.casic.qd.smartwell.model + +class DeviceStatisticsModel { + var code = 0 + var data: List? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var deviceType: String? = null + var deviceCount: String? = null + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt index f6a0cc0..c7dd1e3 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt @@ -7,6 +7,7 @@ import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.widgets.DetailsMarkerView import com.github.mikephil.charting.charts.BarChart +import com.github.mikephil.charting.charts.HorizontalBarChart import com.github.mikephil.charting.charts.LineChart import com.github.mikephil.charting.charts.PieChart import com.github.mikephil.charting.data.* @@ -83,7 +84,7 @@ } /** - * 柱状图 + * 竖直柱状图 * */ fun setBarChartData(chart: BarChart, xAxisLabel: MutableList, entries: List) { //每次加载数据都初始化饼图 @@ -105,6 +106,32 @@ } /** + * 横向柱状图 + * */ + fun setBarChartData( + chart: HorizontalBarChart, + xAxisLabel: MutableList, + entries: List + ) { + //每次加载数据都初始化饼图 + chart.init(xAxisLabel) + val barDataSets: MutableList = ArrayList() + //绑定数据 + val dataSet = BarDataSet(entries, "") + dataSet.color = R.color.color_1.convertColor() + dataSet.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return decimalFormat.format(value.toDouble()) + } + } + barDataSets.add(dataSet) + val barData = BarData(barDataSets) + barData.barWidth = 0.5f + chart.data = barData + chart.invalidate() + } + + /** * 饼图 * */ fun setPieChartData(chart: PieChart, entries: List) { 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 ec597e6..084f470 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 @@ -140,4 +140,10 @@ @Query("startTime") startTime: String, @Query("endTime") endTime: String ): String + + /** + * 管网资产统计 + */ + @GET("/statics/deviceStaticsByType") + suspend fun deviceCountByType(@Header("token") token: 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 6425a24..412cbaf 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 @@ -139,4 +139,11 @@ suspend fun waterCountBySecondArea(areaId: String, startTime: String, endTime: String): String { return api.waterCountBySecondArea(AuthenticationHelper.token!!, areaId, startTime, endTime) } + + /** + * 管网资产统计 + */ + suspend fun deviceCountByType(): String { + return api.deviceCountByType(AuthenticationHelper.token!!) + } } \ No newline at end of file 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 cb85a39..428051e 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 @@ -14,6 +14,8 @@ this.setScaleEnabled(false) //去掉描述 this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false val xAxis: XAxis = this.xAxis xAxis.textColor = R.color.mainTextColor.convertColor() xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 @@ -34,6 +36,4 @@ rightAxis.isEnabled = false val leftAxis: YAxis = this.axisLeft leftAxis.axisMinimum = 0f - //不显示图例 - this.legend.isEnabled = false } \ No newline at end of file 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 new file mode 100644 index 0000000..4aa46bb --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt @@ -0,0 +1,38 @@ +package com.casic.qd.smartwell.extensions + +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +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 + +fun HorizontalBarChart.init(barLabels: MutableList) { + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.mainTextColor.convertColor() + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/model/DeviceStatisticsModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/DeviceStatisticsModel.kt new file mode 100644 index 0000000..12e14a4 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/model/DeviceStatisticsModel.kt @@ -0,0 +1,13 @@ +package com.casic.qd.smartwell.model + +class DeviceStatisticsModel { + var code = 0 + var data: List? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var deviceType: String? = null + var deviceCount: String? = null + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt index f6a0cc0..c7dd1e3 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt @@ -7,6 +7,7 @@ import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.widgets.DetailsMarkerView import com.github.mikephil.charting.charts.BarChart +import com.github.mikephil.charting.charts.HorizontalBarChart import com.github.mikephil.charting.charts.LineChart import com.github.mikephil.charting.charts.PieChart import com.github.mikephil.charting.data.* @@ -83,7 +84,7 @@ } /** - * 柱状图 + * 竖直柱状图 * */ fun setBarChartData(chart: BarChart, xAxisLabel: MutableList, entries: List) { //每次加载数据都初始化饼图 @@ -105,6 +106,32 @@ } /** + * 横向柱状图 + * */ + fun setBarChartData( + chart: HorizontalBarChart, + xAxisLabel: MutableList, + entries: List + ) { + //每次加载数据都初始化饼图 + chart.init(xAxisLabel) + val barDataSets: MutableList = ArrayList() + //绑定数据 + val dataSet = BarDataSet(entries, "") + dataSet.color = R.color.color_1.convertColor() + dataSet.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return decimalFormat.format(value.toDouble()) + } + } + barDataSets.add(dataSet) + val barData = BarData(barDataSets) + barData.barWidth = 0.5f + chart.data = barData + chart.invalidate() + } + + /** * 饼图 * */ fun setPieChartData(chart: PieChart, entries: List) { 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 ec597e6..084f470 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 @@ -140,4 +140,10 @@ @Query("startTime") startTime: String, @Query("endTime") endTime: String ): String + + /** + * 管网资产统计 + */ + @GET("/statics/deviceStaticsByType") + suspend fun deviceCountByType(@Header("token") token: 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 6425a24..412cbaf 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 @@ -139,4 +139,11 @@ suspend fun waterCountBySecondArea(areaId: String, startTime: String, endTime: String): String { return api.waterCountBySecondArea(AuthenticationHelper.token!!, areaId, startTime, endTime) } + + /** + * 管网资产统计 + */ + suspend fun deviceCountByType(): String { + return api.deviceCountByType(AuthenticationHelper.token!!) + } } \ No newline at end of file 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 9258311..42972ee 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,6 +9,7 @@ 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.DeviceStatisticsViewModel import com.casic.qd.smartwell.vm.WaterStatisticsViewModel import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.BarEntry @@ -28,6 +29,7 @@ private val context: Context = this@StatisticsActivity private lateinit var waterViewModel: WaterStatisticsViewModel + private lateinit var deviceViewModel: DeviceStatisticsViewModel private val valveEntries: MutableList = ArrayList() private val meterEntries: MutableList = ArrayList() @@ -42,6 +44,7 @@ override fun initData() { waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) + deviceViewModel = ViewModelProvider(this).get(DeviceStatisticsViewModel::class.java) } override fun initEvent() { @@ -148,7 +151,7 @@ }) //初始化折线图 - totalLineChart.init() + alarmLineChart.init() //TODO 这是模拟数据 for (i in Constant.YEARS) { valveEntries.add( @@ -177,11 +180,30 @@ ) } ChartViewHelper.setLineChartData( - totalLineChart, + alarmLineChart, valveEntries, meterEntries, pipelineEntries, deviceEntries ) + + deviceViewModel.deviceCountByType() + deviceViewModel.resultModel.observe(this, { + if (it.code == 200) { + val xAxisLabel: MutableList = ArrayList() + val barEntries: MutableList = ArrayList() + it.data?.forEachIndexed { index, dataBean -> + xAxisLabel.add(dataBean.deviceType.toString()) + val dataValue = if (dataBean.deviceCount.toString().isBlank()) { + 0f + } else { + dataBean.deviceCount!!.toFloat() + } + //柱状图 + barEntries.add(BarEntry(index.toFloat(), dataValue)) + } + ChartViewHelper.setBarChartData(deviceHorizontalBarChart, xAxisLabel, barEntries) + } + }) } } \ No newline at end of file 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 cb85a39..428051e 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 @@ -14,6 +14,8 @@ this.setScaleEnabled(false) //去掉描述 this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false val xAxis: XAxis = this.xAxis xAxis.textColor = R.color.mainTextColor.convertColor() xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 @@ -34,6 +36,4 @@ rightAxis.isEnabled = false val leftAxis: YAxis = this.axisLeft leftAxis.axisMinimum = 0f - //不显示图例 - this.legend.isEnabled = false } \ No newline at end of file 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 new file mode 100644 index 0000000..4aa46bb --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt @@ -0,0 +1,38 @@ +package com.casic.qd.smartwell.extensions + +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +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 + +fun HorizontalBarChart.init(barLabels: MutableList) { + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.mainTextColor.convertColor() + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/model/DeviceStatisticsModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/DeviceStatisticsModel.kt new file mode 100644 index 0000000..12e14a4 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/model/DeviceStatisticsModel.kt @@ -0,0 +1,13 @@ +package com.casic.qd.smartwell.model + +class DeviceStatisticsModel { + var code = 0 + var data: List? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var deviceType: String? = null + var deviceCount: String? = null + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt index f6a0cc0..c7dd1e3 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt @@ -7,6 +7,7 @@ import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.widgets.DetailsMarkerView import com.github.mikephil.charting.charts.BarChart +import com.github.mikephil.charting.charts.HorizontalBarChart import com.github.mikephil.charting.charts.LineChart import com.github.mikephil.charting.charts.PieChart import com.github.mikephil.charting.data.* @@ -83,7 +84,7 @@ } /** - * 柱状图 + * 竖直柱状图 * */ fun setBarChartData(chart: BarChart, xAxisLabel: MutableList, entries: List) { //每次加载数据都初始化饼图 @@ -105,6 +106,32 @@ } /** + * 横向柱状图 + * */ + fun setBarChartData( + chart: HorizontalBarChart, + xAxisLabel: MutableList, + entries: List + ) { + //每次加载数据都初始化饼图 + chart.init(xAxisLabel) + val barDataSets: MutableList = ArrayList() + //绑定数据 + val dataSet = BarDataSet(entries, "") + dataSet.color = R.color.color_1.convertColor() + dataSet.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return decimalFormat.format(value.toDouble()) + } + } + barDataSets.add(dataSet) + val barData = BarData(barDataSets) + barData.barWidth = 0.5f + chart.data = barData + chart.invalidate() + } + + /** * 饼图 * */ fun setPieChartData(chart: PieChart, entries: List) { 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 ec597e6..084f470 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 @@ -140,4 +140,10 @@ @Query("startTime") startTime: String, @Query("endTime") endTime: String ): String + + /** + * 管网资产统计 + */ + @GET("/statics/deviceStaticsByType") + suspend fun deviceCountByType(@Header("token") token: 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 6425a24..412cbaf 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 @@ -139,4 +139,11 @@ suspend fun waterCountBySecondArea(areaId: String, startTime: String, endTime: String): String { return api.waterCountBySecondArea(AuthenticationHelper.token!!, areaId, startTime, endTime) } + + /** + * 管网资产统计 + */ + suspend fun deviceCountByType(): String { + return api.deviceCountByType(AuthenticationHelper.token!!) + } } \ No newline at end of file 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 9258311..42972ee 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,6 +9,7 @@ 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.DeviceStatisticsViewModel import com.casic.qd.smartwell.vm.WaterStatisticsViewModel import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.BarEntry @@ -28,6 +29,7 @@ private val context: Context = this@StatisticsActivity private lateinit var waterViewModel: WaterStatisticsViewModel + private lateinit var deviceViewModel: DeviceStatisticsViewModel private val valveEntries: MutableList = ArrayList() private val meterEntries: MutableList = ArrayList() @@ -42,6 +44,7 @@ override fun initData() { waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) + deviceViewModel = ViewModelProvider(this).get(DeviceStatisticsViewModel::class.java) } override fun initEvent() { @@ -148,7 +151,7 @@ }) //初始化折线图 - totalLineChart.init() + alarmLineChart.init() //TODO 这是模拟数据 for (i in Constant.YEARS) { valveEntries.add( @@ -177,11 +180,30 @@ ) } ChartViewHelper.setLineChartData( - totalLineChart, + alarmLineChart, valveEntries, meterEntries, pipelineEntries, deviceEntries ) + + deviceViewModel.deviceCountByType() + deviceViewModel.resultModel.observe(this, { + if (it.code == 200) { + val xAxisLabel: MutableList = ArrayList() + val barEntries: MutableList = ArrayList() + it.data?.forEachIndexed { index, dataBean -> + xAxisLabel.add(dataBean.deviceType.toString()) + val dataValue = if (dataBean.deviceCount.toString().isBlank()) { + 0f + } else { + dataBean.deviceCount!!.toFloat() + } + //柱状图 + barEntries.add(BarEntry(index.toFloat(), dataValue)) + } + ChartViewHelper.setBarChartData(deviceHorizontalBarChart, xAxisLabel, barEntries) + } + }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/DeviceStatisticsViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/DeviceStatisticsViewModel.kt new file mode 100644 index 0000000..ff7ab3f --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/vm/DeviceStatisticsViewModel.kt @@ -0,0 +1,38 @@ +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.DeviceStatisticsModel +import com.casic.qd.smartwell.utils.retrofit.RetrofitServiceManager +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken + +class DeviceStatisticsViewModel : BaseViewModel() { + + private val kTag = "DeviceStatisticsViewModel" + private val gson = Gson() + val resultModel = MutableLiveData() + + /** + * 管网资产统计 + */ + fun deviceCountByType() = launch({ + val response = RetrofitServiceManager.deviceCountByType() + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + resultModel.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/extensions/BarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt index cb85a39..428051e 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 @@ -14,6 +14,8 @@ this.setScaleEnabled(false) //去掉描述 this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false val xAxis: XAxis = this.xAxis xAxis.textColor = R.color.mainTextColor.convertColor() xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 @@ -34,6 +36,4 @@ rightAxis.isEnabled = false val leftAxis: YAxis = this.axisLeft leftAxis.axisMinimum = 0f - //不显示图例 - this.legend.isEnabled = false } \ No newline at end of file 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 new file mode 100644 index 0000000..4aa46bb --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt @@ -0,0 +1,38 @@ +package com.casic.qd.smartwell.extensions + +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +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 + +fun HorizontalBarChart.init(barLabels: MutableList) { + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.mainTextColor.convertColor() + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/model/DeviceStatisticsModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/DeviceStatisticsModel.kt new file mode 100644 index 0000000..12e14a4 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/model/DeviceStatisticsModel.kt @@ -0,0 +1,13 @@ +package com.casic.qd.smartwell.model + +class DeviceStatisticsModel { + var code = 0 + var data: List? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var deviceType: String? = null + var deviceCount: String? = null + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt index f6a0cc0..c7dd1e3 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt @@ -7,6 +7,7 @@ import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.widgets.DetailsMarkerView import com.github.mikephil.charting.charts.BarChart +import com.github.mikephil.charting.charts.HorizontalBarChart import com.github.mikephil.charting.charts.LineChart import com.github.mikephil.charting.charts.PieChart import com.github.mikephil.charting.data.* @@ -83,7 +84,7 @@ } /** - * 柱状图 + * 竖直柱状图 * */ fun setBarChartData(chart: BarChart, xAxisLabel: MutableList, entries: List) { //每次加载数据都初始化饼图 @@ -105,6 +106,32 @@ } /** + * 横向柱状图 + * */ + fun setBarChartData( + chart: HorizontalBarChart, + xAxisLabel: MutableList, + entries: List + ) { + //每次加载数据都初始化饼图 + chart.init(xAxisLabel) + val barDataSets: MutableList = ArrayList() + //绑定数据 + val dataSet = BarDataSet(entries, "") + dataSet.color = R.color.color_1.convertColor() + dataSet.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return decimalFormat.format(value.toDouble()) + } + } + barDataSets.add(dataSet) + val barData = BarData(barDataSets) + barData.barWidth = 0.5f + chart.data = barData + chart.invalidate() + } + + /** * 饼图 * */ fun setPieChartData(chart: PieChart, entries: List) { 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 ec597e6..084f470 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 @@ -140,4 +140,10 @@ @Query("startTime") startTime: String, @Query("endTime") endTime: String ): String + + /** + * 管网资产统计 + */ + @GET("/statics/deviceStaticsByType") + suspend fun deviceCountByType(@Header("token") token: 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 6425a24..412cbaf 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 @@ -139,4 +139,11 @@ suspend fun waterCountBySecondArea(areaId: String, startTime: String, endTime: String): String { return api.waterCountBySecondArea(AuthenticationHelper.token!!, areaId, startTime, endTime) } + + /** + * 管网资产统计 + */ + suspend fun deviceCountByType(): String { + return api.deviceCountByType(AuthenticationHelper.token!!) + } } \ No newline at end of file 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 9258311..42972ee 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,6 +9,7 @@ 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.DeviceStatisticsViewModel import com.casic.qd.smartwell.vm.WaterStatisticsViewModel import com.casic.qd.smartwell.widgets.DateSelectDialog import com.github.mikephil.charting.data.BarEntry @@ -28,6 +29,7 @@ private val context: Context = this@StatisticsActivity private lateinit var waterViewModel: WaterStatisticsViewModel + private lateinit var deviceViewModel: DeviceStatisticsViewModel private val valveEntries: MutableList = ArrayList() private val meterEntries: MutableList = ArrayList() @@ -42,6 +44,7 @@ override fun initData() { waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) + deviceViewModel = ViewModelProvider(this).get(DeviceStatisticsViewModel::class.java) } override fun initEvent() { @@ -148,7 +151,7 @@ }) //初始化折线图 - totalLineChart.init() + alarmLineChart.init() //TODO 这是模拟数据 for (i in Constant.YEARS) { valveEntries.add( @@ -177,11 +180,30 @@ ) } ChartViewHelper.setLineChartData( - totalLineChart, + alarmLineChart, valveEntries, meterEntries, pipelineEntries, deviceEntries ) + + deviceViewModel.deviceCountByType() + deviceViewModel.resultModel.observe(this, { + if (it.code == 200) { + val xAxisLabel: MutableList = ArrayList() + val barEntries: MutableList = ArrayList() + it.data?.forEachIndexed { index, dataBean -> + xAxisLabel.add(dataBean.deviceType.toString()) + val dataValue = if (dataBean.deviceCount.toString().isBlank()) { + 0f + } else { + dataBean.deviceCount!!.toFloat() + } + //柱状图 + barEntries.add(BarEntry(index.toFloat(), dataValue)) + } + ChartViewHelper.setBarChartData(deviceHorizontalBarChart, xAxisLabel, barEntries) + } + }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/DeviceStatisticsViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/DeviceStatisticsViewModel.kt new file mode 100644 index 0000000..ff7ab3f --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/vm/DeviceStatisticsViewModel.kt @@ -0,0 +1,38 @@ +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.DeviceStatisticsModel +import com.casic.qd.smartwell.utils.retrofit.RetrofitServiceManager +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken + +class DeviceStatisticsViewModel : BaseViewModel() { + + private val kTag = "DeviceStatisticsViewModel" + private val gson = Gson() + val resultModel = MutableLiveData() + + /** + * 管网资产统计 + */ + fun deviceCountByType() = launch({ + val response = RetrofitServiceManager.deviceCountByType() + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + resultModel.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/res/layout/activity_statistics.xml b/app/src/main/res/layout/activity_statistics.xml index 80d3069..8c15493 100644 --- a/app/src/main/res/layout/activity_statistics.xml +++ b/app/src/main/res/layout/activity_statistics.xml @@ -78,7 +78,23 @@ + + + + + + +