From 25d0f31f22f77a914a50bbc088902e00e28c4889 Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期三, 15 七月 2020 11:10:42 +0800
Subject: [PATCH] 根据新的多参数传输协议,修改解析规则

---
 src/main/kotlin/com/flightfeather/uav/UAVApplication.kt                          |    2 
 src/main/resources/mapper/RealTimeDataMapper.xml                                 |   35 +++++
 src/main/kotlin/com/flightfeather/uav/socket/UAVByteDataDecoder.kt               |   13 -
 src/main/kotlin/com/flightfeather/uav/repository/impl/AirDataRepositoryImpl.kt   |   10 
 src/main/kotlin/com/flightfeather/uav/socket/bean/AirDataPackage.kt              |   15 +
 pom.xml                                                                          |    4 
 src/main/kotlin/com/flightfeather/uav/socket/decoder/AirDataDecoder.kt           |   27 +++
 src/main/resources/log4j2.xml                                                    |  116 ++++++++--------
 /dev/null                                                                        |   22 ---
 src/main/kotlin/com/flightfeather/uav/socket/decoder/impl/DataUnitDecoderImpl.kt |   60 +++++++-
 src/main/kotlin/com/flightfeather/uav/repository/AirDataRepository.kt            |    4 
 src/main/kotlin/com/flightfeather/uav/socket/eunm/FactorType.kt                  |   28 ++-
 src/main/kotlin/com/flightfeather/uav/socket/MessageManager.kt                   |   30 +---
 src/main/kotlin/com/flightfeather/uav/socket/DeviceSession.kt                    |    8 
 src/main/kotlin/com/flightfeather/uav/socket/bean/AirData.kt                     |    5 
 src/main/resources/application.yml                                               |    4 
 16 files changed, 231 insertions(+), 152 deletions(-)

diff --git a/pom.xml b/pom.xml
index 5ee699e..3f610f5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -9,11 +9,11 @@
         <relativePath/> <!-- lookup parent from repository -->
     </parent>
     <groupId>com.flightfeather</groupId>
-    <artifactId>obd</artifactId>
+    <artifactId>uav</artifactId>
     <version>1.0.0</version>
     <packaging>war</packaging>
     <name>obd</name>
-    <description>Obd data server</description>
+    <description>Uav data server</description>
 
     <properties>
         <java.version>1.8</java.version>
diff --git a/src/main/kotlin/com/flightfeather/uav/UAVApplication.kt b/src/main/kotlin/com/flightfeather/uav/UAVApplication.kt
index 46b8e1d..6e53c91 100644
--- a/src/main/kotlin/com/flightfeather/uav/UAVApplication.kt
+++ b/src/main/kotlin/com/flightfeather/uav/UAVApplication.kt
@@ -11,7 +11,7 @@
 
     @Bean
     fun runner() = ApplicationRunner{
-        SocketServerClient().startServer(9000)
+        SocketServerClient().startServer(9030)
     }
 }
 
diff --git a/src/main/kotlin/com/flightfeather/uav/lightshare/service/VehicleService.kt b/src/main/kotlin/com/flightfeather/uav/lightshare/service/VehicleService.kt
deleted file mode 100644
index 53753f5..0000000
--- a/src/main/kotlin/com/flightfeather/uav/lightshare/service/VehicleService.kt
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.flightfeather.uav.lightshare.service
-
-import com.flightfeather.uav.lightshare.bean.VehicleInfoVo
-
-/**
- * @author riku
- * Date: 2019/10/25
- * 杞﹁締鐩稿叧淇℃伅鎺ュ彛
- */
-interface VehicleService {
-
-    /**
-     * 鑾峰彇杞﹁締淇℃伅
-     */
-    fun getVehicleInfo(pageNum: Int?, pageSize: Int?): List<VehicleInfoVo>
-
-}
\ No newline at end of file
diff --git a/src/main/kotlin/com/flightfeather/uav/lightshare/service/impl/VehicleServiceImpl.kt b/src/main/kotlin/com/flightfeather/uav/lightshare/service/impl/VehicleServiceImpl.kt
deleted file mode 100644
index d012ac5..0000000
--- a/src/main/kotlin/com/flightfeather/uav/lightshare/service/impl/VehicleServiceImpl.kt
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.flightfeather.uav.lightshare.service.impl
-
-import com.flightfeather.uav.domain.entity.RealTimeData
-import com.flightfeather.uav.lightshare.bean.VehicleInfoVo
-import com.flightfeather.uav.lightshare.service.VehicleService
-import com.flightfeather.uav.repository.VehicleRepository
-import org.springframework.beans.BeanUtils
-import org.springframework.stereotype.Service
-
-/**
- * @author riku
- * Date: 2019/10/25
- */
-@Service
-class VehicleServiceImpl() : VehicleService {
-    override fun getVehicleInfo(pageNum: Int?, pageSize: Int?): List<VehicleInfoVo> {
-
-        return emptyList()
-    }
-}
\ No newline at end of file
diff --git a/src/main/kotlin/com/flightfeather/uav/lightshare/web/VehicleInfoController.kt b/src/main/kotlin/com/flightfeather/uav/lightshare/web/VehicleInfoController.kt
deleted file mode 100644
index e743d5e..0000000
--- a/src/main/kotlin/com/flightfeather/uav/lightshare/web/VehicleInfoController.kt
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.flightfeather.uav.lightshare.web
-
-import com.flightfeather.uav.lightshare.service.VehicleService
-import org.springframework.web.bind.annotation.GetMapping
-import org.springframework.web.bind.annotation.RequestMapping
-import org.springframework.web.bind.annotation.RequestParam
-import org.springframework.web.bind.annotation.RestController
-
-/**
- * @author riku
- * Date: 2019/10/25
- */
-@RestController
-@RequestMapping("uav/vehicle")
-class VehicleInfoController(val vehicleService: VehicleService) {
-
-    @GetMapping("/info")
-    fun getVehicleInfo(
-            @RequestParam("page", required = false) pageNum: Int?,
-            @RequestParam("per_page", required = false) pageSize: Int?
-    ) = vehicleService.getVehicleInfo(pageNum, pageSize)
-}
\ No newline at end of file
diff --git a/src/main/kotlin/com/flightfeather/uav/repository/AirDataRepository.kt b/src/main/kotlin/com/flightfeather/uav/repository/AirDataRepository.kt
index 7e2f4af..aa21e0b 100644
--- a/src/main/kotlin/com/flightfeather/uav/repository/AirDataRepository.kt
+++ b/src/main/kotlin/com/flightfeather/uav/repository/AirDataRepository.kt
@@ -1,6 +1,6 @@
 package com.flightfeather.uav.repository
 
