diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/bean/GasReqBean.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/bean/GasReqBean.kt index 1e81942..2eb580f 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/bean/GasReqBean.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/bean/GasReqBean.kt @@ -1,6 +1,7 @@ package com.yinuo.safetywatcher.watcher.bean import com.common.commonlib.db.entity.Gas +import com.yinuo.safetywatcher.watcher.port.GasCache data class GasReqBean( val gasName: String = "", @@ -16,8 +17,8 @@ data class GasReqBean( gasValue = gas.gasValue.toString(), gasUnit = gas.unit, reportTime = gas.time.toString(), - sensorName = "", - status = "", + sensorName = GasCache.getNickname(gas.gasName), + status = GasCache.getStatus(gas.gasName), alarmName = "" ) } diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/port/GasCache.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/port/GasCache.kt new file mode 100644 index 0000000..2bffe25 --- /dev/null +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/port/GasCache.kt @@ -0,0 +1,42 @@ +package com.yinuo.safetywatcher.watcher.port + +import com.common.commonlib.CommonApplication +import com.common.commonlib.db.DBUtils +import kotlinx.coroutines.DelicateCoroutinesApi +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.launch + +@OptIn(DelicateCoroutinesApi::class) +object GasCache { + private val statusCache = HashMap<String, String>() + private val nicknameCache = HashMap<String, String>() + + init { + GlobalScope.launch(Dispatchers.IO) { + val typeDao = DBUtils.gasTypeDao() + val all = typeDao.getAll() + val context = CommonApplication.getContext() + all.forEach { + setNickname(it.type, it.nickName ?: "") + setStatus(it.type, getShowStatus(context, it.status)) + } + } + } + + fun getNickname(gas: String): String { + return nicknameCache[gas] ?: "" + } + + fun getStatus(gas: String): String { + return statusCache[gas] ?: "" + } + + fun setNickname(gas: String, nickname: String) { + nicknameCache[gas] = nickname + } + + fun setStatus(gas: String, status: String) { + statusCache[gas] = status + } +} \ No newline at end of file diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/port/GasUtilss.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/port/GasUtilss.kt index 7d2d44c..ba066ad 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/port/GasUtilss.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/port/GasUtilss.kt @@ -1,10 +1,13 @@ package com.yinuo.safetywatcher.watcher.port +import android.content.Context import com.common.commonlib.utils.MMKVUtils +import com.yinuo.safetywatcher.R import com.yinuo.safetywatcher.watcher.port.cmd.C02 import com.yinuo.safetywatcher.watcher.port.cmd.CH4 import com.yinuo.safetywatcher.watcher.port.cmd.CL2 import com.yinuo.safetywatcher.watcher.port.cmd.CO +import com.yinuo.safetywatcher.watcher.port.cmd.GasPortStatus import com.yinuo.safetywatcher.watcher.port.cmd.GasTypeEnum import com.yinuo.safetywatcher.watcher.port.cmd.H2 import com.yinuo.safetywatcher.watcher.port.cmd.H2S @@ -185,4 +188,16 @@ fun convertData( retValue = mgm3ToPpm(retValue, gasType.molecular) } return retValue +} + +fun getShowStatus(context: Context?, state: Int): String { + return context?.getString( + when (state) { + GasPortStatus.PRE_HOT -> R.string.status_prehot + GasPortStatus.OK -> R.string.status_ok + GasPortStatus.ERROR -> R.string.status_error + GasPortStatus.OUTLINE -> R.string.status_offline + else -> R.string.status_offline + } + ) ?: "" } \ No newline at end of file diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/port/ParseHelper.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/port/ParseHelper.kt index 3fd1ec9..9290aff 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/port/ParseHelper.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/port/ParseHelper.kt @@ -2,6 +2,7 @@ package com.yinuo.safetywatcher.watcher.port import android.os.Handler import android.os.Looper +import com.common.commonlib.CommonApplication import com.common.commonlib.db.DBUtils import com.common.commonlib.db.entity.Gas import com.common.commonlib.db.entity.GasType @@ -259,6 +260,7 @@ object ParseHelper { GlobalScope.launch { val typeDao = DBUtils.gasTypeDao() val gasType = typeDao.getByName(type.desc) + GasCache.setStatus(type.desc, getShowStatus(CommonApplication.getContext(), status)) gasType?.status = status gasType?.sensorIndex = sensorIndex typeDao.insert(gasType ?: GasType(type.desc, status, sensorIndex)) diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/SensorSettingActivity.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/SensorSettingActivity.kt index a2a0507..e8050ab 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/SensorSettingActivity.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/SensorSettingActivity.kt @@ -8,6 +8,7 @@ import com.common.commonlib.db.DBUtils import com.yinuo.safetywatcher.R import com.yinuo.safetywatcher.databinding.ActivitySensorSettingBinding import com.yinuo.safetywatcher.watcher.base.NoOptionsActivity +import com.yinuo.safetywatcher.watcher.port.GasCache import com.yinuo.safetywatcher.watcher.port.UNIT_MGM3 import com.yinuo.safetywatcher.watcher.port.UNIT_PPM import com.yinuo.safetywatcher.watcher.port.cmd.O2 @@ -128,14 +129,14 @@ class SensorSettingActivity : NoOptionsActivity() { private fun saveSetting() { val nickName = mBinding.etName.text.toString() - if (!nickName.isNullOrEmpty()) { - GlobalScope.launch { - val typeDao = DBUtils.gasTypeDao() - val gasType = typeDao.getByName(gasName) - gasType?.nickName = nickName - if (gasType != null) { - typeDao.insert(gasType) - } + GlobalScope.launch { + val typeDao = DBUtils.gasTypeDao() + val gasType = typeDao.getByName(gasName) + val ifEmpty = nickName.ifEmpty { "${gasName}传感器" } + gasType?.nickName = ifEmpty + GasCache.setNickname(gasName, ifEmpty) + if (gasType != null) { + typeDao.insert(gasType) } } val checkedRadioButtonId = mBinding.rgUnit.checkedRadioButtonId diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/adapter/SensorAdapter.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/adapter/SensorAdapter.kt index 16c6e64..e960cdf 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/adapter/SensorAdapter.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/adapter/SensorAdapter.kt @@ -8,6 +8,7 @@ import com.yinuo.safetywatcher.R import com.yinuo.safetywatcher.databinding.LayoutItemSensorBinding import com.yinuo.safetywatcher.watcher.base.BaseRvAdapter import com.yinuo.safetywatcher.watcher.port.cmd.GasPortStatus +import com.yinuo.safetywatcher.watcher.port.getShowStatus import com.yinuo.safetywatcher.watcher.ui.SensorSettingActivity class SensorAdapter : @@ -39,7 +40,7 @@ class SensorAdapter : binding.sensorName.text = data.nickName ?: "${data.type}传感器" val state = data.status - binding.sensorStatus.text = context.getText(getShowStatus(state)) + binding.sensorStatus.text = getShowStatus(context, state) binding.sensorStatus.setTextColor(context.getColor(getShowStatusColor(state))) } @@ -52,15 +53,5 @@ class SensorAdapter : else -> R.color.color_offline } } - - private fun getShowStatus(state: Int): Int { - return when(state){ - GasPortStatus.PRE_HOT -> R.string.status_prehot - GasPortStatus.OK -> R.string.status_ok - GasPortStatus.ERROR -> R.string.status_error - GasPortStatus.OUTLINE -> R.string.status_offline - else -> R.string.status_offline - } - } } }