1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
package com.flightfeather.uav.domain.entity
 
import com.flightfeather.uav.common.utils.DateUtil
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.util.*
import javax.persistence.Column
import javax.persistence.Id
 
/**
 * 实时监测数据基类
 */
open class BaseRealTimeData {
    @Id
    var id: Int? = null
 
    @Column(name = "device_code")
    var deviceCode: String? = null
 
    var latitude: BigDecimal? = null
 
    var longitude: BigDecimal? = null
 
    var altitude: Float? = null
 
    @Column(name = "data_time")
    var dataTime: Date? = null
 
    @Column(name = "create_time")
    var createTime: Date? = null
 
    @Column(name = "NO2")
    var no2: Float? = null
 
    @Column(name = "CO")
    var co: Float? = null
 
    @Column(name = "H2S")
    var h2s: Float? = null
 
    @Column(name = "SO2")
    var so2: Float? = null
 
    @Column(name = "O3")
    var o3: Float? = null
 
    @Column(name = "PM25")
    var pm25: Float? = null
 
    @Column(name = "PM10")
    var pm10: Float? = null
 
    var temperature: Float? = null
 
    var humidity: Float? = null
 
    @Column(name = "VOC")
    var voc: Float? = null
 
    @Column(name = "NOI")
    var noi: Float? = null
 
    var velocity: Float? = null
 
    @Column(name = "wind_speed")
    var windSpeed: Float? = null
 
    @Column(name = "wind_direction")
    var windDirection: Float? = null
 
    var height: Float? = null
 
    fun toDataVo() = DataVo().apply {
        this.time = DateUtil.instance.dateToString(dataTime, DateUtil.DateStyle.YYYY_MM_DD_HH_MM_SS)
        this.deviceCode = this@BaseRealTimeData.deviceCode
        this.lng = longitude?.toDouble()
        this.lat = latitude?.toDouble()
        this.values = mutableListOf<AirData>().apply {
            add(AirData().apply { setData(FactorType.NO2, no2) })
            add(AirData().apply { setData(FactorType.CO, co) })
            add(AirData().apply { setData(FactorType.H2S, h2s) })
            add(AirData().apply { setData(FactorType.SO2, so2) })
            add(AirData().apply { setData(FactorType.O3, o3) })
 
            add(AirData().apply { setData(FactorType.PM25, pm25) })
            add(AirData().apply { setData(FactorType.PM10, pm10) })
            add(AirData().apply { setData(FactorType.TEMPERATURE, temperature) })
            add(AirData().apply { setData(FactorType.HUMIDITY, humidity) })
            add(AirData().apply { setData(FactorType.VOC, voc) })
 
            add(AirData().apply { setData(FactorType.NOI, noi) })
            add(AirData().apply { setData(FactorType.LNG, lng) })
            add(AirData().apply { setData(FactorType.LAT, lat) })
            add(AirData().apply { setData(FactorType.VELOCITY, velocity) })
            add(AirData().apply {
                setData(FactorType.TIME, dataTime?.time?.toDouble())
                statusList = listOf(time ?: "")
            })
            add(AirData().apply { setData(FactorType.WIND_SPEED, windSpeed) })
            add(AirData().apply { setData(FactorType.WIND_DIRECTION, windDirection) })
            add(AirData().apply { setData(FactorType.HEIGHT, height) })
        }
    }
}