From 19c90b219bd80f82bfcf799a7adfd03fd469c0b7 Mon Sep 17 00:00:00 2001 From: feiyu02 <risaku@163.com> Date: 星期三, 28 五月 2025 17:24:13 +0800 Subject: [PATCH] 1. 新增动态污染溯源新的判定逻辑(待完成) --- src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/model/DistanceType.kt | 13 ++++ src/main/kotlin/com/flightfeather/uav/common/utils/MapUtil.kt | 6 +- src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/model/PollutedClue.kt | 10 +++ src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/model/PollutedData.kt | 35 +++++++++++ src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/RealTimeExceptionAnalysisController.kt | 32 +++++++--- src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/model/PollutedSource.kt | 12 ++++ src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/model/PollutedArea.kt | 18 ++++++ src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/model/RealTimeExceptionResult.kt | 2 src/main/kotlin/com/flightfeather/uav/socket/handler/UnderwayWebSocketServerHandler.kt | 14 +++- src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/model/PollutedSummary.kt | 10 +++ 10 files changed, 133 insertions(+), 19 deletions(-) diff --git a/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/RealTimeExceptionAnalysisController.kt b/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/RealTimeExceptionAnalysisController.kt index 4c47d28..4670667 100644 --- a/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/RealTimeExceptionAnalysisController.kt +++ b/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/RealTimeExceptionAnalysisController.kt @@ -43,7 +43,7 @@ .withMain(FactorType.VOC) .create() ) - initTask(config) + initTask() } constructor(sceneInfoRep: SceneInfoRep) : this(sceneInfoRep, null) @@ -55,7 +55,7 @@ private val taskList = mutableListOf<BaseExceptionAnalysis<RealTimeAnalysisConfig, RealTimeExceptionResult>>() - private fun initTask(config: RealTimeAnalysisConfig) { + fun initTask() { taskList.clear() taskList.apply { add( @@ -139,9 +139,11 @@ // 鏇存柊涓棿鐐逛俊鎭� ex.midData = avgData.apply { + dataTime = midData.dataTime + createTime = midData.createTime longitude = midData.longitude latitude = midData.latitude - } + }.toDataVo() // 鏇存柊婧簮鑼冨洿鍐呯殑姹℃煋鍦烘櫙淇℃伅 ex.relatedSceneList = result } @@ -164,14 +166,24 @@ val eDeg = windDir + defaultDegOffset val distance = windSpeed * durationMin * 60 - // 宸︿晶锛堥�嗘椂閽堜晶锛夐《鐐� - val p1 = MapUtil.getPointByLen(center, distance, sDeg * PI / 180) - // 椋庡悜鍙嶅悜椤剁偣 - val p2 = MapUtil.getPointByLen(center, distance, windDir * PI / 180) - // 鍙充晶锛堥『鏃堕拡渚э級椤剁偣 - val p3 = MapUtil.getPointByLen(center, distance, eDeg * PI / 180) + val result = mutableListOf(center) + var startDeg = sDeg + while (startDeg < eDeg) { + val p = MapUtil.getPointByLen(center, distance, startDeg * PI / 180) + result.add(p) + startDeg++ + } - return listOf(center, p1, p2, p3) + return result + +// // 宸︿晶锛堥�嗘椂閽堜晶锛夐《鐐� +// val p1 = MapUtil.getPointByLen(center, distance, sDeg * PI / 180) +// // 椋庡悜鍙嶅悜椤剁偣 +// val p2 = MapUtil.getPointByLen(center, distance, windDir * PI / 180) +// // 鍙充晶锛堥『鏃堕拡渚э級椤剁偣 +// val p3 = MapUtil.getPointByLen(center, distance, eDeg * PI / 180) +// +// return listOf(center, p1, p2, p3) } } \ No newline at end of file diff --git a/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/model/DistanceType.kt b/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/model/DistanceType.kt new file mode 100644 index 0000000..4f7af43 --- /dev/null +++ b/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/model/DistanceType.kt @@ -0,0 +1,13 @@ +package com.flightfeather.uav.biz.sourcetrace.model + +/** + * 鍔ㄦ�佹函婧愮嚎绱㈣窛绂荤被鍨� + * @date 2025/5/28 + * @author feiyu02 + */ +enum class DistanceType(val des: String) { + TYPE1("50绫�"), + TYPE2("50绫� - 500绫�"), + TYPE3("50绫� - 1鍏噷"), + TYPE4("50绫� - 2鍏噷") +} \ No newline at end of file diff --git a/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/model/PollutedArea.kt b/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/model/PollutedArea.kt new file mode 100644 index 0000000..bcfe4e2 --- /dev/null +++ b/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/model/PollutedArea.kt @@ -0,0 +1,18 @@ +package com.flightfeather.uav.biz.sourcetrace.model + +/** + * 鍔ㄦ�佹函婧愭薄鏌撳尯鍩� + * 閫氳繃鍦板浘鍧愭爣鐐瑰舰鎴愬杈瑰舰鏉ユ弿杩颁竴鍧楁薄鏌撳尯鍩� + * @date 2025/5/27 + * @author feiyu02 + */ +class PollutedArea { + + var name: String? = null + + // 姹℃煋鑼冨洿鍖哄煙(缁忕含搴﹀杈瑰舰) + var polygon: List<Pair<Double, Double>>? = null + + // 姹℃煋鍙兘鐨勫彂鐢熻窛绂� + var distanceType: DistanceType? = null +} \ No newline at end of file diff --git a/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/model/PollutedClue.kt b/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/model/PollutedClue.kt new file mode 100644 index 0000000..9893656 --- /dev/null +++ b/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/model/PollutedClue.kt @@ -0,0 +1,10 @@ +package com.flightfeather.uav.biz.sourcetrace.model + +/** + * 姹℃煋绾跨储 + * 鏍规嵁 + * @date 2025/5/27 + * @author feiyu02 + */ +class PollutedClue { +} \ No newline at end of file diff --git a/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/model/PollutedData.kt b/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/model/PollutedData.kt new file mode 100644 index 0000000..8ae7734 --- /dev/null +++ b/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/model/PollutedData.kt @@ -0,0 +1,35 @@ +package com.flightfeather.uav.biz.sourcetrace.model + +import com.flightfeather.uav.domain.entity.BaseRealTimeData +import com.flightfeather.uav.lightshare.bean.DataVo + +/** + * 姹℃煋鏁版嵁 + * @date 2025/5/27 + * @author feiyu02 + */ +class PollutedData { + + /** + * + * 1. 杞1.5m/s鍙婁互涓嬶紝 + * 鍓嶅悗鍊间笂鍗囧箙搴﹀湪50%浠ヤ笂1娆★紝璁や负鏄复杩戝彂鐢�(50绫�) + * 鍓嶅悗鍊间笂鍗囧箙搴﹀湪20%浠ヤ笂1娆★紝璁や负鏄繙璺濈鍙戠敓锛�50绫� - 500绫筹級 + * 1.5 m/s鍙婁互涓嬶紝闈欑ǔ澶╂皵锛屼复杩戝彂鐢�(50绫�) + * 2. 1.6 - 7.9 m/s锛屽墠鍚庡�间笂鍗囧箙搴﹀湪20%浠ヤ笂3娆★紝璁や负鏄繙璺濈鍙戠敓锛�50绫� - 1鍏噷锛� + * 3. 8 - 13.8 m/s 浠ヤ笂锛屽墠鍚庡�间笂鍗囧箙搴﹀湪10%浠ヤ笂3娆★紝璁や负鏄繙璺濈鍙戠敓(50绫� - 2鍏噷) + */ + + // 椋庨�� + var windSpeed: Float? = null + + // 鍥犲瓙閲忕骇鍙樺寲骞呭害 + var percentage: Float? = null + + // 鍙戠敓娆℃暟 + var times: Int? = null + + // 寮傚父鐩戞祴鏁版嵁 + var dataList: MutableList<BaseRealTimeData> = mutableListOf() + var dataVoList: MutableList<DataVo> = mutableListOf() +} \ No newline at end of file diff --git a/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/model/PollutedSource.kt b/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/model/PollutedSource.kt new file mode 100644 index 0000000..d0e3fd0 --- /dev/null +++ b/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/model/PollutedSource.kt @@ -0,0 +1,12 @@ +package com.flightfeather.uav.biz.sourcetrace.model + +/** + * 姹℃煋鏉ユ簮 + * 绯荤粺鍐呴儴鐨勬薄鏌撳満鏅�佺數瀛愬湴鍥炬悳绱㈠緱鍒扮殑瀹為檯璺璺彛绛夋爣蹇椾俊鎭� + * @date 2025/5/27 + * @author feiyu02 + */ +class PollutedSource { + + +} \ No newline at end of file diff --git a/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/model/PollutedSummary.kt b/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/model/PollutedSummary.kt new file mode 100644 index 0000000..e4eed40 --- /dev/null +++ b/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/model/PollutedSummary.kt @@ -0,0 +1,10 @@ +package com.flightfeather.uav.biz.sourcetrace.model + +/** + * 姹℃煋鎯呭喌姹囨�� + * 閽堝鍗曟璧拌埅锛屽畾鏃剁粺璁″凡鏈夋薄鏌撶嚎绱紝鎸夌収绛栫暐缁欏嚭璧拌埅寤鸿 + * @date 2025/5/27 + * @author feiyu02 + */ +class PollutedSummary { +} \ No newline at end of file diff --git a/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/model/RealTimeExceptionResult.kt b/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/model/RealTimeExceptionResult.kt index 7a4251f..e9d93e5 100644 --- a/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/model/RealTimeExceptionResult.kt +++ b/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/model/RealTimeExceptionResult.kt @@ -49,7 +49,7 @@ var latitude: BigDecimal? = null // 涓棿鏁版嵁鐐瑰潗鏍� - var midData: BaseRealTimeData? = null + var midData: DataVo? = null // var midLongitude: BigDecimal? = null // var midLatitude: BigDecimal? = null diff --git a/src/main/kotlin/com/flightfeather/uav/common/utils/MapUtil.kt b/src/main/kotlin/com/flightfeather/uav/common/utils/MapUtil.kt index 5ae24c7..a565a72 100644 --- a/src/main/kotlin/com/flightfeather/uav/common/utils/MapUtil.kt +++ b/src/main/kotlin/com/flightfeather/uav/common/utils/MapUtil.kt @@ -260,9 +260,9 @@ val sqrtmagic = sqrt(magic); dlat = (dlat * 180.0) / (((a * (1 - ee)) / (magic * sqrtmagic)) * PI); dlng = (dlng * 180.0) / ((a / sqrtmagic) * cos(radlat) * PI); - val mglat = Math.round((lat * 2 - lat - dlat) * 1000000) / 1000000; - val mglng = Math.round((lng * 2 - lng - dlng) * 1000000) / 1000000; - return mglng.toDouble() to mglat.toDouble() + val mglat = Math.round((lat * 2 - lat - dlat) * 1000000).toDouble() / 1000000; + val mglng = Math.round((lng * 2 - lng - dlng) * 1000000).toDouble() / 1000000; + return mglng to mglat } } diff --git a/src/main/kotlin/com/flightfeather/uav/socket/handler/UnderwayWebSocketServerHandler.kt b/src/main/kotlin/com/flightfeather/uav/socket/handler/UnderwayWebSocketServerHandler.kt index 3c5b0fa..fef4d1a 100644 --- a/src/main/kotlin/com/flightfeather/uav/socket/handler/UnderwayWebSocketServerHandler.kt +++ b/src/main/kotlin/com/flightfeather/uav/socket/handler/UnderwayWebSocketServerHandler.kt @@ -40,11 +40,15 @@ // Test try { - val data = GsonUtils.parserJsonToArrayBeans(msgTxt, DataVo::class.java) - data.forEach { - realTimeExceptionAnalysisController.addOneData( - it.toBaseRealTimeData(BaseRealTimeData::class.java) - ) + if (msgTxt == "start") { + realTimeExceptionAnalysisController.initTask() + } else { + val data = GsonUtils.parserJsonToArrayBeans(msgTxt, DataVo::class.java) + data.forEach { + realTimeExceptionAnalysisController.addOneData( + it.toBaseRealTimeData(BaseRealTimeData::class.java) + ) + } } } catch (e: Exception) { // ctx?.channel()?.writeAndFlush(TextWebSocketFrame("褰撳墠涓烘祴璇曠姸鎬侊紝浼犺緭鐨勬暟鎹笉鏄蛋鑸暟鎹牸寮�")) -- Gitblit v1.9.3