From 7cd8d2a1e96de3d173bf5af64b4adc29c497db2a Mon Sep 17 00:00:00 2001
From: feiyu02 <risaku@163.com>
Date: 星期六, 12 十月 2024 17:38:07 +0800
Subject: [PATCH] 1. 新增评估结果批量修改相关接口(完成)

---
 src/main/kotlin/cn/flightfeather/supervision/business/bgtask/AopTaskCtrl.kt                       |    2 
 src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/EvaluationServiceImpl.kt     |    8 +
 src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/EvaluationUpdateVo.kt                  |   19 ++++
 src/main/kotlin/cn/flightfeather/supervision/business/location/CoordinateUtil.kt                  |   17 +++
 src/main/kotlin/cn/flightfeather/supervision/business/autooutput/score/ScoreUtil.kt               |   43 ++++++++++
 src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/ItemevaluationServiceImpl.kt |   12 ++-
 src/main/kotlin/cn/flightfeather/supervision/domain/ds1/repository/ExternalDeviceRep.kt           |    9 ++
 src/main/kotlin/cn/flightfeather/supervision/domain/ds1/repository/DeviceRep.kt                   |    2 
 src/test/kotlin/cn/flightfeather/supervision/business/location/LocationRoadNearbyTest.kt          |  128 +++++++++++++++++++++++++++++++-
 9 files changed, 224 insertions(+), 16 deletions(-)

diff --git a/src/main/kotlin/cn/flightfeather/supervision/business/autooutput/score/ScoreUtil.kt b/src/main/kotlin/cn/flightfeather/supervision/business/autooutput/score/ScoreUtil.kt
index 12df325..84bb7e2 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/business/autooutput/score/ScoreUtil.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/business/autooutput/score/ScoreUtil.kt
@@ -7,6 +7,7 @@
 import cn.flightfeather.supervision.domain.ds1.entity.Itemevaluation
 import cn.flightfeather.supervision.lightshare.vo.EvaluationVo
 import cn.flightfeather.supervision.lightshare.vo.ItemEvaluationVo