-import com.flightfeather.uav.socket.bean.AirPackageData
+import com.flightfeather.uav.socket.bean.AirDataPackage
 
 /**
  * @author riku
@@ -8,5 +8,5 @@
  */
 interface AirDataRepository {
 
-    fun saveAirData(packageData: AirPackageData): Int
+    fun saveAirData(dataPackage: AirDataPackage): Int
 }
\ No newline at end of file
diff --git a/src/main/kotlin/com/flightfeather/uav/repository/impl/AirDataRepositoryImpl.kt b/src/main/kotlin/com/flightfeather/uav/repository/impl/AirDataRepositoryImpl.kt
index 055349d..c507354 100644
--- a/src/main/kotlin/com/flightfeather/uav/repository/impl/AirDataRepositoryImpl.kt
+++ b/src/main/kotlin/com/flightfeather/uav/repository/impl/AirDataRepositoryImpl.kt
@@ -3,7 +3,7 @@
 import com.flightfeather.uav.domain.entity.RealTimeData
 import com.flightfeather.uav.domain.mapper.RealTimeDataMapper
 import com.flightfeather.uav.repository.AirDataRepository
-import com.flightfeather.uav.socket.bean.AirPackageData
+import com.flightfeather.uav.socket.bean.AirDataPackage
 import com.google.gson.Gson
 import org.springframework.stereotype.Repository
 
