From f1ea263462d1f3f10a886fb083536a38b03a1ceb Mon Sep 17 00:00:00 2001 From: feiyu02 <risaku@163.com> Date: 星期三, 14 五月 2025 17:33:04 +0800 Subject: [PATCH] 1. 新增动态污染溯源的数据异常判断逻辑 2. 新增动态污染溯源websocket连接功能 --- src/main/kotlin/com/flightfeather/uav/lightshare/bean/DataVo.kt | 120 +++++++++++++++++++++++++++++++++++++++-------------------- 1 files changed, 79 insertions(+), 41 deletions(-) diff --git a/src/main/kotlin/com/flightfeather/uav/lightshare/bean/DataVo.kt b/src/main/kotlin/com/flightfeather/uav/lightshare/bean/DataVo.kt index 9696b02..b548bc7 100644 --- a/src/main/kotlin/com/flightfeather/uav/lightshare/bean/DataVo.kt +++ b/src/main/kotlin/com/flightfeather/uav/lightshare/bean/DataVo.kt @@ -1,9 +1,12 @@ package com.flightfeather.uav.lightshare.bean import com.fasterxml.jackson.annotation.JsonInclude +import com.flightfeather.uav.domain.entity.BaseRealTimeData import com.flightfeather.uav.model.BaseMData import com.flightfeather.uav.socket.bean.AirData import com.flightfeather.uav.socket.eunm.FactorType +import java.text.SimpleDateFormat +import java.util.Date /** * @author riku @@ -11,51 +14,86 @@ */ @JsonInclude(JsonInclude.Include.NON_NULL) data class DataVo( - //鏃堕棿, yyyy-MM-dd HH:mm:ss - var time: String? = null, - //绔欑偣缂栧彿 - var deviceCode: String? = null, - //鏁版嵁鍊� - var values: List<AirData>? = null, - //缁忓害 - var lng: Double? = null, - //绾害 - var lat: Double? = null + //鏃堕棿, yyyy-MM-dd HH:mm:ss + var time: String? = null, + //绔欑偣缂栧彿 + var deviceCode: String? = null, + //鏁版嵁鍊� + var values: List<AirData>? = null, + //缁忓害 + var lng: Double? = null, + //绾害 + var lat: Double? = null, ) : BaseMData() { - override fun getFactorData(type: FactorType): Double? { - if (values == null) throw IllegalStateException(this.javaClass.name + ": 鐩戞祴鏁版嵁鏁扮粍涓簄ull") - for (d in values!!) { - if (d.factorName == type.name) { - return d.factorData - } - } - return null + override fun getFactorData(type: FactorType): Double? { + if (values == null) throw IllegalStateException(this.javaClass.name + ": 鐩戞祴鏁版嵁鏁扮粍涓簄ull") + for (d in values!!) { + if (d.factorName == type.name) { + return d.factorData + } } + return null + } - fun toRowContent(): Array<Any> { - val row = mutableListOf<Any>() - row.add(deviceCode ?: "") - row.add(time ?: "") - row.add(lng ?: -1.0) - row.add(lat ?: -1.0) - values?.forEach { - row.add(it.factorData ?: -1.0) - row.add(it.physicalQuantity ?: -1.0) - } - return row.toTypedArray() + fun toRowContent(): Array<Any> { + val row = mutableListOf<Any>() + row.add(deviceCode ?: "") + row.add(time ?: "") + row.add(lng ?: -1.0) + row.add(lat ?: -1.0) + values?.forEach { + if (FactorType.outputFactor(it.factorName)) { + row.add(it.factorData ?: -1.0) +// row.add(it.physicalQuantity ?: -1.0) + } } + return row.toTypedArray() + } - fun toRowTitle(): Array<String> { - val list = mutableListOf<String>() - list.add("缂栧彿") - list.add("閲囨牱鏃堕棿") - list.add("缁忓害") - list.add("绾害") - values?.forEach { - val name = it.factorName ?: "" - list.add(name) - list.add("$name(鐗╃悊閲�)") - } - return list.toTypedArray() + fun toRowTitle(): Array<String> { + val list = mutableListOf<String>() + list.add("缂栧彿") + list.add("閲囨牱鏃堕棿") + list.add("缁忓害") + list.add("绾害") + values?.forEach { + if (FactorType.outputFactor(it.factorName)) { + val name = it.factorName ?: "" + list.add(name) +// list.add("$name(鐗╃悊閲�)") + } } + return list.toTypedArray() + } + + fun <T : BaseRealTimeData> toBaseRealTimeData(clz:Class<T>): T { + return clz.newInstance().apply { + deviceCode = this@DataVo.deviceCode + latitude = this@DataVo.lat?.toBigDecimal() + longitude = this@DataVo.lng?.toBigDecimal() + dataTime = SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(this@DataVo.time) + createTime = Date() + this@DataVo.values?.forEach { + when (it.factorId?.toInt()) { + FactorType.NO2.value -> no2 = it.factorData?.toFloat() + FactorType.CO.value -> co = it.factorData?.toFloat() + FactorType.H2S.value -> h2s = it.factorData?.toFloat() + FactorType.SO2.value -> so2 = it.factorData?.toFloat() + FactorType.O3.value -> o3 = it.factorData?.toFloat() + + FactorType.PM25.value -> pm25 = it.factorData?.toFloat() + FactorType.PM10.value -> pm10 = it.factorData?.toFloat() + FactorType.TEMPERATURE.value -> temperature = it.factorData?.toFloat() + FactorType.HUMIDITY.value -> humidity = it.factorData?.toFloat() + FactorType.VOC.value -> voc = it.factorData?.toFloat() + + FactorType.NOI.value -> noi = it.factorData?.toFloat() + FactorType.VELOCITY.value -> velocity = it.factorData?.toFloat() + FactorType.WIND_SPEED.value -> windSpeed = it.factorData?.toFloat() + FactorType.WIND_DIRECTION.value -> windDirection = it.factorData?.toFloat() + FactorType.HEIGHT.value -> height = it.factorData?.toFloat() + } + } + } + } } \ No newline at end of file -- Gitblit v1.9.3