From 3b0a81a33ae00e5073650d46cd474c21991cd82f Mon Sep 17 00:00:00 2001 From: xiaowusky Date: Mon, 12 Jun 2023 10:34:05 +0800 Subject: [PATCH] =?UTF-8?q?desc:=E4=BF=AE=E6=94=B9=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/yinuo/safetywatcher/TestUtils.kt | 49 +++++++++++++++++++ .../com/yinuo/safetywatcher/watcher/App.kt | 5 +- .../watcher/base/BaseRvAdapter.kt | 1 + .../safetywatcher/watcher/db/dao/GasDao.kt | 2 +- .../watcher/db/dao/GasTypeDao.kt | 3 ++ .../safetywatcher/watcher/db/entity/Gas.kt | 8 +-- .../watcher/ui/QueryDataActivity.kt | 15 ++++-- .../watcher/ui/TimeSettingActivity.kt | 2 +- .../safetywatcher/watcher/utils/LztekUtil.kt | 6 +-- 9 files changed, 77 insertions(+), 14 deletions(-) create mode 100644 app/src/main/java/com/yinuo/safetywatcher/TestUtils.kt diff --git a/app/src/main/java/com/yinuo/safetywatcher/TestUtils.kt b/app/src/main/java/com/yinuo/safetywatcher/TestUtils.kt new file mode 100644 index 0000000..8768e47 --- /dev/null +++ b/app/src/main/java/com/yinuo/safetywatcher/TestUtils.kt @@ -0,0 +1,49 @@ +package com.yinuo.safetywatcher + +import com.yinuo.safetywatcher.watcher.db.DBUtils +import com.yinuo.safetywatcher.watcher.db.entity.Gas +import com.yinuo.safetywatcher.watcher.db.entity.GasType +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.launch + +object TestUtils { + + + fun insertData() { + GlobalScope.launch() { + // 插入类型 + val typeDao = DBUtils.gasTypeDao() + val all = typeDao.getAll() + if (all.isNotEmpty()){ + return@launch + } + val list = mutableListOf() + list.add(GasType("CO")) + list.add(GasType("CO2")) + list.add(GasType("O2")) + typeDao.insertAll(list) + + // 构造气体数据 + val timeMillis = System.currentTimeMillis() + + val gasDao = DBUtils.gasDao() + val gases = mutableListOf() + gases.add(Gas(1, timeMillis - 90 * 1000, "CO", 1.0)) + gases.add(Gas(2, timeMillis - 90 * 1000, "O2", 1.0)) + gases.add(Gas(3, timeMillis - 90 * 1000, "CO2", 1.0)) + + gases.add(Gas(4, timeMillis - 60 * 1000, "CO2", 1.0)) + gases.add(Gas(5, timeMillis - 60 * 1000, "CO", 1.0)) + gases.add(Gas(6, timeMillis - 60 * 1000, "O2", 1.0)) + + gases.add(Gas(7, timeMillis - 30 * 1000, "O2", 1.0)) + gases.add(Gas(8, timeMillis - 30 * 1000, "CO", 1.0)) + gases.add(Gas(9, timeMillis - 30 * 1000, "CO2", 1.0)) + + gases.add(Gas(10, timeMillis, "CO", 1.0)) + gases.add(Gas(11, timeMillis, "CO2", 1.0)) + gases.add(Gas(12, timeMillis, "O2", 1.0)) + gasDao.insertAll(gases) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/App.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/App.kt index 4256345..b924200 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/App.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/App.kt @@ -2,6 +2,7 @@ package com.yinuo.safetywatcher.watcher import com.common.commonlib.CommonApplication import com.lztek.toolkit.Lztek +import com.yinuo.safetywatcher.TestUtils import com.yinuo.safetywatcher.watcher.db.DBUtils import com.yinuo.safetywatcher.watcher.db.dao.WarningDao import com.yinuo.safetywatcher.watcher.db.entity.Warning @@ -14,8 +15,10 @@ import kotlinx.coroutines.launch class App : CommonApplication() { override fun onCreate() { super.onCreate() - LztekUtil.setObject(Lztek.create(this)) + //LztekUtil.setObject(Lztek.create(this)) tryFixDbData() + + TestUtils.insertData() } diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/base/BaseRvAdapter.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/base/BaseRvAdapter.kt index 328cba5..27f592b 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/base/BaseRvAdapter.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/base/BaseRvAdapter.kt @@ -12,6 +12,7 @@ abstract class BaseRvAdapter() fun setData(values: List) { + mDatas.clear() mDatas.addAll(values) notifyDataSetChanged() } diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/db/dao/GasDao.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/db/dao/GasDao.kt index 1736761..90392d3 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/db/dao/GasDao.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/db/dao/GasDao.kt @@ -18,7 +18,7 @@ interface GasDao { suspend fun getAllByTime(startTime: Long, endTime: Long): List @Insert - suspend fun insertAll(vararg gases: Gas) + suspend fun insertAll(gases: List) @Insert suspend fun insert(gas: Gas) diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/db/dao/GasTypeDao.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/db/dao/GasTypeDao.kt index c78bcd7..d8a6f5e 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/db/dao/GasTypeDao.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/db/dao/GasTypeDao.kt @@ -14,6 +14,9 @@ interface GasTypeDao { @Insert suspend fun insert(gas: GasType) + @Insert + suspend fun insertAll(types: List) + @Delete suspend fun delete(gas: GasType) } \ No newline at end of file diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/db/entity/Gas.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/db/entity/Gas.kt index 8f29a68..1f8f47a 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/db/entity/Gas.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/db/entity/Gas.kt @@ -9,9 +9,9 @@ data class Gas( @PrimaryKey var id: Int, @ColumnInfo(name = "time") var time: Long, @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 = "gas_value") var gasValue: Double = 0.0, + @ColumnInfo(name = "unit") var unit: String = "", + @ColumnInfo(name = "threshold_low") var thresholdLow: Double = 0.0, + @ColumnInfo(name = "threshold_high") var thresholdHigh: Double = 0.0, @ColumnInfo(name = "sync_flag") var syncFlag: Boolean = false ) diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/QueryDataActivity.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/QueryDataActivity.kt index 2b90487..beef260 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/QueryDataActivity.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/QueryDataActivity.kt @@ -121,8 +121,15 @@ class QueryDataActivity : BaseActivity() { val gasDao = DBUtils.gasDao() val gasList = gasDao.getAllByTime(startTime, endTime) if (step == 1) { + val sortList = mutableListOf() + sortList.apply { + addAll(gasList) + sortWith { o1, o2 -> + (o2.time - o1.time).toInt() + } + } launch(Dispatchers.Main) { - mAdapter.setData(gasList) + mAdapter.setData(sortList) } } else { // 多气体,分开创建list,存储之后。 再分步 @@ -167,12 +174,12 @@ class QueryDataActivity : BaseActivity() { } } - var newList = mutableListOf() - gasNewMap.forEach { t, u -> + val newList = mutableListOf() + gasNewMap.forEach { (t, u) -> newList.addAll(u) } newList.sortWith { o1, o2 -> - (o1.time - o2.time).toInt() + (o2.time - o1.time).toInt() } launch(Dispatchers.Main) { mAdapter.setData(newList) diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/TimeSettingActivity.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/TimeSettingActivity.kt index 87d0c83..e2fed16 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/TimeSettingActivity.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/TimeSettingActivity.kt @@ -43,7 +43,7 @@ class TimeSettingActivity : NoOptionsActivity() { } mBingding.tvConfirm.setOnClickListener { if (changeTime > 0) { - LztekUtil.getLztek().setSystemTime(changeTime) + LztekUtil.getLztek()?.setSystemTime(changeTime) } onBackPressed() } diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/utils/LztekUtil.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/utils/LztekUtil.kt index 87e9075..24ad880 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/utils/LztekUtil.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/utils/LztekUtil.kt @@ -16,13 +16,13 @@ object LztekUtil { mLztek = value } - fun getLztek(): Lztek { - return mLztek!! + fun getLztek(): Lztek? { + return mLztek } fun getSn(): String { if (sn == null) { - val mac = getLztek().ethMac ?: "unKnow" + val mac = getLztek()?.ethMac ?: "unKnow" val md = MessageDigest.getInstance("MD5") // 生成一个MD5加密计算摘要 md.update(mac.toByteArray()) // 计算md5函数 /**