desc:告警显示统一

main
xiaowusky 1 year ago
parent 3e1392819a
commit b47dd5aecb

@ -12,13 +12,13 @@ data class GasReqBean(
val status: String = "",
val alarmName: String = ""
) {
constructor(gas: Gas) : this(
constructor(gas: Gas, showWarnTxt: String) : this(
gasName = gas.gasName,
gasValue = gas.gasValue.toString(),
gasUnit = gas.unit,
reportTime = gas.time.toString(),
sensorName = GasCache.getNickname(gas.gasName),
status = GasCache.getStatus(gas.gasName),
alarmName = ""
alarmName = showWarnTxt
)
}

@ -1,15 +1,14 @@
package com.yinuo.safetywatcher.watcher.net
import com.common.commonlib.db.entity.Gas
import com.common.commonlib.net.BaseObserve
import com.common.commonlib.net.bean.BaseResponse
import com.common.commonlib.net.callback.RequestNoResultCallBack
import com.common.commonlib.net.callback.RequestResultCallBack
import com.yinuo.safetywatcher.watcher.bean.GasReqBean
import com.yinuo.safetywatcher.watcher.bean.TrafficReqInfo
import com.yinuo.safetywatcher.watcher.bean.GasRequest
import com.yinuo.safetywatcher.watcher.bean.GetRtspUrlResponse
import com.yinuo.safetywatcher.watcher.bean.LastTimeResponse
import com.yinuo.safetywatcher.watcher.bean.TrafficReqInfo
import com.yinuo.safetywatcher.watcher.utils.LztekUtil
import io.reactivex.rxjava3.core.Observable
import retrofit2.http.Body
@ -43,13 +42,9 @@ class DevicesApi : BaseObserve<DevicesApi.Api>(Api::class.java) {
}
suspend fun uploadGasData(
gasList: List<Gas> = emptyList()
gasList: List<GasReqBean> = emptyList()
): BaseResponse {
val detections = arrayListOf<GasReqBean>()
gasList.forEach {
detections.add(GasReqBean(it))
}
val gasReq = GasRequest(detections = detections)
val gasReq = GasRequest(detections = gasList)
return api.uploadGasData(gasReq)
}

@ -1,6 +1,7 @@
package com.yinuo.safetywatcher.watcher.port
import android.content.Context
import com.common.commonlib.db.entity.Warning
import com.common.commonlib.utils.MMKVUtils
import com.yinuo.safetywatcher.R
import com.yinuo.safetywatcher.watcher.port.cmd.C02
@ -216,3 +217,40 @@ fun getShowStatus(context: Context?, state: Int): String {
}
) ?: ""
}
fun getShowWarnTxt(warn: Warning?): String {
warn?.let {
if (O2 == it.gasName) {
return if (it.overRange) {
"请注意,${it.gasName}浓度过高,已超过传感器量程"
} else {
if (it.gasValue < it.thresholdLow) {
"请注意,${it.gasName}浓度过低:${it.gasValue} ${it.unit},有缺氧风险"
} else {
"请注意,${it.gasName}浓度过高:${it.gasValue} ${it.unit},有醉氧风险"
}
}
} else if (VOCS == it.gasName) {
return if (it.overRange) {
"请注意,可挥发性有机物浓度过高,已超过传感器量程"
} else {
if (it.gasValue > it.thresholdHigh) {
"请注意,可挥发性有机物气体浓度:${it.gasValue} ${it.unit}超过高报值${it.thresholdHigh}"
} else {
"请注意,可挥发性有机物气体浓度:${it.gasValue} ${it.unit}超过高报值${it.thresholdLow}"
}
}
} else {
return if (it.overRange) {
"请注意,${it.gasName}浓度过高,已超过传感器量程"
} else {
if (it.gasValue > it.thresholdHigh) {
"请注意,${it.gasName}气体浓度:${it.gasValue} ${it.unit}超过高报值${it.thresholdHigh}"
} else {
"请注意,${it.gasName}气体浓度:${it.gasValue} ${it.unit}超过高报值${it.thresholdLow}"
}
}
}
}
return ""
}