@@ -14,16 +14,16 @@
 @Repository
 class AirDataRepositoryImpl(private val realTimeDataMapper: RealTimeDataMapper): AirDataRepository {
 
-    override fun saveAirData(packageData: AirPackageData): Int {
+    override fun saveAirData(dataPackage: AirDataPackage): Int {
 
         val data = RealTimeData().apply {
-            deviceCode = packageData.deviceCode
+            deviceCode = dataPackage.deviceCode
             latitude
             longitude
             altitude
             height
-            factors = Gson().toJson(packageData.dataUnit)
-            dataTime = packageData.dataTime
+            factors = Gson().toJson(dataPackage.dataUnit)
+            dataTime = dataPackage.dataTime
         }
         realTimeDataMapper.insert(data)
 
diff --git a/src/main/kotlin/com/flightfeather/uav/socket/DeviceSession.kt b/src/main/kotlin/com/flightfeather/uav/socket/DeviceSession.kt
index ff079ed..d387fb3 100644
--- a/src/main/kotlin/com/flightfeather/uav/socket/DeviceSession.kt
+++ b/src/main/kotlin/com/flightfeather/uav/socket/DeviceSession.kt
@@ -38,10 +38,10 @@
         }
 
         fun getAirType(deviceCode: String?): List<AirTypeData>? {
-            return if (typeMap.containsKey(deviceCode)) {
-                typeMap[deviceCode]
-            } else {
-                null
+            return when {
+                deviceCode == null -> typeMap[DEFAULT_DEVICE]
+                typeMap.containsKey(deviceCode) -> typeMap[deviceCode]
+                else -> null
             }
         }
     }
diff --git a/src/main/kotlin/com/flightfeather/uav/socket/MessageManager.kt b/src/main/kotlin/com/flightfeather/uav/socket/MessageManager.kt
index 3301672..504b3ca 100644
--- a/src/main/kotlin/com/flightfeather/uav/socket/MessageManager.kt
+++ b/src/main/kotlin/com/flightfeather/uav/socket/MessageManager.kt
@@ -6,7 +6,6 @@
 import com.flightfeather.uav.socket.decoder.AirDataDecoder
 import com.flightfeather.uav.socket.decoder.impl.DataPackageDecoderImpl
 import com.flightfeather.uav.socket.eunm.AirCommandUnit
-import io.netty.buffer.Unpooled
 import io.netty.channel.ChannelHandlerContext
 import org.springframework.beans.factory.annotation.Autowired
 import org.springframework.stereotype.Component
@@ -30,7 +29,7 @@
     @Autowired
     lateinit var airDataRepository: AirDataRepository
 
-    val vehicleDataDecoder = AirDataDecoder()
+    val airDataDecoder = AirDataDecoder.instance
     val dataPackageDecoder = DataPackageDecoderImpl()
 
     @PostConstruct
@@ -41,21 +40,10 @@
 
     fun dealStringMsg(msg: String, ctx: ChannelHandlerContext?) {
         //瑙e寘
-        val packageData = vehicleDataDecoder.decode(msg)
+        val packageData = airDataDecoder.decode(msg)
 
 
         if (bccCheck(msg)) {
-            if (packageData.commandUnit == AirCommandUnit.Confirm.value) {
-                val t = mutableListOf<AirTypeData>()
-                packageData.dataUnit.forEach {
-                    if (it is AirTypeData) {
-                        t.add(it)
-                    }
-                }
-                DeviceSession.saveAirType(packageData.deviceCode, t)
-            } else if (packageData.commandUnit == AirCommandUnit.AirData.value) {
-                val types = DeviceSession.getAirType(packageData.deviceCode)
-            }
             //淇濆瓨
             DeviceSession.saveDevice(packageData.deviceCode, ctx)
 //            saveToTxt(msg)
@@ -76,9 +64,9 @@
     /**
      * 淇濆瓨鑷虫暟鎹簱
      */
-    fun saveToDataBase(packageData: AirPackageData) {
-        when (packageData.commandUnit) {
-            AirCommandUnit.AirData.value -> instance.airDataRepository.saveAirData(packageData)
+    fun saveToDataBase(dataPackage: AirDataPackage) {
+        when (dataPackage.commandUnit) {
+            AirCommandUnit.AirData.value -> instance.airDataRepository.saveAirData(dataPackage)
         }
     }
 
@@ -88,15 +76,13 @@
     fun bccCheck(msg: String):Boolean {
         val list = mutableListOf<String>().apply {
             addAll(dataPackageDecoder.toStringList(msg))
-            //鍘婚櫎2 浣嶈捣濮嬬
-            removeAt(0)
-            removeAt(0)
         }
         //鍙栧緱鏁版嵁鍖呬腑鐨刡cc鏍¢獙缁撴灉
-        val oldBcc = list[list.size - 1].toInt(16)
+        val oldBcc = "${list[list.lastIndex - 1]}${list[list.lastIndex]}".toInt(16)
 
         //鍘婚櫎鏍¢獙缁撴灉
-        list.removeAt(list.size-1)
+        list.removeAt(list.lastIndex)
+        list.removeAt(list.lastIndex)
 
         //璁$畻bcc鏍¢獙缁撴灉
         var newBcc = 0x00
diff --git a/src/main/kotlin/com/flightfeather/uav/socket/UAVByteDataDecoder.kt b/src/main/kotlin/com/flightfeather/uav/socket/UAVByteDataDecoder.kt
index bb88cb1..937060f 100644
--- a/src/main/kotlin/com/flightfeather/uav/socket/UAVByteDataDecoder.kt
+++ b/src/main/kotlin/com/flightfeather/uav/socket/UAVByteDataDecoder.kt
@@ -18,7 +18,6 @@
         private const val BCC_BYTES = 2//鏍¢獙鐮侀暱搴�
         const val BASE_LENGTH = HEAD_BYTES + LENGTH_BYTES + BCC_BYTES
         const val HEAD1 = 0x01.toByte()
-        const val HEAD2 = 0x05.toByte()
     }
 
     override fun decode(p0: ChannelHandlerContext?, p1: ByteBuf?, p2: MutableList<Any>?) {
@@ -44,7 +43,7 @@
                     // 璇诲埌浜嗗崗璁殑寮�濮嬫爣蹇楋紝缁撴潫while寰幆
                     val b = ByteArray(2)
                     it.readBytes(b)
-                    if (b[0] == HEAD1 && b[1] == HEAD2) {
+                    if (b[0] == HEAD1) {
                         dataList.add(b[0])
                         dataList.add(b[1])
                         break
@@ -61,11 +60,11 @@
                     }
                 }
 
-                ByteArray(1).apply {
-                    it.readBytes(this)
-                }.forEach {b ->
-                    dataList.add(b)
-                }
+//                ByteArray(1).apply {
+//                    it.readBytes(this)
+//                }.forEach {b ->
+//                    dataList.add(b)
+//                }
 
                 //鏁版嵁鍗曞厓鐨勯暱搴�
                 val length = getDataUnitLength(it, dataList)
diff --git a/src/main/kotlin/com/flightfeather/uav/socket/bean/AirData.kt b/src/main/kotlin/com/flightfeather/uav/socket/bean/AirData.kt
index 879adc9..c51473c 100644
--- a/src/main/kotlin/com/flightfeather/uav/socket/bean/AirData.kt
+++ b/src/main/kotlin/com/flightfeather/uav/socket/bean/AirData.kt
@@ -1,7 +1,5 @@
 package com.flightfeather.uav.socket.bean
 
-import java.util.*
-
 /**
  * @author riku
  * Date: 2020/6/10
@@ -10,5 +8,8 @@
     var factorId: String? = null
     var factorName: String? = null
     var sensorId: String? = null
+    //鐩戞祴鍥犲瓙瀹為檯鍊�
     var factorData: Double? = null
+    //鐩戞祴鍥犲瓙鐗╃悊閲忥紙鐢靛帇锛�
+    var physicalQuantity: Double? = null
 }
\ No newline at end of file
diff --git a/src/main/kotlin/com/flightfeather/uav/socket/bean/AirPackageData.kt b/src/main/kotlin/com/flightfeather/uav/socket/bean/AirDataPackage.kt
similarity index 68%
rename from src/main/kotlin/com/flightfeather/uav/socket/bean/AirPackageData.kt
rename to src/main/kotlin/com/flightfeather/uav/socket/bean/AirDataPackage.kt
index a5e3ffa..bd9b6ca 100644
--- a/src/main/kotlin/com/flightfeather/uav/socket/bean/AirPackageData.kt
+++ b/src/main/kotlin/com/flightfeather/uav/socket/bean/AirDataPackage.kt
@@ -11,7 +11,7 @@
  * 璧峰瀛楄妭                     瀹氫箟                  鏁版嵁绫诲瀷                        鎻忚堪鍙婅姹�
  *
  */
-data class AirPackageData constructor(
+data class AirDataPackage constructor(
         //璧峰绗�
         var head: String? = null,
         //鍛戒护鍗曞厓
@@ -28,4 +28,15 @@
         var dataUnit: List<DataUnit>,
         //鏍¢獙鐮�
         var checkCode: Int? = null
-)
\ No newline at end of file
+){
+    companion object {
+        //鏁版嵁涓殑淇濈暀瀛楄妭鏁�
+        const val RESERVED_DATA_COUNT = 12
+
+        //涓�涓繚鐣欑洃娴嬪洜瀛愮殑灞炴�ф墍鍗犲瓧鑺傛暟
+        const val FACTOR_BIT_LENGTH_2 = 3
+
+        //涓�涓姩鎬佺洃娴嬪洜瀛愮殑灞炴�ф墍鍗犲瓧鑺傛暟
+        const val FACTOR_BIT_LENGTH_1 = 6
+    }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/com/flightfeather/uav/socket/decoder/AirDataDecoder.kt b/src/main/kotlin/com/flightfeather/uav/socket/decoder/AirDataDecoder.kt
index f06f127..eee55d6 100644
--- a/src/main/kotlin/com/flightfeather/uav/socket/decoder/AirDataDecoder.kt
+++ b/src/main/kotlin/com/flightfeather/uav/socket/decoder/AirDataDecoder.kt
@@ -1,6 +1,6 @@
 package com.flightfeather.uav.socket.decoder
 
-import com.flightfeather.uav.socket.bean.AirPackageData
+import com.flightfeather.uav.socket.bean.AirDataPackage
 import com.flightfeather.uav.socket.decoder.impl.DataPackageDecoderImpl
 
 /**
@@ -8,14 +8,33 @@
  * @author riku
  * Date: 2019/9/12
  */
-class AirDataDecoder {
+class AirDataDecoder private constructor(){
+
+    companion object{
+
+        @Volatile
+        private var decoder: AirDataDecoder? = null
+
+        @JvmStatic
+        val instance: AirDataDecoder
+            get() {
+                if (decoder == null) {
+                    synchronized(AirDataDecoder::class) {
+                        if (decoder == null) {
+                            decoder = AirDataDecoder()
+                        }
+                    }
+                }
+                return this.decoder!!
+            }
+    }
 
     private val dataPackageDecoder: DataPackageDecoder = DataPackageDecoderImpl()
 
-    fun decode(msg: String): AirPackageData {
+    fun decode(msg: String): AirDataPackage {
         val list = dataPackageDecoder.toStringList(msg)
         dataPackageDecoder.run {
-            return AirPackageData(
+            return AirDataPackage(
                     getHead(list),
                     getCommandUnit(list),
                     getDeviceCode(list),
diff --git a/src/main/kotlin/com/flightfeather/uav/socket/decoder/impl/DataUnitDecoderImpl.kt b/src/main/kotlin/com/flightfeather/uav/socket/decoder/impl/DataUnitDecoderImpl.kt
index 4f70a2a..dac72d9 100644
--- a/src/main/kotlin/com/flightfeather/uav/socket/decoder/impl/DataUnitDecoderImpl.kt
+++ b/src/main/kotlin/com/flightfeather/uav/socket/decoder/impl/DataUnitDecoderImpl.kt
@@ -1,6 +1,7 @@
 package com.flightfeather.uav.socket.decoder.impl
 
 import com.flightfeather.uav.socket.bean.AirData
+import com.flightfeather.uav.socket.bean.AirDataPackage
 import com.flightfeather.uav.socket.bean.AirTypeData
 import com.flightfeather.uav.socket.decoder.DataUnitDecoder
 import com.flightfeather.uav.socket.eunm.FactorType
@@ -14,6 +15,7 @@
 
     private val logger = LoggerFactory.getLogger(javaClass.name)
 
+    private val types = mutableListOf<AirTypeData>()
 
     override fun getAirConfirmData(b: List<String>): List<AirTypeData> {
         val resultList = mutableListOf<AirTypeData>()
@@ -22,23 +24,61 @@
                 resultList.add(AirTypeData(f))
             }
         }
+        types.clear()
+        types.addAll(resultList)
+
         return resultList
     }
 
     override fun getAirData(b: List<String>): List<AirData> {
         val resultList = mutableListOf<AirData>()
+
         var i = 0
-        while (i < b.size - 3) {
-            val a = "${b[i]}${b[i + 1]}".toInt(16)
-            var b1 = b[i + 2].toInt(16).toDouble()
-            while (b1 >= 1) {
-                b1 /= 10
+        types.forEach {
+            if (i > b.size - it.factorType.byteLength) {
+                return@forEach
             }
-            val data = a + b1
-            resultList.add(AirData().apply {
-                factorData = data
-            })
-            i += 3
+            when (it.factorType.byteLength) {
+                AirDataPackage.FACTOR_BIT_LENGTH_2 -> {
+                    val a1 = "${b[i]}${b[i + 1]}".toInt(16)
+                    var b1 = b[i + 2].toInt(16).toDouble()
+                    while (b1 >= 1) {
+                        b1 /= 10
+                    }
+                    val data1 = a1 + b1
+
+                    resultList.add(AirData().apply {
+                        factorId = it.factorType.value?.toString()
+                        factorName = it.factorType.des
+                        factorData = data1
+                    })
+                }
+                AirDataPackage.FACTOR_BIT_LENGTH_1 -> {
+                    //鏁版嵁瀹為檯鍊硷紙3浣嶅瓧鑺傝〃绀猴級
+                    val a1 = "${b[i]}${b[i + 1]}".toInt(16)
+                    var b1 = b[i + 2].toInt(16).toDouble()
+                    while (b1 >= 1) {
+                        b1 /= 10
+                    }
+                    val data1 = a1 + b1
+
+                    //鏁版嵁鐗╃悊閲忥紙3浣嶅瓧鑺傝〃绀猴級
+                    val a2 = "${b[i]}${b[i + 1]}".toInt(16)
+                    var b2 = b[i + 2].toInt(16).toDouble()
+                    while (b2 >= 1) {
+                        b2 /= 10
+                    }
+                    val data2 = a2 + b2
+
+                    resultList.add(AirData().apply {
+                        factorId = it.factorType.value?.toString()
+                        factorName = it.factorType.des
+                        factorData = data1
+                        physicalQuantity = data2
+                    })
+                }
+            }
+            i += it.factorType.byteLength
         }
 
         return resultList
diff --git a/src/main/kotlin/com/flightfeather/uav/socket/eunm/FactorType.kt b/src/main/kotlin/com/flightfeather/uav/socket/eunm/FactorType.kt
index e14c100..da16a68 100644
--- a/src/main/kotlin/com/flightfeather/uav/socket/eunm/FactorType.kt
+++ b/src/main/kotlin/com/flightfeather/uav/socket/eunm/FactorType.kt
@@ -4,16 +4,20 @@
  * @author riku
  * Date: 2020/6/10
  */
-enum class  FactorType(val value: Int, val des: String){
-    NO2(1, "NO2"),
-    CO(2,"CO"),
-    H2S(3,"H2S"),
-    SO2(4,"SO2"),
-    O3(5,"O3"),
-    PM25(6,"PM25"),
-    PM10(7, "PM10"),
-    TEMPERATURE(8,"TEMPERATURE"),
-    HUMIDITY(9, "HUMIDITY");
+enum class  FactorType(val value: Int, val des: String, val byteLength: Int){
+    NO2(1, "NO2", 6),
+    CO(2,"CO", 6),
+    H2S(3,"H2S",6),
+    SO2(4,"SO2",6),
+    O3(5,"O3",6),
+    PM25(6,"PM25",3),
+    PM10(7, "PM10",3),
+    TEMPERATURE(8,"TEMPERATURE",3),
+    HUMIDITY(9, "HUMIDITY",3),
+    VOC(10, "VOC",3),
+    NOI(11, "NOI",3),//璐熸哀绂诲瓙
+    LNG(12,"LNG",3),//缁忓害
+    LAT(13,"LAT",3);//绾害
 
     companion object {
 
@@ -27,6 +31,10 @@
             PM10.value -> PM10
             TEMPERATURE.value -> TEMPERATURE
             HUMIDITY.value -> HUMIDITY
+            VOC.value -> VOC
+            NOI.value -> NOI
+            LNG.value -> LNG
+            LAT.value -> LAT
             else -> null
         }
     }
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 2cbc2a0..b44db72 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -8,6 +8,8 @@
     url: jdbc:mysql://114.215.109.124:3306/dronemonitor?serverTimezone=Asia/Shanghai&prepStmtCacheSize=517&cachePrepStmts=true&autoReconnect=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false
     username: root
     password: 123456
+  jmx:
+    enabled: false
 
 
 
@@ -28,4 +30,4 @@
     helperDialect: mysql
     reasonable: true
     supportMethodsArguments: true
-    params: count=countSql
\ No newline at end of file
+    params: count=countSql
diff --git a/src/main/resources/log4j2.xml b/src/main/resources/log4j2.xml
index bf71a78..a77f22e 100644
--- a/src/main/resources/log4j2.xml
+++ b/src/main/resources/log4j2.xml
@@ -1,67 +1,67 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-    6涓紭鍏堢骇浠庨珮鍒颁綆渚濇涓猴細OFF銆丗ATAL銆丒RROR銆乄ARN銆両NFO銆丏EBUG銆乀RACE銆� ALL銆�
-    濡傛灉璁剧疆浼樺厛绾т负WARN锛岄偅涔圤FF銆丗ATAL銆丒RROR銆乄ARN 4涓骇鍒殑log鑳芥甯歌緭鍑�
-    璁剧疆涓篛FF 琛ㄧず涓嶈褰昹og4j2鏈韩鐨勬棩蹇楋紝
- -->
+<!--<?xml version="1.0" encoding="UTF-8"?>-->
+<!--&lt;!&ndash;-->
+    <!--6涓紭鍏堢骇浠庨珮鍒颁綆渚濇涓猴細OFF銆丗ATAL銆丒RROR銆乄ARN銆両NFO銆丏EBUG銆乀RACE銆� ALL銆�-->
+    <!--濡傛灉璁剧疆浼樺厛绾т负WARN锛岄偅涔圤FF銆丗ATAL銆丒RROR銆乄ARN 4涓骇鍒殑log鑳芥甯歌緭鍑�-->
+    <!--璁剧疆涓篛FF 琛ㄧず涓嶈褰昹og4j2鏈韩鐨勬棩蹇楋紝-->
+ <!--&ndash;&gt;-->
 
-<!-- status锛氱敤鏉ユ寚瀹歭og4j鏈韩鐨勬墦鍗版棩蹇楃骇鍒�,monitorInterval:鎸囧畾log4j鑷姩閲嶆柊閰嶇疆鐨勭洃娴嬮棿闅旀椂闂� -->
-<configuration status="INFO" monitorInterval="30">
-	<!-- 鑷繁璁剧疆灞炴�э紝鍚庨潰閫氳繃${}鏉ヨ闂� -->
-	<properties>
-		<property name="LOG_HOME">../obdLogs</property>
-	</properties>
+<!--&lt;!&ndash; status锛氱敤鏉ユ寚瀹歭og4j鏈韩鐨勬墦鍗版棩蹇楃骇鍒�,monitorInterval:鎸囧畾log4j鑷姩閲嶆柊閰嶇疆鐨勭洃娴嬮棿闅旀椂闂� &ndash;&gt;-->
+<!--<configuration status="INFO" monitorInterval="30">-->
+	<!--&lt;!&ndash; 鑷繁璁剧疆灞炴�э紝鍚庨潰閫氳繃${}鏉ヨ闂� &ndash;&gt;-->
+	<!--<properties>-->
+		<!--<property name="LOG_HOME">../obdLogs</property>-->
+	<!--</properties>-->
 
-	<appenders>
-		<!--Appender 1. 杈撳嚭鍒癈onsole鎺у埗鍙帮紝鎸囧畾杈撳嚭鏍煎紡鍜岃繃婊ゅ櫒绛夌骇涓篒NFO -->
-		<Console name="Console" target="SYSTEM_OUT">
-			<!--ThresholdFilter鎸囧畾鏃ュ織娑堟伅鐨勮緭鍑烘渶浣庡眰娆�-->
-			<ThresholdFilter level="ALL" onMatch="ACCEPT" onMismatch="DENY"/>
-			<PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
-		</Console>
+	<!--<appenders>-->
+		<!--&lt;!&ndash;Appender 1. 杈撳嚭鍒癈onsole鎺у埗鍙帮紝鎸囧畾杈撳嚭鏍煎紡鍜岃繃婊ゅ櫒绛夌骇涓篒NFO &ndash;&gt;-->
+		<!--<Console name="Console" target="SYSTEM_OUT">-->
+			<!--&lt;!&ndash;ThresholdFilter鎸囧畾鏃ュ織娑堟伅鐨勮緭鍑烘渶浣庡眰娆�&ndash;&gt;-->
+			<!--<ThresholdFilter level="ALL" onMatch="ACCEPT" onMismatch="DENY"/>-->
+			<!--<PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>-->
+		<!--</Console>-->
 
-		<!--Appender 2. 杈撳嚭鍒版粴鍔ㄤ繚瀛樼殑鏂囦欢, 瑙﹀彂淇濆瓨鏃ュ織鏂囦欢鐨勬潯浠舵槸鏃ュ織鏂囦欢澶т簬3KB锛屽彧淇濆瓨鏈�鏂扮殑10涓棩蹇�-->
-		<File name="allLog" fileName="${LOG_HOME}/all.log">
-			<ThresholdFilter level="ALL" onMatch="ACCEPT" onMismatch="DENY"/>
-			<PatternLayout charset="UTF-8" pattern="%d{yyyy.MM.dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>
-		</File>
+		<!--&lt;!&ndash;Appender 2. 杈撳嚭鍒版粴鍔ㄤ繚瀛樼殑鏂囦欢, 瑙﹀彂淇濆瓨鏃ュ織鏂囦欢鐨勬潯浠舵槸鏃ュ織鏂囦欢澶т簬3KB锛屽彧淇濆瓨鏈�鏂扮殑10涓棩蹇�&ndash;&gt;-->
+		<!--<File name="allLog" fileName="${LOG_HOME}/all.log">-->
+			<!--<ThresholdFilter level="ALL" onMatch="ACCEPT" onMismatch="DENY"/>-->
+			<!--<PatternLayout charset="UTF-8" pattern="%d{yyyy.MM.dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>-->
+		<!--</File>-->
 
 
-		<!--Appender 3. 杈撳嚭鍒版粴鍔ㄤ繚瀛樼殑鏂囦欢, 瑙﹀彂淇濆瓨鏃ュ織鏂囦欢鐨勬潯浠舵槸鏃ュ織鏂囦欢澶т簬3KB锛屽彧淇濆瓨鏈�鏂扮殑10涓棩蹇�-->
-		<RollingFile name="debugLog" fileName="${LOG_HOME}/debug.log" filePattern="${LOG_HOME}/debug-%i.log">
-			<ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/>
-			<PatternLayout charset="UTF-8" pattern="[%-5level][%d{yyyy-MM-dd HH:mm:ss}][%F:%L] - %m%n"/>
-			<SizeBasedTriggeringPolicy size="3KB"/>
-			<!-- DefaultRolloverStrategy 涓殑鍙傛暟max锛屽彲浠ラ檺鍒� SizeBasedTriggeringPolicy涓璼ize瓒呭嚭鍚庯紝鍙繚鐣檓ax涓瓨妗�-->
-			<DefaultRolloverStrategy max="10"/>
-		</RollingFile>
+		<!--&lt;!&ndash;Appender 3. 杈撳嚭鍒版粴鍔ㄤ繚瀛樼殑鏂囦欢, 瑙﹀彂淇濆瓨鏃ュ織鏂囦欢鐨勬潯浠舵槸鏃ュ織鏂囦欢澶т簬3KB锛屽彧淇濆瓨鏈�鏂扮殑10涓棩蹇�&ndash;&gt;-->
+		<!--<RollingFile name="debugLog" fileName="${LOG_HOME}/debug.log" filePattern="${LOG_HOME}/debug-%i.log">-->
+			<!--<ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/>-->
+			<!--<PatternLayout charset="UTF-8" pattern="[%-5level][%d{yyyy-MM-dd HH:mm:ss}][%F:%L] - %m%n"/>-->
+			<!--<SizeBasedTriggeringPolicy size="3KB"/>-->
+			<!--&lt;!&ndash; DefaultRolloverStrategy 涓殑鍙傛暟max锛屽彲浠ラ檺鍒� SizeBasedTriggeringPolicy涓璼ize瓒呭嚭鍚庯紝鍙繚鐣檓ax涓瓨妗�&ndash;&gt;-->
+			<!--<DefaultRolloverStrategy max="10"/>-->
+		<!--</RollingFile>-->
 
-		<!--Appender 4. 杈撳嚭鍒版粴鍔ㄤ繚瀛樼殑鏂囦欢, 瑙﹀彂淇濆瓨鏃ュ織鏂囦欢鐨勬潯浠舵槸姣忓垎閽熺涓�娆$殑鏃ュ織浜嬩欢銆侲RROR鏃ュ織鏄寜鍒嗛挓浜х敓鏃ュ織 -->
-		<RollingFile name="errorLog" fileName="${LOG_HOME}/error.log" filePattern="${LOG_HOME}/error-%d{yyyy-MM-dd_HH-mm}.log">
-			<ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY"/>
-			<PatternLayout charset="UTF-8" pattern="[%-5level][%d{yyyy-MM-dd HH:mm:ss}][%C:%F:%L] - %m%n"/>
-			<TimeBasedTriggeringPolicy/>
-		</RollingFile>
+		<!--&lt;!&ndash;Appender 4. 杈撳嚭鍒版粴鍔ㄤ繚瀛樼殑鏂囦欢, 瑙﹀彂淇濆瓨鏃ュ織鏂囦欢鐨勬潯浠舵槸姣忓垎閽熺涓�娆$殑鏃ュ織浜嬩欢銆侲RROR鏃ュ織鏄寜鍒嗛挓浜х敓鏃ュ織 &ndash;&gt;-->
+		<!--<RollingFile name="errorLog" fileName="${LOG_HOME}/error.log" filePattern="${LOG_HOME}/error-%d{yyyy-MM-dd_HH-mm}.log">-->
+			<!--<ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY"/>-->
+			<!--<PatternLayout charset="UTF-8" pattern="[%-5level][%d{yyyy-MM-dd HH:mm:ss}][%C:%F:%L] - %m%n"/>-->
+			<!--<TimeBasedTriggeringPolicy/>-->
+		<!--</RollingFile>-->
 
-		<RollingFile name="RollingFile" fileName="${LOG_HOME}/rar.log" filePattern="${LOG_HOME}/$${date:yyyy-MM}/${FILE_NAME}-%d{MM-dd-yyyy}-%i.log.gz">
-			<PatternLayout charset="UTF-8" pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>
-			<!--鏃ュ織鏂囦欢鏈�澶у�� 绗簩澶╁帇缂�-->
-			<Policies>
-				<TimeBasedTriggeringPolicy/>
-				<SizeBasedTriggeringPolicy size="10 MB"/>
-			</Policies>
-		</RollingFile>
+		<!--<RollingFile name="RollingFile" fileName="${LOG_HOME}/rar.log" filePattern="${LOG_HOME}/$${date:yyyy-MM}/${FILE_NAME}-%d{MM-dd-yyyy}-%i.log.gz">-->
+			<!--<PatternLayout charset="UTF-8" pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>-->
+			<!--&lt;!&ndash;鏃ュ織鏂囦欢鏈�澶у�� 绗簩澶╁帇缂�&ndash;&gt;-->
+			<!--<Policies>-->
+				<!--<TimeBasedTriggeringPolicy/>-->
+				<!--<SizeBasedTriggeringPolicy size="10 MB"/>-->
+			<!--</Policies>-->
+		<!--</RollingFile>-->
 
 
-	</appenders>
-	<!--root 榛樿鍔犺浇-->
-	<loggers>
-		<root level="INFO">
-			<appender-ref ref="Console"/>
-			<!--<appender-ref ref="allLog"/>-->
-			<appender-ref ref="debugLog"/>
-			<appender-ref ref="errorLog"/>
-			<appender-ref ref="RollingFile"/>
-		</root>
-	</loggers>
-</configuration>
\ No newline at end of file
+	<!--</appenders>-->
+	<!--&lt;!&ndash;root 榛樿鍔犺浇&ndash;&gt;-->
+	<!--<loggers>-->
+		<!--<root level="INFO">-->
+			<!--<appender-ref ref="Console"/>-->
+			<!--&lt;!&ndash;<appender-ref ref="allLog"/>&ndash;&gt;-->
+			<!--<appender-ref ref="debugLog"/>-->
+			<!--<appender-ref ref="errorLog"/>-->
+			<!--<appender-ref ref="RollingFile"/>-->
+		<!--</root>-->
+	<!--</loggers>-->
+<!--</configuration>-->
\ No newline at end of file
diff --git a/src/main/resources/mapper/RealTimeDataMapper.xml b/src/main/resources/mapper/RealTimeDataMapper.xml
new file mode 100644
index 0000000..bae1133
--- /dev/null
+++ b/src/main/resources/mapper/RealTimeDataMapper.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.flightfeather.uav.domain.mapper.RealTimeDataMapper">
+  <resultMap id="BaseResultMap" type="com.flightfeather.uav.domain.entity.RealTimeData">
+    <!--
+      WARNING - @mbg.generated
+    -->
+    <id column="id" jdbcType="INTEGER" property="id" />
+    <result column="device_code" jdbcType="VARCHAR" property="deviceCode" />
+    <result column="latitude" jdbcType="DECIMAL" property="latitude" />
+    <result column="longitude" jdbcType="DECIMAL" property="longitude" />
+    <result column="altitude" jdbcType="REAL" property="altitude" />
+    <result column="height" jdbcType="REAL" property="height" />
+    <result column="data_time" jdbcType="TIMESTAMP" property="dataTime" />
+    <result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
+  </resultMap>
+  <resultMap extends="BaseResultMap" id="ResultMapWithBLOBs" type="com.flightfeather.uav.domain.entity.RealTimeData">
+    <!--
+      WARNING - @mbg.generated
+    -->
+    <result column="factors" jdbcType="LONGVARCHAR" property="factors" />
+  </resultMap>
+  <sql id="Base_Column_List">
+    <!--
+      WARNING - @mbg.generated
+    -->
+    id, device_code, latitude, longitude, altitude, height, data_time, create_time
+  </sql>
+  <sql id="Blob_Column_List">
+    <!--
+      WARNING - @mbg.generated
+    -->
+    factors
+  </sql>
+</mapper>
\ No newline at end of file

--
Gitblit v1.9.3