diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 82386c9..3832c68 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -48,7 +48,7 @@
-
+
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 82386c9..3832c68 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -48,7 +48,7 @@
-
+
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/Long.kt
index 216e7cc..f53e831 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/Long.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/Long.kt
@@ -15,6 +15,14 @@
return dateFormat.format(calendar.time)
}
+fun Long.timestampToLastWeekTime(): String {
+ val dateFormat = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA)
+ val calendar = Calendar.getInstance()
+ calendar.time = Date(this)
+ calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) - 6)
+ return dateFormat.format(calendar.time)
+}
+
fun Long.timestampToLastMonthDate(): String {
val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA)
val calendar = Calendar.getInstance()
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 82386c9..3832c68 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -48,7 +48,7 @@
-
+
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/Long.kt
index 216e7cc..f53e831 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/Long.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/Long.kt
@@ -15,6 +15,14 @@
return dateFormat.format(calendar.time)
}
+fun Long.timestampToLastWeekTime(): String {
+ val dateFormat = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA)
+ val calendar = Calendar.getInstance()
+ calendar.time = Date(this)
+ calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) - 6)
+ return dateFormat.format(calendar.time)
+}
+
fun Long.timestampToLastMonthDate(): String {
val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA)
val calendar = Calendar.getInstance()
diff --git a/app/src/main/java/com/casic/qd/smartwell/model/DayDataModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/DayDataModel.kt
new file mode 100644
index 0000000..18d1399
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/model/DayDataModel.kt
@@ -0,0 +1,13 @@
+package com.casic.qd.smartwell.model
+
+class DayDataModel {
+ var code = 0
+ var data: List? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var time: 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 82386c9..3832c68 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -48,7 +48,7 @@
-
+
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/Long.kt
index 216e7cc..f53e831 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/Long.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/Long.kt
@@ -15,6 +15,14 @@
return dateFormat.format(calendar.time)
}
+fun Long.timestampToLastWeekTime(): String {
+ val dateFormat = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA)
+ val calendar = Calendar.getInstance()
+ calendar.time = Date(this)
+ calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) - 6)
+ return dateFormat.format(calendar.time)
+}
+
fun Long.timestampToLastMonthDate(): String {
val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA)
val calendar = Calendar.getInstance()
diff --git a/app/src/main/java/com/casic/qd/smartwell/model/DayDataModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/DayDataModel.kt
new file mode 100644
index 0000000..18d1399
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/model/DayDataModel.kt
@@ -0,0 +1,13 @@
+package com.casic.qd.smartwell.model
+
+class DayDataModel {
+ var code = 0
+ var data: List? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var time: String? = null
+ var value: String? = null
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/model/TotalDataModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/TotalDataModel.kt
new file mode 100644
index 0000000..30bf829
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/model/TotalDataModel.kt
@@ -0,0 +1,14 @@
+package com.casic.qd.smartwell.model
+
+class TotalDataModel {
+ var code = 0
+ var data: List? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var total: String? = null
+ var deviceState: String? = null
+ var uptime: String? = null
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 82386c9..3832c68 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -48,7 +48,7 @@
-
+
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/Long.kt
index 216e7cc..f53e831 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/Long.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/Long.kt
@@ -15,6 +15,14 @@
return dateFormat.format(calendar.time)
}
+fun Long.timestampToLastWeekTime(): String {
+ val dateFormat = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA)
+ val calendar = Calendar.getInstance()
+ calendar.time = Date(this)
+ calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) - 6)
+ return dateFormat.format(calendar.time)
+}
+
fun Long.timestampToLastMonthDate(): String {
val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA)
val calendar = Calendar.getInstance()
diff --git a/app/src/main/java/com/casic/qd/smartwell/model/DayDataModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/DayDataModel.kt
new file mode 100644
index 0000000..18d1399
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/model/DayDataModel.kt
@@ -0,0 +1,13 @@
+package com.casic.qd.smartwell.model
+
+class DayDataModel {
+ var code = 0
+ var data: List? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var time: String? = null
+ var value: String? = null
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/model/TotalDataModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/TotalDataModel.kt
new file mode 100644
index 0000000..30bf829
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/model/TotalDataModel.kt
@@ -0,0 +1,14 @@
+package com.casic.qd.smartwell.model
+
+class TotalDataModel {
+ var code = 0
+ var data: List? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var total: String? = null
+ var deviceState: String? = null
+ var uptime: String? = null
+ }
+}
\ 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 c5bf469..0c80ee9 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
@@ -202,4 +202,26 @@
@Query("offset") offset: Int,
@Query("limit") limit: Int
): String
+
+ /**
+ * 获取设备日用水量
+ * */
+ @GET("/device/sevenDayData")
+ suspend fun obtainSevenDayData(
+ @Header("token") token: String,
+ @Query("devCode") devCode: String?,
+ @Query("beginTime") beginTime: String?,
+ @Query("endTime") endTime: String?
+ ): String
+
+ /**
+ * 获取设备日用水量
+ * */
+ @GET("/device/totalData")
+ suspend fun obtainTotalDayData(
+ @Header("token") token: String,
+ @Query("devCode") devCode: String?,
+ @Query("beginTime") beginTime: String?,
+ @Query("endTime") endTime: String?
+ ): String
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 82386c9..3832c68 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -48,7 +48,7 @@
-
+
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/Long.kt
index 216e7cc..f53e831 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/Long.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/Long.kt
@@ -15,6 +15,14 @@
return dateFormat.format(calendar.time)
}
+fun Long.timestampToLastWeekTime(): String {
+ val dateFormat = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA)
+ val calendar = Calendar.getInstance()
+ calendar.time = Date(this)
+ calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) - 6)
+ return dateFormat.format(calendar.time)
+}
+
fun Long.timestampToLastMonthDate(): String {
val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA)
val calendar = Calendar.getInstance()
diff --git a/app/src/main/java/com/casic/qd/smartwell/model/DayDataModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/DayDataModel.kt
new file mode 100644
index 0000000..18d1399
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/model/DayDataModel.kt
@@ -0,0 +1,13 @@
+package com.casic.qd.smartwell.model
+
+class DayDataModel {
+ var code = 0
+ var data: List? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var time: String? = null
+ var value: String? = null
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/model/TotalDataModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/TotalDataModel.kt
new file mode 100644
index 0000000..30bf829
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/model/TotalDataModel.kt
@@ -0,0 +1,14 @@
+package com.casic.qd.smartwell.model
+
+class TotalDataModel {
+ var code = 0
+ var data: List? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var total: String? = null
+ var deviceState: String? = null
+ var uptime: String? = null
+ }
+}
\ 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 c5bf469..0c80ee9 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
@@ -202,4 +202,26 @@
@Query("offset") offset: Int,
@Query("limit") limit: Int
): String
+
+ /**
+ * 获取设备日用水量
+ * */
+ @GET("/device/sevenDayData")
+ suspend fun obtainSevenDayData(
+ @Header("token") token: String,
+ @Query("devCode") devCode: String?,
+ @Query("beginTime") beginTime: String?,
+ @Query("endTime") endTime: String?
+ ): String
+
+ /**
+ * 获取设备日用水量
+ * */
+ @GET("/device/totalData")
+ suspend fun obtainTotalDayData(
+ @Header("token") token: String,
+ @Query("devCode") devCode: String?,
+ @Query("beginTime") beginTime: String?,
+ @Query("endTime") endTime: 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 6f728e0..a8b320f 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
@@ -204,4 +204,18 @@
Constant.PAGE_LIMIT
)
}
+
+ /**
+ * 获取设备日用水量
+ */
+ suspend fun obtainSevenDayData(devCode: String?, beginTime: String?, endTime: String?): String {
+ return api.obtainSevenDayData(AuthenticationHelper.token!!, devCode, beginTime, endTime)
+ }
+
+ /**
+ * 获取设备累计用水量
+ */
+ suspend fun obtainTotalDayData(devCode: String?, beginTime: String?, endTime: String?): String {
+ return api.obtainTotalDayData(AuthenticationHelper.token!!, devCode, beginTime, endTime)
+ }
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 82386c9..3832c68 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -48,7 +48,7 @@
-
+
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/Long.kt
index 216e7cc..f53e831 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/Long.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/Long.kt
@@ -15,6 +15,14 @@
return dateFormat.format(calendar.time)
}
+fun Long.timestampToLastWeekTime(): String {
+ val dateFormat = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA)
+ val calendar = Calendar.getInstance()
+ calendar.time = Date(this)
+ calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) - 6)
+ return dateFormat.format(calendar.time)
+}
+
fun Long.timestampToLastMonthDate(): String {
val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA)
val calendar = Calendar.getInstance()
diff --git a/app/src/main/java/com/casic/qd/smartwell/model/DayDataModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/DayDataModel.kt
new file mode 100644
index 0000000..18d1399
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/model/DayDataModel.kt
@@ -0,0 +1,13 @@
+package com.casic.qd.smartwell.model
+
+class DayDataModel {
+ var code = 0
+ var data: List? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var time: String? = null
+ var value: String? = null
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/model/TotalDataModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/TotalDataModel.kt
new file mode 100644
index 0000000..30bf829
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/model/TotalDataModel.kt
@@ -0,0 +1,14 @@
+package com.casic.qd.smartwell.model
+
+class TotalDataModel {
+ var code = 0
+ var data: List? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var total: String? = null
+ var deviceState: String? = null
+ var uptime: String? = null
+ }
+}
\ 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 c5bf469..0c80ee9 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
@@ -202,4 +202,26 @@
@Query("offset") offset: Int,
@Query("limit") limit: Int
): String
+
+ /**
+ * 获取设备日用水量
+ * */
+ @GET("/device/sevenDayData")
+ suspend fun obtainSevenDayData(
+ @Header("token") token: String,
+ @Query("devCode") devCode: String?,
+ @Query("beginTime") beginTime: String?,
+ @Query("endTime") endTime: String?
+ ): String
+
+ /**
+ * 获取设备日用水量
+ * */
+ @GET("/device/totalData")
+ suspend fun obtainTotalDayData(
+ @Header("token") token: String,
+ @Query("devCode") devCode: String?,
+ @Query("beginTime") beginTime: String?,
+ @Query("endTime") endTime: 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 6f728e0..a8b320f 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
@@ -204,4 +204,18 @@
Constant.PAGE_LIMIT
)
}
+
+ /**
+ * 获取设备日用水量
+ */
+ suspend fun obtainSevenDayData(devCode: String?, beginTime: String?, endTime: String?): String {
+ return api.obtainSevenDayData(AuthenticationHelper.token!!, devCode, beginTime, endTime)
+ }
+
+ /**
+ * 获取设备累计用水量
+ */
+ suspend fun obtainTotalDayData(devCode: String?, beginTime: String?, endTime: String?): String {
+ return api.obtainTotalDayData(AuthenticationHelper.token!!, devCode, beginTime, endTime)
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt
index 7029d17..a8a2695 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt
@@ -1,22 +1,109 @@
package com.casic.qd.smartwell.view
+import androidx.lifecycle.ViewModelProvider
import com.casic.qd.smartwell.R
import com.casic.qd.smartwell.base.BaseActivity
-import kotlinx.android.synthetic.main.include_base_title.*
+import com.casic.qd.smartwell.extensions.convertColor
+import com.casic.qd.smartwell.extensions.timestampToLastWeekTime
+import com.casic.qd.smartwell.extensions.timestampToTime
+import com.casic.qd.smartwell.model.LineChartEntryModel
+import com.casic.qd.smartwell.utils.ChartViewHelper
+import com.casic.qd.smartwell.utils.Constant
+import com.casic.qd.smartwell.vm.DeviceViewModel
+import com.casic.qd.smartwell.widgets.DateSelectDialog
+import com.github.mikephil.charting.data.Entry
+import com.jzxiang.pickerview.data.Type
+import kotlinx.android.synthetic.main.activity_device_data_detail.*
+import kotlinx.android.synthetic.main.activity_main.rightOptionView
+import kotlinx.android.synthetic.main.activity_main.titleView
class DeviceDataDetailActivity : BaseActivity() {
- override fun initLayoutView(): Int = R.layout.activity_device_detail
+ private val kTag = "DeviceDataDetailActivity"
+ private lateinit var deviceCode: String
+ private lateinit var deviceViewModel: DeviceViewModel
+
+ override fun initLayoutView(): Int = R.layout.activity_device_data_detail
override fun setupTopBarLayout() {
- titleView.text = "历史数据"
+ deviceCode = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ titleView.text = String.format("${deviceCode}历史数据")
}
override fun initData() {
-
+ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java)
}
override fun initEvent() {
+ rightOptionView.setOnClickListener {
+ DateSelectDialog.Builder()
+ .setContext(this)
+ .setTitle("选择日期")
+ .setNegativeButton("取消")
+ .setPositiveButton("选好了")
+ .setOnDialogButtonClickListener(object :
+ DateSelectDialog.OnDialogButtonClickListener {
+ override fun onConfirmClick(startDate: String, endDate: String) {
+ deviceViewModel.obtainSevenDayData(deviceCode, startDate, endDate)
+ deviceViewModel.obtainTotalDayData(deviceCode, startDate, endDate)
+ }
+ override fun onCancelClick() {
+ //选择取消就默认加载近7天的数据
+ val time = System.currentTimeMillis()
+ val startTime = time.timestampToLastWeekTime()
+ val endTime = time.timestampToTime()
+ deviceViewModel.obtainSevenDayData(deviceCode, startTime, endTime)
+ deviceViewModel.obtainTotalDayData(deviceCode, startTime, endTime)
+ }
+ })
+ .setFragmentManager(supportFragmentManager)
+ .setCalendarType(Type.ALL)
+ .build().show()
+ }
+
+ //默认加载近一周的数据
+ val time = System.currentTimeMillis()
+ val startTime = time.timestampToLastWeekTime()
+ val endTime = time.timestampToTime()
+ deviceViewModel.obtainSevenDayData(deviceCode, startTime, endTime)
+ deviceViewModel.dayDataModel.observe(this, {
+ if (it.code == 200) {
+ val entryModels: MutableList = ArrayList()
+ val xAxisDate: MutableList = ArrayList()
+ val entries: ArrayList = ArrayList()
+ val entryModel = LineChartEntryModel()
+
+ entryModel.lineColor = Constant.COLORS[7].convertColor()
+ it.data?.forEachIndexed { index, dataBean ->
+ val split = dataBean.time.toString().split("-")
+ xAxisDate.add("${split[1]}/${split[2]}")
+
+ entries.add(Entry(index.toFloat(), dataBean.value!!.toFloat(), "日用水量"))
+ }
+ entryModel.entryList = entries
+ entryModels.add(entryModel)
+ ChartViewHelper.setLineChartData(dayWaterLineChart, xAxisDate, entryModels)
+ }
+ })
+
+ deviceViewModel.obtainTotalDayData(deviceCode, startTime, endTime)
+ deviceViewModel.totalDataModel.observe(this, {
+ val entryModels: MutableList = ArrayList()
+ val xAxisDate: MutableList = ArrayList()
+ val entries: ArrayList = ArrayList()
+ val entryModel = LineChartEntryModel()
+
+ entryModel.lineColor = Constant.COLORS[7].convertColor()
+ it.data?.forEachIndexed { index, dataBean ->
+ val split = dataBean.uptime.toString().split(" ")[0].split("-")
+ xAxisDate.add("${split[1]}/${split[2]}")
+
+ entries.add(Entry(index.toFloat(), dataBean.total!!.toFloat(), "总用水量"))
+ }
+ entryModel.entryList = entries
+ entryModels.add(entryModel)
+ ChartViewHelper.setLineChartData(totalWaterLineChart, xAxisDate, entryModels)
+ })
}
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 82386c9..3832c68 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -48,7 +48,7 @@
-
+
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/Long.kt
index 216e7cc..f53e831 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/Long.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/Long.kt
@@ -15,6 +15,14 @@
return dateFormat.format(calendar.time)
}
+fun Long.timestampToLastWeekTime(): String {
+ val dateFormat = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA)
+ val calendar = Calendar.getInstance()
+ calendar.time = Date(this)
+ calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) - 6)
+ return dateFormat.format(calendar.time)
+}
+
fun Long.timestampToLastMonthDate(): String {
val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA)
val calendar = Calendar.getInstance()
diff --git a/app/src/main/java/com/casic/qd/smartwell/model/DayDataModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/DayDataModel.kt
new file mode 100644
index 0000000..18d1399
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/model/DayDataModel.kt
@@ -0,0 +1,13 @@
+package com.casic.qd.smartwell.model
+
+class DayDataModel {
+ var code = 0
+ var data: List? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var time: String? = null
+ var value: String? = null
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/model/TotalDataModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/TotalDataModel.kt
new file mode 100644
index 0000000..30bf829
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/model/TotalDataModel.kt
@@ -0,0 +1,14 @@
+package com.casic.qd.smartwell.model
+
+class TotalDataModel {
+ var code = 0
+ var data: List? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var total: String? = null
+ var deviceState: String? = null
+ var uptime: String? = null
+ }
+}
\ 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 c5bf469..0c80ee9 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
@@ -202,4 +202,26 @@
@Query("offset") offset: Int,
@Query("limit") limit: Int
): String
+
+ /**
+ * 获取设备日用水量
+ * */
+ @GET("/device/sevenDayData")
+ suspend fun obtainSevenDayData(
+ @Header("token") token: String,
+ @Query("devCode") devCode: String?,
+ @Query("beginTime") beginTime: String?,
+ @Query("endTime") endTime: String?
+ ): String
+
+ /**
+ * 获取设备日用水量
+ * */
+ @GET("/device/totalData")
+ suspend fun obtainTotalDayData(
+ @Header("token") token: String,
+ @Query("devCode") devCode: String?,
+ @Query("beginTime") beginTime: String?,
+ @Query("endTime") endTime: 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 6f728e0..a8b320f 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
@@ -204,4 +204,18 @@
Constant.PAGE_LIMIT
)
}
+
+ /**
+ * 获取设备日用水量
+ */
+ suspend fun obtainSevenDayData(devCode: String?, beginTime: String?, endTime: String?): String {
+ return api.obtainSevenDayData(AuthenticationHelper.token!!, devCode, beginTime, endTime)
+ }
+
+ /**
+ * 获取设备累计用水量
+ */
+ suspend fun obtainTotalDayData(devCode: String?, beginTime: String?, endTime: String?): String {
+ return api.obtainTotalDayData(AuthenticationHelper.token!!, devCode, beginTime, endTime)
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt
index 7029d17..a8a2695 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt
@@ -1,22 +1,109 @@
package com.casic.qd.smartwell.view
+import androidx.lifecycle.ViewModelProvider
import com.casic.qd.smartwell.R
import com.casic.qd.smartwell.base.BaseActivity
-import kotlinx.android.synthetic.main.include_base_title.*
+import com.casic.qd.smartwell.extensions.convertColor
+import com.casic.qd.smartwell.extensions.timestampToLastWeekTime
+import com.casic.qd.smartwell.extensions.timestampToTime
+import com.casic.qd.smartwell.model.LineChartEntryModel
+import com.casic.qd.smartwell.utils.ChartViewHelper
+import com.casic.qd.smartwell.utils.Constant
+import com.casic.qd.smartwell.vm.DeviceViewModel
+import com.casic.qd.smartwell.widgets.DateSelectDialog
+import com.github.mikephil.charting.data.Entry
+import com.jzxiang.pickerview.data.Type
+import kotlinx.android.synthetic.main.activity_device_data_detail.*
+import kotlinx.android.synthetic.main.activity_main.rightOptionView
+import kotlinx.android.synthetic.main.activity_main.titleView
class DeviceDataDetailActivity : BaseActivity() {
- override fun initLayoutView(): Int = R.layout.activity_device_detail
+ private val kTag = "DeviceDataDetailActivity"
+ private lateinit var deviceCode: String
+ private lateinit var deviceViewModel: DeviceViewModel
+
+ override fun initLayoutView(): Int = R.layout.activity_device_data_detail
override fun setupTopBarLayout() {
- titleView.text = "历史数据"
+ deviceCode = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ titleView.text = String.format("${deviceCode}历史数据")
}
override fun initData() {
-
+ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java)
}
override fun initEvent() {
+ rightOptionView.setOnClickListener {
+ DateSelectDialog.Builder()
+ .setContext(this)
+ .setTitle("选择日期")
+ .setNegativeButton("取消")
+ .setPositiveButton("选好了")
+ .setOnDialogButtonClickListener(object :
+ DateSelectDialog.OnDialogButtonClickListener {
+ override fun onConfirmClick(startDate: String, endDate: String) {
+ deviceViewModel.obtainSevenDayData(deviceCode, startDate, endDate)
+ deviceViewModel.obtainTotalDayData(deviceCode, startDate, endDate)
+ }
+ override fun onCancelClick() {
+ //选择取消就默认加载近7天的数据
+ val time = System.currentTimeMillis()
+ val startTime = time.timestampToLastWeekTime()
+ val endTime = time.timestampToTime()
+ deviceViewModel.obtainSevenDayData(deviceCode, startTime, endTime)
+ deviceViewModel.obtainTotalDayData(deviceCode, startTime, endTime)
+ }
+ })
+ .setFragmentManager(supportFragmentManager)
+ .setCalendarType(Type.ALL)
+ .build().show()
+ }
+
+ //默认加载近一周的数据
+ val time = System.currentTimeMillis()
+ val startTime = time.timestampToLastWeekTime()
+ val endTime = time.timestampToTime()
+ deviceViewModel.obtainSevenDayData(deviceCode, startTime, endTime)
+ deviceViewModel.dayDataModel.observe(this, {
+ if (it.code == 200) {
+ val entryModels: MutableList = ArrayList()
+ val xAxisDate: MutableList = ArrayList()
+ val entries: ArrayList = ArrayList()
+ val entryModel = LineChartEntryModel()
+
+ entryModel.lineColor = Constant.COLORS[7].convertColor()
+ it.data?.forEachIndexed { index, dataBean ->
+ val split = dataBean.time.toString().split("-")
+ xAxisDate.add("${split[1]}/${split[2]}")
+
+ entries.add(Entry(index.toFloat(), dataBean.value!!.toFloat(), "日用水量"))
+ }
+ entryModel.entryList = entries
+ entryModels.add(entryModel)
+ ChartViewHelper.setLineChartData(dayWaterLineChart, xAxisDate, entryModels)
+ }
+ })
+
+ deviceViewModel.obtainTotalDayData(deviceCode, startTime, endTime)
+ deviceViewModel.totalDataModel.observe(this, {
+ val entryModels: MutableList = ArrayList()
+ val xAxisDate: MutableList = ArrayList()
+ val entries: ArrayList = ArrayList()
+ val entryModel = LineChartEntryModel()
+
+ entryModel.lineColor = Constant.COLORS[7].convertColor()
+ it.data?.forEachIndexed { index, dataBean ->
+ val split = dataBean.uptime.toString().split(" ")[0].split("-")
+ xAxisDate.add("${split[1]}/${split[2]}")
+
+ entries.add(Entry(index.toFloat(), dataBean.total!!.toFloat(), "总用水量"))
+ }
+ entryModel.entryList = entries
+ entryModels.add(entryModel)
+ ChartViewHelper.setLineChartData(totalWaterLineChart, xAxisDate, entryModels)
+ })
}
}
\ No newline at end of file
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 02435a3..3f4bb3c 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
@@ -1,7 +1,6 @@
package com.casic.qd.smartwell.view
import android.content.Context
-import android.content.Intent
import android.os.Handler
import android.os.Looper
import android.os.Message
@@ -22,6 +21,7 @@
import com.casic.qd.smartwell.vm.WaterStatisticsViewModel
import com.github.mikephil.charting.data.Entry
import com.pengxh.app.multilib.widget.dialog.AlertControlDialog
+import com.pengxh.app.multilib.widget.dialog.BottomActionSheet
import com.youth.banner.Banner
import com.youth.banner.adapter.BannerImageAdapter
import com.youth.banner.holder.BannerImageHolder
@@ -100,9 +100,20 @@
HomeRecycleAdapter.OnGridItemClickListener {
override fun onClick(position: Int) {
when (position) {
- 0 -> startActivity(Intent(context, MapActivity::class.java))
- 1 -> startActivity(Intent(context, SearchRecordActivity::class.java))
- 2 -> startActivity(Intent(context, StatisticsActivity::class.java))
+ 0 -> context.navigatePageTo(MapActivity::class.java)
+ 1 -> {
+ BottomActionSheet.Builder()
+ .setContext(context)
+ .setActionItemTitles(arrayOf("设备", "数据"))
+ .setOnActionSheetListener { index ->
+ when (index) {
+ 0 -> context.navigatePageTo(SearchDeviceActivity::class.java)
+ 1 -> context.navigatePageTo(SearchDataActivity::class.java)
+ }
+ }.build().show()
+
+ }
+ 2 -> context.navigatePageTo(StatisticsActivity::class.java)
}
}
})
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 82386c9..3832c68 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -48,7 +48,7 @@
-
+
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/Long.kt
index 216e7cc..f53e831 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/Long.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/Long.kt
@@ -15,6 +15,14 @@
return dateFormat.format(calendar.time)
}
+fun Long.timestampToLastWeekTime(): String {
+ val dateFormat = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA)
+ val calendar = Calendar.getInstance()
+ calendar.time = Date(this)
+ calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) - 6)
+ return dateFormat.format(calendar.time)
+}
+
fun Long.timestampToLastMonthDate(): String {
val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA)
val calendar = Calendar.getInstance()
diff --git a/app/src/main/java/com/casic/qd/smartwell/model/DayDataModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/DayDataModel.kt
new file mode 100644
index 0000000..18d1399
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/model/DayDataModel.kt
@@ -0,0 +1,13 @@
+package com.casic.qd.smartwell.model
+
+class DayDataModel {
+ var code = 0
+ var data: List? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var time: String? = null
+ var value: String? = null
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/model/TotalDataModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/TotalDataModel.kt
new file mode 100644
index 0000000..30bf829
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/model/TotalDataModel.kt
@@ -0,0 +1,14 @@
+package com.casic.qd.smartwell.model
+
+class TotalDataModel {
+ var code = 0
+ var data: List? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var total: String? = null
+ var deviceState: String? = null
+ var uptime: String? = null
+ }
+}
\ 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 c5bf469..0c80ee9 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
@@ -202,4 +202,26 @@
@Query("offset") offset: Int,
@Query("limit") limit: Int
): String
+
+ /**
+ * 获取设备日用水量
+ * */
+ @GET("/device/sevenDayData")
+ suspend fun obtainSevenDayData(
+ @Header("token") token: String,
+ @Query("devCode") devCode: String?,
+ @Query("beginTime") beginTime: String?,
+ @Query("endTime") endTime: String?
+ ): String
+
+ /**
+ * 获取设备日用水量
+ * */
+ @GET("/device/totalData")
+ suspend fun obtainTotalDayData(
+ @Header("token") token: String,
+ @Query("devCode") devCode: String?,
+ @Query("beginTime") beginTime: String?,
+ @Query("endTime") endTime: 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 6f728e0..a8b320f 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
@@ -204,4 +204,18 @@
Constant.PAGE_LIMIT
)
}
+
+ /**
+ * 获取设备日用水量
+ */
+ suspend fun obtainSevenDayData(devCode: String?, beginTime: String?, endTime: String?): String {
+ return api.obtainSevenDayData(AuthenticationHelper.token!!, devCode, beginTime, endTime)
+ }
+
+ /**
+ * 获取设备累计用水量
+ */
+ suspend fun obtainTotalDayData(devCode: String?, beginTime: String?, endTime: String?): String {
+ return api.obtainTotalDayData(AuthenticationHelper.token!!, devCode, beginTime, endTime)
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt
index 7029d17..a8a2695 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt
@@ -1,22 +1,109 @@
package com.casic.qd.smartwell.view
+import androidx.lifecycle.ViewModelProvider
import com.casic.qd.smartwell.R
import com.casic.qd.smartwell.base.BaseActivity
-import kotlinx.android.synthetic.main.include_base_title.*
+import com.casic.qd.smartwell.extensions.convertColor
+import com.casic.qd.smartwell.extensions.timestampToLastWeekTime
+import com.casic.qd.smartwell.extensions.timestampToTime
+import com.casic.qd.smartwell.model.LineChartEntryModel
+import com.casic.qd.smartwell.utils.ChartViewHelper
+import com.casic.qd.smartwell.utils.Constant
+import com.casic.qd.smartwell.vm.DeviceViewModel
+import com.casic.qd.smartwell.widgets.DateSelectDialog
+import com.github.mikephil.charting.data.Entry
+import com.jzxiang.pickerview.data.Type
+import kotlinx.android.synthetic.main.activity_device_data_detail.*
+import kotlinx.android.synthetic.main.activity_main.rightOptionView
+import kotlinx.android.synthetic.main.activity_main.titleView
class DeviceDataDetailActivity : BaseActivity() {
- override fun initLayoutView(): Int = R.layout.activity_device_detail
+ private val kTag = "DeviceDataDetailActivity"
+ private lateinit var deviceCode: String
+ private lateinit var deviceViewModel: DeviceViewModel
+
+ override fun initLayoutView(): Int = R.layout.activity_device_data_detail
override fun setupTopBarLayout() {
- titleView.text = "历史数据"
+ deviceCode = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ titleView.text = String.format("${deviceCode}历史数据")
}
override fun initData() {
-
+ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java)
}
override fun initEvent() {
+ rightOptionView.setOnClickListener {
+ DateSelectDialog.Builder()
+ .setContext(this)
+ .setTitle("选择日期")
+ .setNegativeButton("取消")
+ .setPositiveButton("选好了")
+ .setOnDialogButtonClickListener(object :
+ DateSelectDialog.OnDialogButtonClickListener {
+ override fun onConfirmClick(startDate: String, endDate: String) {
+ deviceViewModel.obtainSevenDayData(deviceCode, startDate, endDate)
+ deviceViewModel.obtainTotalDayData(deviceCode, startDate, endDate)
+ }
+ override fun onCancelClick() {
+ //选择取消就默认加载近7天的数据
+ val time = System.currentTimeMillis()
+ val startTime = time.timestampToLastWeekTime()
+ val endTime = time.timestampToTime()
+ deviceViewModel.obtainSevenDayData(deviceCode, startTime, endTime)
+ deviceViewModel.obtainTotalDayData(deviceCode, startTime, endTime)
+ }
+ })
+ .setFragmentManager(supportFragmentManager)
+ .setCalendarType(Type.ALL)
+ .build().show()
+ }
+
+ //默认加载近一周的数据
+ val time = System.currentTimeMillis()
+ val startTime = time.timestampToLastWeekTime()
+ val endTime = time.timestampToTime()
+ deviceViewModel.obtainSevenDayData(deviceCode, startTime, endTime)
+ deviceViewModel.dayDataModel.observe(this, {
+ if (it.code == 200) {
+ val entryModels: MutableList = ArrayList()
+ val xAxisDate: MutableList = ArrayList()
+ val entries: ArrayList = ArrayList()
+ val entryModel = LineChartEntryModel()
+
+ entryModel.lineColor = Constant.COLORS[7].convertColor()
+ it.data?.forEachIndexed { index, dataBean ->
+ val split = dataBean.time.toString().split("-")
+ xAxisDate.add("${split[1]}/${split[2]}")
+
+ entries.add(Entry(index.toFloat(), dataBean.value!!.toFloat(), "日用水量"))
+ }
+ entryModel.entryList = entries
+ entryModels.add(entryModel)
+ ChartViewHelper.setLineChartData(dayWaterLineChart, xAxisDate, entryModels)
+ }
+ })
+
+ deviceViewModel.obtainTotalDayData(deviceCode, startTime, endTime)
+ deviceViewModel.totalDataModel.observe(this, {
+ val entryModels: MutableList = ArrayList()
+ val xAxisDate: MutableList = ArrayList()
+ val entries: ArrayList = ArrayList()
+ val entryModel = LineChartEntryModel()
+
+ entryModel.lineColor = Constant.COLORS[7].convertColor()
+ it.data?.forEachIndexed { index, dataBean ->
+ val split = dataBean.uptime.toString().split(" ")[0].split("-")
+ xAxisDate.add("${split[1]}/${split[2]}")
+
+ entries.add(Entry(index.toFloat(), dataBean.total!!.toFloat(), "总用水量"))
+ }
+ entryModel.entryList = entries
+ entryModels.add(entryModel)
+ ChartViewHelper.setLineChartData(totalWaterLineChart, xAxisDate, entryModels)
+ })
}
}
\ No newline at end of file
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 02435a3..3f4bb3c 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
@@ -1,7 +1,6 @@
package com.casic.qd.smartwell.view
import android.content.Context
-import android.content.Intent
import android.os.Handler
import android.os.Looper
import android.os.Message
@@ -22,6 +21,7 @@
import com.casic.qd.smartwell.vm.WaterStatisticsViewModel
import com.github.mikephil.charting.data.Entry
import com.pengxh.app.multilib.widget.dialog.AlertControlDialog
+import com.pengxh.app.multilib.widget.dialog.BottomActionSheet
import com.youth.banner.Banner
import com.youth.banner.adapter.BannerImageAdapter
import com.youth.banner.holder.BannerImageHolder
@@ -100,9 +100,20 @@
HomeRecycleAdapter.OnGridItemClickListener {
override fun onClick(position: Int) {
when (position) {
- 0 -> startActivity(Intent(context, MapActivity::class.java))
- 1 -> startActivity(Intent(context, SearchRecordActivity::class.java))
- 2 -> startActivity(Intent(context, StatisticsActivity::class.java))
+ 0 -> context.navigatePageTo(MapActivity::class.java)
+ 1 -> {
+ BottomActionSheet.Builder()
+ .setContext(context)
+ .setActionItemTitles(arrayOf("设备", "数据"))
+ .setOnActionSheetListener { index ->
+ when (index) {
+ 0 -> context.navigatePageTo(SearchDeviceActivity::class.java)
+ 1 -> context.navigatePageTo(SearchDataActivity::class.java)
+ }
+ }.build().show()
+
+ }
+ 2 -> context.navigatePageTo(StatisticsActivity::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 8f54163..5285a9f 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
@@ -13,11 +13,6 @@
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() {
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 82386c9..3832c68 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -48,7 +48,7 @@
-
+
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/Long.kt
index 216e7cc..f53e831 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/Long.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/Long.kt
@@ -15,6 +15,14 @@
return dateFormat.format(calendar.time)
}
+fun Long.timestampToLastWeekTime(): String {
+ val dateFormat = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA)
+ val calendar = Calendar.getInstance()
+ calendar.time = Date(this)
+ calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) - 6)
+ return dateFormat.format(calendar.time)
+}
+
fun Long.timestampToLastMonthDate(): String {
val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA)
val calendar = Calendar.getInstance()
diff --git a/app/src/main/java/com/casic/qd/smartwell/model/DayDataModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/DayDataModel.kt
new file mode 100644
index 0000000..18d1399
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/model/DayDataModel.kt
@@ -0,0 +1,13 @@
+package com.casic.qd.smartwell.model
+
+class DayDataModel {
+ var code = 0
+ var data: List? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var time: String? = null
+ var value: String? = null
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/model/TotalDataModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/TotalDataModel.kt
new file mode 100644
index 0000000..30bf829
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/model/TotalDataModel.kt
@@ -0,0 +1,14 @@
+package com.casic.qd.smartwell.model
+
+class TotalDataModel {
+ var code = 0
+ var data: List? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var total: String? = null
+ var deviceState: String? = null
+ var uptime: String? = null
+ }
+}
\ 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 c5bf469..0c80ee9 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
@@ -202,4 +202,26 @@
@Query("offset") offset: Int,
@Query("limit") limit: Int
): String
+
+ /**
+ * 获取设备日用水量
+ * */
+ @GET("/device/sevenDayData")
+ suspend fun obtainSevenDayData(
+ @Header("token") token: String,
+ @Query("devCode") devCode: String?,
+ @Query("beginTime") beginTime: String?,
+ @Query("endTime") endTime: String?
+ ): String
+
+ /**
+ * 获取设备日用水量
+ * */
+ @GET("/device/totalData")
+ suspend fun obtainTotalDayData(
+ @Header("token") token: String,
+ @Query("devCode") devCode: String?,
+ @Query("beginTime") beginTime: String?,
+ @Query("endTime") endTime: 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 6f728e0..a8b320f 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
@@ -204,4 +204,18 @@
Constant.PAGE_LIMIT
)
}
+
+ /**
+ * 获取设备日用水量
+ */
+ suspend fun obtainSevenDayData(devCode: String?, beginTime: String?, endTime: String?): String {
+ return api.obtainSevenDayData(AuthenticationHelper.token!!, devCode, beginTime, endTime)
+ }
+
+ /**
+ * 获取设备累计用水量
+ */
+ suspend fun obtainTotalDayData(devCode: String?, beginTime: String?, endTime: String?): String {
+ return api.obtainTotalDayData(AuthenticationHelper.token!!, devCode, beginTime, endTime)
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt
index 7029d17..a8a2695 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt
@@ -1,22 +1,109 @@
package com.casic.qd.smartwell.view
+import androidx.lifecycle.ViewModelProvider
import com.casic.qd.smartwell.R
import com.casic.qd.smartwell.base.BaseActivity
-import kotlinx.android.synthetic.main.include_base_title.*
+import com.casic.qd.smartwell.extensions.convertColor
+import com.casic.qd.smartwell.extensions.timestampToLastWeekTime
+import com.casic.qd.smartwell.extensions.timestampToTime
+import com.casic.qd.smartwell.model.LineChartEntryModel
+import com.casic.qd.smartwell.utils.ChartViewHelper
+import com.casic.qd.smartwell.utils.Constant
+import com.casic.qd.smartwell.vm.DeviceViewModel
+import com.casic.qd.smartwell.widgets.DateSelectDialog
+import com.github.mikephil.charting.data.Entry
+import com.jzxiang.pickerview.data.Type
+import kotlinx.android.synthetic.main.activity_device_data_detail.*
+import kotlinx.android.synthetic.main.activity_main.rightOptionView
+import kotlinx.android.synthetic.main.activity_main.titleView
class DeviceDataDetailActivity : BaseActivity() {
- override fun initLayoutView(): Int = R.layout.activity_device_detail
+ private val kTag = "DeviceDataDetailActivity"
+ private lateinit var deviceCode: String
+ private lateinit var deviceViewModel: DeviceViewModel
+
+ override fun initLayoutView(): Int = R.layout.activity_device_data_detail
override fun setupTopBarLayout() {
- titleView.text = "历史数据"
+ deviceCode = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ titleView.text = String.format("${deviceCode}历史数据")
}
override fun initData() {
-
+ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java)
}
override fun initEvent() {
+ rightOptionView.setOnClickListener {
+ DateSelectDialog.Builder()
+ .setContext(this)
+ .setTitle("选择日期")
+ .setNegativeButton("取消")
+ .setPositiveButton("选好了")
+ .setOnDialogButtonClickListener(object :
+ DateSelectDialog.OnDialogButtonClickListener {
+ override fun onConfirmClick(startDate: String, endDate: String) {
+ deviceViewModel.obtainSevenDayData(deviceCode, startDate, endDate)
+ deviceViewModel.obtainTotalDayData(deviceCode, startDate, endDate)
+ }
+ override fun onCancelClick() {
+ //选择取消就默认加载近7天的数据
+ val time = System.currentTimeMillis()
+ val startTime = time.timestampToLastWeekTime()
+ val endTime = time.timestampToTime()
+ deviceViewModel.obtainSevenDayData(deviceCode, startTime, endTime)
+ deviceViewModel.obtainTotalDayData(deviceCode, startTime, endTime)
+ }
+ })
+ .setFragmentManager(supportFragmentManager)
+ .setCalendarType(Type.ALL)
+ .build().show()
+ }
+
+ //默认加载近一周的数据
+ val time = System.currentTimeMillis()
+ val startTime = time.timestampToLastWeekTime()
+ val endTime = time.timestampToTime()
+ deviceViewModel.obtainSevenDayData(deviceCode, startTime, endTime)
+ deviceViewModel.dayDataModel.observe(this, {
+ if (it.code == 200) {
+ val entryModels: MutableList = ArrayList()
+ val xAxisDate: MutableList = ArrayList()
+ val entries: ArrayList = ArrayList()
+ val entryModel = LineChartEntryModel()
+
+ entryModel.lineColor = Constant.COLORS[7].convertColor()
+ it.data?.forEachIndexed { index, dataBean ->
+ val split = dataBean.time.toString().split("-")
+ xAxisDate.add("${split[1]}/${split[2]}")
+
+ entries.add(Entry(index.toFloat(), dataBean.value!!.toFloat(), "日用水量"))
+ }
+ entryModel.entryList = entries
+ entryModels.add(entryModel)
+ ChartViewHelper.setLineChartData(dayWaterLineChart, xAxisDate, entryModels)
+ }
+ })
+
+ deviceViewModel.obtainTotalDayData(deviceCode, startTime, endTime)
+ deviceViewModel.totalDataModel.observe(this, {
+ val entryModels: MutableList = ArrayList()
+ val xAxisDate: MutableList = ArrayList()
+ val entries: ArrayList = ArrayList()
+ val entryModel = LineChartEntryModel()
+
+ entryModel.lineColor = Constant.COLORS[7].convertColor()
+ it.data?.forEachIndexed { index, dataBean ->
+ val split = dataBean.uptime.toString().split(" ")[0].split("-")
+ xAxisDate.add("${split[1]}/${split[2]}")
+
+ entries.add(Entry(index.toFloat(), dataBean.total!!.toFloat(), "总用水量"))
+ }
+ entryModel.entryList = entries
+ entryModels.add(entryModel)
+ ChartViewHelper.setLineChartData(totalWaterLineChart, xAxisDate, entryModels)
+ })
}
}
\ No newline at end of file
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 02435a3..3f4bb3c 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
@@ -1,7 +1,6 @@
package com.casic.qd.smartwell.view
import android.content.Context
-import android.content.Intent
import android.os.Handler
import android.os.Looper
import android.os.Message
@@ -22,6 +21,7 @@
import com.casic.qd.smartwell.vm.WaterStatisticsViewModel
import com.github.mikephil.charting.data.Entry
import com.pengxh.app.multilib.widget.dialog.AlertControlDialog
+import com.pengxh.app.multilib.widget.dialog.BottomActionSheet
import com.youth.banner.Banner
import com.youth.banner.adapter.BannerImageAdapter
import com.youth.banner.holder.BannerImageHolder
@@ -100,9 +100,20 @@
HomeRecycleAdapter.OnGridItemClickListener {
override fun onClick(position: Int) {
when (position) {
- 0 -> startActivity(Intent(context, MapActivity::class.java))
- 1 -> startActivity(Intent(context, SearchRecordActivity::class.java))
- 2 -> startActivity(Intent(context, StatisticsActivity::class.java))
+ 0 -> context.navigatePageTo(MapActivity::class.java)
+ 1 -> {
+ BottomActionSheet.Builder()
+ .setContext(context)
+ .setActionItemTitles(arrayOf("设备", "数据"))
+ .setOnActionSheetListener { index ->
+ when (index) {
+ 0 -> context.navigatePageTo(SearchDeviceActivity::class.java)
+ 1 -> context.navigatePageTo(SearchDataActivity::class.java)
+ }
+ }.build().show()
+
+ }
+ 2 -> context.navigatePageTo(StatisticsActivity::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 8f54163..5285a9f 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
@@ -13,11 +13,6 @@
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() {
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt
new file mode 100644
index 0000000..e6a38e4
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt
@@ -0,0 +1,168 @@
+package com.casic.qd.smartwell.view
+
+import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseActivity
+import kotlinx.android.synthetic.main.include_base_title.*
+
+/**
+ * @author a203
+ * @description 记录查询界面
+ * @date 2022/2/17 14:33
+ * @email 290677893@qq.com
+ */
+class SearchDataActivity : BaseActivity() {
+
+// 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 deptId = ""
+// private var deviceState = ""
+// private var areaId = ""
+
+ override fun initLayoutView(): Int = R.layout.activity_data_search
+
+ override fun setupTopBarLayout() {
+ titleView.text = "数据查询"
+ }
+
+ 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("03")
+// }
+// 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, _, position, tag ->
+// ownerShipView.text = tag
+// this.deptId = ownerShipModel[position].id.toString()
+//
+// dialog.dismiss()
+// }.build().show()
+// }
+// })
+//
+// deviceStateView.setOnClickListener {
+// QMUIBottomSheet.BottomListSheetBuilder(this)
+// .setTitle("在线情况")
+// .addItem("在线")
+// .addItem("离线")
+// .setGravityCenter(true)
+// .setOnSheetItemClickListener { dialog, _, _, tag ->
+// deviceStateView.text = tag
+// this.deviceState = if (tag == "在线") {
+// "1"
+// } else {
+// "0"
+// }
+//
+// 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,
+// deptId,
+// deviceState,
+// 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 82386c9..3832c68 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -48,7 +48,7 @@
-
+
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/Long.kt
index 216e7cc..f53e831 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/Long.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/Long.kt
@@ -15,6 +15,14 @@
return dateFormat.format(calendar.time)
}
+fun Long.timestampToLastWeekTime(): String {
+ val dateFormat = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA)
+ val calendar = Calendar.getInstance()
+ calendar.time = Date(this)
+ calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) - 6)
+ return dateFormat.format(calendar.time)
+}
+
fun Long.timestampToLastMonthDate(): String {
val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA)
val calendar = Calendar.getInstance()
diff --git a/app/src/main/java/com/casic/qd/smartwell/model/DayDataModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/DayDataModel.kt
new file mode 100644
index 0000000..18d1399
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/model/DayDataModel.kt
@@ -0,0 +1,13 @@
+package com.casic.qd.smartwell.model
+
+class DayDataModel {
+ var code = 0
+ var data: List? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var time: String? = null
+ var value: String? = null
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/model/TotalDataModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/TotalDataModel.kt
new file mode 100644
index 0000000..30bf829
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/model/TotalDataModel.kt
@@ -0,0 +1,14 @@
+package com.casic.qd.smartwell.model
+
+class TotalDataModel {
+ var code = 0
+ var data: List? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var total: String? = null
+ var deviceState: String? = null
+ var uptime: String? = null
+ }
+}
\ 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 c5bf469..0c80ee9 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
@@ -202,4 +202,26 @@
@Query("offset") offset: Int,
@Query("limit") limit: Int
): String
+
+ /**
+ * 获取设备日用水量
+ * */
+ @GET("/device/sevenDayData")
+ suspend fun obtainSevenDayData(
+ @Header("token") token: String,
+ @Query("devCode") devCode: String?,
+ @Query("beginTime") beginTime: String?,
+ @Query("endTime") endTime: String?
+ ): String
+
+ /**
+ * 获取设备日用水量
+ * */
+ @GET("/device/totalData")
+ suspend fun obtainTotalDayData(
+ @Header("token") token: String,
+ @Query("devCode") devCode: String?,
+ @Query("beginTime") beginTime: String?,
+ @Query("endTime") endTime: 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 6f728e0..a8b320f 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
@@ -204,4 +204,18 @@
Constant.PAGE_LIMIT
)
}
+
+ /**
+ * 获取设备日用水量
+ */
+ suspend fun obtainSevenDayData(devCode: String?, beginTime: String?, endTime: String?): String {
+ return api.obtainSevenDayData(AuthenticationHelper.token!!, devCode, beginTime, endTime)
+ }
+
+ /**
+ * 获取设备累计用水量
+ */
+ suspend fun obtainTotalDayData(devCode: String?, beginTime: String?, endTime: String?): String {
+ return api.obtainTotalDayData(AuthenticationHelper.token!!, devCode, beginTime, endTime)
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt
index 7029d17..a8a2695 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt
@@ -1,22 +1,109 @@
package com.casic.qd.smartwell.view
+import androidx.lifecycle.ViewModelProvider
import com.casic.qd.smartwell.R
import com.casic.qd.smartwell.base.BaseActivity
-import kotlinx.android.synthetic.main.include_base_title.*
+import com.casic.qd.smartwell.extensions.convertColor
+import com.casic.qd.smartwell.extensions.timestampToLastWeekTime
+import com.casic.qd.smartwell.extensions.timestampToTime
+import com.casic.qd.smartwell.model.LineChartEntryModel
+import com.casic.qd.smartwell.utils.ChartViewHelper
+import com.casic.qd.smartwell.utils.Constant
+import com.casic.qd.smartwell.vm.DeviceViewModel
+import com.casic.qd.smartwell.widgets.DateSelectDialog
+import com.github.mikephil.charting.data.Entry
+import com.jzxiang.pickerview.data.Type
+import kotlinx.android.synthetic.main.activity_device_data_detail.*
+import kotlinx.android.synthetic.main.activity_main.rightOptionView
+import kotlinx.android.synthetic.main.activity_main.titleView
class DeviceDataDetailActivity : BaseActivity() {
- override fun initLayoutView(): Int = R.layout.activity_device_detail
+ private val kTag = "DeviceDataDetailActivity"
+ private lateinit var deviceCode: String
+ private lateinit var deviceViewModel: DeviceViewModel
+
+ override fun initLayoutView(): Int = R.layout.activity_device_data_detail
override fun setupTopBarLayout() {
- titleView.text = "历史数据"
+ deviceCode = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ titleView.text = String.format("${deviceCode}历史数据")
}
override fun initData() {
-
+ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java)
}
override fun initEvent() {
+ rightOptionView.setOnClickListener {
+ DateSelectDialog.Builder()
+ .setContext(this)
+ .setTitle("选择日期")
+ .setNegativeButton("取消")
+ .setPositiveButton("选好了")
+ .setOnDialogButtonClickListener(object :
+ DateSelectDialog.OnDialogButtonClickListener {
+ override fun onConfirmClick(startDate: String, endDate: String) {
+ deviceViewModel.obtainSevenDayData(deviceCode, startDate, endDate)
+ deviceViewModel.obtainTotalDayData(deviceCode, startDate, endDate)
+ }
+ override fun onCancelClick() {
+ //选择取消就默认加载近7天的数据
+ val time = System.currentTimeMillis()
+ val startTime = time.timestampToLastWeekTime()
+ val endTime = time.timestampToTime()
+ deviceViewModel.obtainSevenDayData(deviceCode, startTime, endTime)
+ deviceViewModel.obtainTotalDayData(deviceCode, startTime, endTime)
+ }
+ })
+ .setFragmentManager(supportFragmentManager)
+ .setCalendarType(Type.ALL)
+ .build().show()
+ }
+
+ //默认加载近一周的数据
+ val time = System.currentTimeMillis()
+ val startTime = time.timestampToLastWeekTime()
+ val endTime = time.timestampToTime()
+ deviceViewModel.obtainSevenDayData(deviceCode, startTime, endTime)
+ deviceViewModel.dayDataModel.observe(this, {
+ if (it.code == 200) {
+ val entryModels: MutableList = ArrayList()
+ val xAxisDate: MutableList = ArrayList()
+ val entries: ArrayList = ArrayList()
+ val entryModel = LineChartEntryModel()
+
+ entryModel.lineColor = Constant.COLORS[7].convertColor()
+ it.data?.forEachIndexed { index, dataBean ->
+ val split = dataBean.time.toString().split("-")
+ xAxisDate.add("${split[1]}/${split[2]}")
+
+ entries.add(Entry(index.toFloat(), dataBean.value!!.toFloat(), "日用水量"))
+ }
+ entryModel.entryList = entries
+ entryModels.add(entryModel)
+ ChartViewHelper.setLineChartData(dayWaterLineChart, xAxisDate, entryModels)
+ }
+ })
+
+ deviceViewModel.obtainTotalDayData(deviceCode, startTime, endTime)
+ deviceViewModel.totalDataModel.observe(this, {
+ val entryModels: MutableList = ArrayList()
+ val xAxisDate: MutableList = ArrayList()
+ val entries: ArrayList = ArrayList()
+ val entryModel = LineChartEntryModel()
+
+ entryModel.lineColor = Constant.COLORS[7].convertColor()
+ it.data?.forEachIndexed { index, dataBean ->
+ val split = dataBean.uptime.toString().split(" ")[0].split("-")
+ xAxisDate.add("${split[1]}/${split[2]}")
+
+ entries.add(Entry(index.toFloat(), dataBean.total!!.toFloat(), "总用水量"))
+ }
+ entryModel.entryList = entries
+ entryModels.add(entryModel)
+ ChartViewHelper.setLineChartData(totalWaterLineChart, xAxisDate, entryModels)
+ })
}
}
\ No newline at end of file
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 02435a3..3f4bb3c 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
@@ -1,7 +1,6 @@
package com.casic.qd.smartwell.view
import android.content.Context
-import android.content.Intent
import android.os.Handler
import android.os.Looper
import android.os.Message
@@ -22,6 +21,7 @@
import com.casic.qd.smartwell.vm.WaterStatisticsViewModel
import com.github.mikephil.charting.data.Entry
import com.pengxh.app.multilib.widget.dialog.AlertControlDialog
+import com.pengxh.app.multilib.widget.dialog.BottomActionSheet
import com.youth.banner.Banner
import com.youth.banner.adapter.BannerImageAdapter
import com.youth.banner.holder.BannerImageHolder
@@ -100,9 +100,20 @@
HomeRecycleAdapter.OnGridItemClickListener {
override fun onClick(position: Int) {
when (position) {
- 0 -> startActivity(Intent(context, MapActivity::class.java))
- 1 -> startActivity(Intent(context, SearchRecordActivity::class.java))
- 2 -> startActivity(Intent(context, StatisticsActivity::class.java))
+ 0 -> context.navigatePageTo(MapActivity::class.java)
+ 1 -> {
+ BottomActionSheet.Builder()
+ .setContext(context)
+ .setActionItemTitles(arrayOf("设备", "数据"))
+ .setOnActionSheetListener { index ->
+ when (index) {
+ 0 -> context.navigatePageTo(SearchDeviceActivity::class.java)
+ 1 -> context.navigatePageTo(SearchDataActivity::class.java)
+ }
+ }.build().show()
+
+ }
+ 2 -> context.navigatePageTo(StatisticsActivity::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 8f54163..5285a9f 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
@@ -13,11 +13,6 @@
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() {
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt
new file mode 100644
index 0000000..e6a38e4
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt
@@ -0,0 +1,168 @@
+package com.casic.qd.smartwell.view
+
+import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseActivity
+import kotlinx.android.synthetic.main.include_base_title.*
+
+/**
+ * @author a203
+ * @description 记录查询界面
+ * @date 2022/2/17 14:33
+ * @email 290677893@qq.com
+ */
+class SearchDataActivity : BaseActivity() {
+
+// 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 deptId = ""
+// private var deviceState = ""
+// private var areaId = ""
+
+ override fun initLayoutView(): Int = R.layout.activity_data_search
+
+ override fun setupTopBarLayout() {
+ titleView.text = "数据查询"
+ }
+
+ 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("03")
+// }
+// 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, _, position, tag ->
+// ownerShipView.text = tag
+// this.deptId = ownerShipModel[position].id.toString()
+//
+// dialog.dismiss()
+// }.build().show()
+// }
+// })
+//
+// deviceStateView.setOnClickListener {
+// QMUIBottomSheet.BottomListSheetBuilder(this)
+// .setTitle("在线情况")
+// .addItem("在线")
+// .addItem("离线")
+// .setGravityCenter(true)
+// .setOnSheetItemClickListener { dialog, _, _, tag ->
+// deviceStateView.text = tag
+// this.deviceState = if (tag == "在线") {
+// "1"
+// } else {
+// "0"
+// }
+//
+// 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,
+// deptId,
+// deviceState,
+// 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/SearchDeviceActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt
new file mode 100644
index 0000000..cf0c05f
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt
@@ -0,0 +1,184 @@
+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_device_search.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+/**
+ * @author a203
+ * @description 记录查询界面
+ * @date 2022/2/17 14:33
+ * @email 290677893@qq.com
+ */
+class SearchDeviceActivity : BaseActivity() {
+
+ 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 deptId = ""
+ private var deviceState = ""
+ private var areaId = ""
+
+ override fun initLayoutView(): Int = R.layout.activity_device_search
+
+ override fun setupTopBarLayout() {
+ titleView.text = "设备查询"
+ }
+
+ 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("03")
+ }
+ 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, _, position, tag ->
+ ownerShipView.text = tag
+ this.deptId = ownerShipModel[position].id.toString()
+
+ dialog.dismiss()
+ }.build().show()
+ }
+ })
+
+ deviceStateView.setOnClickListener {
+ QMUIBottomSheet.BottomListSheetBuilder(this)
+ .setTitle("在线情况")
+ .addItem("在线")
+ .addItem("离线")
+ .setGravityCenter(true)
+ .setOnSheetItemClickListener { dialog, _, _, tag ->
+ deviceStateView.text = tag
+ this.deviceState = if (tag == "在线") {
+ "1"
+ } else {
+ "0"
+ }
+
+ 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,
+ deptId,
+ deviceState,
+ 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 82386c9..3832c68 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -48,7 +48,7 @@
-
+
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/Long.kt
index 216e7cc..f53e831 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/Long.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/Long.kt
@@ -15,6 +15,14 @@
return dateFormat.format(calendar.time)
}
+fun Long.timestampToLastWeekTime(): String {
+ val dateFormat = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA)
+ val calendar = Calendar.getInstance()
+ calendar.time = Date(this)
+ calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) - 6)
+ return dateFormat.format(calendar.time)
+}
+
fun Long.timestampToLastMonthDate(): String {
val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA)
val calendar = Calendar.getInstance()
diff --git a/app/src/main/java/com/casic/qd/smartwell/model/DayDataModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/DayDataModel.kt
new file mode 100644
index 0000000..18d1399
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/model/DayDataModel.kt
@@ -0,0 +1,13 @@
+package com.casic.qd.smartwell.model
+
+class DayDataModel {
+ var code = 0
+ var data: List? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var time: String? = null
+ var value: String? = null
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/model/TotalDataModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/TotalDataModel.kt
new file mode 100644
index 0000000..30bf829
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/model/TotalDataModel.kt
@@ -0,0 +1,14 @@
+package com.casic.qd.smartwell.model
+
+class TotalDataModel {
+ var code = 0
+ var data: List? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var total: String? = null
+ var deviceState: String? = null
+ var uptime: String? = null
+ }
+}
\ 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 c5bf469..0c80ee9 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
@@ -202,4 +202,26 @@
@Query("offset") offset: Int,
@Query("limit") limit: Int
): String
+
+ /**
+ * 获取设备日用水量
+ * */
+ @GET("/device/sevenDayData")
+ suspend fun obtainSevenDayData(
+ @Header("token") token: String,
+ @Query("devCode") devCode: String?,
+ @Query("beginTime") beginTime: String?,
+ @Query("endTime") endTime: String?
+ ): String
+
+ /**
+ * 获取设备日用水量
+ * */
+ @GET("/device/totalData")
+ suspend fun obtainTotalDayData(
+ @Header("token") token: String,
+ @Query("devCode") devCode: String?,
+ @Query("beginTime") beginTime: String?,
+ @Query("endTime") endTime: 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 6f728e0..a8b320f 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
@@ -204,4 +204,18 @@
Constant.PAGE_LIMIT
)
}
+
+ /**
+ * 获取设备日用水量
+ */
+ suspend fun obtainSevenDayData(devCode: String?, beginTime: String?, endTime: String?): String {
+ return api.obtainSevenDayData(AuthenticationHelper.token!!, devCode, beginTime, endTime)
+ }
+
+ /**
+ * 获取设备累计用水量
+ */
+ suspend fun obtainTotalDayData(devCode: String?, beginTime: String?, endTime: String?): String {
+ return api.obtainTotalDayData(AuthenticationHelper.token!!, devCode, beginTime, endTime)
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt
index 7029d17..a8a2695 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt
@@ -1,22 +1,109 @@
package com.casic.qd.smartwell.view
+import androidx.lifecycle.ViewModelProvider
import com.casic.qd.smartwell.R
import com.casic.qd.smartwell.base.BaseActivity
-import kotlinx.android.synthetic.main.include_base_title.*
+import com.casic.qd.smartwell.extensions.convertColor
+import com.casic.qd.smartwell.extensions.timestampToLastWeekTime
+import com.casic.qd.smartwell.extensions.timestampToTime
+import com.casic.qd.smartwell.model.LineChartEntryModel
+import com.casic.qd.smartwell.utils.ChartViewHelper
+import com.casic.qd.smartwell.utils.Constant
+import com.casic.qd.smartwell.vm.DeviceViewModel
+import com.casic.qd.smartwell.widgets.DateSelectDialog
+import com.github.mikephil.charting.data.Entry
+import com.jzxiang.pickerview.data.Type
+import kotlinx.android.synthetic.main.activity_device_data_detail.*
+import kotlinx.android.synthetic.main.activity_main.rightOptionView
+import kotlinx.android.synthetic.main.activity_main.titleView
class DeviceDataDetailActivity : BaseActivity() {
- override fun initLayoutView(): Int = R.layout.activity_device_detail
+ private val kTag = "DeviceDataDetailActivity"
+ private lateinit var deviceCode: String
+ private lateinit var deviceViewModel: DeviceViewModel
+
+ override fun initLayoutView(): Int = R.layout.activity_device_data_detail
override fun setupTopBarLayout() {
- titleView.text = "历史数据"
+ deviceCode = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ titleView.text = String.format("${deviceCode}历史数据")
}
override fun initData() {
-
+ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java)
}
override fun initEvent() {
+ rightOptionView.setOnClickListener {
+ DateSelectDialog.Builder()
+ .setContext(this)
+ .setTitle("选择日期")
+ .setNegativeButton("取消")
+ .setPositiveButton("选好了")
+ .setOnDialogButtonClickListener(object :
+ DateSelectDialog.OnDialogButtonClickListener {
+ override fun onConfirmClick(startDate: String, endDate: String) {
+ deviceViewModel.obtainSevenDayData(deviceCode, startDate, endDate)
+ deviceViewModel.obtainTotalDayData(deviceCode, startDate, endDate)
+ }
+ override fun onCancelClick() {
+ //选择取消就默认加载近7天的数据
+ val time = System.currentTimeMillis()
+ val startTime = time.timestampToLastWeekTime()
+ val endTime = time.timestampToTime()
+ deviceViewModel.obtainSevenDayData(deviceCode, startTime, endTime)
+ deviceViewModel.obtainTotalDayData(deviceCode, startTime, endTime)
+ }
+ })
+ .setFragmentManager(supportFragmentManager)
+ .setCalendarType(Type.ALL)
+ .build().show()
+ }
+
+ //默认加载近一周的数据
+ val time = System.currentTimeMillis()
+ val startTime = time.timestampToLastWeekTime()
+ val endTime = time.timestampToTime()
+ deviceViewModel.obtainSevenDayData(deviceCode, startTime, endTime)
+ deviceViewModel.dayDataModel.observe(this, {
+ if (it.code == 200) {
+ val entryModels: MutableList = ArrayList()
+ val xAxisDate: MutableList = ArrayList()
+ val entries: ArrayList = ArrayList()
+ val entryModel = LineChartEntryModel()
+
+ entryModel.lineColor = Constant.COLORS[7].convertColor()
+ it.data?.forEachIndexed { index, dataBean ->
+ val split = dataBean.time.toString().split("-")
+ xAxisDate.add("${split[1]}/${split[2]}")
+
+ entries.add(Entry(index.toFloat(), dataBean.value!!.toFloat(), "日用水量"))
+ }
+ entryModel.entryList = entries
+ entryModels.add(entryModel)
+ ChartViewHelper.setLineChartData(dayWaterLineChart, xAxisDate, entryModels)
+ }
+ })
+
+ deviceViewModel.obtainTotalDayData(deviceCode, startTime, endTime)
+ deviceViewModel.totalDataModel.observe(this, {
+ val entryModels: MutableList = ArrayList()
+ val xAxisDate: MutableList = ArrayList()
+ val entries: ArrayList = ArrayList()
+ val entryModel = LineChartEntryModel()
+
+ entryModel.lineColor = Constant.COLORS[7].convertColor()
+ it.data?.forEachIndexed { index, dataBean ->
+ val split = dataBean.uptime.toString().split(" ")[0].split("-")
+ xAxisDate.add("${split[1]}/${split[2]}")
+
+ entries.add(Entry(index.toFloat(), dataBean.total!!.toFloat(), "总用水量"))
+ }
+ entryModel.entryList = entries
+ entryModels.add(entryModel)
+ ChartViewHelper.setLineChartData(totalWaterLineChart, xAxisDate, entryModels)
+ })
}
}
\ No newline at end of file
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 02435a3..3f4bb3c 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
@@ -1,7 +1,6 @@
package com.casic.qd.smartwell.view
import android.content.Context
-import android.content.Intent
import android.os.Handler
import android.os.Looper
import android.os.Message
@@ -22,6 +21,7 @@
import com.casic.qd.smartwell.vm.WaterStatisticsViewModel
import com.github.mikephil.charting.data.Entry
import com.pengxh.app.multilib.widget.dialog.AlertControlDialog
+import com.pengxh.app.multilib.widget.dialog.BottomActionSheet
import com.youth.banner.Banner
import com.youth.banner.adapter.BannerImageAdapter
import com.youth.banner.holder.BannerImageHolder
@@ -100,9 +100,20 @@
HomeRecycleAdapter.OnGridItemClickListener {
override fun onClick(position: Int) {
when (position) {
- 0 -> startActivity(Intent(context, MapActivity::class.java))
- 1 -> startActivity(Intent(context, SearchRecordActivity::class.java))
- 2 -> startActivity(Intent(context, StatisticsActivity::class.java))
+ 0 -> context.navigatePageTo(MapActivity::class.java)
+ 1 -> {
+ BottomActionSheet.Builder()
+ .setContext(context)
+ .setActionItemTitles(arrayOf("设备", "数据"))
+ .setOnActionSheetListener { index ->
+ when (index) {
+ 0 -> context.navigatePageTo(SearchDeviceActivity::class.java)
+ 1 -> context.navigatePageTo(SearchDataActivity::class.java)
+ }
+ }.build().show()
+
+ }
+ 2 -> context.navigatePageTo(StatisticsActivity::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 8f54163..5285a9f 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
@@ -13,11 +13,6 @@
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() {
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt
new file mode 100644
index 0000000..e6a38e4
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt
@@ -0,0 +1,168 @@
+package com.casic.qd.smartwell.view
+
+import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseActivity
+import kotlinx.android.synthetic.main.include_base_title.*
+
+/**
+ * @author a203
+ * @description 记录查询界面
+ * @date 2022/2/17 14:33
+ * @email 290677893@qq.com
+ */
+class SearchDataActivity : BaseActivity() {
+
+// 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 deptId = ""
+// private var deviceState = ""
+// private var areaId = ""
+
+ override fun initLayoutView(): Int = R.layout.activity_data_search
+
+ override fun setupTopBarLayout() {
+ titleView.text = "数据查询"
+ }
+
+ 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("03")
+// }
+// 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, _, position, tag ->
+// ownerShipView.text = tag
+// this.deptId = ownerShipModel[position].id.toString()
+//
+// dialog.dismiss()
+// }.build().show()
+// }
+// })
+//
+// deviceStateView.setOnClickListener {
+// QMUIBottomSheet.BottomListSheetBuilder(this)
+// .setTitle("在线情况")
+// .addItem("在线")
+// .addItem("离线")
+// .setGravityCenter(true)
+// .setOnSheetItemClickListener { dialog, _, _, tag ->
+// deviceStateView.text = tag
+// this.deviceState = if (tag == "在线") {
+// "1"
+// } else {
+// "0"
+// }
+//
+// 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,
+// deptId,
+// deviceState,
+// 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/SearchDeviceActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt
new file mode 100644
index 0000000..cf0c05f
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt
@@ -0,0 +1,184 @@
+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_device_search.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+/**
+ * @author a203
+ * @description 记录查询界面
+ * @date 2022/2/17 14:33
+ * @email 290677893@qq.com
+ */
+class SearchDeviceActivity : BaseActivity() {
+
+ 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 deptId = ""
+ private var deviceState = ""
+ private var areaId = ""
+
+ override fun initLayoutView(): Int = R.layout.activity_device_search
+
+ override fun setupTopBarLayout() {
+ titleView.text = "设备查询"
+ }
+
+ 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("03")
+ }
+ 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, _, position, tag ->
+ ownerShipView.text = tag
+ this.deptId = ownerShipModel[position].id.toString()
+
+ dialog.dismiss()
+ }.build().show()
+ }
+ })
+
+ deviceStateView.setOnClickListener {
+ QMUIBottomSheet.BottomListSheetBuilder(this)
+ .setTitle("在线情况")
+ .addItem("在线")
+ .addItem("离线")
+ .setGravityCenter(true)
+ .setOnSheetItemClickListener { dialog, _, _, tag ->
+ deviceStateView.text = tag
+ this.deviceState = if (tag == "在线") {
+ "1"
+ } else {
+ "0"
+ }
+
+ 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,
+ deptId,
+ deviceState,
+ 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/SearchRecordActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchRecordActivity.kt
deleted file mode 100644
index 8cab864..0000000
--- a/app/src/main/java/com/casic/qd/smartwell/view/SearchRecordActivity.kt
+++ /dev/null
@@ -1,184 +0,0 @@
-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 记录查询界面
- * @date 2022/2/17 14:33
- * @email 290677893@qq.com
- */
-class SearchRecordActivity : BaseActivity() {
-
- 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 deptId = ""
- private var deviceState = ""
- private var areaId = ""
-
- override fun initLayoutView(): Int = R.layout.activity_search_record
-
- override fun setupTopBarLayout() {
- titleView.text = "记录查询"
- }
-
- 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("03")
- }
- 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, _, position, tag ->
- ownerShipView.text = tag
- this.deptId = ownerShipModel[position].id.toString()
-
- dialog.dismiss()
- }.build().show()
- }
- })
-
- deviceStateView.setOnClickListener {
- QMUIBottomSheet.BottomListSheetBuilder(this)
- .setTitle("在线情况")
- .addItem("在线")
- .addItem("离线")
- .setGravityCenter(true)
- .setOnSheetItemClickListener { dialog, _, _, tag ->
- deviceStateView.text = tag
- this.deviceState = if (tag == "在线") {
- "1"
- } else {
- "0"
- }
-
- 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,
- deptId,
- deviceState,
- 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 82386c9..3832c68 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -48,7 +48,7 @@
-
+
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/Long.kt
index 216e7cc..f53e831 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/Long.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/Long.kt
@@ -15,6 +15,14 @@
return dateFormat.format(calendar.time)
}
+fun Long.timestampToLastWeekTime(): String {
+ val dateFormat = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA)
+ val calendar = Calendar.getInstance()
+ calendar.time = Date(this)
+ calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) - 6)
+ return dateFormat.format(calendar.time)
+}
+
fun Long.timestampToLastMonthDate(): String {
val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA)
val calendar = Calendar.getInstance()
diff --git a/app/src/main/java/com/casic/qd/smartwell/model/DayDataModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/DayDataModel.kt
new file mode 100644
index 0000000..18d1399
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/model/DayDataModel.kt
@@ -0,0 +1,13 @@
+package com.casic.qd.smartwell.model
+
+class DayDataModel {
+ var code = 0
+ var data: List? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var time: String? = null
+ var value: String? = null
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/model/TotalDataModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/TotalDataModel.kt
new file mode 100644
index 0000000..30bf829
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/model/TotalDataModel.kt
@@ -0,0 +1,14 @@
+package com.casic.qd.smartwell.model
+
+class TotalDataModel {
+ var code = 0
+ var data: List? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var total: String? = null
+ var deviceState: String? = null
+ var uptime: String? = null
+ }
+}
\ 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 c5bf469..0c80ee9 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
@@ -202,4 +202,26 @@
@Query("offset") offset: Int,
@Query("limit") limit: Int
): String
+
+ /**
+ * 获取设备日用水量
+ * */
+ @GET("/device/sevenDayData")
+ suspend fun obtainSevenDayData(
+ @Header("token") token: String,
+ @Query("devCode") devCode: String?,
+ @Query("beginTime") beginTime: String?,
+ @Query("endTime") endTime: String?
+ ): String
+
+ /**
+ * 获取设备日用水量
+ * */
+ @GET("/device/totalData")
+ suspend fun obtainTotalDayData(
+ @Header("token") token: String,
+ @Query("devCode") devCode: String?,
+ @Query("beginTime") beginTime: String?,
+ @Query("endTime") endTime: 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 6f728e0..a8b320f 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
@@ -204,4 +204,18 @@
Constant.PAGE_LIMIT
)
}
+
+ /**
+ * 获取设备日用水量
+ */
+ suspend fun obtainSevenDayData(devCode: String?, beginTime: String?, endTime: String?): String {
+ return api.obtainSevenDayData(AuthenticationHelper.token!!, devCode, beginTime, endTime)
+ }
+
+ /**
+ * 获取设备累计用水量
+ */
+ suspend fun obtainTotalDayData(devCode: String?, beginTime: String?, endTime: String?): String {
+ return api.obtainTotalDayData(AuthenticationHelper.token!!, devCode, beginTime, endTime)
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt
index 7029d17..a8a2695 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt
@@ -1,22 +1,109 @@
package com.casic.qd.smartwell.view
+import androidx.lifecycle.ViewModelProvider
import com.casic.qd.smartwell.R
import com.casic.qd.smartwell.base.BaseActivity
-import kotlinx.android.synthetic.main.include_base_title.*
+import com.casic.qd.smartwell.extensions.convertColor
+import com.casic.qd.smartwell.extensions.timestampToLastWeekTime
+import com.casic.qd.smartwell.extensions.timestampToTime
+import com.casic.qd.smartwell.model.LineChartEntryModel
+import com.casic.qd.smartwell.utils.ChartViewHelper
+import com.casic.qd.smartwell.utils.Constant
+import com.casic.qd.smartwell.vm.DeviceViewModel
+import com.casic.qd.smartwell.widgets.DateSelectDialog
+import com.github.mikephil.charting.data.Entry
+import com.jzxiang.pickerview.data.Type
+import kotlinx.android.synthetic.main.activity_device_data_detail.*
+import kotlinx.android.synthetic.main.activity_main.rightOptionView
+import kotlinx.android.synthetic.main.activity_main.titleView
class DeviceDataDetailActivity : BaseActivity() {
- override fun initLayoutView(): Int = R.layout.activity_device_detail
+ private val kTag = "DeviceDataDetailActivity"
+ private lateinit var deviceCode: String
+ private lateinit var deviceViewModel: DeviceViewModel
+
+ override fun initLayoutView(): Int = R.layout.activity_device_data_detail
override fun setupTopBarLayout() {
- titleView.text = "历史数据"
+ deviceCode = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ titleView.text = String.format("${deviceCode}历史数据")
}
override fun initData() {
-
+ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java)
}
override fun initEvent() {
+ rightOptionView.setOnClickListener {
+ DateSelectDialog.Builder()
+ .setContext(this)
+ .setTitle("选择日期")
+ .setNegativeButton("取消")
+ .setPositiveButton("选好了")
+ .setOnDialogButtonClickListener(object :
+ DateSelectDialog.OnDialogButtonClickListener {
+ override fun onConfirmClick(startDate: String, endDate: String) {
+ deviceViewModel.obtainSevenDayData(deviceCode, startDate, endDate)
+ deviceViewModel.obtainTotalDayData(deviceCode, startDate, endDate)
+ }
+ override fun onCancelClick() {
+ //选择取消就默认加载近7天的数据
+ val time = System.currentTimeMillis()
+ val startTime = time.timestampToLastWeekTime()
+ val endTime = time.timestampToTime()
+ deviceViewModel.obtainSevenDayData(deviceCode, startTime, endTime)
+ deviceViewModel.obtainTotalDayData(deviceCode, startTime, endTime)
+ }
+ })
+ .setFragmentManager(supportFragmentManager)
+ .setCalendarType(Type.ALL)
+ .build().show()
+ }
+
+ //默认加载近一周的数据
+ val time = System.currentTimeMillis()
+ val startTime = time.timestampToLastWeekTime()
+ val endTime = time.timestampToTime()
+ deviceViewModel.obtainSevenDayData(deviceCode, startTime, endTime)
+ deviceViewModel.dayDataModel.observe(this, {
+ if (it.code == 200) {
+ val entryModels: MutableList = ArrayList()
+ val xAxisDate: MutableList = ArrayList()
+ val entries: ArrayList = ArrayList()
+ val entryModel = LineChartEntryModel()
+
+ entryModel.lineColor = Constant.COLORS[7].convertColor()
+ it.data?.forEachIndexed { index, dataBean ->
+ val split = dataBean.time.toString().split("-")
+ xAxisDate.add("${split[1]}/${split[2]}")
+
+ entries.add(Entry(index.toFloat(), dataBean.value!!.toFloat(), "日用水量"))
+ }
+ entryModel.entryList = entries
+ entryModels.add(entryModel)
+ ChartViewHelper.setLineChartData(dayWaterLineChart, xAxisDate, entryModels)
+ }
+ })
+
+ deviceViewModel.obtainTotalDayData(deviceCode, startTime, endTime)
+ deviceViewModel.totalDataModel.observe(this, {
+ val entryModels: MutableList = ArrayList()
+ val xAxisDate: MutableList = ArrayList()
+ val entries: ArrayList = ArrayList()
+ val entryModel = LineChartEntryModel()
+
+ entryModel.lineColor = Constant.COLORS[7].convertColor()
+ it.data?.forEachIndexed { index, dataBean ->
+ val split = dataBean.uptime.toString().split(" ")[0].split("-")
+ xAxisDate.add("${split[1]}/${split[2]}")
+
+ entries.add(Entry(index.toFloat(), dataBean.total!!.toFloat(), "总用水量"))
+ }
+ entryModel.entryList = entries
+ entryModels.add(entryModel)
+ ChartViewHelper.setLineChartData(totalWaterLineChart, xAxisDate, entryModels)
+ })
}
}
\ No newline at end of file
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 02435a3..3f4bb3c 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
@@ -1,7 +1,6 @@
package com.casic.qd.smartwell.view
import android.content.Context
-import android.content.Intent
import android.os.Handler
import android.os.Looper
import android.os.Message
@@ -22,6 +21,7 @@
import com.casic.qd.smartwell.vm.WaterStatisticsViewModel
import com.github.mikephil.charting.data.Entry
import com.pengxh.app.multilib.widget.dialog.AlertControlDialog
+import com.pengxh.app.multilib.widget.dialog.BottomActionSheet
import com.youth.banner.Banner
import com.youth.banner.adapter.BannerImageAdapter
import com.youth.banner.holder.BannerImageHolder
@@ -100,9 +100,20 @@
HomeRecycleAdapter.OnGridItemClickListener {
override fun onClick(position: Int) {
when (position) {
- 0 -> startActivity(Intent(context, MapActivity::class.java))
- 1 -> startActivity(Intent(context, SearchRecordActivity::class.java))
- 2 -> startActivity(Intent(context, StatisticsActivity::class.java))
+ 0 -> context.navigatePageTo(MapActivity::class.java)
+ 1 -> {
+ BottomActionSheet.Builder()
+ .setContext(context)
+ .setActionItemTitles(arrayOf("设备", "数据"))
+ .setOnActionSheetListener { index ->
+ when (index) {
+ 0 -> context.navigatePageTo(SearchDeviceActivity::class.java)
+ 1 -> context.navigatePageTo(SearchDataActivity::class.java)
+ }
+ }.build().show()
+
+ }
+ 2 -> context.navigatePageTo(StatisticsActivity::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 8f54163..5285a9f 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
@@ -13,11 +13,6 @@
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() {
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt
new file mode 100644
index 0000000..e6a38e4
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt
@@ -0,0 +1,168 @@
+package com.casic.qd.smartwell.view
+
+import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseActivity
+import kotlinx.android.synthetic.main.include_base_title.*
+
+/**
+ * @author a203
+ * @description 记录查询界面
+ * @date 2022/2/17 14:33
+ * @email 290677893@qq.com
+ */
+class SearchDataActivity : BaseActivity() {
+
+// 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 deptId = ""
+// private var deviceState = ""
+// private var areaId = ""
+
+ override fun initLayoutView(): Int = R.layout.activity_data_search
+
+ override fun setupTopBarLayout() {
+ titleView.text = "数据查询"
+ }
+
+ 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("03")
+// }
+// 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, _, position, tag ->
+// ownerShipView.text = tag
+// this.deptId = ownerShipModel[position].id.toString()
+//
+// dialog.dismiss()
+// }.build().show()
+// }
+// })
+//
+// deviceStateView.setOnClickListener {
+// QMUIBottomSheet.BottomListSheetBuilder(this)
+// .setTitle("在线情况")
+// .addItem("在线")
+// .addItem("离线")
+// .setGravityCenter(true)
+// .setOnSheetItemClickListener { dialog, _, _, tag ->
+// deviceStateView.text = tag
+// this.deviceState = if (tag == "在线") {
+// "1"
+// } else {
+// "0"
+// }
+//
+// 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,
+// deptId,
+// deviceState,
+// 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/SearchDeviceActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt
new file mode 100644
index 0000000..cf0c05f
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt
@@ -0,0 +1,184 @@
+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_device_search.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+/**
+ * @author a203
+ * @description 记录查询界面
+ * @date 2022/2/17 14:33
+ * @email 290677893@qq.com
+ */
+class SearchDeviceActivity : BaseActivity() {
+
+ 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 deptId = ""
+ private var deviceState = ""
+ private var areaId = ""
+
+ override fun initLayoutView(): Int = R.layout.activity_device_search
+
+ override fun setupTopBarLayout() {
+ titleView.text = "设备查询"
+ }
+
+ 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("03")
+ }
+ 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, _, position, tag ->
+ ownerShipView.text = tag
+ this.deptId = ownerShipModel[position].id.toString()
+
+ dialog.dismiss()
+ }.build().show()
+ }
+ })
+
+ deviceStateView.setOnClickListener {
+ QMUIBottomSheet.BottomListSheetBuilder(this)
+ .setTitle("在线情况")
+ .addItem("在线")
+ .addItem("离线")
+ .setGravityCenter(true)
+ .setOnSheetItemClickListener { dialog, _, _, tag ->
+ deviceStateView.text = tag
+ this.deviceState = if (tag == "在线") {
+ "1"
+ } else {
+ "0"
+ }
+
+ 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,
+ deptId,
+ deviceState,
+ 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/SearchRecordActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchRecordActivity.kt
deleted file mode 100644
index 8cab864..0000000
--- a/app/src/main/java/com/casic/qd/smartwell/view/SearchRecordActivity.kt
+++ /dev/null
@@ -1,184 +0,0 @@
-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 记录查询界面
- * @date 2022/2/17 14:33
- * @email 290677893@qq.com
- */
-class SearchRecordActivity : BaseActivity() {
-
- 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 deptId = ""
- private var deviceState = ""
- private var areaId = ""
-
- override fun initLayoutView(): Int = R.layout.activity_search_record
-
- override fun setupTopBarLayout() {
- titleView.text = "记录查询"
- }
-
- 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("03")
- }
- 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, _, position, tag ->
- ownerShipView.text = tag
- this.deptId = ownerShipModel[position].id.toString()
-
- dialog.dismiss()
- }.build().show()
- }
- })
-
- deviceStateView.setOnClickListener {
- QMUIBottomSheet.BottomListSheetBuilder(this)
- .setTitle("在线情况")
- .addItem("在线")
- .addItem("离线")
- .setGravityCenter(true)
- .setOnSheetItemClickListener { dialog, _, _, tag ->
- deviceStateView.text = tag
- this.deviceState = if (tag == "在线") {
- "1"
- } else {
- "0"
- }
-
- 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,
- deptId,
- deviceState,
- 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/StatisticsActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt
index 21c4286..3272cfe 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
@@ -15,6 +15,7 @@
import com.casic.qd.smartwell.widgets.DateSelectDialog
import com.github.mikephil.charting.data.BarEntry
import com.github.mikephil.charting.data.PieEntry
+import com.jzxiang.pickerview.data.Type
import kotlinx.android.synthetic.main.activity_statistics.*
import kotlinx.android.synthetic.main.include_base_title.*
import java.util.*
@@ -97,7 +98,6 @@
5 -> {
DateSelectDialog.Builder()
.setContext(context)
- .setFragmentManager(supportFragmentManager)
.setTitle("选择日期")
.setNegativeButton("取消")
.setPositiveButton("选好了")
@@ -113,7 +113,10 @@
//选择取消就默认加载近7天的数据
periodSpinner.setSelection(3)
}
- }).build().show()
+ })
+ .setFragmentManager(supportFragmentManager)
+ .setCalendarType(Type.YEAR_MONTH_DAY)
+ .build().show()
}
}
}
@@ -200,7 +203,6 @@
5 -> {
DateSelectDialog.Builder()
.setContext(context)
- .setFragmentManager(supportFragmentManager)
.setTitle("选择日期")
.setNegativeButton("取消")
.setPositiveButton("选好了")
@@ -216,7 +218,10 @@
//选择取消就默认加载近7天的数据
periodSpinner.setSelection(3)
}
- }).build().show()
+ })
+ .setFragmentManager(supportFragmentManager)
+ .setCalendarType(Type.YEAR_MONTH_DAY)
+ .build().show()
}
}
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 82386c9..3832c68 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -48,7 +48,7 @@
-
+
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/Long.kt
index 216e7cc..f53e831 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/Long.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/Long.kt
@@ -15,6 +15,14 @@
return dateFormat.format(calendar.time)
}
+fun Long.timestampToLastWeekTime(): String {
+ val dateFormat = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA)
+ val calendar = Calendar.getInstance()
+ calendar.time = Date(this)
+ calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) - 6)
+ return dateFormat.format(calendar.time)
+}
+
fun Long.timestampToLastMonthDate(): String {
val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA)
val calendar = Calendar.getInstance()
diff --git a/app/src/main/java/com/casic/qd/smartwell/model/DayDataModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/DayDataModel.kt
new file mode 100644
index 0000000..18d1399
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/model/DayDataModel.kt
@@ -0,0 +1,13 @@
+package com.casic.qd.smartwell.model
+
+class DayDataModel {
+ var code = 0
+ var data: List? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var time: String? = null
+ var value: String? = null
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/model/TotalDataModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/TotalDataModel.kt
new file mode 100644
index 0000000..30bf829
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/model/TotalDataModel.kt
@@ -0,0 +1,14 @@
+package com.casic.qd.smartwell.model
+
+class TotalDataModel {
+ var code = 0
+ var data: List? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var total: String? = null
+ var deviceState: String? = null
+ var uptime: String? = null
+ }
+}
\ 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 c5bf469..0c80ee9 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
@@ -202,4 +202,26 @@
@Query("offset") offset: Int,
@Query("limit") limit: Int
): String
+
+ /**
+ * 获取设备日用水量
+ * */
+ @GET("/device/sevenDayData")
+ suspend fun obtainSevenDayData(
+ @Header("token") token: String,
+ @Query("devCode") devCode: String?,
+ @Query("beginTime") beginTime: String?,
+ @Query("endTime") endTime: String?
+ ): String
+
+ /**
+ * 获取设备日用水量
+ * */
+ @GET("/device/totalData")
+ suspend fun obtainTotalDayData(
+ @Header("token") token: String,
+ @Query("devCode") devCode: String?,
+ @Query("beginTime") beginTime: String?,
+ @Query("endTime") endTime: 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 6f728e0..a8b320f 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
@@ -204,4 +204,18 @@
Constant.PAGE_LIMIT
)
}
+
+ /**
+ * 获取设备日用水量
+ */
+ suspend fun obtainSevenDayData(devCode: String?, beginTime: String?, endTime: String?): String {
+ return api.obtainSevenDayData(AuthenticationHelper.token!!, devCode, beginTime, endTime)
+ }
+
+ /**
+ * 获取设备累计用水量
+ */
+ suspend fun obtainTotalDayData(devCode: String?, beginTime: String?, endTime: String?): String {
+ return api.obtainTotalDayData(AuthenticationHelper.token!!, devCode, beginTime, endTime)
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt
index 7029d17..a8a2695 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt
@@ -1,22 +1,109 @@
package com.casic.qd.smartwell.view
+import androidx.lifecycle.ViewModelProvider
import com.casic.qd.smartwell.R
import com.casic.qd.smartwell.base.BaseActivity
-import kotlinx.android.synthetic.main.include_base_title.*
+import com.casic.qd.smartwell.extensions.convertColor
+import com.casic.qd.smartwell.extensions.timestampToLastWeekTime
+import com.casic.qd.smartwell.extensions.timestampToTime
+import com.casic.qd.smartwell.model.LineChartEntryModel
+import com.casic.qd.smartwell.utils.ChartViewHelper
+import com.casic.qd.smartwell.utils.Constant
+import com.casic.qd.smartwell.vm.DeviceViewModel
+import com.casic.qd.smartwell.widgets.DateSelectDialog
+import com.github.mikephil.charting.data.Entry
+import com.jzxiang.pickerview.data.Type
+import kotlinx.android.synthetic.main.activity_device_data_detail.*
+import kotlinx.android.synthetic.main.activity_main.rightOptionView
+import kotlinx.android.synthetic.main.activity_main.titleView
class DeviceDataDetailActivity : BaseActivity() {
- override fun initLayoutView(): Int = R.layout.activity_device_detail
+ private val kTag = "DeviceDataDetailActivity"
+ private lateinit var deviceCode: String
+ private lateinit var deviceViewModel: DeviceViewModel
+
+ override fun initLayoutView(): Int = R.layout.activity_device_data_detail
override fun setupTopBarLayout() {
- titleView.text = "历史数据"
+ deviceCode = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ titleView.text = String.format("${deviceCode}历史数据")
}
override fun initData() {
-
+ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java)
}
override fun initEvent() {
+ rightOptionView.setOnClickListener {
+ DateSelectDialog.Builder()
+ .setContext(this)
+ .setTitle("选择日期")
+ .setNegativeButton("取消")
+ .setPositiveButton("选好了")
+ .setOnDialogButtonClickListener(object :
+ DateSelectDialog.OnDialogButtonClickListener {
+ override fun onConfirmClick(startDate: String, endDate: String) {
+ deviceViewModel.obtainSevenDayData(deviceCode, startDate, endDate)
+ deviceViewModel.obtainTotalDayData(deviceCode, startDate, endDate)
+ }
+ override fun onCancelClick() {
+ //选择取消就默认加载近7天的数据
+ val time = System.currentTimeMillis()
+ val startTime = time.timestampToLastWeekTime()
+ val endTime = time.timestampToTime()
+ deviceViewModel.obtainSevenDayData(deviceCode, startTime, endTime)
+ deviceViewModel.obtainTotalDayData(deviceCode, startTime, endTime)
+ }
+ })
+ .setFragmentManager(supportFragmentManager)
+ .setCalendarType(Type.ALL)
+ .build().show()
+ }
+
+ //默认加载近一周的数据
+ val time = System.currentTimeMillis()
+ val startTime = time.timestampToLastWeekTime()
+ val endTime = time.timestampToTime()
+ deviceViewModel.obtainSevenDayData(deviceCode, startTime, endTime)
+ deviceViewModel.dayDataModel.observe(this, {
+ if (it.code == 200) {
+ val entryModels: MutableList = ArrayList()
+ val xAxisDate: MutableList = ArrayList()
+ val entries: ArrayList = ArrayList()
+ val entryModel = LineChartEntryModel()
+
+ entryModel.lineColor = Constant.COLORS[7].convertColor()
+ it.data?.forEachIndexed { index, dataBean ->
+ val split = dataBean.time.toString().split("-")
+ xAxisDate.add("${split[1]}/${split[2]}")
+
+ entries.add(Entry(index.toFloat(), dataBean.value!!.toFloat(), "日用水量"))
+ }
+ entryModel.entryList = entries
+ entryModels.add(entryModel)
+ ChartViewHelper.setLineChartData(dayWaterLineChart, xAxisDate, entryModels)
+ }
+ })
+
+ deviceViewModel.obtainTotalDayData(deviceCode, startTime, endTime)
+ deviceViewModel.totalDataModel.observe(this, {
+ val entryModels: MutableList = ArrayList()
+ val xAxisDate: MutableList = ArrayList()
+ val entries: ArrayList = ArrayList()
+ val entryModel = LineChartEntryModel()
+
+ entryModel.lineColor = Constant.COLORS[7].convertColor()
+ it.data?.forEachIndexed { index, dataBean ->
+ val split = dataBean.uptime.toString().split(" ")[0].split("-")
+ xAxisDate.add("${split[1]}/${split[2]}")
+
+ entries.add(Entry(index.toFloat(), dataBean.total!!.toFloat(), "总用水量"))
+ }
+ entryModel.entryList = entries
+ entryModels.add(entryModel)
+ ChartViewHelper.setLineChartData(totalWaterLineChart, xAxisDate, entryModels)
+ })
}
}
\ No newline at end of file
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 02435a3..3f4bb3c 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
@@ -1,7 +1,6 @@
package com.casic.qd.smartwell.view
import android.content.Context
-import android.content.Intent
import android.os.Handler
import android.os.Looper
import android.os.Message
@@ -22,6 +21,7 @@
import com.casic.qd.smartwell.vm.WaterStatisticsViewModel
import com.github.mikephil.charting.data.Entry
import com.pengxh.app.multilib.widget.dialog.AlertControlDialog
+import com.pengxh.app.multilib.widget.dialog.BottomActionSheet
import com.youth.banner.Banner
import com.youth.banner.adapter.BannerImageAdapter
import com.youth.banner.holder.BannerImageHolder
@@ -100,9 +100,20 @@
HomeRecycleAdapter.OnGridItemClickListener {
override fun onClick(position: Int) {
when (position) {
- 0 -> startActivity(Intent(context, MapActivity::class.java))
- 1 -> startActivity(Intent(context, SearchRecordActivity::class.java))
- 2 -> startActivity(Intent(context, StatisticsActivity::class.java))
+ 0 -> context.navigatePageTo(MapActivity::class.java)
+ 1 -> {
+ BottomActionSheet.Builder()
+ .setContext(context)
+ .setActionItemTitles(arrayOf("设备", "数据"))
+ .setOnActionSheetListener { index ->
+ when (index) {
+ 0 -> context.navigatePageTo(SearchDeviceActivity::class.java)
+ 1 -> context.navigatePageTo(SearchDataActivity::class.java)
+ }
+ }.build().show()
+
+ }
+ 2 -> context.navigatePageTo(StatisticsActivity::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 8f54163..5285a9f 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
@@ -13,11 +13,6 @@
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() {
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt
new file mode 100644
index 0000000..e6a38e4
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt
@@ -0,0 +1,168 @@
+package com.casic.qd.smartwell.view
+
+import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseActivity
+import kotlinx.android.synthetic.main.include_base_title.*
+
+/**
+ * @author a203
+ * @description 记录查询界面
+ * @date 2022/2/17 14:33
+ * @email 290677893@qq.com
+ */
+class SearchDataActivity : BaseActivity() {
+
+// 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 deptId = ""
+// private var deviceState = ""
+// private var areaId = ""
+
+ override fun initLayoutView(): Int = R.layout.activity_data_search
+
+ override fun setupTopBarLayout() {
+ titleView.text = "数据查询"
+ }
+
+ 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("03")
+// }
+// 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, _, position, tag ->
+// ownerShipView.text = tag
+// this.deptId = ownerShipModel[position].id.toString()
+//
+// dialog.dismiss()
+// }.build().show()
+// }
+// })
+//
+// deviceStateView.setOnClickListener {
+// QMUIBottomSheet.BottomListSheetBuilder(this)
+// .setTitle("在线情况")
+// .addItem("在线")
+// .addItem("离线")
+// .setGravityCenter(true)
+// .setOnSheetItemClickListener { dialog, _, _, tag ->
+// deviceStateView.text = tag
+// this.deviceState = if (tag == "在线") {
+// "1"
+// } else {
+// "0"
+// }
+//
+// 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,
+// deptId,
+// deviceState,
+// 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/SearchDeviceActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt
new file mode 100644
index 0000000..cf0c05f
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt
@@ -0,0 +1,184 @@
+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_device_search.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+/**
+ * @author a203
+ * @description 记录查询界面
+ * @date 2022/2/17 14:33
+ * @email 290677893@qq.com
+ */
+class SearchDeviceActivity : BaseActivity() {
+
+ 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 deptId = ""
+ private var deviceState = ""
+ private var areaId = ""
+
+ override fun initLayoutView(): Int = R.layout.activity_device_search
+
+ override fun setupTopBarLayout() {
+ titleView.text = "设备查询"
+ }
+
+ 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("03")
+ }
+ 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, _, position, tag ->
+ ownerShipView.text = tag
+ this.deptId = ownerShipModel[position].id.toString()
+
+ dialog.dismiss()
+ }.build().show()
+ }
+ })
+
+ deviceStateView.setOnClickListener {
+ QMUIBottomSheet.BottomListSheetBuilder(this)
+ .setTitle("在线情况")
+ .addItem("在线")
+ .addItem("离线")
+ .setGravityCenter(true)
+ .setOnSheetItemClickListener { dialog, _, _, tag ->
+ deviceStateView.text = tag
+ this.deviceState = if (tag == "在线") {
+ "1"
+ } else {
+ "0"
+ }
+
+ 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,
+ deptId,
+ deviceState,
+ 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/SearchRecordActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchRecordActivity.kt
deleted file mode 100644
index 8cab864..0000000
--- a/app/src/main/java/com/casic/qd/smartwell/view/SearchRecordActivity.kt
+++ /dev/null
@@ -1,184 +0,0 @@
-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 记录查询界面
- * @date 2022/2/17 14:33
- * @email 290677893@qq.com
- */
-class SearchRecordActivity : BaseActivity() {
-
- 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 deptId = ""
- private var deviceState = ""
- private var areaId = ""
-
- override fun initLayoutView(): Int = R.layout.activity_search_record
-
- override fun setupTopBarLayout() {
- titleView.text = "记录查询"
- }
-
- 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("03")
- }
- 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, _, position, tag ->
- ownerShipView.text = tag
- this.deptId = ownerShipModel[position].id.toString()
-
- dialog.dismiss()
- }.build().show()
- }
- })
-
- deviceStateView.setOnClickListener {
- QMUIBottomSheet.BottomListSheetBuilder(this)
- .setTitle("在线情况")
- .addItem("在线")
- .addItem("离线")
- .setGravityCenter(true)
- .setOnSheetItemClickListener { dialog, _, _, tag ->
- deviceStateView.text = tag
- this.deviceState = if (tag == "在线") {
- "1"
- } else {
- "0"
- }
-
- 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,
- deptId,
- deviceState,
- 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/StatisticsActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt
index 21c4286..3272cfe 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
@@ -15,6 +15,7 @@
import com.casic.qd.smartwell.widgets.DateSelectDialog
import com.github.mikephil.charting.data.BarEntry
import com.github.mikephil.charting.data.PieEntry
+import com.jzxiang.pickerview.data.Type
import kotlinx.android.synthetic.main.activity_statistics.*
import kotlinx.android.synthetic.main.include_base_title.*
import java.util.*
@@ -97,7 +98,6 @@
5 -> {
DateSelectDialog.Builder()
.setContext(context)
- .setFragmentManager(supportFragmentManager)
.setTitle("选择日期")
.setNegativeButton("取消")
.setPositiveButton("选好了")
@@ -113,7 +113,10 @@
//选择取消就默认加载近7天的数据
periodSpinner.setSelection(3)
}
- }).build().show()
+ })
+ .setFragmentManager(supportFragmentManager)
+ .setCalendarType(Type.YEAR_MONTH_DAY)
+ .build().show()
}
}
}
@@ -200,7 +203,6 @@
5 -> {
DateSelectDialog.Builder()
.setContext(context)
- .setFragmentManager(supportFragmentManager)
.setTitle("选择日期")
.setNegativeButton("取消")
.setPositiveButton("选好了")
@@ -216,7 +218,10 @@
//选择取消就默认加载近7天的数据
periodSpinner.setSelection(3)
}
- }).build().show()
+ })
+ .setFragmentManager(supportFragmentManager)
+ .setCalendarType(Type.YEAR_MONTH_DAY)
+ .build().show()
}
}
}
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt
index 251140d..7a63dea 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt
@@ -13,6 +13,7 @@
import com.casic.qd.smartwell.vm.WaterStatisticsViewModel
import com.casic.qd.smartwell.widgets.DateSelectDialog
import com.github.mikephil.charting.data.Entry
+import com.jzxiang.pickerview.data.Type
import kotlinx.android.synthetic.main.activity_water_expanded.*
import java.util.*
import kotlin.collections.ArrayList
@@ -86,7 +87,6 @@
5 -> {
DateSelectDialog.Builder()
.setContext(context)
- .setFragmentManager(supportFragmentManager)
.setTitle("选择日期")
.setNegativeButton("取消")
.setPositiveButton("选好了")
@@ -102,7 +102,10 @@
//选择取消就默认加载近7天的数据
periodSpinner.setSelection(3)
}
- }).build().show()
+ })
+ .setFragmentManager(supportFragmentManager)
+ .setCalendarType(Type.YEAR_MONTH_DAY)
+ .build().show()
}
}
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 82386c9..3832c68 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -48,7 +48,7 @@
-
+
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/Long.kt
index 216e7cc..f53e831 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/Long.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/Long.kt
@@ -15,6 +15,14 @@
return dateFormat.format(calendar.time)
}
+fun Long.timestampToLastWeekTime(): String {
+ val dateFormat = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA)
+ val calendar = Calendar.getInstance()
+ calendar.time = Date(this)
+ calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) - 6)
+ return dateFormat.format(calendar.time)
+}
+
fun Long.timestampToLastMonthDate(): String {
val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA)
val calendar = Calendar.getInstance()
diff --git a/app/src/main/java/com/casic/qd/smartwell/model/DayDataModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/DayDataModel.kt
new file mode 100644
index 0000000..18d1399
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/model/DayDataModel.kt
@@ -0,0 +1,13 @@
+package com.casic.qd.smartwell.model
+
+class DayDataModel {
+ var code = 0
+ var data: List? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var time: String? = null
+ var value: String? = null
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/model/TotalDataModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/TotalDataModel.kt
new file mode 100644
index 0000000..30bf829
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/model/TotalDataModel.kt
@@ -0,0 +1,14 @@
+package com.casic.qd.smartwell.model
+
+class TotalDataModel {
+ var code = 0
+ var data: List? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var total: String? = null
+ var deviceState: String? = null
+ var uptime: String? = null
+ }
+}
\ 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 c5bf469..0c80ee9 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
@@ -202,4 +202,26 @@
@Query("offset") offset: Int,
@Query("limit") limit: Int
): String
+
+ /**
+ * 获取设备日用水量
+ * */
+ @GET("/device/sevenDayData")
+ suspend fun obtainSevenDayData(
+ @Header("token") token: String,
+ @Query("devCode") devCode: String?,
+ @Query("beginTime") beginTime: String?,
+ @Query("endTime") endTime: String?
+ ): String
+
+ /**
+ * 获取设备日用水量
+ * */
+ @GET("/device/totalData")
+ suspend fun obtainTotalDayData(
+ @Header("token") token: String,
+ @Query("devCode") devCode: String?,
+ @Query("beginTime") beginTime: String?,
+ @Query("endTime") endTime: 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 6f728e0..a8b320f 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
@@ -204,4 +204,18 @@
Constant.PAGE_LIMIT
)
}
+
+ /**
+ * 获取设备日用水量
+ */
+ suspend fun obtainSevenDayData(devCode: String?, beginTime: String?, endTime: String?): String {
+ return api.obtainSevenDayData(AuthenticationHelper.token!!, devCode, beginTime, endTime)
+ }
+
+ /**
+ * 获取设备累计用水量
+ */
+ suspend fun obtainTotalDayData(devCode: String?, beginTime: String?, endTime: String?): String {
+ return api.obtainTotalDayData(AuthenticationHelper.token!!, devCode, beginTime, endTime)
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt
index 7029d17..a8a2695 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt
@@ -1,22 +1,109 @@
package com.casic.qd.smartwell.view
+import androidx.lifecycle.ViewModelProvider
import com.casic.qd.smartwell.R
import com.casic.qd.smartwell.base.BaseActivity
-import kotlinx.android.synthetic.main.include_base_title.*
+import com.casic.qd.smartwell.extensions.convertColor
+import com.casic.qd.smartwell.extensions.timestampToLastWeekTime
+import com.casic.qd.smartwell.extensions.timestampToTime
+import com.casic.qd.smartwell.model.LineChartEntryModel
+import com.casic.qd.smartwell.utils.ChartViewHelper
+import com.casic.qd.smartwell.utils.Constant
+import com.casic.qd.smartwell.vm.DeviceViewModel
+import com.casic.qd.smartwell.widgets.DateSelectDialog
+import com.github.mikephil.charting.data.Entry
+import com.jzxiang.pickerview.data.Type
+import kotlinx.android.synthetic.main.activity_device_data_detail.*
+import kotlinx.android.synthetic.main.activity_main.rightOptionView
+import kotlinx.android.synthetic.main.activity_main.titleView
class DeviceDataDetailActivity : BaseActivity() {
- override fun initLayoutView(): Int = R.layout.activity_device_detail
+ private val kTag = "DeviceDataDetailActivity"
+ private lateinit var deviceCode: String
+ private lateinit var deviceViewModel: DeviceViewModel
+
+ override fun initLayoutView(): Int = R.layout.activity_device_data_detail
override fun setupTopBarLayout() {
- titleView.text = "历史数据"
+ deviceCode = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ titleView.text = String.format("${deviceCode}历史数据")
}
override fun initData() {
-
+ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java)
}
override fun initEvent() {
+ rightOptionView.setOnClickListener {
+ DateSelectDialog.Builder()
+ .setContext(this)
+ .setTitle("选择日期")
+ .setNegativeButton("取消")
+ .setPositiveButton("选好了")
+ .setOnDialogButtonClickListener(object :
+ DateSelectDialog.OnDialogButtonClickListener {
+ override fun onConfirmClick(startDate: String, endDate: String) {
+ deviceViewModel.obtainSevenDayData(deviceCode, startDate, endDate)
+ deviceViewModel.obtainTotalDayData(deviceCode, startDate, endDate)
+ }
+ override fun onCancelClick() {
+ //选择取消就默认加载近7天的数据
+ val time = System.currentTimeMillis()
+ val startTime = time.timestampToLastWeekTime()
+ val endTime = time.timestampToTime()
+ deviceViewModel.obtainSevenDayData(deviceCode, startTime, endTime)
+ deviceViewModel.obtainTotalDayData(deviceCode, startTime, endTime)
+ }
+ })
+ .setFragmentManager(supportFragmentManager)
+ .setCalendarType(Type.ALL)
+ .build().show()
+ }
+
+ //默认加载近一周的数据
+ val time = System.currentTimeMillis()
+ val startTime = time.timestampToLastWeekTime()
+ val endTime = time.timestampToTime()
+ deviceViewModel.obtainSevenDayData(deviceCode, startTime, endTime)
+ deviceViewModel.dayDataModel.observe(this, {
+ if (it.code == 200) {
+ val entryModels: MutableList = ArrayList()
+ val xAxisDate: MutableList = ArrayList()
+ val entries: ArrayList = ArrayList()
+ val entryModel = LineChartEntryModel()
+
+ entryModel.lineColor = Constant.COLORS[7].convertColor()
+ it.data?.forEachIndexed { index, dataBean ->
+ val split = dataBean.time.toString().split("-")
+ xAxisDate.add("${split[1]}/${split[2]}")
+
+ entries.add(Entry(index.toFloat(), dataBean.value!!.toFloat(), "日用水量"))
+ }
+ entryModel.entryList = entries
+ entryModels.add(entryModel)
+ ChartViewHelper.setLineChartData(dayWaterLineChart, xAxisDate, entryModels)
+ }
+ })
+
+ deviceViewModel.obtainTotalDayData(deviceCode, startTime, endTime)
+ deviceViewModel.totalDataModel.observe(this, {
+ val entryModels: MutableList = ArrayList()
+ val xAxisDate: MutableList = ArrayList()
+ val entries: ArrayList = ArrayList()
+ val entryModel = LineChartEntryModel()
+
+ entryModel.lineColor = Constant.COLORS[7].convertColor()
+ it.data?.forEachIndexed { index, dataBean ->
+ val split = dataBean.uptime.toString().split(" ")[0].split("-")
+ xAxisDate.add("${split[1]}/${split[2]}")
+
+ entries.add(Entry(index.toFloat(), dataBean.total!!.toFloat(), "总用水量"))
+ }
+ entryModel.entryList = entries
+ entryModels.add(entryModel)
+ ChartViewHelper.setLineChartData(totalWaterLineChart, xAxisDate, entryModels)
+ })
}
}
\ No newline at end of file
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 02435a3..3f4bb3c 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
@@ -1,7 +1,6 @@
package com.casic.qd.smartwell.view
import android.content.Context
-import android.content.Intent
import android.os.Handler
import android.os.Looper
import android.os.Message
@@ -22,6 +21,7 @@
import com.casic.qd.smartwell.vm.WaterStatisticsViewModel
import com.github.mikephil.charting.data.Entry
import com.pengxh.app.multilib.widget.dialog.AlertControlDialog
+import com.pengxh.app.multilib.widget.dialog.BottomActionSheet
import com.youth.banner.Banner
import com.youth.banner.adapter.BannerImageAdapter
import com.youth.banner.holder.BannerImageHolder
@@ -100,9 +100,20 @@
HomeRecycleAdapter.OnGridItemClickListener {
override fun onClick(position: Int) {
when (position) {
- 0 -> startActivity(Intent(context, MapActivity::class.java))
- 1 -> startActivity(Intent(context, SearchRecordActivity::class.java))
- 2 -> startActivity(Intent(context, StatisticsActivity::class.java))
+ 0 -> context.navigatePageTo(MapActivity::class.java)
+ 1 -> {
+ BottomActionSheet.Builder()
+ .setContext(context)
+ .setActionItemTitles(arrayOf("设备", "数据"))
+ .setOnActionSheetListener { index ->
+ when (index) {
+ 0 -> context.navigatePageTo(SearchDeviceActivity::class.java)
+ 1 -> context.navigatePageTo(SearchDataActivity::class.java)
+ }
+ }.build().show()
+
+ }
+ 2 -> context.navigatePageTo(StatisticsActivity::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 8f54163..5285a9f 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
@@ -13,11 +13,6 @@
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() {
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt
new file mode 100644
index 0000000..e6a38e4
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt
@@ -0,0 +1,168 @@
+package com.casic.qd.smartwell.view
+
+import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseActivity
+import kotlinx.android.synthetic.main.include_base_title.*
+
+/**
+ * @author a203
+ * @description 记录查询界面
+ * @date 2022/2/17 14:33
+ * @email 290677893@qq.com
+ */
+class SearchDataActivity : BaseActivity() {
+
+// 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 deptId = ""
+// private var deviceState = ""
+// private var areaId = ""
+
+ override fun initLayoutView(): Int = R.layout.activity_data_search
+
+ override fun setupTopBarLayout() {
+ titleView.text = "数据查询"
+ }
+
+ 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("03")
+// }
+// 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, _, position, tag ->
+// ownerShipView.text = tag
+// this.deptId = ownerShipModel[position].id.toString()
+//
+// dialog.dismiss()
+// }.build().show()
+// }
+// })
+//
+// deviceStateView.setOnClickListener {
+// QMUIBottomSheet.BottomListSheetBuilder(this)
+// .setTitle("在线情况")
+// .addItem("在线")
+// .addItem("离线")
+// .setGravityCenter(true)
+// .setOnSheetItemClickListener { dialog, _, _, tag ->
+// deviceStateView.text = tag
+// this.deviceState = if (tag == "在线") {
+// "1"
+// } else {
+// "0"
+// }
+//
+// 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,
+// deptId,
+// deviceState,
+// 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/SearchDeviceActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt
new file mode 100644
index 0000000..cf0c05f
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt
@@ -0,0 +1,184 @@
+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_device_search.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+/**
+ * @author a203
+ * @description 记录查询界面
+ * @date 2022/2/17 14:33
+ * @email 290677893@qq.com
+ */
+class SearchDeviceActivity : BaseActivity() {
+
+ 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 deptId = ""
+ private var deviceState = ""
+ private var areaId = ""
+
+ override fun initLayoutView(): Int = R.layout.activity_device_search
+
+ override fun setupTopBarLayout() {
+ titleView.text = "设备查询"
+ }
+
+ 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("03")
+ }
+ 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, _, position, tag ->
+ ownerShipView.text = tag
+ this.deptId = ownerShipModel[position].id.toString()
+
+ dialog.dismiss()
+ }.build().show()
+ }
+ })
+
+ deviceStateView.setOnClickListener {
+ QMUIBottomSheet.BottomListSheetBuilder(this)
+ .setTitle("在线情况")
+ .addItem("在线")
+ .addItem("离线")
+ .setGravityCenter(true)
+ .setOnSheetItemClickListener { dialog, _, _, tag ->
+ deviceStateView.text = tag
+ this.deviceState = if (tag == "在线") {
+ "1"
+ } else {
+ "0"
+ }
+
+ 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,
+ deptId,
+ deviceState,
+ 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/SearchRecordActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchRecordActivity.kt
deleted file mode 100644
index 8cab864..0000000
--- a/app/src/main/java/com/casic/qd/smartwell/view/SearchRecordActivity.kt
+++ /dev/null
@@ -1,184 +0,0 @@
-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 记录查询界面
- * @date 2022/2/17 14:33
- * @email 290677893@qq.com
- */
-class SearchRecordActivity : BaseActivity() {
-
- 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 deptId = ""
- private var deviceState = ""
- private var areaId = ""
-
- override fun initLayoutView(): Int = R.layout.activity_search_record
-
- override fun setupTopBarLayout() {
- titleView.text = "记录查询"
- }
-
- 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("03")
- }
- 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, _, position, tag ->
- ownerShipView.text = tag
- this.deptId = ownerShipModel[position].id.toString()
-
- dialog.dismiss()
- }.build().show()
- }
- })
-
- deviceStateView.setOnClickListener {
- QMUIBottomSheet.BottomListSheetBuilder(this)
- .setTitle("在线情况")
- .addItem("在线")
- .addItem("离线")
- .setGravityCenter(true)
- .setOnSheetItemClickListener { dialog, _, _, tag ->
- deviceStateView.text = tag
- this.deviceState = if (tag == "在线") {
- "1"
- } else {
- "0"
- }
-
- 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,
- deptId,
- deviceState,
- 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/StatisticsActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt
index 21c4286..3272cfe 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
@@ -15,6 +15,7 @@
import com.casic.qd.smartwell.widgets.DateSelectDialog
import com.github.mikephil.charting.data.BarEntry
import com.github.mikephil.charting.data.PieEntry
+import com.jzxiang.pickerview.data.Type
import kotlinx.android.synthetic.main.activity_statistics.*
import kotlinx.android.synthetic.main.include_base_title.*
import java.util.*
@@ -97,7 +98,6 @@
5 -> {
DateSelectDialog.Builder()
.setContext(context)
- .setFragmentManager(supportFragmentManager)
.setTitle("选择日期")
.setNegativeButton("取消")
.setPositiveButton("选好了")
@@ -113,7 +113,10 @@
//选择取消就默认加载近7天的数据
periodSpinner.setSelection(3)
}
- }).build().show()
+ })
+ .setFragmentManager(supportFragmentManager)
+ .setCalendarType(Type.YEAR_MONTH_DAY)
+ .build().show()
}
}
}
@@ -200,7 +203,6 @@
5 -> {
DateSelectDialog.Builder()
.setContext(context)
- .setFragmentManager(supportFragmentManager)
.setTitle("选择日期")
.setNegativeButton("取消")
.setPositiveButton("选好了")
@@ -216,7 +218,10 @@
//选择取消就默认加载近7天的数据
periodSpinner.setSelection(3)
}
- }).build().show()
+ })
+ .setFragmentManager(supportFragmentManager)
+ .setCalendarType(Type.YEAR_MONTH_DAY)
+ .build().show()
}
}
}
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt
index 251140d..7a63dea 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt
@@ -13,6 +13,7 @@
import com.casic.qd.smartwell.vm.WaterStatisticsViewModel
import com.casic.qd.smartwell.widgets.DateSelectDialog
import com.github.mikephil.charting.data.Entry
+import com.jzxiang.pickerview.data.Type
import kotlinx.android.synthetic.main.activity_water_expanded.*
import java.util.*
import kotlin.collections.ArrayList
@@ -86,7 +87,6 @@
5 -> {
DateSelectDialog.Builder()
.setContext(context)
- .setFragmentManager(supportFragmentManager)
.setTitle("选择日期")
.setNegativeButton("取消")
.setPositiveButton("选好了")
@@ -102,7 +102,10 @@
//选择取消就默认加载近7天的数据
periodSpinner.setSelection(3)
}
- }).build().show()
+ })
+ .setFragmentManager(supportFragmentManager)
+ .setCalendarType(Type.YEAR_MONTH_DAY)
+ .build().show()
}
}
}
diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/DeviceViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/DeviceViewModel.kt
index 02aefed..9448ade 100644
--- a/app/src/main/java/com/casic/qd/smartwell/vm/DeviceViewModel.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/vm/DeviceViewModel.kt
@@ -7,8 +7,10 @@
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.DayDataModel
import com.casic.qd.smartwell.model.DeviceStatisticsModel
import com.casic.qd.smartwell.model.DeviceTypeModel
+import com.casic.qd.smartwell.model.TotalDataModel
import com.casic.qd.smartwell.utils.retrofit.RetrofitServiceManager
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
@@ -19,6 +21,8 @@
private val gson = Gson()
val resultModel = MutableLiveData()
val typeModel = MutableLiveData()
+ val dayDataModel = MutableLiveData()
+ val totalDataModel = MutableLiveData()
/**
* 管网资产统计
@@ -55,4 +59,40 @@
Log.e(kTag, it.toString(), it)
"服务器异常".show()
})
+
+ /**
+ * 获取设备日用水量
+ */
+ fun obtainSevenDayData(devCode: String?, beginTime: String?, endTime: String?) = launch({
+ val response = RetrofitServiceManager.obtainSevenDayData(devCode, beginTime, endTime)
+ val responseCode = response.separateResponseCode()
+ if (responseCode == 200) {
+ dayDataModel.value = gson.fromJson(
+ response, object : TypeToken() {}.type
+ )
+ } else {
+ response.toErrorMessage().show()
+ }
+ }, {
+ Log.e(kTag, it.toString(), it)
+ "服务器异常".show()
+ })
+
+ /**
+ * 获取设备累计用水量
+ */
+ fun obtainTotalDayData(devCode: String?, beginTime: String?, endTime: String?) = launch({
+ val response = RetrofitServiceManager.obtainTotalDayData(devCode, beginTime, endTime)
+ val responseCode = response.separateResponseCode()
+ if (responseCode == 200) {
+ totalDataModel.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 82386c9..3832c68 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -48,7 +48,7 @@
-
+
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/Long.kt
index 216e7cc..f53e831 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/Long.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/Long.kt
@@ -15,6 +15,14 @@
return dateFormat.format(calendar.time)
}
+fun Long.timestampToLastWeekTime(): String {
+ val dateFormat = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA)
+ val calendar = Calendar.getInstance()
+ calendar.time = Date(this)
+ calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) - 6)
+ return dateFormat.format(calendar.time)
+}
+
fun Long.timestampToLastMonthDate(): String {
val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA)
val calendar = Calendar.getInstance()
diff --git a/app/src/main/java/com/casic/qd/smartwell/model/DayDataModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/DayDataModel.kt
new file mode 100644
index 0000000..18d1399
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/model/DayDataModel.kt
@@ -0,0 +1,13 @@
+package com.casic.qd.smartwell.model
+
+class DayDataModel {
+ var code = 0
+ var data: List? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var time: String? = null
+ var value: String? = null
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/model/TotalDataModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/TotalDataModel.kt
new file mode 100644
index 0000000..30bf829
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/model/TotalDataModel.kt
@@ -0,0 +1,14 @@
+package com.casic.qd.smartwell.model
+
+class TotalDataModel {
+ var code = 0
+ var data: List? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var total: String? = null
+ var deviceState: String? = null
+ var uptime: String? = null
+ }
+}
\ 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 c5bf469..0c80ee9 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
@@ -202,4 +202,26 @@
@Query("offset") offset: Int,
@Query("limit") limit: Int
): String
+
+ /**
+ * 获取设备日用水量
+ * */
+ @GET("/device/sevenDayData")
+ suspend fun obtainSevenDayData(
+ @Header("token") token: String,
+ @Query("devCode") devCode: String?,
+ @Query("beginTime") beginTime: String?,
+ @Query("endTime") endTime: String?
+ ): String
+
+ /**
+ * 获取设备日用水量
+ * */
+ @GET("/device/totalData")
+ suspend fun obtainTotalDayData(
+ @Header("token") token: String,
+ @Query("devCode") devCode: String?,
+ @Query("beginTime") beginTime: String?,
+ @Query("endTime") endTime: 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 6f728e0..a8b320f 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
@@ -204,4 +204,18 @@
Constant.PAGE_LIMIT
)
}
+
+ /**
+ * 获取设备日用水量
+ */
+ suspend fun obtainSevenDayData(devCode: String?, beginTime: String?, endTime: String?): String {
+ return api.obtainSevenDayData(AuthenticationHelper.token!!, devCode, beginTime, endTime)
+ }
+
+ /**
+ * 获取设备累计用水量
+ */
+ suspend fun obtainTotalDayData(devCode: String?, beginTime: String?, endTime: String?): String {
+ return api.obtainTotalDayData(AuthenticationHelper.token!!, devCode, beginTime, endTime)
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt
index 7029d17..a8a2695 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt
@@ -1,22 +1,109 @@
package com.casic.qd.smartwell.view
+import androidx.lifecycle.ViewModelProvider
import com.casic.qd.smartwell.R
import com.casic.qd.smartwell.base.BaseActivity
-import kotlinx.android.synthetic.main.include_base_title.*
+import com.casic.qd.smartwell.extensions.convertColor
+import com.casic.qd.smartwell.extensions.timestampToLastWeekTime
+import com.casic.qd.smartwell.extensions.timestampToTime
+import com.casic.qd.smartwell.model.LineChartEntryModel
+import com.casic.qd.smartwell.utils.ChartViewHelper
+import com.casic.qd.smartwell.utils.Constant
+import com.casic.qd.smartwell.vm.DeviceViewModel
+import com.casic.qd.smartwell.widgets.DateSelectDialog
+import com.github.mikephil.charting.data.Entry
+import com.jzxiang.pickerview.data.Type
+import kotlinx.android.synthetic.main.activity_device_data_detail.*
+import kotlinx.android.synthetic.main.activity_main.rightOptionView
+import kotlinx.android.synthetic.main.activity_main.titleView
class DeviceDataDetailActivity : BaseActivity() {
- override fun initLayoutView(): Int = R.layout.activity_device_detail
+ private val kTag = "DeviceDataDetailActivity"
+ private lateinit var deviceCode: String
+ private lateinit var deviceViewModel: DeviceViewModel
+
+ override fun initLayoutView(): Int = R.layout.activity_device_data_detail
override fun setupTopBarLayout() {
- titleView.text = "历史数据"
+ deviceCode = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ titleView.text = String.format("${deviceCode}历史数据")
}
override fun initData() {
-
+ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java)
}
override fun initEvent() {
+ rightOptionView.setOnClickListener {
+ DateSelectDialog.Builder()
+ .setContext(this)
+ .setTitle("选择日期")
+ .setNegativeButton("取消")
+ .setPositiveButton("选好了")
+ .setOnDialogButtonClickListener(object :
+ DateSelectDialog.OnDialogButtonClickListener {
+ override fun onConfirmClick(startDate: String, endDate: String) {
+ deviceViewModel.obtainSevenDayData(deviceCode, startDate, endDate)
+ deviceViewModel.obtainTotalDayData(deviceCode, startDate, endDate)
+ }
+ override fun onCancelClick() {
+ //选择取消就默认加载近7天的数据
+ val time = System.currentTimeMillis()
+ val startTime = time.timestampToLastWeekTime()
+ val endTime = time.timestampToTime()
+ deviceViewModel.obtainSevenDayData(deviceCode, startTime, endTime)
+ deviceViewModel.obtainTotalDayData(deviceCode, startTime, endTime)
+ }
+ })
+ .setFragmentManager(supportFragmentManager)
+ .setCalendarType(Type.ALL)
+ .build().show()
+ }
+
+ //默认加载近一周的数据
+ val time = System.currentTimeMillis()
+ val startTime = time.timestampToLastWeekTime()
+ val endTime = time.timestampToTime()
+ deviceViewModel.obtainSevenDayData(deviceCode, startTime, endTime)
+ deviceViewModel.dayDataModel.observe(this, {
+ if (it.code == 200) {
+ val entryModels: MutableList = ArrayList()
+ val xAxisDate: MutableList = ArrayList()
+ val entries: ArrayList = ArrayList()
+ val entryModel = LineChartEntryModel()
+
+ entryModel.lineColor = Constant.COLORS[7].convertColor()
+ it.data?.forEachIndexed { index, dataBean ->
+ val split = dataBean.time.toString().split("-")
+ xAxisDate.add("${split[1]}/${split[2]}")
+
+ entries.add(Entry(index.toFloat(), dataBean.value!!.toFloat(), "日用水量"))
+ }
+ entryModel.entryList = entries
+ entryModels.add(entryModel)
+ ChartViewHelper.setLineChartData(dayWaterLineChart, xAxisDate, entryModels)
+ }
+ })
+
+ deviceViewModel.obtainTotalDayData(deviceCode, startTime, endTime)
+ deviceViewModel.totalDataModel.observe(this, {
+ val entryModels: MutableList = ArrayList()
+ val xAxisDate: MutableList = ArrayList()
+ val entries: ArrayList = ArrayList()
+ val entryModel = LineChartEntryModel()
+
+ entryModel.lineColor = Constant.COLORS[7].convertColor()
+ it.data?.forEachIndexed { index, dataBean ->
+ val split = dataBean.uptime.toString().split(" ")[0].split("-")
+ xAxisDate.add("${split[1]}/${split[2]}")
+
+ entries.add(Entry(index.toFloat(), dataBean.total!!.toFloat(), "总用水量"))
+ }
+ entryModel.entryList = entries
+ entryModels.add(entryModel)
+ ChartViewHelper.setLineChartData(totalWaterLineChart, xAxisDate, entryModels)
+ })
}
}
\ No newline at end of file
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 02435a3..3f4bb3c 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
@@ -1,7 +1,6 @@
package com.casic.qd.smartwell.view
import android.content.Context
-import android.content.Intent
import android.os.Handler
import android.os.Looper
import android.os.Message
@@ -22,6 +21,7 @@
import com.casic.qd.smartwell.vm.WaterStatisticsViewModel
import com.github.mikephil.charting.data.Entry
import com.pengxh.app.multilib.widget.dialog.AlertControlDialog
+import com.pengxh.app.multilib.widget.dialog.BottomActionSheet
import com.youth.banner.Banner
import com.youth.banner.adapter.BannerImageAdapter
import com.youth.banner.holder.BannerImageHolder
@@ -100,9 +100,20 @@
HomeRecycleAdapter.OnGridItemClickListener {
override fun onClick(position: Int) {
when (position) {
- 0 -> startActivity(Intent(context, MapActivity::class.java))
- 1 -> startActivity(Intent(context, SearchRecordActivity::class.java))
- 2 -> startActivity(Intent(context, StatisticsActivity::class.java))
+ 0 -> context.navigatePageTo(MapActivity::class.java)
+ 1 -> {
+ BottomActionSheet.Builder()
+ .setContext(context)
+ .setActionItemTitles(arrayOf("设备", "数据"))
+ .setOnActionSheetListener { index ->
+ when (index) {
+ 0 -> context.navigatePageTo(SearchDeviceActivity::class.java)
+ 1 -> context.navigatePageTo(SearchDataActivity::class.java)
+ }
+ }.build().show()
+
+ }
+ 2 -> context.navigatePageTo(StatisticsActivity::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 8f54163..5285a9f 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
@@ -13,11 +13,6 @@
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() {
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt
new file mode 100644
index 0000000..e6a38e4
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt
@@ -0,0 +1,168 @@
+package com.casic.qd.smartwell.view
+
+import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseActivity
+import kotlinx.android.synthetic.main.include_base_title.*
+
+/**
+ * @author a203
+ * @description 记录查询界面
+ * @date 2022/2/17 14:33
+ * @email 290677893@qq.com
+ */
+class SearchDataActivity : BaseActivity() {
+
+// 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 deptId = ""
+// private var deviceState = ""
+// private var areaId = ""
+
+ override fun initLayoutView(): Int = R.layout.activity_data_search
+
+ override fun setupTopBarLayout() {
+ titleView.text = "数据查询"
+ }
+
+ 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("03")
+// }
+// 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, _, position, tag ->
+// ownerShipView.text = tag
+// this.deptId = ownerShipModel[position].id.toString()
+//
+// dialog.dismiss()
+// }.build().show()
+// }
+// })
+//
+// deviceStateView.setOnClickListener {
+// QMUIBottomSheet.BottomListSheetBuilder(this)
+// .setTitle("在线情况")
+// .addItem("在线")
+// .addItem("离线")
+// .setGravityCenter(true)
+// .setOnSheetItemClickListener { dialog, _, _, tag ->
+// deviceStateView.text = tag
+// this.deviceState = if (tag == "在线") {
+// "1"
+// } else {
+// "0"
+// }
+//
+// 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,
+// deptId,
+// deviceState,
+// 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/SearchDeviceActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt
new file mode 100644
index 0000000..cf0c05f
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt
@@ -0,0 +1,184 @@
+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_device_search.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+/**
+ * @author a203
+ * @description 记录查询界面
+ * @date 2022/2/17 14:33
+ * @email 290677893@qq.com
+ */
+class SearchDeviceActivity : BaseActivity() {
+
+ 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 deptId = ""
+ private var deviceState = ""
+ private var areaId = ""
+
+ override fun initLayoutView(): Int = R.layout.activity_device_search
+
+ override fun setupTopBarLayout() {
+ titleView.text = "设备查询"
+ }
+
+ 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("03")
+ }
+ 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, _, position, tag ->
+ ownerShipView.text = tag
+ this.deptId = ownerShipModel[position].id.toString()
+
+ dialog.dismiss()
+ }.build().show()
+ }
+ })
+
+ deviceStateView.setOnClickListener {
+ QMUIBottomSheet.BottomListSheetBuilder(this)
+ .setTitle("在线情况")
+ .addItem("在线")
+ .addItem("离线")
+ .setGravityCenter(true)
+ .setOnSheetItemClickListener { dialog, _, _, tag ->
+ deviceStateView.text = tag
+ this.deviceState = if (tag == "在线") {
+ "1"
+ } else {
+ "0"
+ }
+
+ 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,
+ deptId,
+ deviceState,
+ 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/SearchRecordActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchRecordActivity.kt
deleted file mode 100644
index 8cab864..0000000
--- a/app/src/main/java/com/casic/qd/smartwell/view/SearchRecordActivity.kt
+++ /dev/null
@@ -1,184 +0,0 @@
-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 记录查询界面
- * @date 2022/2/17 14:33
- * @email 290677893@qq.com
- */
-class SearchRecordActivity : BaseActivity() {
-
- 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 deptId = ""
- private var deviceState = ""
- private var areaId = ""
-
- override fun initLayoutView(): Int = R.layout.activity_search_record
-
- override fun setupTopBarLayout() {
- titleView.text = "记录查询"
- }
-
- 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("03")
- }
- 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, _, position, tag ->
- ownerShipView.text = tag
- this.deptId = ownerShipModel[position].id.toString()
-
- dialog.dismiss()
- }.build().show()
- }
- })
-
- deviceStateView.setOnClickListener {
- QMUIBottomSheet.BottomListSheetBuilder(this)
- .setTitle("在线情况")
- .addItem("在线")
- .addItem("离线")
- .setGravityCenter(true)
- .setOnSheetItemClickListener { dialog, _, _, tag ->
- deviceStateView.text = tag
- this.deviceState = if (tag == "在线") {
- "1"
- } else {
- "0"
- }
-
- 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,
- deptId,
- deviceState,
- 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/StatisticsActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt
index 21c4286..3272cfe 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
@@ -15,6 +15,7 @@
import com.casic.qd.smartwell.widgets.DateSelectDialog
import com.github.mikephil.charting.data.BarEntry
import com.github.mikephil.charting.data.PieEntry
+import com.jzxiang.pickerview.data.Type
import kotlinx.android.synthetic.main.activity_statistics.*
import kotlinx.android.synthetic.main.include_base_title.*
import java.util.*
@@ -97,7 +98,6 @@
5 -> {
DateSelectDialog.Builder()
.setContext(context)
- .setFragmentManager(supportFragmentManager)
.setTitle("选择日期")
.setNegativeButton("取消")
.setPositiveButton("选好了")
@@ -113,7 +113,10 @@
//选择取消就默认加载近7天的数据
periodSpinner.setSelection(3)
}
- }).build().show()
+ })
+ .setFragmentManager(supportFragmentManager)
+ .setCalendarType(Type.YEAR_MONTH_DAY)
+ .build().show()
}
}
}
@@ -200,7 +203,6 @@
5 -> {
DateSelectDialog.Builder()
.setContext(context)
- .setFragmentManager(supportFragmentManager)
.setTitle("选择日期")
.setNegativeButton("取消")
.setPositiveButton("选好了")
@@ -216,7 +218,10 @@
//选择取消就默认加载近7天的数据
periodSpinner.setSelection(3)
}
- }).build().show()
+ })
+ .setFragmentManager(supportFragmentManager)
+ .setCalendarType(Type.YEAR_MONTH_DAY)
+ .build().show()
}
}
}
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt
index 251140d..7a63dea 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt
@@ -13,6 +13,7 @@
import com.casic.qd.smartwell.vm.WaterStatisticsViewModel
import com.casic.qd.smartwell.widgets.DateSelectDialog
import com.github.mikephil.charting.data.Entry
+import com.jzxiang.pickerview.data.Type
import kotlinx.android.synthetic.main.activity_water_expanded.*
import java.util.*
import kotlin.collections.ArrayList
@@ -86,7 +87,6 @@
5 -> {
DateSelectDialog.Builder()
.setContext(context)
- .setFragmentManager(supportFragmentManager)
.setTitle("选择日期")
.setNegativeButton("取消")
.setPositiveButton("选好了")
@@ -102,7 +102,10 @@
//选择取消就默认加载近7天的数据
periodSpinner.setSelection(3)
}
- }).build().show()
+ })
+ .setFragmentManager(supportFragmentManager)
+ .setCalendarType(Type.YEAR_MONTH_DAY)
+ .build().show()
}
}
}
diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/DeviceViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/DeviceViewModel.kt
index 02aefed..9448ade 100644
--- a/app/src/main/java/com/casic/qd/smartwell/vm/DeviceViewModel.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/vm/DeviceViewModel.kt
@@ -7,8 +7,10 @@
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.DayDataModel
import com.casic.qd.smartwell.model.DeviceStatisticsModel
import com.casic.qd.smartwell.model.DeviceTypeModel
+import com.casic.qd.smartwell.model.TotalDataModel
import com.casic.qd.smartwell.utils.retrofit.RetrofitServiceManager
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
@@ -19,6 +21,8 @@
private val gson = Gson()
val resultModel = MutableLiveData()
val typeModel = MutableLiveData()
+ val dayDataModel = MutableLiveData()
+ val totalDataModel = MutableLiveData()
/**
* 管网资产统计
@@ -55,4 +59,40 @@
Log.e(kTag, it.toString(), it)
"服务器异常".show()
})
+
+ /**
+ * 获取设备日用水量
+ */
+ fun obtainSevenDayData(devCode: String?, beginTime: String?, endTime: String?) = launch({
+ val response = RetrofitServiceManager.obtainSevenDayData(devCode, beginTime, endTime)
+ val responseCode = response.separateResponseCode()
+ if (responseCode == 200) {
+ dayDataModel.value = gson.fromJson(
+ response, object : TypeToken() {}.type
+ )
+ } else {
+ response.toErrorMessage().show()
+ }
+ }, {
+ Log.e(kTag, it.toString(), it)
+ "服务器异常".show()
+ })
+
+ /**
+ * 获取设备累计用水量
+ */
+ fun obtainTotalDayData(devCode: String?, beginTime: String?, endTime: String?) = launch({
+ val response = RetrofitServiceManager.obtainTotalDayData(devCode, beginTime, endTime)
+ val responseCode = response.separateResponseCode()
+ if (responseCode == 200) {
+ totalDataModel.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/widgets/DateSelectDialog.kt b/app/src/main/java/com/casic/qd/smartwell/widgets/DateSelectDialog.kt
index ec403eb..fda3a03 100644
--- a/app/src/main/java/com/casic/qd/smartwell/widgets/DateSelectDialog.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/widgets/DateSelectDialog.kt
@@ -9,6 +9,7 @@
import com.casic.qd.smartwell.extensions.convertColor
import com.casic.qd.smartwell.extensions.initDialogLayoutParams
import com.casic.qd.smartwell.extensions.timestampToDate
+import com.casic.qd.smartwell.extensions.timestampToTime
import com.casic.qd.smartwell.utils.Constant
import com.jzxiang.pickerview.TimePickerDialog
import com.jzxiang.pickerview.data.Type
@@ -18,30 +19,27 @@
builder.context, R.style.UserDefinedDialogStyle
) {
- private val fragmentManager: FragmentManager = builder.fragmentManager
private val title: String = builder.title
private val negativeBtn: String = builder.negativeBtn
private val positiveBtn: String = builder.positiveBtn
private val listener: OnDialogButtonClickListener = builder.listener
+ private val fragmentManager: FragmentManager = builder.fragmentManager
+ private val type: Type = builder.type
class Builder {
lateinit var context: Context
- lateinit var fragmentManager: FragmentManager
lateinit var title: String
lateinit var negativeBtn: String
lateinit var positiveBtn: String
lateinit var listener: OnDialogButtonClickListener
+ lateinit var fragmentManager: FragmentManager
+ lateinit var type: Type
fun setContext(context: Context): Builder {
this.context = context
return this
}
- fun setFragmentManager(fragmentManager: FragmentManager): Builder {
- this.fragmentManager = fragmentManager
- return this
- }
-
fun setTitle(title: String): Builder {
this.title = title
return this
@@ -62,6 +60,16 @@
return this
}
+ fun setFragmentManager(fragmentManager: FragmentManager): Builder {
+ this.fragmentManager = fragmentManager
+ return this
+ }
+
+ fun setCalendarType(calendarType: Type): Builder {
+ this.type = calendarType
+ return this
+ }
+
fun build(): DateSelectDialog {
return DateSelectDialog(this)
}
@@ -69,7 +77,7 @@
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
- this.initDialogLayoutParams(Gravity.CENTER, R.style.UserDefinedAnimation, 0.8f)
+ this.initDialogLayoutParams(Gravity.CENTER, R.style.UserDefinedAnimation, 0.85f)
setContentView(R.layout.dialog_select_date)
setCancelable(false)
setCanceledOnTouchOutside(false)
@@ -86,10 +94,15 @@
.setCyclic(false)
.setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS)
.setMaxMillseconds(System.currentTimeMillis())
- .setType(Type.YEAR_MONTH_DAY)
+ .setType(type)
.setCallBack { _: TimePickerDialog?, millSeconds: Long ->
- startDateView.setText(millSeconds.timestampToDate())
- }.build().show(fragmentManager, "YEAR_MONTH_DAY")
+ val textValue = if (type == Type.ALL) {
+ millSeconds.timestampToTime()
+ } else {
+ millSeconds.timestampToDate()
+ }
+ startDateView.setText(textValue)
+ }.build().show(fragmentManager, "DateSelectDialog")
}
endDateView.setOnClickListener {
@@ -100,10 +113,15 @@
.setCyclic(false)
.setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS)
.setMaxMillseconds(System.currentTimeMillis())
- .setType(Type.YEAR_MONTH_DAY)
+ .setType(type)
.setCallBack { _: TimePickerDialog?, millSeconds: Long ->
- endDateView.setText(millSeconds.timestampToDate())
- }.build().show(fragmentManager, "YEAR_MONTH_DAY")
+ val textValue = if (type == Type.ALL) {
+ millSeconds.timestampToTime()
+ } else {
+ millSeconds.timestampToDate()
+ }
+ endDateView.setText(textValue)
+ }.build().show(fragmentManager, "DateSelectDialog")
}
dialogCancelButton.text = negativeBtn
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 82386c9..3832c68 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -48,7 +48,7 @@
-
+
diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/Long.kt
index 216e7cc..f53e831 100644
--- a/app/src/main/java/com/casic/qd/smartwell/extensions/Long.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/extensions/Long.kt
@@ -15,6 +15,14 @@
return dateFormat.format(calendar.time)
}
+fun Long.timestampToLastWeekTime(): String {
+ val dateFormat = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA)
+ val calendar = Calendar.getInstance()
+ calendar.time = Date(this)
+ calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) - 6)
+ return dateFormat.format(calendar.time)
+}
+
fun Long.timestampToLastMonthDate(): String {
val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA)
val calendar = Calendar.getInstance()
diff --git a/app/src/main/java/com/casic/qd/smartwell/model/DayDataModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/DayDataModel.kt
new file mode 100644
index 0000000..18d1399
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/model/DayDataModel.kt
@@ -0,0 +1,13 @@
+package com.casic.qd.smartwell.model
+
+class DayDataModel {
+ var code = 0
+ var data: List? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var time: String? = null
+ var value: String? = null
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/model/TotalDataModel.kt b/app/src/main/java/com/casic/qd/smartwell/model/TotalDataModel.kt
new file mode 100644
index 0000000..30bf829
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/model/TotalDataModel.kt
@@ -0,0 +1,14 @@
+package com.casic.qd.smartwell.model
+
+class TotalDataModel {
+ var code = 0
+ var data: List? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var total: String? = null
+ var deviceState: String? = null
+ var uptime: String? = null
+ }
+}
\ 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 c5bf469..0c80ee9 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
@@ -202,4 +202,26 @@
@Query("offset") offset: Int,
@Query("limit") limit: Int
): String
+
+ /**
+ * 获取设备日用水量
+ * */
+ @GET("/device/sevenDayData")
+ suspend fun obtainSevenDayData(
+ @Header("token") token: String,
+ @Query("devCode") devCode: String?,
+ @Query("beginTime") beginTime: String?,
+ @Query("endTime") endTime: String?
+ ): String
+
+ /**
+ * 获取设备日用水量
+ * */
+ @GET("/device/totalData")
+ suspend fun obtainTotalDayData(
+ @Header("token") token: String,
+ @Query("devCode") devCode: String?,
+ @Query("beginTime") beginTime: String?,
+ @Query("endTime") endTime: 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 6f728e0..a8b320f 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
@@ -204,4 +204,18 @@
Constant.PAGE_LIMIT
)
}
+
+ /**
+ * 获取设备日用水量
+ */
+ suspend fun obtainSevenDayData(devCode: String?, beginTime: String?, endTime: String?): String {
+ return api.obtainSevenDayData(AuthenticationHelper.token!!, devCode, beginTime, endTime)
+ }
+
+ /**
+ * 获取设备累计用水量
+ */
+ suspend fun obtainTotalDayData(devCode: String?, beginTime: String?, endTime: String?): String {
+ return api.obtainTotalDayData(AuthenticationHelper.token!!, devCode, beginTime, endTime)
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt
index 7029d17..a8a2695 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt
@@ -1,22 +1,109 @@
package com.casic.qd.smartwell.view
+import androidx.lifecycle.ViewModelProvider
import com.casic.qd.smartwell.R
import com.casic.qd.smartwell.base.BaseActivity
-import kotlinx.android.synthetic.main.include_base_title.*
+import com.casic.qd.smartwell.extensions.convertColor
+import com.casic.qd.smartwell.extensions.timestampToLastWeekTime
+import com.casic.qd.smartwell.extensions.timestampToTime
+import com.casic.qd.smartwell.model.LineChartEntryModel
+import com.casic.qd.smartwell.utils.ChartViewHelper
+import com.casic.qd.smartwell.utils.Constant
+import com.casic.qd.smartwell.vm.DeviceViewModel
+import com.casic.qd.smartwell.widgets.DateSelectDialog
+import com.github.mikephil.charting.data.Entry
+import com.jzxiang.pickerview.data.Type
+import kotlinx.android.synthetic.main.activity_device_data_detail.*
+import kotlinx.android.synthetic.main.activity_main.rightOptionView
+import kotlinx.android.synthetic.main.activity_main.titleView
class DeviceDataDetailActivity : BaseActivity() {
- override fun initLayoutView(): Int = R.layout.activity_device_detail
+ private val kTag = "DeviceDataDetailActivity"
+ private lateinit var deviceCode: String
+ private lateinit var deviceViewModel: DeviceViewModel
+
+ override fun initLayoutView(): Int = R.layout.activity_device_data_detail
override fun setupTopBarLayout() {
- titleView.text = "历史数据"
+ deviceCode = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ titleView.text = String.format("${deviceCode}历史数据")
}
override fun initData() {
-
+ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java)
}
override fun initEvent() {
+ rightOptionView.setOnClickListener {
+ DateSelectDialog.Builder()
+ .setContext(this)
+ .setTitle("选择日期")
+ .setNegativeButton("取消")
+ .setPositiveButton("选好了")
+ .setOnDialogButtonClickListener(object :
+ DateSelectDialog.OnDialogButtonClickListener {
+ override fun onConfirmClick(startDate: String, endDate: String) {
+ deviceViewModel.obtainSevenDayData(deviceCode, startDate, endDate)
+ deviceViewModel.obtainTotalDayData(deviceCode, startDate, endDate)
+ }
+ override fun onCancelClick() {
+ //选择取消就默认加载近7天的数据
+ val time = System.currentTimeMillis()
+ val startTime = time.timestampToLastWeekTime()
+ val endTime = time.timestampToTime()
+ deviceViewModel.obtainSevenDayData(deviceCode, startTime, endTime)
+ deviceViewModel.obtainTotalDayData(deviceCode, startTime, endTime)
+ }
+ })
+ .setFragmentManager(supportFragmentManager)
+ .setCalendarType(Type.ALL)
+ .build().show()
+ }
+
+ //默认加载近一周的数据
+ val time = System.currentTimeMillis()
+ val startTime = time.timestampToLastWeekTime()
+ val endTime = time.timestampToTime()
+ deviceViewModel.obtainSevenDayData(deviceCode, startTime, endTime)
+ deviceViewModel.dayDataModel.observe(this, {
+ if (it.code == 200) {
+ val entryModels: MutableList = ArrayList()
+ val xAxisDate: MutableList = ArrayList()
+ val entries: ArrayList = ArrayList()
+ val entryModel = LineChartEntryModel()
+
+ entryModel.lineColor = Constant.COLORS[7].convertColor()
+ it.data?.forEachIndexed { index, dataBean ->
+ val split = dataBean.time.toString().split("-")
+ xAxisDate.add("${split[1]}/${split[2]}")
+
+ entries.add(Entry(index.toFloat(), dataBean.value!!.toFloat(), "日用水量"))
+ }
+ entryModel.entryList = entries
+ entryModels.add(entryModel)
+ ChartViewHelper.setLineChartData(dayWaterLineChart, xAxisDate, entryModels)
+ }
+ })
+
+ deviceViewModel.obtainTotalDayData(deviceCode, startTime, endTime)
+ deviceViewModel.totalDataModel.observe(this, {
+ val entryModels: MutableList = ArrayList()
+ val xAxisDate: MutableList = ArrayList()
+ val entries: ArrayList = ArrayList()
+ val entryModel = LineChartEntryModel()
+
+ entryModel.lineColor = Constant.COLORS[7].convertColor()
+ it.data?.forEachIndexed { index, dataBean ->
+ val split = dataBean.uptime.toString().split(" ")[0].split("-")
+ xAxisDate.add("${split[1]}/${split[2]}")
+
+ entries.add(Entry(index.toFloat(), dataBean.total!!.toFloat(), "总用水量"))
+ }
+ entryModel.entryList = entries
+ entryModels.add(entryModel)
+ ChartViewHelper.setLineChartData(totalWaterLineChart, xAxisDate, entryModels)
+ })
}
}
\ No newline at end of file
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 02435a3..3f4bb3c 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
@@ -1,7 +1,6 @@
package com.casic.qd.smartwell.view
import android.content.Context
-import android.content.Intent
import android.os.Handler
import android.os.Looper
import android.os.Message
@@ -22,6 +21,7 @@
import com.casic.qd.smartwell.vm.WaterStatisticsViewModel
import com.github.mikephil.charting.data.Entry
import com.pengxh.app.multilib.widget.dialog.AlertControlDialog
+import com.pengxh.app.multilib.widget.dialog.BottomActionSheet
import com.youth.banner.Banner
import com.youth.banner.adapter.BannerImageAdapter
import com.youth.banner.holder.BannerImageHolder
@@ -100,9 +100,20 @@
HomeRecycleAdapter.OnGridItemClickListener {
override fun onClick(position: Int) {
when (position) {
- 0 -> startActivity(Intent(context, MapActivity::class.java))
- 1 -> startActivity(Intent(context, SearchRecordActivity::class.java))
- 2 -> startActivity(Intent(context, StatisticsActivity::class.java))
+ 0 -> context.navigatePageTo(MapActivity::class.java)
+ 1 -> {
+ BottomActionSheet.Builder()
+ .setContext(context)
+ .setActionItemTitles(arrayOf("设备", "数据"))
+ .setOnActionSheetListener { index ->
+ when (index) {
+ 0 -> context.navigatePageTo(SearchDeviceActivity::class.java)
+ 1 -> context.navigatePageTo(SearchDataActivity::class.java)
+ }
+ }.build().show()
+
+ }
+ 2 -> context.navigatePageTo(StatisticsActivity::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 8f54163..5285a9f 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
@@ -13,11 +13,6 @@
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() {
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt
new file mode 100644
index 0000000..e6a38e4
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt
@@ -0,0 +1,168 @@
+package com.casic.qd.smartwell.view
+
+import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseActivity
+import kotlinx.android.synthetic.main.include_base_title.*
+
+/**
+ * @author a203
+ * @description 记录查询界面
+ * @date 2022/2/17 14:33
+ * @email 290677893@qq.com
+ */
+class SearchDataActivity : BaseActivity() {
+
+// 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 deptId = ""
+// private var deviceState = ""
+// private var areaId = ""
+
+ override fun initLayoutView(): Int = R.layout.activity_data_search
+
+ override fun setupTopBarLayout() {
+ titleView.text = "数据查询"
+ }
+
+ 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("03")
+// }
+// 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, _, position, tag ->
+// ownerShipView.text = tag
+// this.deptId = ownerShipModel[position].id.toString()
+//
+// dialog.dismiss()
+// }.build().show()
+// }
+// })
+//
+// deviceStateView.setOnClickListener {
+// QMUIBottomSheet.BottomListSheetBuilder(this)
+// .setTitle("在线情况")
+// .addItem("在线")
+// .addItem("离线")
+// .setGravityCenter(true)
+// .setOnSheetItemClickListener { dialog, _, _, tag ->
+// deviceStateView.text = tag
+// this.deviceState = if (tag == "在线") {
+// "1"
+// } else {
+// "0"
+// }
+//
+// 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,
+// deptId,
+// deviceState,
+// 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/SearchDeviceActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt
new file mode 100644
index 0000000..cf0c05f
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt
@@ -0,0 +1,184 @@
+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_device_search.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+/**
+ * @author a203
+ * @description 记录查询界面
+ * @date 2022/2/17 14:33
+ * @email 290677893@qq.com
+ */
+class SearchDeviceActivity : BaseActivity() {
+
+ 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 deptId = ""
+ private var deviceState = ""
+ private var areaId = ""
+
+ override fun initLayoutView(): Int = R.layout.activity_device_search
+
+ override fun setupTopBarLayout() {
+ titleView.text = "设备查询"
+ }
+
+ 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("03")
+ }
+ 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, _, position, tag ->
+ ownerShipView.text = tag
+ this.deptId = ownerShipModel[position].id.toString()
+
+ dialog.dismiss()
+ }.build().show()
+ }
+ })
+
+ deviceStateView.setOnClickListener {
+ QMUIBottomSheet.BottomListSheetBuilder(this)
+ .setTitle("在线情况")
+ .addItem("在线")
+ .addItem("离线")
+ .setGravityCenter(true)
+ .setOnSheetItemClickListener { dialog, _, _, tag ->
+ deviceStateView.text = tag
+ this.deviceState = if (tag == "在线") {
+ "1"
+ } else {
+ "0"
+ }
+
+ 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,
+ deptId,
+ deviceState,
+ 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/SearchRecordActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchRecordActivity.kt
deleted file mode 100644
index 8cab864..0000000
--- a/app/src/main/java/com/casic/qd/smartwell/view/SearchRecordActivity.kt
+++ /dev/null
@@ -1,184 +0,0 @@
-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 记录查询界面
- * @date 2022/2/17 14:33
- * @email 290677893@qq.com
- */
-class SearchRecordActivity : BaseActivity() {
-
- 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 deptId = ""
- private var deviceState = ""
- private var areaId = ""
-
- override fun initLayoutView(): Int = R.layout.activity_search_record
-
- override fun setupTopBarLayout() {
- titleView.text = "记录查询"
- }
-
- 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("03")
- }
- authenticateViewModel.resultModel.observe(this, {
- if (it.code == 200) {
- val ownerShipModel: MutableList