From 01eae19a4870033e879a3faa6749eece92926cab Mon Sep 17 00:00:00 2001
From: feiyu02 <risaku@163.com>
Date: 星期五, 26 一月 2024 17:10:55 +0800
Subject: [PATCH] 1. 新增多项yml配置文件 2. 新增导入静安监测数据功能模块(未完成)

---
 src/main/kotlin/com/flightfeather/uav/lightshare/bean/ElectricDailyInfo.kt               |    2 
 src/main/kotlin/com/flightfeather/uav/common/utils/ExcelUtil.kt                          |  123 ++++++++++++++------
 src/main/kotlin/com/flightfeather/uav/lightshare/web/RealTimeDataController.kt           |    7 +
 src/main/kotlin/com/flightfeather/uav/common/utils/FileExchange.kt                       |   62 ++++++++++
 src/main/kotlin/com/flightfeather/uav/lightshare/service/RealTimeDataService.kt          |    2 
 src/main/kotlin/com/flightfeather/uav/model/epw/WindDirWeight.kt                         |    3 
 src/main/resources/application-pro.yml                                                   |    7 +
 src/main/resources/application-test.yml                                                  |   20 +++
 pom.xml                                                                                  |   24 ++++
 src/main/kotlin/com/flightfeather/uav/lightshare/web/BaseResPack.kt                      |   27 ++++
 src/test/kotlin/com/flightfeather/uav/Test.kt                                            |    9 
 src/main/kotlin/com/flightfeather/uav/socket/processor/ElectricProcessor.kt              |    2 
 src/main/kotlin/com/flightfeather/uav/common/exception/ResponseErrorException.kt         |   13 ++
 src/main/resources/application-dev.yml                                                   |    7 +
 src/main/kotlin/com/flightfeather/uav/lightshare/service/impl/RealTimeDataServiceImpl.kt |    4 
 src/main/kotlin/com/flightfeather/uav/model/epw/EPWDataPrep.kt                           |    6 
 src/main/resources/application.yml                                                       |   27 ----
 17 files changed, 269 insertions(+), 76 deletions(-)

diff --git a/pom.xml b/pom.xml
index 11f104f..6634aee 100644
--- a/pom.xml
+++ b/pom.xml
@@ -260,6 +260,30 @@
         </plugins>
     </build>
 
+    <profiles>
+        <profile>
+            <id>dev</id>
+            <properties>
+                <profileActive>dev</profileActive>
+            </properties>
+            <activation>
+                <activeByDefault>true</activeByDefault>
+            </activation>
+        </profile>
+        <profile>
+            <id>pro</id>
+            <properties>
+                <profileActive>pro</profileActive>
+            </properties>
+        </profile>
+        <profile>
+            <id>test</id>
+            <properties>
+                <profileActive>test</profileActive>
+            </properties>
+        </profile>
+    </profiles>
+
     <!--渚濊禆涓嬭浇鍦板潃-->
     <repositories>
         <repository>
diff --git a/src/main/kotlin/com/flightfeather/uav/common/exception/ResponseErrorException.kt b/src/main/kotlin/com/flightfeather/uav/common/exception/ResponseErrorException.kt
new file mode 100644
index 0000000..bf8dd9e
--- /dev/null
+++ b/src/main/kotlin/com/flightfeather/uav/common/exception/ResponseErrorException.kt
@@ -0,0 +1,13 @@
+package com.flightfeather.uav.common.exception
+
+/**
+ * 鍏佽鎺ュ彛杩斿洖鐨勪笟鍔″眰闈㈢殑閿欒
+ */
+class ResponseErrorException : Exception {
+    constructor():super()
+    constructor(message: String) : super(message)
+    constructor(message: String, cause: Throwable) : super(message, cause)
+    constructor(cause: Throwable) : super(cause)
+    constructor(message: String, cause: Throwable, enableSuppression: Boolean, writableStackTrace: Boolean)
+            : super(message, cause, enableSuppression, writableStackTrace)
+}
\ No newline at end of file
diff --git a/src/main/kotlin/com/flightfeather/uav/common/utils/ExcelUtil.kt b/src/main/kotlin/com/flightfeather/uav/common/utils/ExcelUtil.kt
index 0eb806e..5d2a37b 100644
--- a/src/main/kotlin/com/flightfeather/uav/common/utils/ExcelUtil.kt
+++ b/src/main/kotlin/com/flightfeather/uav/common/utils/ExcelUtil.kt
@@ -1,8 +1,16 @@
 package com.flightfeather.uav.common.utils
 
