feiyu02
2024-05-31 da431c25dfe5122e4ed70372da36ede3e4eaec4a
src/main/kotlin/com/flightfeather/uav/domain/entity/BaseRealTimeData.kt
@@ -1,14 +1,13 @@
package com.flightfeather.uav.domain.entity
import com.flightfeather.uav.common.utils.DateUtil
import com.flightfeather.uav.dataprocess.AvgPair
import com.flightfeather.uav.biz.dataprocess.AvgPair
import com.flightfeather.uav.lightshare.bean.DataVo
import com.flightfeather.uav.socket.bean.AirData
import com.flightfeather.uav.socket.eunm.FactorType
import java.math.BigDecimal
import java.time.LocalDateTime
import java.time.ZoneId
import java.time.ZoneOffset
import java.util.*
import javax.persistence.Column
import javax.persistence.Id
@@ -108,9 +107,48 @@
            add(AirData().apply { setData(FactorType.HEIGHT, height) })
        }
    }
    fun getByFactorIndex(i: Int): Float? {
        return when (i) {
            0 -> no2
            1 -> co
            2 -> h2s
            3 -> so2
            4 -> o3
            5 -> pm25
            6 -> pm10
            7 -> voc
            else -> null
        }
    }
    fun getByFactorType(type: FactorType?): Float? {
        return when (type) {
            FactorType.NO2 -> no2
            FactorType.CO -> co
            FactorType.H2S -> h2s
            FactorType.SO2 -> so2
            FactorType.O3 -> o3
            FactorType.PM25 -> pm25
            FactorType.PM10 -> pm10
            FactorType.TEMPERATURE -> temperature
            FactorType.HUMIDITY -> humidity
            FactorType.VOC -> voc
            FactorType.NOI -> noi
            FactorType.LNG -> longitude?.toFloat()
            FactorType.LAT -> latitude?.toFloat()
            FactorType.VELOCITY -> velocity
//            FactorType.TIME -> noi
            FactorType.WIND_SPEED -> windSpeed
            FactorType.WIND_DIRECTION -> windDirection
            FactorType.HEIGHT -> height
            else -> null
        }
    }
}
fun List<RealTimeDataGrid>.avg(): RealTimeDataGridMin {
fun List<BaseRealTimeData>.avg(): RealTimeDataGridMin {
    //风向采用单位矢量法求取均值
    var u = .0//东西方位分量总和
    var v = .0//南北方位分量总和
@@ -262,6 +300,7 @@
            val avgU = u / c
            val avgV = v / c
            var a = atan(avgU / avgV)
            a = Math.toDegrees(a)
            /**
             * avgU>0;avgV>0: 真实角度处于第一象限,修正值为+0°
             * avgU>0;avgV<0: 真实角度处于第二象限,修正值为+180°