From c56e1e74426238939f229f0005828d05089715ff Mon Sep 17 00:00:00 2001
From: feiyu02 <risaku@163.com>
Date: 星期四, 03 七月 2025 17:30:58 +0800
Subject: [PATCH] 2025.7.3 1. 新增动态污染溯源新的判定逻辑

---
 src/test/kotlin/com/flightfeather/uav/Test.kt |  275 +++++++++++++++++++++++++++++-------------------------
 1 files changed, 148 insertions(+), 127 deletions(-)

diff --git a/src/test/kotlin/com/flightfeather/uav/Test.kt b/src/test/kotlin/com/flightfeather/uav/Test.kt
index d359695..4941af9 100644
--- a/src/test/kotlin/com/flightfeather/uav/Test.kt
+++ b/src/test/kotlin/com/flightfeather/uav/Test.kt
@@ -1,6 +1,21 @@
 package com.flightfeather.uav
 
+import com.flightfeather.uav.common.utils.DateUtil
+import com.flightfeather.uav.common.utils.FileExchange
+import com.flightfeather.uav.common.utils.FileUtil
+import com.flightfeather.uav.common.utils.TimeUtil
+import com.flightfeather.uav.domain.entity.BaseRealTimeData
+import com.flightfeather.uav.domain.entity.Company
+import com.flightfeather.uav.domain.entity.GridDataDetail
+import com.flightfeather.uav.socket.bean.DataUnit
+import com.flightfeather.uav.socket.decoder.AirDataDecoder
+import com.flightfeather.uav.socket.eunm.AirCommandUnit
+import com.google.gson.Gson
 import org.junit.Test
+import org.springframework.beans.BeanUtils
+import java.io.File
+import java.io.FileOutputStream
+import java.io.OutputStreamWriter
 import java.text.SimpleDateFormat
 import java.util.*
 
