From 31b14527efdfb3c274328bc1451c933056a82629 Mon Sep 17 00:00:00 2001 From: xiaowusky Date: Fri, 16 Jun 2023 17:01:49 +0800 Subject: [PATCH] =?UTF-8?q?desc:=E6=9E=84=E9=80=A0=E5=81=87=E7=9A=84?= =?UTF-8?q?=E5=91=8A=E8=AD=A6=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/yinuo/safetywatcher/TestUtils.kt | 10 +++++++ .../watcher/ui/WarnDataActivity.kt | 29 ++++++++++++++----- .../watcher/ui/adapter/WarnDataAdapter.kt | 14 ++++----- .../com/common/commonlib/db/dao/WarningDao.kt | 4 +-- .../com/common/commonlib/db/entity/Warning.kt | 4 +-- 5 files changed, 42 insertions(+), 19 deletions(-) diff --git a/app/src/main/java/com/yinuo/safetywatcher/TestUtils.kt b/app/src/main/java/com/yinuo/safetywatcher/TestUtils.kt index 950cea9..c8a8133 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/TestUtils.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/TestUtils.kt @@ -11,6 +11,7 @@ import com.common.commonlib.net.callback.RequestResultCallBack import com.common.commonlib.db.DBUtils import com.common.commonlib.db.entity.Gas import com.common.commonlib.db.entity.GasType +import com.common.commonlib.db.entity.Warning import com.yinuo.safetywatcher.watcher.net.api.UploadFileApi import com.yinuo.safetywatcher.watcher.ui.view.CommonDialog import com.yinuo.safetywatcher.watcher.utils.DateUtils @@ -59,6 +60,15 @@ object TestUtils { gases.add(Gas(timeMillis, "CO2", 1.0)) gases.add(Gas(timeMillis, "O2", 1.0)) gasDao.insertAll(gases) + + // 构造告警数据 + val warningDao = DBUtils.warningDao() + val warnings = mutableListOf() + warnings.add(Warning("CO", 60.0, "", timeMillis)) + warnings.add(Warning("CO", 80.0, "", timeMillis - 30 * 1000)) + warnings.add(Warning("CO2", 80.0, "", timeMillis - 30 * 1000)) + warnings.add(Warning("O2", 10.0, "", timeMillis - 90 * 1000)) + warningDao.insertAll(warnings) } } diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/WarnDataActivity.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/WarnDataActivity.kt index 5b3f715..f1ffafd 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/WarnDataActivity.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/WarnDataActivity.kt @@ -2,15 +2,19 @@ package com.yinuo.safetywatcher.watcher.ui import android.view.View import androidx.activity.result.contract.ActivityResultContracts +import androidx.lifecycle.lifecycleScope import androidx.recyclerview.widget.LinearLayoutManager +import com.common.commonlib.db.DBUtils +import com.common.commonlib.db.entity.Warning import com.yinuo.safetywatcher.R import com.yinuo.safetywatcher.databinding.ActivityWarndataBinding -import com.yinuo.safetywatcher.watcher.ui.adapter.WarnDataAdapter import com.yinuo.safetywatcher.watcher.base.BaseActivity -import com.yinuo.safetywatcher.watcher.bean.WarnData import com.yinuo.safetywatcher.watcher.constant.DEFAULT_QUERY_TIME_INTERVAL -import com.yinuo.safetywatcher.watcher.utils.DateUtils +import com.yinuo.safetywatcher.watcher.ui.adapter.WarnDataAdapter import com.yinuo.safetywatcher.watcher.ui.view.CommonTopBar +import com.yinuo.safetywatcher.watcher.utils.DateUtils +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch class WarnDataActivity : BaseActivity() { @@ -95,9 +99,20 @@ class WarnDataActivity : BaseActivity() { } private fun queryData() { - val datas = mutableListOf() - datas.add(WarnData(0, "二氧化碳浓度过高")) - datas.add(WarnData(0, "温度超标")) - mAdapter.setData(datas) + lifecycleScope.launch { + val warningDao = DBUtils.warningDao() + val warnings = warningDao.findAllByTime("CO", startTime, endTime) + + launch(Dispatchers.Main) { + val sortList = mutableListOf() + sortList.apply { + addAll(warnings) + sortWith { o1, o2 -> + (o2.startTime - o1.startTime).toInt() + } + } + mAdapter.setData(sortList) + } + } } } \ No newline at end of file diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/adapter/WarnDataAdapter.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/adapter/WarnDataAdapter.kt index 7cabe89..62b0b66 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/adapter/WarnDataAdapter.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/adapter/WarnDataAdapter.kt @@ -2,21 +2,19 @@ package com.yinuo.safetywatcher.watcher.ui.adapter import android.view.LayoutInflater import android.view.ViewGroup -import com.yinuo.safetywatcher.databinding.LayoutItemHistoryBinding +import com.common.commonlib.db.entity.Warning import com.yinuo.safetywatcher.databinding.LayoutItemWarnBinding import com.yinuo.safetywatcher.watcher.base.BaseRvAdapter -import com.yinuo.safetywatcher.watcher.bean.HistoryData -import com.yinuo.safetywatcher.watcher.bean.WarnData import com.yinuo.safetywatcher.watcher.utils.DateUtils class WarnDataAdapter : - BaseRvAdapter() { + BaseRvAdapter() { class WViewHolder(private val binding: LayoutItemWarnBinding) : - BaseRvAdapter.BaseViewHolder(binding) { - override fun bindView(data: WarnData) { - binding.tvTime.text = formatTime(data.time) - binding.tvSensor.text = data.error + BaseRvAdapter.BaseViewHolder(binding) { + override fun bindView(data: Warning) { + binding.tvTime.text = formatTime(data.startTime) + binding.tvSensor.text = data.gasName } private fun formatTime(time: Long): CharSequence? { diff --git a/library-common/src/main/java/com/common/commonlib/db/dao/WarningDao.kt b/library-common/src/main/java/com/common/commonlib/db/dao/WarningDao.kt index 9c79749..6c99603 100644 --- a/library-common/src/main/java/com/common/commonlib/db/dao/WarningDao.kt +++ b/library-common/src/main/java/com/common/commonlib/db/dao/WarningDao.kt @@ -13,7 +13,7 @@ interface WarningDao { suspend fun getAll(): List? @Query("SELECT * FROM warning WHERE gas_name IS :name AND start_time BETWEEN :startTime AND :endTime") - suspend fun findAllByName(name: String, startTime: Long, endTime: Long): List? + suspend fun findAllByTime(name: String, startTime: Long, endTime: Long): List @Query("SELECT * FROM warning WHERE gas_name IS :name ORDER BY id DESC LIMIT 1") suspend fun findLatestByName(name: String): Warning? @@ -22,7 +22,7 @@ interface WarningDao { suspend fun queryWarningsNoEndTime(): List? @Insert - suspend fun insertAll(vararg warnings: Warning) + suspend fun insertAll(warnings: List) @Insert suspend fun insert(warning: Warning) diff --git a/library-common/src/main/java/com/common/commonlib/db/entity/Warning.kt b/library-common/src/main/java/com/common/commonlib/db/entity/Warning.kt index 53e9682..e4fb7ce 100644 --- a/library-common/src/main/java/com/common/commonlib/db/entity/Warning.kt +++ b/library-common/src/main/java/com/common/commonlib/db/entity/Warning.kt @@ -9,9 +9,9 @@ data class Warning( @ColumnInfo(name = "gas_name") var gasName: String, @ColumnInfo(name = "gas_value") var gasValue: Double, @ColumnInfo(name = "unit") var unit: String, - @ColumnInfo(name = "threshold_low") var thresholdLow: Double, - @ColumnInfo(name = "threshold_high") var thresholdHigh: Double, @ColumnInfo(name = "start_time") var startTime: Long, + @ColumnInfo(name = "threshold_low") var thresholdLow: Double = 0.0, + @ColumnInfo(name = "threshold_high") var thresholdHigh: Double = 0.0, @ColumnInfo(name = "end_time") var endTime: Long = -1L, @PrimaryKey(autoGenerate = true) var id: Int = 0 )