@ -9,6 +9,7 @@ import com.common.commonlib.db.entity.GasType
import com.common.commonlib.db.entity.Warning
import com.common.commonlib.utils.LogUtils
import com.common.serialport.utils.HexUtils
import com.yinuo.safetywatcher.watcher.bean.GasReqBean
import com.yinuo.safetywatcher.watcher.constant.GAS_CLOUD_UPLOAD_SIZE_ONCE
import com.yinuo.safetywatcher.watcher.net.DevicesApi
import com.yinuo.safetywatcher.watcher.port.cmd.GasPortStatus
@ -27,7 +28,7 @@ object ParseHelper {
private val mPortRunnable = hashMapOf<Int, FlagRunnable>()
private val mHandler = Handler(Looper.getMainLooper())
private val tempGasData = mutableListOf<Gas>()
private val tempGasData = mutableListOf<GasReqBean>()
private val devicesApi by lazy {
DevicesApi()
}
@ -159,13 +160,13 @@ object ParseHelper {
val gasDao = DBUtils.gasDao()
gasDao.insert(gas)
dealWarning(typeEnum, value, min, max, unit, overRange)
val warning = dealWarning(typeEnum, value, min, max, unit, overRange)
// 设置水印数据
setOverlayData()
// 实时数据上传后台
uploadGasData(gas)
uploadGasData(gas, getShowWarnTxt(warning))
}
}
@ -176,7 +177,7 @@ object ParseHelper {
max: Float,
unit: String,
overRange: Boolean
) {
): Warning? {
// 告警处理
val warningDao = DBUtils.warningDao()
val warning = warningDao.findLatestByName(typeEnum.desc)
@ -184,8 +185,7 @@ object ParseHelper {
if (O2 == typeEnum.desc) {
if (value < min || value > max) {
if (warning == null || warning.endTime > 0) {
warningDao.insert(
Warning(
val insertWarning = Warning(
typeEnum.desc,
value,
unit,
@ -194,11 +194,13 @@ object ParseHelper {
max,
overRange
)
)
warningDao.insert(insertWarning)
return insertWarning
} else {
warning.gasValue = value
warning.overRange = overRange
warningDao.update(warning)
return warning
}
} else {
warning?.let {
@ -209,8 +211,7 @@ object ParseHelper {
} else {
if (value > min) {
if (warning == null || warning.endTime > 0) {
warningDao.insert(
Warning(
val insertWarning = Warning(
typeEnum.desc,
value,
unit,
@ -219,11 +220,13 @@ object ParseHelper {
max,
overRange
)
)
warningDao.insert(insertWarning)
return insertWarning
} else {
warning.gasValue = value
warning.overRange = overRange
warningDao.update(warning)
return warning
}
} else {
warning?.let {
@ -232,12 +235,13 @@ object ParseHelper {
}
}
}
return null
}
private suspend fun uploadGasData(gas: Gas) {
private suspend fun uploadGasData(gas: Gas, showWarnTxt: String) {
try {
// 上传实时气体数据
tempGasData.add(gas)
tempGasData.add(GasReqBean(gas, showWarnTxt))
if (tempGasData.size > GAS_CLOUD_UPLOAD_SIZE_ONCE) {
devicesApi.uploadGasData(tempGasData)
tempGasData.clear()

@ -18,6 +18,7 @@ import com.yinuo.safetywatcher.watcher.constant.DELAY_TIME_CHECK_CAMERA
import com.yinuo.safetywatcher.watcher.constant.DELAY_TIME_CHECK_SENSOR
import com.yinuo.safetywatcher.watcher.constant.DELAY_TIME_OPEN_CAMERA
import com.yinuo.safetywatcher.watcher.port.GasPortUtils
import com.yinuo.safetywatcher.watcher.port.getShowWarnTxt
import com.yinuo.safetywatcher.watcher.services.HeartbeatService
import com.yinuo.safetywatcher.watcher.ui.view.ConfirmDialog
import com.yinuo.safetywatcher.watcher.utils.BatteryHelper
@ -230,11 +231,7 @@ class HomeActivity : NoOptionsActivity() {
val warningList = warningDao.queryWarningsNoEndTime()
val builder = StringBuilder()
warningList?.forEachIndexed { index, it ->
builder.append(it.gasName).append("浓度异常,")
.append("当前值: ${it.gasValue} ${it.unit}")
if (it.overRange) {
builder.append(",且超过传感器量程")
}
builder.append(getShowWarnTxt(it))
if (index != warningList.size - 1) {
builder.append("\n")
}

@ -5,6 +5,7 @@ import android.view.ViewGroup
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.port.getShowWarnTxt
import com.yinuo.safetywatcher.watcher.utils.DateUtils
class WarnDataAdapter :
@ -14,10 +15,7 @@ class WarnDataAdapter :
BaseRvAdapter.BaseViewHolder<Warning, LayoutItemWarnBinding>(binding) {
override fun bindView(data: Warning) {
binding.tvTime.text = formatTime(data.startTime)
val standardStr =
if (data.gasValue > data.thresholdHigh) "超过高报警值${data.thresholdHigh}" else "超过低报警值${data.thresholdLow}"
binding.tvSensor.text =
"${data.gasName}浓度异常,${data.gasValue} ${data.unit}$standardStr"
binding.tvSensor.text = getShowWarnTxt(data)
}
private fun formatTime(time: Long): CharSequence? {

Loading…
Cancel
Save