@@ -12,139 +27,145 @@
 
     @Test
     fun foo1() {
-        val b = ByteArray(20) {8}
-        val a = 1
-        println(a.toString(2))
+        val s = SimpleDateFormat.getDateTimeInstance().format(Date())
+        println(s)
     }
 
     @Test
     fun foo2() {
-        val b = ByteArray(2)
-        b[0] = 0x01
-        b[1] = 0x80.toByte()
-
-        println("${b[0].toString(16)}${b[1].toInt()}")
-        println("${b[0]}${b[1]}".toInt(16))
-    }
-
-    @Test
-    fun foo3() {
-        val hexNum = "ff"
-        val length = hexNum.toInt(16)
-        println(length)
-    }
-
-    @Test
-    fun foo4() {
-        val h = "0101"
-        val byte = 0xff
-        val b = h.toInt(16)
-        println(b)
-    }
-
-    @Test
-    fun foo5() {
-        val s = "23 23 30 30 30 30 30 35 33 31 36 30 38 30 31 30 35 33 36"
-        val sb = StringBuilder()
-        val ascii = s.split(" ")
-        ascii.forEach {
-            sb.append(it.toIntOrNull(16)?.toChar())
-        }
-        println(sb.toString())
-    }
-
-    @Test
-    fun foo6() {
-        val cal  = Calendar.getInstance().apply {
-            set(2019, 9, 15, 23, 16, 59)
-        }
-
-        println(SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(cal.time))
-    }
-
-    @Test
-    fun foo7() {
-        val a = "0AAF".toIntOrNull(16)?.toString(2)
-        println(a)
-    }
-
-    @Test
-    fun foo8() {
-        val byte = ByteArray(2)
-        byte[0] = 0x23
-        byte[1] = 0x23
-
-        byte[0].toString(16)
-    }
-
-    @Test
-    fun foo9() {
-        val b = 128.toByte()
-        var a = 0
-        if (b < 0) {
-            a = b + 256
-        } else {
-            a = b.toInt()
-        }
-        println(b.toString(16))
-    }
-
-    @Test
-    fun foo10() {
-        val s = "2 31 37 36 39 31 35 33 31 39 30 39 31 32 30 30 30 36 1 1 0 42 13 9 f 12 33 3b 2 0 8a 1b 0 36 2e 0 23 60 11 b4 0 c8 0 b4 0 0 66 0 0 0 0 0 0 73 0 0 0 b9 4 75 0 2e d8 ed 0 0 0 0 80 0 bc 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"
-        val ascii = s.split(" ")
-        var bcc = 0x00
-        ascii.forEach {
-            bcc = bcc.xor(it.toInt(16))
-        }
-        println(bcc.toString(16))
-    }
-
-    @Test
-    fun foo11() {
-        val b = mutableListOf<String>().apply {
-            add("13")
-            add("09")
-            add("10")
-            add("10")
-            add("2b")
-            add("2f")
-        }
-        if (b.size < 6) {
-            println("null")
-        }
-
-        val year = b[0].toInt(16) + 2000
-        if (year < 2000 || year > 2099) println("null")
-        val month = b[1].toInt(16)
-        val day = b[2].toInt(16)
-        val hour = b[3].toInt(16)
-        val min = b[4].toInt(16)
-        val sec = b[5].toInt(16)
-        val cal  = Calendar.getInstance().apply {
-            set(year, month - 1, day, hour, min, sec)
-        }
-
-        println(SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(cal.time))
-    }
-
-    @Test
-    fun f0012() {
-        val sb = java.lang.StringBuilder()
-        val byte = ByteArray(2)
-        byte[0] = 0x00
-        byte[1] = 0xBD.toByte()
-        byte.forEach { b ->
-            var a = 0
-            a = if (b < 0) {
-                b + 256
-            } else {
-                b.toInt()
+        val file = File("E:\\VSprojects\\uav-monitor\\asset\\data\\data-2020-12-24-01-34-24.txt")
+        val outFile = File("E:\\VSprojects\\uav-monitor\\asset\\data\\data.json")
+        val out = OutputStreamWriter(FileOutputStream(outFile))
+        val list = mutableListOf<List<DataUnit>>()
+        file.readLines().forEach {
+            val p = AirDataDecoder.instance.decode(it)
+//            val str = Gson().toJson(p.dataUnit)
+            if (p.commandUnit == AirCommandUnit.AirData.value) {
+                list.add(p.dataUnit)
             }
-
-            sb.append(a.toString(16))
         }
+        val str = Gson().toJson(list)
+        out.append(str)
+        out.flush()
+        out.close()
+    }
 
-        println(sb.toString().toInt(16))
+    @Test
+    fun dataChange() {
+        FileExchange().doTask2()
+    }
+
+    @Test
+    fun listCopy() {
+        val l1 =
+            listOf(Company().apply { ciGuid = "a" }, Company().apply { ciGuid = "b" }, Company().apply { ciGuid = "c" })
+        val l2 = mutableListOf<Company>().apply { addAll(l1) }
+        l2[1].ciGuid = "d"
+        println(l1)
+        println(l2)
+    }
+
+    @Test
+    fun average() {
+        for (i in 0..2) {
+            println(i)
+        }
+        val list = listOf(1, 2, 3, 4, 5, 0)
+        println(list.average())
+    }
+
+    @Test
+    fun get_crc16() {
+        val dataSegment =
+            "QN=20210713133901044;ST=22;CN=2011;PW=555555;MN=FYHB0DT0100001;Flag=1;CP=&&DataTime=20210713133800;a34001-Avg=0.017,a34001-CPM=3.9,a34001-Flag=N;a50001-Avg=71.1,a50001-Flag=N;a01001-Avg=34.0,a01001-Flag=N;a01002-Avg=59.3,a01002-Flag=N;a01007-Avg=0.6,a01007-Flag=N;a01008-Avg=256.3,a01008-Flag=N;Period=1;Scale=1.0;SelfTemp=0.0;SelfHum=0.0;IsReplacement=N&&"
+        var CRC = 0x0000ffff
+        val POLYNOMIAL = 0x0000a001
+        var i: Int
+        var j: Int
+        val bufData = dataSegment.toByteArray()
+        val buflen = bufData.size
+        if (buflen == 0) {
+            return
+        }
+        i = 0
+        while (i < buflen) {
+            CRC = CRC xor (bufData[i].toInt() and 0x000000ff)
+            j = 0
+            while (j < 8) {
+                if (CRC and 0x00000001 != 0) {
+                    CRC = CRC shr 1
+                    CRC = CRC xor POLYNOMIAL
+                } else {
+                    CRC = CRC shr 1
+                }
+                j++
+            }
+            i++
+        }
+        var strCRC = Integer.toHexString(CRC).toString()
+        if (strCRC.length < 4) {
+            strCRC += "0"
+        }
+        println(strCRC)
+    }
+
+    @Test
+    fun foo15() {
+        var i = 0
+        do {
+            if (i == 3) {
+                FileUtil.instance?.saveObdData("msg", true)
+            } else {
+                FileUtil.instance?.saveObdData("msg")
+            }
+            i++
+        } while (i < 10)
+    }
+
+    @Test
+    fun foo16() {
+        val d = "2023-06-13 00:01:50.0\t".trim().split(".")[0]
+        val t = DateUtil.instance.StringToDate(d, DateUtil.DateStyle.YYYY_MM_DD_HH_MM_SS)
+        println(d)
+        println(t)
+    }
+
+    @Test
+    fun foo17() {
+        val avgData = BaseRealTimeData().apply {
+            no2 = 50f
+            co = 50f
+            h2s = 50f
+            so2 = 50f
+            o3 = 50f
+            pm25 = 50f
+            pm10 = 50f
+            temperature = 50f
+            humidity = 50f
+            voc = 50f
+            noi = 50f
+            no = 50f
+            windSpeed = 2f
+            windDirection = 240f
+        }
+        val dataDetail = GridDataDetail()
+        BeanUtils.copyProperties(avgData, dataDetail)
+
+        println(dataDetail)
+    }
+
+    @Test
+    fun getDayTimeTag() {
+        val period = TimeUtil.getDayTimeTag(
+            Date(2024, 10, 10, 10, 25, 0),
+            Date(2024, 10, 10, 14, 40, 0)
+        )
+
+        println("${period?.first};${period?.second};${period?.third}")
+    }
+
+    @Test
+    fun foo18() {
+        println(-4.382398 in 4.0..Double.MAX_VALUE)
     }
 }
\ No newline at end of file

--
Gitblit v1.9.3