desc:晚上传感器数据上传 接口参数映射

main
xiaowusky
parent d8215ab95d
commit c5fe66581b

@ -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 = ""
)
}

@ -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
}
}

@ -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
}
) ?: ""
}

@ -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))

@ -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

@ -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
}
}
}
}

Loading…
Cancel
Save