-import org.apache.poi.hssf.usermodel.HSSFWorkbook
+import com.flightfeather.uav.common.exception.ResponseErrorException
+import org.apache.poi.ss.usermodel.Row
 import org.apache.poi.ss.util.CellRangeAddress
 import org.apache.poi.xssf.streaming.SXSSFWorkbook
+import org.apache.poi.xssf.usermodel.XSSFRow
+import org.apache.poi.xssf.usermodel.XSSFWorkbook
+import org.jetbrains.kotlin.incremental.isJavaFile
+import java.io.ByteArrayInputStream
+import java.io.File
+import java.io.FileInputStream
+import java.io.InputStream
 import java.time.LocalDate
 import java.util.*
 import kotlin.math.max
@@ -16,16 +24,44 @@
     private const val isLog = false
 
     class MyCell(
-            var text: String,
-            var rowSpan: Int = 1,
-            var colSpan: Int = 1,
-            var fontColor: Short? = null
+        var text: String,
+        var rowSpan: Int = 1,
+        var colSpan: Int = 1,
+        var fontColor: Short? = null,
     )
+
+    /**
+     * 璇诲彇鏂囦欢
+     * @param file 瑕佽鍙栫殑鏂囦欢
+     * @param headerCheck 鏂囦欢棣栬妫�鏌ュ洖璋�
+     * @param onRow 鍗曡鍐呭鍥炶皟锛屼粠绗簩琛屽紑濮�
+     */
+    fun read(file: File, headerCheck: (header: XSSFRow) -> Boolean, onRow: (row: Row) -> Unit): Boolean {
+        if (!file.exists() || !file.isFile) throw ResponseErrorException("it's not a normal file!")
+        if (!file.extension.equals("xls", ignoreCase = true) || !file.extension.equals("xlsx", ignoreCase = true)) {
+            throw ResponseErrorException("file's extension name should be xls or xlsx!")
+        }
+        return read(FileInputStream(file), headerCheck, onRow)
+    }
+
+    fun read(input: InputStream, headerCheck: (header: XSSFRow) -> Boolean, onRow: (row: Row) -> Unit): Boolean {
+        val workbook = XSSFWorkbook(input)
+        val sheet1 = workbook.getSheetAt(0)
+        val header = sheet1.getRow(sheet1.topRow.toInt())
+        return if (headerCheck(header)) {
+            // 鑾峰彇杩唬鍣ㄥ苟鍘婚櫎绗竴琛屾爣棰�
+            val iterator = sheet1.rowIterator().also { it.next() }
+            iterator.forEach { onRow(it) }
+            true
+        } else {
+            false
+        }
+    }
 
     /**
      * 鑷姩澶勭悊琛屽悎骞舵暟鎹�
      */
