From 61871594dfa0a5ac2c4d895d9ec4034feba57094 Mon Sep 17 00:00:00 2001 From: feiyu02 <risaku@163.com> Date: 星期五, 12 九月 2025 17:20:53 +0800 Subject: [PATCH] 2025.9.5 1. 新增走航任务统计功能 --- src/main/kotlin/com/flightfeather/uav/biz/mission/MissionUtil.kt | 49 ++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 38 insertions(+), 11 deletions(-) diff --git a/src/main/kotlin/com/flightfeather/uav/biz/mission/MissionUtil.kt b/src/main/kotlin/com/flightfeather/uav/biz/mission/MissionUtil.kt index b5017c7..be6523c 100644 --- a/src/main/kotlin/com/flightfeather/uav/biz/mission/MissionUtil.kt +++ b/src/main/kotlin/com/flightfeather/uav/biz/mission/MissionUtil.kt @@ -1,7 +1,9 @@ package com.flightfeather.uav.biz.mission +import com.flightfeather.uav.common.net.AMapService import com.flightfeather.uav.common.utils.MapUtil import com.flightfeather.uav.domain.entity.BaseRealTimeData +import com.flightfeather.uav.domain.entity.avg /** * 璧拌埅浠诲姟璁$畻宸ュ叿 @@ -15,18 +17,43 @@ */ fun calKilometres(data: List<BaseRealTimeData>): Double { var distance = .0 - for (i in 1 until data.size) { - val a = data[i - 1] - val b = data[i] - if (a.longitude == null || a.latitude == null || b.longitude == null || b.latitude == null) continue + var lastValidPoint: BaseRealTimeData? = null - distance += MapUtil.getDistance( - a.longitude!!.toDouble(), - a.latitude!!.toDouble(), - b.longitude!!.toDouble(), - b.latitude!!.toDouble() - ) + for (point in data) { + // 璺宠繃鏃犳晥鐐� + if (point.longitude == null || point.latitude == null) continue + + // 濡傛灉瀛樺湪涓婁竴涓湁鏁堢偣锛屽垯璁$畻璺濈 + lastValidPoint?.let { prevPoint -> + distance += MapUtil.getDistance( + prevPoint.longitude!!.toDouble(), + prevPoint.latitude!!.toDouble(), + point.longitude!!.toDouble(), + point.latitude!!.toDouble() + ) + } + + // 鏇存柊涓婁竴涓湁鏁堢偣 + lastValidPoint = point } return distance } -} \ No newline at end of file + + /** + * 鏍规嵁杞ㄨ抗鐐硅绠楁墍灞炲尯鍩燂紙涔¢晣+琛楅亾锛� + * @param data 璧拌埅杞ㄨ抗鐐瑰垪琛� + * @return 鍖哄煙鍚嶇О锛堜埂闀�+琛楅亾锛夛紝鑻ユ棤娉曡绠楀垯杩斿洖null + */ + @Suppress("UNCHECKED_CAST") + fun calRegion(data: List<BaseRealTimeData>): String? { + // 璁$畻鎵�鏈夎建杩圭偣鐨勫钩鍧囧潗鏍囷紙涓績鐐癸級 + val avgData = data.avg() + val pair = avgData.longitude?.toDouble() to avgData.latitude?.toDouble() + // 鑻ュ钩鍧囧潗鏍囨棤鏁堝垯杩斿洖null + if (pair.first == null || pair.second == null) return null + // 灏哤GS84鍧愭爣杞崲涓篏CJ02鍧愭爣鍚庤繘琛岄�嗗湴鐞嗙紪鐮佽幏鍙栧湴鍧�淇℃伅 + val address = AMapService.reGeo(MapUtil.wgs84ToGcj02(pair as Pair<Double, Double>)) + // 杩斿洖涔¢晣鍜岃閬撳悕绉扮粍鍚� + return address.township + } +} -- Gitblit v1.9.3