From eb3dd00b0b7fcda477229d518d250f9c842b790b Mon Sep 17 00:00:00 2001
From: feiyu02 <risaku@163.com>
Date: 星期二, 21 十月 2025 17:45:44 +0800
Subject: [PATCH] 2025.10.21 1. 走航季度报告相关数据计算逻辑调整

---
 src/main/kotlin/com/flightfeather/uav/domain/repository/SceneInfoRep.kt |   32 ++++++++++++++++++++++++++++++++
 1 files changed, 32 insertions(+), 0 deletions(-)

diff --git a/src/main/kotlin/com/flightfeather/uav/domain/repository/SceneInfoRep.kt b/src/main/kotlin/com/flightfeather/uav/domain/repository/SceneInfoRep.kt
index e38cd28..e6ead7f 100644
--- a/src/main/kotlin/com/flightfeather/uav/domain/repository/SceneInfoRep.kt
+++ b/src/main/kotlin/com/flightfeather/uav/domain/repository/SceneInfoRep.kt
@@ -1,8 +1,10 @@
 package com.flightfeather.uav.domain.repository
 
+import com.flightfeather.uav.common.utils.MapUtil
 import com.flightfeather.uav.domain.entity.SceneInfo
 import com.flightfeather.uav.domain.mapper.SceneInfoMapper
 import com.flightfeather.uav.lightshare.bean.AreaVo
+import com.flightfeather.uav.lightshare.eunm.SceneType
 import org.springframework.stereotype.Repository
 import tk.mybatis.mapper.entity.Example
 
@@ -41,4 +43,34 @@
                 .andLessThanOrEqualTo("latitude", range[3])
         })
     }
+
+    /**
+     * 鏍规嵁澶氳竟褰㈢瓫閫夊満鏅�
+     * @param polygon 澶氳竟褰㈠潗鏍囧垪琛紝椤哄簭涓洪『鏃堕拡鎴栭�嗘椂閽�(瑕佹眰浣跨敤鐏槦鍧愭爣绯�)
+     * @param filter 闇�瑕佽繃婊ゆ帀鐨勫満鏅被鍨�
+     * @return 澶氳竟褰㈠唴鐨勫満鏅垪琛�
+     */
+    fun findByPolygon(polygon: List<Pair<Double, Double>>, filter: List<SceneType> = emptyList()): List<SceneInfo?> {
+        val _filter = filter.map { it.value.toByte() }
+        // 璁$畻澶氳竟褰㈠洓鑷宠寖鍥�
+        val bounds = MapUtil.calFourBoundaries(polygon)
+        val sceneList = findByCoordinateRange(bounds).filter {
+            filter.isEmpty() || !_filter.contains(it?.typeId)
+        }
+        // 绛涢�夋槸鍚﹀湪鍙嶅悜婧簮鍖哄煙澶氳竟褰㈠唴閮�
+        return sceneList.filter { scene ->
+            scene ?: false
+            val point = scene!!.longitude.toDouble() to scene.latitude.toDouble()
+            MapUtil.isPointInPolygon(point, polygon)
+        }
+    }
+
+    fun findBySceneTypes(sceneTypes: List<Int>): List<SceneInfo?> {
+        if (sceneTypes.isEmpty()){
+            return emptyList()
+        }
+        return sceneInfoMapper.selectByExample(Example(SceneInfo::class.java).apply {
+            createCriteria().andIn("typeId", sceneTypes)
+        })
+    }
 }
\ No newline at end of file

--
Gitblit v1.9.3