desc:告警显示统一

main
xiaowusky 1 year ago
parent 3e1392819a
commit b47dd5aecb

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

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

@ -1,6 +1,7 @@
package com.yinuo.safetywatcher.watcher.port package com.yinuo.safetywatcher.watcher.port
import android.content.Context import android.content.Context
import com.common.commonlib.db.entity.Warning
import com.common.commonlib.utils.MMKVUtils import com.common.commonlib.utils.MMKVUtils
import com.yinuo.safetywatcher.R import com.yinuo.safetywatcher.R
import com.yinuo.safetywatcher.watcher.port.cmd.C02 import com.yinuo.safetywatcher.watcher.port.cmd.C02
@ -215,4 +216,41 @@ fun getShowStatus(context: Context?, state: Int): String {
else -> R.string.status_offline else -> R.string.status_offline
} }
) ?: "" ) ?: ""
}
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.db.entity.Warning
import com.common.commonlib.utils.LogUtils import com.common.commonlib.utils.LogUtils
import com.common.serialport.utils.HexUtils 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.constant.GAS_CLOUD_UPLOAD_SIZE_ONCE
import com.yinuo.safetywatcher.watcher.net.DevicesApi import com.yinuo.safetywatcher.watcher.net.DevicesApi
import com.yinuo.safetywatcher.watcher.port.cmd.GasPortStatus import com.yinuo.safetywatcher.watcher.port.cmd.GasPortStatus
@ -27,7 +28,7 @@ object ParseHelper {
private val mPortRunnable = hashMapOf<Int, FlagRunnable>() private val mPortRunnable = hashMapOf<Int, FlagRunnable>()
private val mHandler = Handler(Looper.getMainLooper()) private val mHandler = Handler(Looper.getMainLooper())
private val tempGasData = mutableListOf<Gas>() private val tempGasData = mutableListOf<GasReqBean>()
private val devicesApi by lazy { private val devicesApi by lazy {
DevicesApi() DevicesApi()
} }
@ -159,13 +160,13 @@ object ParseHelper {
val gasDao = DBUtils.gasDao() val gasDao = DBUtils.gasDao()
gasDao.insert(gas) gasDao.insert(gas)
dealWarning(typeEnum, value, min, max, unit, overRange) val warning = dealWarning(typeEnum, value, min, max, unit, overRange)
// 设置水印数据 // 设置水印数据
setOverlayData() setOverlayData()
// 实时数据上传后台 // 实时数据上传后台
uploadGasData(gas) uploadGasData(gas, getShowWarnTxt(warning))
} }
} }
@ -176,7 +177,7 @@ object ParseHelper {
max: Float, max: Float,
unit: String, unit: String,
overRange: Boolean overRange: Boolean
) { ): Warning? {
// 告警处理 // 告警处理
val warningDao = DBUtils.warningDao() val warningDao = DBUtils.warningDao()
val warning = warningDao.findLatestByName(typeEnum.desc) val warning = warningDao.findLatestByName(typeEnum.desc)
@ -184,21 +185,22 @@ object ParseHelper {
if (O2 == typeEnum.desc) { if (O2 == typeEnum.desc) {
if (value < min || value > max) { if (value < min || value > max) {
if (warning == null || warning.endTime > 0) { if (warning == null || warning.endTime > 0) {
warningDao.insert( val insertWarning = Warning(
Warning( typeEnum.desc,
typeEnum.desc, value,
value, unit,
unit, System.currentTimeMillis(),
System.currentTimeMillis(), min,
min, max,
max, overRange
overRange
)
) )
warningDao.insert(insertWarning)
return insertWarning
} else { } else {
warning.gasValue = value warning.gasValue = value
warning.overRange = overRange warning.overRange = overRange
warningDao.update(warning) warningDao.update(warning)
return warning
} }
} else { } else {
warning?.let { warning?.let {
@ -209,21 +211,22 @@ object ParseHelper {
} else { } else {
if (value > min) { if (value > min) {
if (warning == null || warning.endTime > 0) { if (warning == null || warning.endTime > 0) {
warningDao.insert( val insertWarning = Warning(
Warning( typeEnum.desc,
typeEnum.desc, value,
value, unit,
unit, System.currentTimeMillis(),
System.currentTimeMillis(), min,
min, max,
max, overRange
overRange
)
) )
warningDao.insert(insertWarning)
return insertWarning
} else { } else {
warning.gasValue = value warning.gasValue = value
warning.overRange = overRange warning.overRange = overRange
warningDao.update(warning) warningDao.update(warning)
return warning
} }
} else { } else {
warning?.let { 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 { try {
// 上传实时气体数据 // 上传实时气体数据
tempGasData.add(gas) tempGasData.add(GasReqBean(gas, showWarnTxt))
if (tempGasData.size > GAS_CLOUD_UPLOAD_SIZE_ONCE) { if (tempGasData.size > GAS_CLOUD_UPLOAD_SIZE_ONCE) {
devicesApi.uploadGasData(tempGasData) devicesApi.uploadGasData(tempGasData)
tempGasData.clear() 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_CHECK_SENSOR
import com.yinuo.safetywatcher.watcher.constant.DELAY_TIME_OPEN_CAMERA import com.yinuo.safetywatcher.watcher.constant.DELAY_TIME_OPEN_CAMERA
import com.yinuo.safetywatcher.watcher.port.GasPortUtils 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.services.HeartbeatService
import com.yinuo.safetywatcher.watcher.ui.view.ConfirmDialog import com.yinuo.safetywatcher.watcher.ui.view.ConfirmDialog
import com.yinuo.safetywatcher.watcher.utils.BatteryHelper import com.yinuo.safetywatcher.watcher.utils.BatteryHelper
@ -230,11 +231,7 @@ class HomeActivity : NoOptionsActivity() {
val warningList = warningDao.queryWarningsNoEndTime() val warningList = warningDao.queryWarningsNoEndTime()
val builder = StringBuilder() val builder = StringBuilder()
warningList?.forEachIndexed { index, it -> warningList?.forEachIndexed { index, it ->
builder.append(it.gasName).append("浓度异常,") builder.append(getShowWarnTxt(it))
.append("当前值: ${it.gasValue} ${it.unit}")
if (it.overRange) {
builder.append(",且超过传感器量程")
}
if (index != warningList.size - 1) { if (index != warningList.size - 1) {
builder.append("\n") builder.append("\n")
} }

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

Loading…
Cancel
Save