+import cn.flightfeather.supervision.lightshare.vo.SubRulePair
 import java.util.*
 
 /**
@@ -37,7 +38,47 @@
 
             // 琛ュ厖鍚勬渶涓婄骇璇勫垎椤圭殑璁″垎
             val fatherId = r.first.fatherid
-            for (t in (evaluationScene.topRules.value ?: emptyList())) {
+            for (t in (topRules ?: emptyList())) {
+                if (t.guid == fatherId) {
+                    t.score += r.first.score
+                    break
+                }
+            }
+        }
+    }
+
+    /**
+     * 鏍规嵁鎵�閫夋渶娣卞眰璇勪及閫夐」锛屼互鍘熸湁璇勫垎涓哄熀纭�锛岀粰瑙勫垯璧嬪�煎搴斿垎鏁板強鑷姩璁$畻鍏朵綑鎵�鏈夋潯鐩緱鍒�
+     * @param evaluationScene 闇�瑕佽瘎浼扮殑瀵硅薄
+     * @param selected 璇勪及琛ㄤ腑閫変腑鐨勮瘎浼版潯鐩富閿甶d闆嗗悎锛堝繀椤绘槸鏈�娣变竴灞傜殑璇勪及鏉$洰锛�
+     */
+    fun scoreAssignSelected(evaluationScene: AopDataSource.EvaluationScene, selected: List<SubRulePair?>?) {
+        val topRules = evaluationScene.topRules.value
+        val subRules = evaluationScene.rules.value
+        val evaluation = evaluationScene.evaluation.value ?: return
+        val itemevaluationList = evaluationScene.itemevaluationList.value ?: return
+        subRules?.forEach { r ->
+
+            r.second.forEach { e ->
+                // 棣栧厛灏嗗師鏈夌殑鍒嗘暟璧嬪�肩粰瀵瑰簲瑙勫垯
+                val itemEva = itemevaluationList.find { it.esrguid == e.guid }
+                e.score = itemEva?.value?.toIntOrNull() ?: 0
+                e.selected = itemEva?.extension1 == "true"
+                // 鏍规嵁浼犲叆鐨勯�変腑璇勪及鏉$洰涓婚敭id锛屼慨鏀瑰叾寰楀垎
+                selected?.find { it?.id == e.guid }?.let {s ->
+                    if (s.selected == true) {
+                        e.setMaxScore()
+                    } else {
+                        e.clear()
+                    }
+                }
+            }
+            // 鏍规嵁瀛愰」鐨勯�夋嫨鎯呭喌锛岃嚜鍔ㄨ绠楄鏉¤瘎浼扮殑鎬诲緱鍒�
+            subRuleCal(r)
+
+            // 琛ュ厖鍚勬渶涓婄骇璇勫垎椤圭殑璁″垎
+            val fatherId = r.first.fatherid
+            for (t in (topRules ?: emptyList())) {
                 if (t.guid == fatherId) {
                     t.score += r.first.score
                     break
diff --git a/src/main/kotlin/cn/flightfeather/supervision/business/bgtask/AopTaskCtrl.kt b/src/main/kotlin/cn/flightfeather/supervision/business/bgtask/AopTaskCtrl.kt
index f125125..4de46d6 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/business/bgtask/AopTaskCtrl.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/business/bgtask/AopTaskCtrl.kt
@@ -79,7 +79,7 @@
             val name = "${districtName}${Constant.SceneType.getDes(sceneType)}鑷姩璇勫垎"
             val bgTask = backgroundTaskCtrl.startNewTask(BgTaskType.AUTO_SCORE, id, name) {
                 // 鐩戞祴鏁版嵁鍒嗘瀽鍏ュ簱
-//                dataAnalysis(districtCode, sceneType, taskId, year, month)
+                dataAnalysis(districtCode, sceneType, taskId, year, month)
                 // 鑷姩璇勪及璁$畻鍏ュ簱
                 aopEvaluation.executeByTopTask(taskId, sceneType)
                 // 鐜俊鐮佺粨鏋滆浆鎹㈠叆搴�
diff --git a/src/main/kotlin/cn/flightfeather/supervision/business/location/CoordinateUtil.kt b/src/main/kotlin/cn/flightfeather/supervision/business/location/CoordinateUtil.kt
index a2678ce..e145035 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/business/location/CoordinateUtil.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/business/location/CoordinateUtil.kt
@@ -1,8 +1,6 @@
 package cn.flightfeather.supervision.business.location
 
-import kotlin.math.PI
-import kotlin.math.cos
-import kotlin.math.sin
+import kotlin.math.*
 
 object CoordinateUtil {
 
@@ -32,4 +30,17 @@
     fun disToLng(distance: Double): Double {
         return distance * 0.00001
     }
+
+    fun calculateDistance(lon1: Double, lat1: Double, lon2: Double, lat2: Double): Double {
+        val R = 6371; // 鍦扮悆骞冲潎鍗婂緞锛屽崟浣嶅叕閲�
+        val dLat = (lat2 - lat1) * Math.PI / 180;
+        val dLon = (lon2 - lon1) * Math.PI / 180;
+        val a = sin(dLat / 2) * sin(dLat / 2) +
+                cos(lat1 * Math.PI / 180) * cos(lat2 * Math.PI / 180) *
+                sin(dLon / 2) * sin(dLon / 2);
+        val c = 2 * atan2(sqrt(a), sqrt(1 - a));
+        val distance = R * c;
+        return distance;
+    }
+
 }
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/domain/ds1/repository/DeviceRep.kt b/src/main/kotlin/cn/flightfeather/supervision/domain/ds1/repository/DeviceRep.kt
index c43bd1a..194501a 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/domain/ds1/repository/DeviceRep.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/domain/ds1/repository/DeviceRep.kt
@@ -10,7 +10,7 @@
 import java.util.*
 
 /**
- *
+ * 鍦烘櫙璁惧鏁版嵁搴撴煡璇�
  * @date 2024/7/24
  * @author feiyu02
  */
diff --git a/src/main/kotlin/cn/flightfeather/supervision/domain/ds1/repository/ExternalDeviceRep.kt b/src/main/kotlin/cn/flightfeather/supervision/domain/ds1/repository/ExternalDeviceRep.kt
new file mode 100644
index 0000000..8dd175a
--- /dev/null
+++ b/src/main/kotlin/cn/flightfeather/supervision/domain/ds1/repository/ExternalDeviceRep.kt
@@ -0,0 +1,9 @@
+package cn.flightfeather.supervision.domain.ds1.repository
+
+/**
+ * 澶栭儴鐩戞祴璁惧鏁版嵁搴撴煡璇�
+ * @date 2024/9/29
+ * @author feiyu02
+ */
+class ExternalDeviceRep {
+}
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/EvaluationServiceImpl.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/EvaluationServiceImpl.kt
index 84991cd..dc5839d 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/EvaluationServiceImpl.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/EvaluationServiceImpl.kt
@@ -285,7 +285,13 @@
         //1. 鏌ユ壘鍘嗗彶璁板綍锛屾煡鐪嬭瘎浼版槸鍚﹀凡瀛樺湪
 //        areaVo.scensetypeid ?: throw ResponseErrorException("鏌ヨ鏃跺繀椤婚�夋嫨涓�涓満鏅被鍨�")
 //        val task = taskRep.findOneTask(areaVo) ?: throw ResponseErrorException("鏌ヨ鏃跺繀椤婚�夋嫨涓�涓満鏅被鍨�")
-        return evaluationRep.findAutoScore(areaVo)
+        val evaList = evaluationRep.findAutoScore(areaVo)
+        evaList?.forEach {
+            it?.subTaskId?.let { id->
+                it.itemEvaluations = evaluationRep.findItemEvaluation(id)
+            }
+        }
+        return evaList
     }
 
     override fun downloadAutoEvaluation(areaVo: AreaVo, forceUpdate: Boolean, response: HttpServletResponse): Boolean {
diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/ItemevaluationServiceImpl.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/ItemevaluationServiceImpl.kt
index b3d99bc..29475cb 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/ItemevaluationServiceImpl.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/ItemevaluationServiceImpl.kt
@@ -120,10 +120,14 @@
         try {
             source.loop() { _, evaluationScene ->
                 if (evaluationScene.noRecord()) throw BizException("宸℃煡浠诲姟涓嶅瓨鍦�")
-                // 灏嗗垎鏁拌祴鍊煎埌瀵瑰簲鐨勮瘎浼拌鍒欎笅锛屽苟涓旇嚜鍔ㄨ绠楀叾浣欒鍒欑殑寰楀垎
-                ScoreUtil.scoreAssign(evaluationScene, itemList)
-                // 鑾峰彇鎬诲垎鍜屽瓙椤瑰緱鍒嗘暟鎹簱琛ㄧ粨鏋勪綋锛屽苟鍏ュ簱
-                ScoreUtil.updateEvaRecord(evaluationScene)?.let { aopOutput.updateDbEvaluation(evaluationScene, it) }
+                evaVo.subTaskEvaList?.find {
+                    it.subTaskId == evaluationScene.subTask.value?.stguid
+                }?.let {stEva ->
+                    // 灏嗗垎鏁拌祴鍊煎埌瀵瑰簲鐨勮瘎浼拌鍒欎笅锛屽苟涓旇嚜鍔ㄨ绠楀叾浣欒鍒欑殑寰楀垎
+                    ScoreUtil.scoreAssignSelected(evaluationScene, stEva.subRule)
+                    // 鑾峰彇鎬诲垎鍜屽瓙椤瑰緱鍒嗘暟鎹簱琛ㄧ粨鏋勪綋锛屽苟鍏ュ簱
+                    ScoreUtil.updateEvaRecord(evaluationScene)?.let { aopOutput.updateDbEvaluation(evaluationScene, it) }
+                }
             }
             return true
         } catch (e: Exception) {
diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/EvaluationUpdateVo.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/EvaluationUpdateVo.kt
index 75f1f1a..2c6966e 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/EvaluationUpdateVo.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/EvaluationUpdateVo.kt
@@ -1,5 +1,6 @@
 package cn.flightfeather.supervision.lightshare.vo
 
+import com.fasterxml.jackson.annotation.JsonInclude
 import io.swagger.annotations.ApiModel
 import io.swagger.annotations.ApiModelProperty
 
@@ -8,9 +9,16 @@
  * @date 2024/9/28
  * @author feiyu02
  */
+@JsonInclude(JsonInclude.Include.NON_NULL)
 @ApiModel("宸℃煡浠诲姟鐩戞祴鏁版嵁寮傚父鎵e垎")
 class EvaluationUpdateVo : AreaEvaVo() {
 
+    @ApiModelProperty("宸℃煡浠诲姟鐨勮瘎鍒嗕慨鏀硅鎯�")
+    var subTaskEvaList: List<SubTaskEva>? = null
+}
+
+@ApiModel("宸℃煡浠诲姟鐩戞祴鏁版嵁鎵e垎璇︽儏")
+class SubTaskEva {
     @ApiModelProperty("宸℃煡浠诲姟涓婚敭")
     var subTaskId: String? = null
 
@@ -18,5 +26,14 @@
     var ruleId: String? = null
 
     @ApiModelProperty("鍏蜂綋璇勪及鏉$洰鏄惁鍕鹃��", notes = "瀵硅薄缁撴瀯涓鸿瘎浼版潯鐩殑涓婚敭鍜屾槸鍚﹀嬀閫夊舰鎴愮殑閿�煎鍒楄〃")
-    var subRule: List<Pair<String, Boolean>>? = null
+    var subRule: List<SubRulePair?>? = null
+}
+
+@ApiModel("鍏蜂綋璇勪及鏉$洰鍕鹃�夋儏鍐�")
+class SubRulePair {
+    @ApiModelProperty("璇勪及瑙勫垯id")
+    var id: String? = null
+
+    @ApiModelProperty("鏄惁閫変腑")
+    var selected: Boolean? = null
 }
\ No newline at end of file
diff --git a/src/test/kotlin/cn/flightfeather/supervision/business/location/LocationRoadNearbyTest.kt b/src/test/kotlin/cn/flightfeather/supervision/business/location/LocationRoadNearbyTest.kt
index dc83b49..2fed9ec 100644
--- a/src/test/kotlin/cn/flightfeather/supervision/business/location/LocationRoadNearbyTest.kt
+++ b/src/test/kotlin/cn/flightfeather/supervision/business/location/LocationRoadNearbyTest.kt
@@ -9,6 +9,7 @@
 import org.springframework.boot.test.context.SpringBootTest
 import org.springframework.test.context.junit.jupiter.SpringExtension
 import org.springframework.test.context.junit4.SpringRunner
+import kotlin.math.log
 
 @RunWith(SpringRunner::class)
 @ExtendWith(SpringExtension::class)
@@ -45,10 +46,10 @@
 //            LocationRoadNearby.BasePlace("鍚曢潚璺�-鏈卞悤鍏矾-鏈卞钩鍏矾", Pair(121.136318,30.833325), Pair(121.148624,30.836094)),
 //            LocationRoadNearby.BasePlace("娉栨咕鏀矾-鍚曢潚璺�-鏈卞钩鍏矾", Pair(121.155048,30.835229), Pair(121.148659,30.829861)),
 
-            LocationRoadNearby.BasePlace("寰愭眹涓婂笀澶�", Pair(121.419384,31.161433), Pair(121.419384,31.161433)),
-            LocationRoadNearby.BasePlace("闈欏畨鐩戞祴绔欏浗鎺х偣", Pair(121.429439, 31.223632), Pair(121.429439, 31.223632)),
+//            LocationRoadNearby.BasePlace("寰愭眹涓婂笀澶�", Pair(121.419384, 31.161433), Pair(121.419384, 31.161433)),
+//            LocationRoadNearby.BasePlace("闈欏畨鐩戞祴绔欏浗鎺х偣", Pair(121.429439, 31.223632), Pair(121.429439, 31.223632)),
             LocationRoadNearby.BasePlace("閲戝北澶ч亾2000鍙�", Pair(121.3404, 30.744262), Pair(121.3404, 30.744262)),
-            LocationRoadNearby.BasePlace("浠欓湠绔�", Pair(121.394775, 31.203982), Pair(121.394775, 31.203982)),
+//            LocationRoadNearby.BasePlace("浠欓湠绔�", Pair(121.394775, 31.203982), Pair(121.394775, 31.203982)),
 
 //            LocationRoadNearby.BasePlace("绋嬫ˉ绔�", Pair(121.362928, 31.192925), Pair(121.362928, 31.192925)),
 //            LocationRoadNearby.BasePlace("闀块槼绔�", Pair(121.424603, 31.223644), Pair(121.424603, 31.223644)),
@@ -79,9 +80,128 @@
 //            500.0,
 //            1000.0,
 //            2000.0,
-            3000.0
+//            3000.0,
+            5000.0
         ).forEach {
             locationRoadNearby.searchList(bList, it)
         }
     }
+
+    @Test
+    fun foo2() {
+        val bList = listOf(
+            LocationRoadNearby.BasePlace("1", Pair(121.334271, 31.238706), Pair(121.334271, 31.238706)),
+            LocationRoadNearby.BasePlace("2", Pair(121.343935, 31.239303), Pair(121.343935, 31.239303)),
+            LocationRoadNearby.BasePlace("3", Pair(121.3536, 31.239898), Pair(121.3536, 31.239898)),
+            LocationRoadNearby.BasePlace("4", Pair(121.363263, 31.240491), Pair(121.363263, 31.240491)),
+            LocationRoadNearby.BasePlace("5", Pair(121.372924, 31.241082), Pair(121.372924, 31.241082)),
+            LocationRoadNearby.BasePlace("6", Pair(121.382581, 31.241668), Pair(121.382581, 31.241668)),
+            LocationRoadNearby.BasePlace("7", Pair(121.392235, 31.242251), Pair(121.392235, 31.242251)),
+            LocationRoadNearby.BasePlace("8", Pair(121.401886, 31.24283), Pair(121.401886, 31.24283)),
+            LocationRoadNearby.BasePlace("9", Pair(121.411531, 31.243404), Pair(121.411531, 31.243404)),
+            LocationRoadNearby.BasePlace("10", Pair(121.421172, 31.243972), Pair(121.421172, 31.243972)),
+            LocationRoadNearby.BasePlace("11", Pair(121.430808, 31.244536), Pair(121.430808, 31.244536)),
+            LocationRoadNearby.BasePlace("12", Pair(121.440441, 31.245096), Pair(121.440441, 31.245096)),
+            LocationRoadNearby.BasePlace("13", Pair(121.334944, 31.230417), Pair(121.334944, 31.230417)),
+            LocationRoadNearby.BasePlace("14", Pair(121.344609, 31.231014), Pair(121.344609, 31.231014)),
+            LocationRoadNearby.BasePlace("15", Pair(121.354273, 31.231609), Pair(121.354273, 31.231609)),
+            LocationRoadNearby.BasePlace("16", Pair(121.363934, 31.232202), Pair(121.363934, 31.232202)),
+            LocationRoadNearby.BasePlace("17", Pair(121.373595, 31.232792), Pair(121.373595, 31.232792)),
+            LocationRoadNearby.BasePlace("18", Pair(121.383251, 31.233378), Pair(121.383251, 31.233378)),
+            LocationRoadNearby.BasePlace("19", Pair(121.392904, 31.233961), Pair(121.392904, 31.233961)),
+            LocationRoadNearby.BasePlace("20", Pair(121.402553, 31.234539), Pair(121.402553, 31.234539)),
+            LocationRoadNearby.BasePlace("21", Pair(121.412197, 31.235112), Pair(121.412197, 31.235112)),
+            LocationRoadNearby.BasePlace("22", Pair(121.421837, 31.235681), Pair(121.421837, 31.235681)),
+            LocationRoadNearby.BasePlace("23", Pair(121.431472, 31.236245), Pair(121.431472, 31.236245)),
+            LocationRoadNearby.BasePlace("24", Pair(121.441103, 31.236803), Pair(121.441103, 31.236803)),
+            LocationRoadNearby.BasePlace("25", Pair(121.335618, 31.222129), Pair(121.335618, 31.222129)),
+            LocationRoadNearby.BasePlace("26", Pair(121.345282, 31.222726), Pair(121.345282, 31.222726)),
+            LocationRoadNearby.BasePlace("27", Pair(121.354944, 31.223321), Pair(121.354944, 31.223321)),
+            LocationRoadNearby.BasePlace("28", Pair(121.364606, 31.223913), Pair(121.364606, 31.223913)),
+            LocationRoadNearby.BasePlace("29", Pair(121.374265, 31.224503), Pair(121.374265, 31.224503)),
+            LocationRoadNearby.BasePlace("30", Pair(121.38392, 31.225089), Pair(121.38392, 31.225089)),
+            LocationRoadNearby.BasePlace("31", Pair(121.393572, 31.225671), Pair(121.393572, 31.225671)),
+            LocationRoadNearby.BasePlace("32", Pair(121.40322, 31.226248), Pair(121.40322, 31.226248)),
+            LocationRoadNearby.BasePlace("33", Pair(121.412863, 31.226821), Pair(121.412863, 31.226821)),
+            LocationRoadNearby.BasePlace("34", Pair(121.422502, 31.227389), Pair(121.422502, 31.227389)),
+            LocationRoadNearby.BasePlace("35", Pair(121.432135, 31.227952), Pair(121.432135, 31.227952)),
+            LocationRoadNearby.BasePlace("36", Pair(121.441765, 31.228511), Pair(121.441765, 31.228511)),
+            LocationRoadNearby.BasePlace("37", Pair(121.336292, 31.213841), Pair(121.336292, 31.213841)),
+            LocationRoadNearby.BasePlace("38", Pair(121.345955, 31.214437), Pair(121.345955, 31.214437)),
+            LocationRoadNearby.BasePlace("39", Pair(121.355617, 31.215032), Pair(121.355617, 31.215032)),
+            LocationRoadNearby.BasePlace("40", Pair(121.365276, 31.215624), Pair(121.365276, 31.215624)),
+            LocationRoadNearby.BasePlace("41", Pair(121.374934, 31.216213), Pair(121.374934, 31.216213)),
+            LocationRoadNearby.BasePlace("42", Pair(121.384589, 31.216799), Pair(121.384589, 31.216799)),
+            LocationRoadNearby.BasePlace("43", Pair(121.394239, 31.21738), Pair(121.394239, 31.21738)),
+            LocationRoadNearby.BasePlace("44", Pair(121.403886, 31.217958), Pair(121.403886, 31.217958)),
+            LocationRoadNearby.BasePlace("45", Pair(121.413528, 31.21853), Pair(121.413528, 31.21853)),
+            LocationRoadNearby.BasePlace("46", Pair(121.423165, 31.219097), Pair(121.423165, 31.219097)),
+            LocationRoadNearby.BasePlace("47", Pair(121.432799, 31.21966), Pair(121.432799, 31.21966)),
+            LocationRoadNearby.BasePlace("48", Pair(121.442427, 31.220218), Pair(121.442427, 31.220218)),
+            LocationRoadNearby.BasePlace("49", Pair(121.336966, 31.205552), Pair(121.336966, 31.205552)),
+            LocationRoadNearby.BasePlace("50", Pair(121.346627, 31.206149), Pair(121.346627, 31.206149)),
+            LocationRoadNearby.BasePlace("51", Pair(121.356289, 31.206743), Pair(121.356289, 31.206743)),
+            LocationRoadNearby.BasePlace("52", Pair(121.365948, 31.207335), Pair(121.365948, 31.207335)),
+            LocationRoadNearby.BasePlace("53", Pair(121.375604, 31.207923), Pair(121.375604, 31.207923)),
+            LocationRoadNearby.BasePlace("54", Pair(121.385257, 31.208509), Pair(121.385257, 31.208509)),
+            LocationRoadNearby.BasePlace("55", Pair(121.394907, 31.20909), Pair(121.394907, 31.20909)),
+            LocationRoadNearby.BasePlace("56", Pair(121.404553, 31.209667), Pair(121.404553, 31.209667)),
+            LocationRoadNearby.BasePlace("57", Pair(121.414193, 31.210238), Pair(121.414193, 31.210238)),
+            LocationRoadNearby.BasePlace("58", Pair(121.42383, 31.210805), Pair(121.42383, 31.210805)),
+            LocationRoadNearby.BasePlace("59", Pair(121.433461, 31.211368), Pair(121.433461, 31.211368)),
+            LocationRoadNearby.BasePlace("60", Pair(121.443088, 31.211925), Pair(121.443088, 31.211925)),
+            LocationRoadNearby.BasePlace("61", Pair(121.337639, 31.197263), Pair(121.337639, 31.197263)),
+            LocationRoadNearby.BasePlace("62", Pair(121.3473, 31.19786), Pair(121.3473, 31.19786)),
+            LocationRoadNearby.BasePlace("63", Pair(121.356959, 31.198453), Pair(121.356959, 31.198453)),
+            LocationRoadNearby.BasePlace("64", Pair(121.366617, 31.199045), Pair(121.366617, 31.199045)),
+            LocationRoadNearby.BasePlace("65", Pair(121.376274, 31.199634), Pair(121.376274, 31.199634)),
+            LocationRoadNearby.BasePlace("66", Pair(121.385925, 31.200218), Pair(121.385925, 31.200218)),
+            LocationRoadNearby.BasePlace("67", Pair(121.395574, 31.200799), Pair(121.395574, 31.200799)),
+            LocationRoadNearby.BasePlace("68", Pair(121.405218, 31.201376), Pair(121.405218, 31.201376)),
+            LocationRoadNearby.BasePlace("69", Pair(121.414858, 31.201947), Pair(121.414858, 31.201947)),
+            LocationRoadNearby.BasePlace("70", Pair(121.424494, 31.202514), Pair(121.424494, 31.202514)),
+            LocationRoadNearby.BasePlace("71", Pair(121.434123, 31.203075), Pair(121.434123, 31.203075)),
+            LocationRoadNearby.BasePlace("72", Pair(121.44375, 31.203632), Pair(121.44375, 31.203632)),
+            LocationRoadNearby.BasePlace("73", Pair(121.338312, 31.188975), Pair(121.338312, 31.188975)),
+            LocationRoadNearby.BasePlace("74", Pair(121.347972, 31.189571), Pair(121.347972, 31.189571)),
+            LocationRoadNearby.BasePlace("75", Pair(121.357631, 31.190164), Pair(121.357631, 31.190164)),
+            LocationRoadNearby.BasePlace("76", Pair(121.367288, 31.190755), Pair(121.367288, 31.190755)),
+            LocationRoadNearby.BasePlace("77", Pair(121.376943, 31.191343), Pair(121.376943, 31.191343)),
+            LocationRoadNearby.BasePlace("78", Pair(121.386593, 31.191928), Pair(121.386593, 31.191928)),
+            LocationRoadNearby.BasePlace("79", Pair(121.396241, 31.192508), Pair(121.396241, 31.192508)),
+            LocationRoadNearby.BasePlace("80", Pair(121.405884, 31.193084), Pair(121.405884, 31.193084)),
+            LocationRoadNearby.BasePlace("81", Pair(121.415522, 31.193656), Pair(121.415522, 31.193656)),
+            LocationRoadNearby.BasePlace("82", Pair(121.425156, 31.194221), Pair(121.425156, 31.194221)),
+            LocationRoadNearby.BasePlace("83", Pair(121.434785, 31.194782), Pair(121.434785, 31.194782)),
+            LocationRoadNearby.BasePlace("84", Pair(121.444411, 31.195339), Pair(121.444411, 31.195339)),
+            LocationRoadNearby.BasePlace("85", Pair(121.338984, 31.180686), Pair(121.338984, 31.180686)),
+            LocationRoadNearby.BasePlace("86", Pair(121.348643, 31.181281), Pair(121.348643, 31.181281)),
+            LocationRoadNearby.BasePlace("87", Pair(121.358302, 31.181875), Pair(121.358302, 31.181875)),
+            LocationRoadNearby.BasePlace("88", Pair(121.367957, 31.182466), Pair(121.367957, 31.182466)),
+            LocationRoadNearby.BasePlace("89", Pair(121.377611, 31.183053), Pair(121.377611, 31.183053)),
+            LocationRoadNearby.BasePlace("90", Pair(121.387261, 31.183638), Pair(121.387261, 31.183638)),
+            LocationRoadNearby.BasePlace("91", Pair(121.396907, 31.184217), Pair(121.396907, 31.184217)),
+            LocationRoadNearby.BasePlace("92", Pair(121.406549, 31.184793), Pair(121.406549, 31.184793)),
+            LocationRoadNearby.BasePlace("93", Pair(121.416187, 31.185363), Pair(121.416187, 31.185363)),
+            LocationRoadNearby.BasePlace("94", Pair(121.42582, 31.18593), Pair(121.42582, 31.18593)),
+            LocationRoadNearby.BasePlace("95", Pair(121.435448, 31.18649), Pair(121.435448, 31.18649)),
+            LocationRoadNearby.BasePlace("96", Pair(121.445071, 31.187046), Pair(121.445071, 31.187046)),
+            LocationRoadNearby.BasePlace("97", Pair(121.339657, 31.172397), Pair(121.339657, 31.172397)),
+            LocationRoadNearby.BasePlace("98", Pair(121.349315, 31.172992), Pair(121.349315, 31.172992)),
+            LocationRoadNearby.BasePlace("99", Pair(121.358972, 31.173586), Pair(121.358972, 31.173586)),
+            LocationRoadNearby.BasePlace("100", Pair(121.368627, 31.174176), Pair(121.368627, 31.174176)),
+            LocationRoadNearby.BasePlace("101", Pair(121.378279, 31.174764), Pair(121.378279, 31.174764)),
+            LocationRoadNearby.BasePlace("102", Pair(121.387928, 31.175347), Pair(121.387928, 31.175347)),
+            LocationRoadNearby.BasePlace("103", Pair(121.397574, 31.175926), Pair(121.397574, 31.175926)),
+            LocationRoadNearby.BasePlace("104", Pair(121.407215, 31.176501), Pair(121.407215, 31.176501)),
+            LocationRoadNearby.BasePlace("105", Pair(121.41685, 31.177072), Pair(121.41685, 31.177072)),
+            LocationRoadNearby.BasePlace("106", Pair(121.426483, 31.177637), Pair(121.426483, 31.177637)),
+            LocationRoadNearby.BasePlace("107", Pair(121.436109, 31.178198), Pair(121.436109, 31.178198)),
+            LocationRoadNearby.BasePlace("108", Pair(121.445732, 31.178752), Pair(121.445732, 31.178752)),
+        )
+        val locationRoadNearby = LocationRoadNearby(scenseMapper)
+        locationRoadNearby.searchList(bList, 0.9178855120092253 / 2 * 1000)
+//        val d = CoordinateUtil.calculateDistance(121.436109, 31.178198, 121.426483, 31.177637)
+//        println(d)
+    }
 }
\ No newline at end of file

--
Gitblit v1.9.3