-    fun write2(heads: List<String>, contents: List<Array<Any>>, workbook: SXSSFWorkbook, sheetName:String) {
+    fun write2(heads: List<String>, contents: List<Array<Any>>, workbook: SXSSFWorkbook, sheetName: String) {
 
         val sheet = workbook.createSheet(sheetName)
 
@@ -52,31 +88,31 @@
                 var rowspan = maxRow//鍚堝苟鐨勮鐨勮法搴�
 
                 val c =
-                        if (cell is Array<*>) {
-                            //褰撴暟鎹负鏁扮粍鏃讹紝闇�瑕佹牴鎹渶澶ц鏁伴噸鏂拌绠楄鍗曞厓鏍肩殑琛岃法搴�
-                            arrayMap[i] = cell
-                            rowspan = maxRow / if (cell.size == 0) 1 else cell.size
-                            val c = cell[0]
-                            if (c is MyCell) {
-                                rowspan = c.rowSpan
-                            }
-                            if (rowspan > 1) {
-                                log("鍚堝苟1-1锛�$rowIndex;${rowIndex + rowspan - 1};$i")
-                                sheet.addMergedRegion(CellRangeAddress(rowIndex, rowIndex + rowspan - 1, i, i))
-                            }
-                            if (cell.isEmpty()) {
-                                ""
-                            } else {
-                                cell[0]
-                            }
-                        } else {
-                            //褰撴暟鎹笉鏄暟缁勬椂锛岄渶瑕佹寜鏈�澶ц鏁板悎骞跺崟鍏冩牸
-                            if (rowspan > 1) {
-                                log("鍚堝苟1-2锛�$rowIndex;${rowIndex + rowspan - 1};$i")
-                                sheet.addMergedRegion(CellRangeAddress(rowIndex, rowIndex + rowspan - 1, i, i))
-                            }
-                            cell
+                    if (cell is Array<*>) {
+                        //褰撴暟鎹负鏁扮粍鏃讹紝闇�瑕佹牴鎹渶澶ц鏁伴噸鏂拌绠楄鍗曞厓鏍肩殑琛岃法搴�
+                        arrayMap[i] = cell
+                        rowspan = maxRow / if (cell.size == 0) 1 else cell.size
+                        val c = cell[0]
+                        if (c is MyCell) {
+                            rowspan = c.rowSpan
                         }
+                        if (rowspan > 1) {
+                            log("鍚堝苟1-1锛�$rowIndex;${rowIndex + rowspan - 1};$i")
+                            sheet.addMergedRegion(CellRangeAddress(rowIndex, rowIndex + rowspan - 1, i, i))
+                        }
+                        if (cell.isEmpty()) {
+                            ""
+                        } else {
+                            cell[0]
+                        }
+                    } else {
+                        //褰撴暟鎹笉鏄暟缁勬椂锛岄渶瑕佹寜鏈�澶ц鏁板悎骞跺崟鍏冩牸
+                        if (rowspan > 1) {
+                            log("鍚堝苟1-2锛�$rowIndex;${rowIndex + rowspan - 1};$i")
+                            sheet.addMergedRegion(CellRangeAddress(rowIndex, rowIndex + rowspan - 1, i, i))
+                        }
+                        cell
+                    }
                 when (c) {
                     is MyCell -> {
                         rows.createCell(i).setCellValue(c.text)
@@ -107,7 +143,7 @@
                         if (c is MyCell) {
                             rowspan = c.rowSpan
                         }
-                        val _c = array[i-1]
+                        val _c = array[i - 1]
                         if (_c is MyCell) {
                             lastRowSpan = _c.rowSpan
                         }
@@ -153,9 +189,15 @@
     /**
      * 鑷姩澶勭悊琛屽悎骞舵暟鎹�
      */
-    fun write(heads: List<Array<String>>, contents: List<Array<Any>>, workbook: SXSSFWorkbook, sheetName: String = "sheet1", row: Int = 0): Int {
+    fun write(
+        heads: List<Array<String>>,
+        contents: List<Array<Any>>,
+        workbook: SXSSFWorkbook,
+        sheetName: String = "sheet1",
+        row: Int = 0,
+    ): Int {
 
-        val sheet = workbook.getSheet(sheetName)?: workbook.createSheet(sheetName)
+        val sheet = workbook.getSheet(sheetName) ?: workbook.createSheet(sheetName)
 //        println("sheet: $sheetName")
 
         var rowIndex = row
@@ -195,7 +237,10 @@
                         }
                         if (rowspan > 1 || colSpan > 1) {
                             log("鍚堝苟1-1锛�$rowIndex;${rowIndex + rowspan - 1};$col")
-                            sheet.addMergedRegion(CellRangeAddress(rowIndex, rowIndex + rowspan - 1, col, col + colSpan - 1))
+                            sheet.addMergedRegion(CellRangeAddress(rowIndex,
+                                rowIndex + rowspan - 1,
+                                col,
+                                col + colSpan - 1))
                         }
                         if (cell.isEmpty()) {
                             ""
@@ -210,7 +255,10 @@
                         }
                         if (rowspan > 1 || colSpan > 1) {
                             log("鍚堝苟1-2锛�$rowIndex;${rowIndex + rowspan - 1};$col")
-                            sheet.addMergedRegion(CellRangeAddress(rowIndex, rowIndex + rowspan - 1, col, col + colSpan - 1))
+                            sheet.addMergedRegion(CellRangeAddress(rowIndex,
+                                rowIndex + rowspan - 1,
+                                col,
+                                col + colSpan - 1))
                         }
                         cell
                     }
@@ -272,7 +320,10 @@
                         }
                         if (rowspan > 1 || colSpan > 1) {
                             log("鍚堝苟2锛�${index};${index + rowspan - 1};${map.key}")
-                            sheet.addMergedRegion(CellRangeAddress(index, index + rowspan - 1, map.key, map.key + colSpan - 1))
+                            sheet.addMergedRegion(CellRangeAddress(index,
+                                index + rowspan - 1,
+                                map.key,
+                                map.key + colSpan - 1))
                         }
 
                         when (c) {
diff --git a/src/main/kotlin/com/flightfeather/uav/common/utils/FileExchange.kt b/src/main/kotlin/com/flightfeather/uav/common/utils/FileExchange.kt
index 380b3dd..efc4c36 100644
--- a/src/main/kotlin/com/flightfeather/uav/common/utils/FileExchange.kt
+++ b/src/main/kotlin/com/flightfeather/uav/common/utils/FileExchange.kt
@@ -1,6 +1,7 @@
 package com.flightfeather.uav.common.utils
 
 import com.alibaba.fastjson.JSONObject
+import com.flightfeather.uav.common.exception.ResponseErrorException
 import com.flightfeather.uav.domain.entity.RealTimeData
 import com.flightfeather.uav.socket.bean.AirData
 import org.apache.poi.hssf.usermodel.HSSFWorkbook
@@ -13,7 +14,7 @@
 import java.util.*
 
 /**
- * 鏃犱汉鑸归噰闆嗘暟鎹牸寮忚浆鎹�
+ * 閲囬泦鏁版嵁鏍煎紡杞崲
  */
 class FileExchange {
 
@@ -27,6 +28,55 @@
         private val format = SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
     }
 
+    fun exchangeJinanData(file: File) {
+        val headers = listOf(
+            "longitude",
+            "latitude",
+            "data_time",
+            "NO2",
+            "CO",
+            "H2S",
+            "SO2",
+            "O3",
+            "PM25",
+            "PM10",
+            "temperature",
+            "humidity",
+            "VOC",
+            "NOI",
+            "velocity",
+            "wind_speed",
+            "wind_direction"
+        )
+        try {
+            ExcelUtil.read(file, headerCheck = {
+                val cellIterator = it.cellIterator()
+                val headIterator = headers.iterator()
+                while (headIterator.hasNext()) {
+                    val head = headIterator.next()
+                    if (cellIterator.hasNext()) {
+                        val cellText = cellIterator.next().stringCellValue
+                        if (!cellText.equals(head)) {
+                            throw ResponseErrorException("鏂囦欢鏍煎紡閿欒, 琛ㄥご[${head}]搴旇涓篬${cellText}]")
+                        }
+                    } else {
+                        throw ResponseErrorException("鏂囦欢鏍煎紡閿欒, 琛ㄥご[${head}]缂哄け")
+                    }
+                }
+                true
+            }, onRow = {
+                it.cellIterator().forEach {
+                    it.numericCellValue
+                }
+            })
+        } catch (e: Exception) {
+            throw ResponseErrorException("excel鏂囦欢鍐呭閿欒锛屾暟鎹浆鎹㈠け璐ワ紒", e)
+        }
+    }
+
+    /**
+     * 杞崲鏃犱汉鑸圭殑姘磋川鐩戞祴鏁版嵁
+     */
     fun exchangeBoatData(deviceCode: String, file: InputStream): List<RealTimeData> {
         val workbook = HSSFWorkbook(file)
         val sheet = workbook.getSheetAt(0)
@@ -205,7 +255,15 @@
         val filePath = "e:/$fileName"
         val out = FileOutputStream(File(filePath))
 
-        val heads = listOf("id", "device_code", "latitude", "longitude", "altitude", "height", "factors", "data_time", "create_time")
+        val heads = listOf("id",
+            "device_code",
+            "latitude",
+            "longitude",
+            "altitude",
+            "height",
+            "factors",
+            "data_time",
+            "create_time")
         val contents = mutableListOf<Array<Any>>()
 
         for (i in 1..sheet.lastRowNum) {
diff --git a/src/main/kotlin/com/flightfeather/uav/lightshare/bean/ElectricDailyInfo.kt b/src/main/kotlin/com/flightfeather/uav/lightshare/bean/ElectricDailyInfo.kt
index 665551a..720c349 100644
--- a/src/main/kotlin/com/flightfeather/uav/lightshare/bean/ElectricDailyInfo.kt
+++ b/src/main/kotlin/com/flightfeather/uav/lightshare/bean/ElectricDailyInfo.kt
@@ -200,8 +200,8 @@
     fun getResult() {
         // 鐢ㄧ數閲�
         plPower = round(plPower * 100) / 100
-        pfPower = round(pfPower * 100) / 100
 
+        pfPower = round(pfPower * 100) / 100
         // 寮�鍏虫椂闂存牸寮忓寲
         plRTimeStr = DateUtil.instance.dateToString(plRTime, DateUtil.DateStyle.YYYY_MM_DD_HH_MM_SS)
         plETimeStr = DateUtil.instance.dateToString(plETime, DateUtil.DateStyle.YYYY_MM_DD_HH_MM_SS)
diff --git a/src/main/kotlin/com/flightfeather/uav/lightshare/service/RealTimeDataService.kt b/src/main/kotlin/com/flightfeather/uav/lightshare/service/RealTimeDataService.kt
index 07ab15e..a9627b1 100644
--- a/src/main/kotlin/com/flightfeather/uav/lightshare/service/RealTimeDataService.kt
+++ b/src/main/kotlin/com/flightfeather/uav/lightshare/service/RealTimeDataService.kt
@@ -16,6 +16,8 @@
 
     fun importData(file: MultipartFile): BaseResponse<DataImportResult>
 
+    fun importJinanData(file: MultipartFile): BaseResponse<DataImportResult>
+
     fun outToWorkbook(deviceCode: String, startTime: String, endTime: String): SXSSFWorkbook
 
     fun outToExcel(deviceCode: String, startTime: String, endTime: String, response: HttpServletResponse): HttpServletResponse
diff --git a/src/main/kotlin/com/flightfeather/uav/lightshare/service/impl/RealTimeDataServiceImpl.kt b/src/main/kotlin/com/flightfeather/uav/lightshare/service/impl/RealTimeDataServiceImpl.kt
index 5264b8e..54815f4 100644
--- a/src/main/kotlin/com/flightfeather/uav/lightshare/service/impl/RealTimeDataServiceImpl.kt
+++ b/src/main/kotlin/com/flightfeather/uav/lightshare/service/impl/RealTimeDataServiceImpl.kt
@@ -173,6 +173,10 @@
         return BaseResponse(true, data = DataImportResult(""))
     }
 
+    override fun importJinanData(file: MultipartFile): BaseResponse<DataImportResult> {
+        TODO("Not yet implemented")
+    }
+
     override fun outToWorkbook(deviceCode: String, startTime: String, endTime: String): SXSSFWorkbook {
         val sTime = dateFormatter.parse(startTime)
         val eTime = dateFormatter.parse(endTime)
diff --git a/src/main/kotlin/com/flightfeather/uav/lightshare/web/BaseResPack.kt b/src/main/kotlin/com/flightfeather/uav/lightshare/web/BaseResPack.kt
new file mode 100644
index 0000000..c0fb761
--- /dev/null
+++ b/src/main/kotlin/com/flightfeather/uav/lightshare/web/BaseResPack.kt
@@ -0,0 +1,27 @@
+package com.flightfeather.uav.lightshare.web
+
+import com.flightfeather.uav.common.exception.ResponseErrorException
+import com.flightfeather.uav.lightshare.bean.BaseResponse
+import com.flightfeather.uav.lightshare.bean.DataHead
+
+
+/**
+ * 鍖呰鎺ュ彛杩斿洖缁撴灉
+ */
+fun resPack(service: () -> Any?): BaseResponse<Any> {
+    return try {
+        val res = service()
+        if (res is Pair<*, *>) {
+            val head = res.first
+            if (head is DataHead) {
+                BaseResponse(true, head = head, data = res.second)
+            } else {
+                BaseResponse(true, data = res)
+            }
+        } else {
+            BaseResponse(true, data = res)
+        }
+    } catch (e: ResponseErrorException) {
+        BaseResponse(false, message = e.message ?: "")
+    }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/com/flightfeather/uav/lightshare/web/RealTimeDataController.kt b/src/main/kotlin/com/flightfeather/uav/lightshare/web/RealTimeDataController.kt
index def38ec..6831444 100644
--- a/src/main/kotlin/com/flightfeather/uav/lightshare/web/RealTimeDataController.kt
+++ b/src/main/kotlin/com/flightfeather/uav/lightshare/web/RealTimeDataController.kt
@@ -2,6 +2,7 @@
 
 import com.flightfeather.uav.lightshare.service.RealTimeDataService
 import io.swagger.annotations.Api
+import io.swagger.annotations.ApiOperation
 import io.swagger.annotations.ApiParam
 import org.springframework.web.bind.annotation.*
 import org.springframework.web.multipart.MultipartFile
@@ -33,4 +34,10 @@
     fun importData(
         @RequestPart("excel") file: MultipartFile
     ) = realTimeDataService.importData(file)
+
+    @ApiOperation(value = "瀵煎叆闈欏畨鍖虹敓鎬佺幆澧冪洃娴嬬珯鐨勮蛋琛屾暟鎹�")
+    @PostMapping("/import/jinan")
+    fun importJinanData(
+        @RequestPart("excel") file: MultipartFile
+    ) = realTimeDataService.importJinanData(file)
 }
\ No newline at end of file
diff --git a/src/main/kotlin/com/flightfeather/uav/model/epw/EPWDataPrep.kt b/src/main/kotlin/com/flightfeather/uav/model/epw/EPWDataPrep.kt
index 3539828..2af8a49 100644
--- a/src/main/kotlin/com/flightfeather/uav/model/epw/EPWDataPrep.kt
+++ b/src/main/kotlin/com/flightfeather/uav/model/epw/EPWDataPrep.kt
@@ -36,7 +36,7 @@
 
                 val range = FactorType.getRange(a.factorName) ?: return@v
                 // 鍒ゆ柇鏁版嵁鏄惁鍦ㄥ悎鐞嗚寖鍥村唴
-                if (a.factorData ?: 0.0 < range.first || a.factorData ?: 0.0 > range.second) {
+                if (a.factorData != null && (a.factorData!! < range.first || a.factorData!! > range.second)) {
                     a.factorData = null
                 }
             }
@@ -165,7 +165,7 @@
         if (lastData.isNotEmpty() && newList.isNotEmpty()) {
             val lastTime = DateUtil.instance.StringToDate(lastData.last().time)
             val thisTime = DateUtil.instance.StringToDate(newList.first().time)
-            if (thisTime?.time?.minus(lastTime?.time ?: 0) ?: 0 >= (60 * 1000)) {
+            if ((thisTime?.time?.minus(lastTime?.time ?: 0) ?: 0) >= (60 * 1000)) {
                 lastData.clear()
             }
         }
@@ -225,7 +225,7 @@
                 val f = it.values?.get(i)
                 if (f?.factorName == factorName) {
                     val range = FactorType.getRange(f?.factorName) ?: continue
-                    if (f?.factorData ?: 0.0 in range.first..range.second) {
+                    if ((f?.factorData ?: 0.0) in range.first..range.second) {
                         t += (f?.factorData!! - avg) * (f.factorData!! - avg)
                         c++
                     }
diff --git a/src/main/kotlin/com/flightfeather/uav/model/epw/WindDirWeight.kt b/src/main/kotlin/com/flightfeather/uav/model/epw/WindDirWeight.kt
index 927fae2..7074a30 100644
--- a/src/main/kotlin/com/flightfeather/uav/model/epw/WindDirWeight.kt
+++ b/src/main/kotlin/com/flightfeather/uav/model/epw/WindDirWeight.kt
@@ -32,14 +32,13 @@
     private fun getAngle(p1: Pair<Double, Double>, p2: Pair<Double, Double>, wd: Double): Double {
         val dx = p2.first - p1.first
         val dy = p2.second - p1.second
-        var x1 = atan2(dy, dx) * 180 / PI
+        var x1 = atan2(dy, dx) * 180 / PI + 180
         if (x1 < 0) x1 += 360
         var x2 = 270 - wd
         if (x2 < 0) x2 += 360
         x1 = abs(x2 - x1)
         if (x1 > 180) x1 = 360 - x1
 //        println("澶硅锛�$x1")
-        x1 = 180 - x1
         return x1
     }
 }
\ No newline at end of file
diff --git a/src/main/kotlin/com/flightfeather/uav/socket/processor/ElectricProcessor.kt b/src/main/kotlin/com/flightfeather/uav/socket/processor/ElectricProcessor.kt
index 4d5f655..7476e3e 100644
--- a/src/main/kotlin/com/flightfeather/uav/socket/processor/ElectricProcessor.kt
+++ b/src/main/kotlin/com/flightfeather/uav/socket/processor/ElectricProcessor.kt
@@ -41,7 +41,7 @@
     }
 
     private fun saveToDataBase(message: BaseMessage, msg: String) {
-        if (message is ElectricMessage) {
+        if (message is ElectricMessage && message.mn.isNotBlank()) {
             instance.electricRepository.saveData(message)
         }
     }
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index f03bef2..91a47b7 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -1,3 +1,10 @@
+spring:
+  datasource:
+    # 寮�鍙戞湰鍦版湇鍔″櫒
+    url: jdbc:mysql://localhost:3306/dronemonitor?serverTimezone=Asia/Shanghai&prepStmtCacheSize=517&cachePrepStmts=true&autoReconnect=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false
+    username: root
+    password: 123456
+
 springfox:
   documentation:
     swagger:
diff --git a/src/main/resources/application-pro.yml b/src/main/resources/application-pro.yml
index 135277d..a5210a8 100644
--- a/src/main/resources/application-pro.yml
+++ b/src/main/resources/application-pro.yml
@@ -1,3 +1,10 @@
+spring:
+  datasource:
+    #    绾夸笂鏈嶅姟鍣�
+    url: jdbc:mysql://localhost:3306/dronemonitor?serverTimezone=Asia/Shanghai&prepStmtCacheSize=517&cachePrepStmts=true&autoReconnect=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false
+    username: dronemonitor
+    password: dronemonitor_hackxrnomxm
+
 springfox:
   documentation:
     swagger:
diff --git a/src/main/resources/application-test.yml b/src/main/resources/application-test.yml
new file mode 100644
index 0000000..373ebee
--- /dev/null
+++ b/src/main/resources/application-test.yml
@@ -0,0 +1,20 @@
+spring:
+  datasource:
+    driver-class-name: com.mysql.cj.jdbc.Driver
+    #    灞�鍩熺綉鏈嶅姟鍣�
+    #    url: jdbc:mysql://192.168.0.200:3306/dronemonitor?serverTimezone=Asia/Shanghai&prepStmtCacheSize=517&cachePrepStmts=true&autoReconnect=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false
+    #    username: root
+    #    password: cn.FLIGHTFEATHER
+
+    #   杩滅▼鏈嶅姟鍣�
+    url: jdbc:mysql://47.100.191.150:3306/dronemonitor?serverTimezone=Asia/Shanghai&prepStmtCacheSize=517&cachePrepStmts=true&autoReconnect=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false
+    username: remoteU1
+    password: eSoF8DnzfGTlhAjE
+
+springfox:
+  documentation:
+    swagger:
+      v2:
+        enabled: true
+
+
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 1087cd6..e105607 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -1,25 +1,6 @@
 spring:
   datasource:
     driver-class-name: com.mysql.cj.jdbc.Driver
-#    灞�鍩熺綉鏈嶅姟鍣�
-#    url: jdbc:mysql://192.168.0.200:3306/dronemonitor?serverTimezone=Asia/Shanghai&prepStmtCacheSize=517&cachePrepStmts=true&autoReconnect=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false
-#    username: root
-#    password: cn.FLIGHTFEATHER
-
-#    绾夸笂鏈嶅姟鍣�
-#    url: jdbc:mysql://localhost:3306/dronemonitor?serverTimezone=Asia/Shanghai&prepStmtCacheSize=517&cachePrepStmts=true&autoReconnect=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false
-#    username: dronemonitor
-#    password: dronemonitor_hackxrnomxm
-
-#    寮�鍙戞湰鍦版湇鍔″櫒
-#    url: jdbc:mysql://localhost:3306/dronemonitor?serverTimezone=Asia/Shanghai&prepStmtCacheSize=517&cachePrepStmts=true&autoReconnect=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false
-#    username: root
-#    password: 123456
-
-#   寮�鍙戣繙绋嬫湇鍔″櫒
-    url: jdbc:mysql://47.100.191.150:3306/dronemonitor?serverTimezone=Asia/Shanghai&prepStmtCacheSize=517&cachePrepStmts=true&autoReconnect=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false
-    username: remoteU1
-    password: eSoF8DnzfGTlhAjE
     hikari:
       maximum-pool-size: 500
       minimum-idle: 20
@@ -52,10 +33,4 @@
     helperDialect: mysql
     reasonable: true
     supportMethodsArguments: true
-    params: count=countSql
-
-springfox:
-  documentation:
-    swagger:
-      v2:
-        enabled: false
\ No newline at end of file
+    params: count=countSql
\ No newline at end of file
diff --git a/src/test/kotlin/com/flightfeather/uav/Test.kt b/src/test/kotlin/com/flightfeather/uav/Test.kt
index 85e68a9..7cd72a9 100644
--- a/src/test/kotlin/com/flightfeather/uav/Test.kt
+++ b/src/test/kotlin/com/flightfeather/uav/Test.kt
@@ -118,11 +118,10 @@
 
     @Test
     fun foo16() {
-        val l = mutableListOf<BigDecimal>().apply {
-            add(BigDecimal.valueOf(6.23))
-            add(BigDecimal("6.23"))
-            add(BigDecimal(6.23))
+        val list = listOf(1, 2, 3, 4, 5, 6)
+        val iterator = list.iterator().also { it.next() }
+        iterator.forEach {
+            println(it)
         }
-        l.forEach { println(it) }
     }
 }
\ No newline at end of file

--
Gitblit v1.9.3