From 5a003a42d2b34e8362910ac1d3e5a8866768e5fe Mon Sep 17 00:00:00 2001
From: feiyu02 <risaku@163.com>
Date: 星期六, 20 十二月 2025 16:50:28 +0800
Subject: [PATCH] 2025.12.20 巡查任务统计相关功能修改

---
 src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/DayTaskProgressVo.kt                         |   87 ++++++-
 src/main/kotlin/cn/flightfeather/supervision/lightshare/web/ProblemlistController.kt                    |    7 
 src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/MonitorobjectversionServiceImpl.kt |   32 +-
 src/main/kotlin/cn/flightfeather/supervision/business/import/SceneImport.kt                             |    4 
 src/test/kotlin/cn/flightfeather/supervision/business/location/LocationRoadNearbyTest.kt                |   64 ++--
 src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/ScenseVo.kt                                  |  128 +++++-----
 src/main/kotlin/cn/flightfeather/supervision/lightshare/web/SubtaskController.kt                        |    9 
 src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/TaskServiceImpl.kt                 |   84 ++++++-
 src/main/kotlin/cn/flightfeather/supervision/lightshare/service/ProblemlistService.kt                   |    2 
 src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/SubtaskServiceImpl.kt              |  132 ++++++++---
 src/main/kotlin/cn/flightfeather/supervision/lightshare/service/SubtaskService.kt                       |    2 
 src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/MonitorObjectVersionVo.kt                    |    7 
 src/main/kotlin/cn/flightfeather/supervision/domain/ds1/repository/SceneRep.kt                          |   29 ++
 src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/ProblemlistServiceImpl.kt          |   31 ++
 14 files changed, 444 insertions(+), 174 deletions(-)

diff --git a/src/main/kotlin/cn/flightfeather/supervision/business/import/SceneImport.kt b/src/main/kotlin/cn/flightfeather/supervision/business/import/SceneImport.kt
index a015e47..ec2d8ef 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/business/import/SceneImport.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/business/import/SceneImport.kt
@@ -93,8 +93,12 @@
                         index = it.getCell(0)?.numericCellValue?.toInt()
                         remark = null
                     }
+                    if (scense?.name.isNullOrBlank()) throw BizException(errorStr(it.rowNum + 1, 2, "鍦烘櫙鍚嶇О涓嶈兘绌虹櫧"))
                     scense?.typeid = Constant.SceneType.getByName(scense?.type)?.value?.toByte()
                         ?: throw BizException(errorStr(it.rowNum + 1, 3, "鍦烘櫙绫诲瀷涓嶅瓨鍦�"))
+                    if (scense?.location.isNullOrBlank()) throw BizException(errorStr(it.rowNum + 1, 4, "鍦烘櫙鍦板潃涓嶈兘绌虹櫧"))
+                    scense?.longitude ?: throw BizException(errorStr(it.rowNum + 1, 5, "缁忓害涓嶈兘绌虹櫧"))
+                    scense?.latitude ?: throw BizException(errorStr(it.rowNum + 1, 6, "绾害涓嶈兘绌虹櫧"))
                     scense?.provincecode = regionRep.findProvince(scense?.provincename)?.provincecode
                         ?: throw BizException(errorStr(it.rowNum + 1, 7, "鐪佷唤閿欒鎴栫郴缁熸湭鏇鹃厤缃�"))
                     scense?.citycode = regionRep.findCity(scense?.cityname)?.citycode
diff --git a/src/main/kotlin/cn/flightfeather/supervision/domain/ds1/repository/SceneRep.kt b/src/main/kotlin/cn/flightfeather/supervision/domain/ds1/repository/SceneRep.kt
index 7a8e29e..e29beea 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/domain/ds1/repository/SceneRep.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/domain/ds1/repository/SceneRep.kt
@@ -91,6 +91,35 @@
         return isUpdate to r
     }
 
+    fun findSubSceneList(scenes: List<Scense>): List<BaseScene?> {
+        val result = mutableListOf<BaseScene>()
+        scenes.groupBy { it.typeid }.forEach {
+            when (it.key.toString()) {
+                Constant.SceneType.TYPE1.value -> {
+                    sceneConstructionSiteMapper.selectByExample(Example(SceneConstructionSite::class.java).apply {
+                        createCriteria().andIn("sGuid", it.value.map { v-> v.guid })
+                    }).let { s-> result.addAll(s) }
+                }
+                Constant.SceneType.TYPE2.value -> {
+                    sceneWharfMapper.selectByExample(Example(SceneWharf::class.java).apply {
+                        createCriteria().andIn("sGuid", it.value.map { v-> v.guid })
+                    }).let { s-> result.addAll(s) }
+                }
+                Constant.SceneType.TYPE3.value -> {
+                    sceneMixingPlantMapper.selectByExample(Example(SceneMixingPlant::class.java).apply {
+                        createCriteria().andIn("sGuid", it.value.map { v-> v.guid })
+                    }).let { s-> result.addAll(s) }
+                }
+                Constant.SceneType.TYPE14.value -> {
+                    sceneStorageYardMapper.selectByExample(Example(SceneStorageYard::class.java).apply {
+                        createCriteria().andIn("sGuid", it.value.map { v-> v.guid })
+                    }).let { s-> result.addAll(s) }
+                }
+            }
+        }
+        return result
+    }
+
     fun findScene(userId: String?): Scense? {
         val user = userinfoMapper.selectByPrimaryKey(userId) ?: throw BizException("鐢ㄦ埛id涓嶅瓨鍦�")
         return scenseMapper.selectByPrimaryKey(user.dGuid)
diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/ProblemlistService.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/ProblemlistService.kt
index d0f1c6e..cdf3f43 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/ProblemlistService.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/ProblemlistService.kt
@@ -37,6 +37,8 @@
 
     fun getProblemByScene(sceneId: String, date: String):List<ProblemListVo>
 
+    fun getBySceneMonth(sceneId: String, year: Int?, month: Int?):List<ProblemListVo>
+
     fun findMonthProblemById(taskId:String, sceneId:Int?):List<MonthProblemVo>
 
     fun check(pId: String, action: Byte, remark: String, userId: String, userName: String): String
diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/SubtaskService.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/SubtaskService.kt
index 1899e56..7e0fabe 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/SubtaskService.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/SubtaskService.kt
@@ -47,7 +47,7 @@
 
     fun searchSubTask3(token: String,updateTime: String?, sceneType: Int? = null, districtCode: String? = "310116", startTime: String? = "", endTime: String? = "", page: Int? = 1, perPage: Int? = 30): BaseResponse<BaseSearchResultVo>
 
-    fun findByDate(date: String, userId: String): List<SubtaskVo>
+    fun findByDate(date: String? = null, userId: String? = null, sceneId: String? = null): List<SubtaskVo>
 
     fun getByTopTaskAndDate(topTaskId: String, startTime: String?, endTime: String?, sceneTypeId: Int? = null): List<Subtask>
 
diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/MonitorobjectversionServiceImpl.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/MonitorobjectversionServiceImpl.kt
index 77b2a75..fa0edf1 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/MonitorobjectversionServiceImpl.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/MonitorobjectversionServiceImpl.kt
@@ -1,10 +1,10 @@
 package cn.flightfeather.supervision.lightshare.service.impl
 
 import cn.flightfeather.supervision.common.utils.UUIDGenerator
-import cn.flightfeather.supervision.domain.ds1.entity.Monitorobjectversion
-import cn.flightfeather.supervision.domain.ds1.entity.Scense
+import cn.flightfeather.supervision.domain.ds1.entity.*
 import cn.flightfeather.supervision.domain.ds1.mapper.MonitorobjectversionMapper
 import cn.flightfeather.supervision.domain.ds1.mapper.TaskMapper
+import cn.flightfeather.supervision.domain.ds1.repository.SceneRep
 import cn.flightfeather.supervision.lightshare.service.MonitorobjectversionService
 import cn.flightfeather.supervision.lightshare.service.ScenseService
 import cn.flightfeather.supervision.lightshare.vo.MonitorObjectVersionVo
@@ -14,8 +14,10 @@
 import org.springframework.transaction.annotation.Transactional
 
 @Service
-class MonitorobjectversionServiceImpl(val monitorobjectversionMapper: MonitorobjectversionMapper) :
-    MonitorobjectversionService {
+class MonitorobjectversionServiceImpl(
+    private val monitorobjectversionMapper: MonitorobjectversionMapper,
+    private val sceneRep: SceneRep,
+) : MonitorobjectversionService {
 
     @Autowired
     lateinit var taskMapper: TaskMapper
@@ -63,6 +65,7 @@
             districtcode = task.districtcode
         }
         val sceneList = scenseService.search(s)
+        val subSceneList = sceneRep.findSubSceneList(sceneList)
 
         val monitorobjectversion = Monitorobjectversion()
         monitorobjectversion.tid = id
@@ -72,14 +75,21 @@
         monitorobjectversionlist.forEach {
             val vo = MonitorObjectVersionVo()
             BeanUtils.copyProperties(it, vo)
-            sceneList.forEach f@ {scene ->
-                if (vo.sguid == scene.guid) {
-                    vo.sceneTypeId = scene.typeid?.toInt() ?: 0
-                    vo.sceneType = scene.type
-                    vo.scene = scene
-                    return@f
-                }
+            sceneList.find {s-> s.guid == vo.sguid }?.let { s->
+                vo.sceneTypeId = s.typeid?.toInt() ?: 0
+                vo.sceneType = s.type
+                vo.scene = s
             }
+            subSceneList.find { s ->
+                val sGuid = when(s){
+                    is SceneConstructionSite-> s.getsGuid()
+                    is SceneWharf -> s.getsGuid()
+                    is SceneMixingPlant -> s.getsGuid()
+                    is SceneStorageYard-> s.getsGuid()
+                    else -> null
+                }
+                sGuid == vo.sguid
+            }?.let { s-> vo.subScene = s }
             resultList.add(vo)
         }
 
diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/ProblemlistServiceImpl.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/ProblemlistServiceImpl.kt
index ccca225..264e239 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/ProblemlistServiceImpl.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/ProblemlistServiceImpl.kt
@@ -13,6 +13,7 @@
 import cn.flightfeather.supervision.domain.ds1.repository.TaskRep
 import cn.flightfeather.supervision.lightshare.service.MediafileService
 import cn.flightfeather.supervision.lightshare.service.ProblemlistService
+import cn.flightfeather.supervision.lightshare.service.SubtaskService
 import cn.flightfeather.supervision.lightshare.service.TaskService
 import cn.flightfeather.supervision.lightshare.vo.*
 import com.fasterxml.jackson.core.type.TypeReference
@@ -105,6 +106,36 @@
         return problemListVolistTemp1
     }
 
+    override fun getBySceneMonth(sceneId: String, year: Int?, month: Int?): List<ProblemListVo> {
+        var _year = year
+        var _month = month
+        if (year == null) {
+            PageHelper.startPage<Problemlist>(1, 1)
+            val lastProblem = problemlistMapper.selectByExample(Example(Problemlist::class.java).apply {
+                createCriteria().andEqualTo("sguid", sceneId)
+                orderBy("time").desc()
+            }).takeIf { it.isNotEmpty() }?.get(0)
+            if (lastProblem == null) {
+                return emptyList()
+            } else {
+                val lt = LocalDateTime.ofInstant(lastProblem.time?.toInstant(), ZoneId.systemDefault())
+                _year = lt.year
+                _month = lt.monthValue
+            }
+        }
+        val sT = LocalDateTime.of(_year!!, _month!!, 1, 0, 0, 0, 0)
+        val eT = sT.plusMonths(1).minusSeconds(1)
+        return problemlistMapper.selectByExample(Example(Problemlist::class.java).apply {
+            createCriteria().andBetween("time", sT,eT)
+                .andEqualTo("sguid", sceneId)
+            orderBy("time").desc()
+        }).map {
+            val problemVo = ProblemListVo();
+            BeanUtils.copyProperties(it, problemVo)
+            problemVo
+        }
+    }
+
     //鑾峰彇鏌愰《灞備换鍔′笅锛屾煇涓満鏅笅鐨勯棶棰樻暣鏀规儏鍐�
     override fun getStatisticalResultById(topTaskId: String, sceneTypeId: String): List<StatisticsVo> {
         val map = problemlistMapper.getStatisticalResultById(topTaskId, sceneTypeId)
diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/SubtaskServiceImpl.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/SubtaskServiceImpl.kt
index f02a9e1..d264f3c 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/SubtaskServiceImpl.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/SubtaskServiceImpl.kt
@@ -33,20 +33,28 @@
 
     @Autowired
     lateinit var taskService: TaskService
+
     @Autowired
     lateinit var taskMapper: TaskMapper
+
     @Autowired
     lateinit var evaluationMapper: EvaluationMapper
+
     @Autowired
     lateinit var problemlistMapper: ProblemlistMapper
+
     @Autowired
     lateinit var mediafileMapper: MediafileMapper
+
     @Autowired
     lateinit var scenseMapper: ScenseMapper
+
     @Autowired
     lateinit var inspectionMapper: InspectionMapper
+
     @Autowired
     lateinit var monitorobjectversionMapper: MonitorobjectversionMapper
+
     @Autowired
     lateinit var problemtypeMapper: ProblemtypeMapper
 
@@ -65,11 +73,11 @@
             criteria.andEqualTo("towncode", areaVo.towncode)
         criteria.andBetween("planstarttime", areaVo.starttime, areaVo.endtime)
         if (!Objects.equals(userGuid, Constant.UserType.ALL_USER.des))
-            criteria.andLike("executorguids","%"+userGuid+"%")
+            criteria.andLike("executorguids", "%" + userGuid + "%")
         var completecount = 0
         var subtasklist = subtaskMapper.selectByExample(example)
         subtasklist.forEach {
-            if (Objects.equals(it.status, Constant.TaskProgress.RUNINGSTATUS3.text)){
+            if (Objects.equals(it.status, Constant.TaskProgress.RUNINGSTATUS3.text)) {
                 completecount++
             }
         }
@@ -102,24 +110,26 @@
         criteria.andEqualTo("tsguid", dayTaskId)
         if (userType == "1") {
             example.and(
-                    example.createCriteria().orLike("executorguids", "%$userId%")
-                            .orLike("stAssessorguid", "%$userId%")
+                example.createCriteria().orLike("executorguids", "%$userId%")
+                    .orLike("stAssessorguid", "%$userId%")
             )
         }
         example.orderBy("name")
-        val result = subtaskMapper.selectByExample(example).apply{
+        val result = subtaskMapper.selectByExample(example).apply {
             forEach breaking@{
                 //宸插鏍告彁绀�
-                it.remark= Constant.PROBLEM_CHECK_PASS
+                it.remark = Constant.PROBLEM_CHECK_PASS
 
                 problemlistMapper.selectByExample(Example(Problemlist::class.java).apply {
                     createCriteria().andEqualTo("stguid", it.stguid)
-                    and(createCriteria().orIsNull("remark")
-                            .orNotEqualTo("remark", Constant.PROBLEM_DELETED))
-                }).forEach {problem ->
+                    and(
+                        createCriteria().orIsNull("remark")
+                            .orNotEqualTo("remark", Constant.PROBLEM_DELETED)
+                    )
+                }).forEach { problem ->
                     //瀛愪换鍔′腑鏈夐棶棰樻湭瀹℃牳鏃讹紝璁剧疆鏈鏍告彁绀�
                     if (problem.extension3 == Constant.PROBLEM_UNCHECKED) {
-                        it.remark= Constant.PROBLEM_UNCHECKED
+                        it.remark = Constant.PROBLEM_UNCHECKED
                         return@breaking
                     }
                 }
@@ -168,13 +178,13 @@
         } else {
             guid
         }
-        val userTypeId = if (userType == "涓荤閮ㄩ棬"){
+        val userTypeId = if (userType == "涓荤閮ㄩ棬") {
             "2"
-        }else if (userType == "椋炵窘鐢ㄦ埛") {
+        } else if (userType == "椋炵窘鐢ㄦ埛") {
             "1"
-        } else if(userType == "绠$悊鍛�"){
+        } else if (userType == "绠$悊鍛�") {
             "0"
-        }else if (userType == "鍦烘櫙") {
+        } else if (userType == "鍦烘櫙") {
             "3"
         } else {
             userType
@@ -197,16 +207,19 @@
                 two = dateString
                 three = DateUtil.addMonth(dateString, 1)
             }
+
             "Left" -> {
                 one = DateUtil.addMonth(dateString, 1)
                 two = DateUtil.addMonth(dateString, 2)
                 three = DateUtil.addMonth(dateString, 3)
             }
+
             "Right" -> {
                 one = DateUtil.addMonth(dateString, -1)
                 two = DateUtil.addMonth(dateString, -2)
                 three = DateUtil.addMonth(dateString, -3)
             }
+
             else -> {
                 //鍙傛暟涓嶆纭氨杩斿洖
                 return taskPackList
@@ -251,16 +264,19 @@
                 two = dateString
                 three = DateUtil.addMonth(dateString, 1)
             }
+
             "Left" -> {
                 one = DateUtil.addMonth(dateString, 1)
                 two = DateUtil.addMonth(dateString, 2)
                 three = DateUtil.addMonth(dateString, 3)
             }
+
             "Right" -> {
                 one = DateUtil.addMonth(dateString, -1)
                 two = DateUtil.addMonth(dateString, -2)
                 three = DateUtil.addMonth(dateString, -3)
             }
+
             else -> {
                 //鍙傛暟涓嶆纭氨杩斿洖
                 return taskPackList
@@ -422,21 +438,22 @@
             subtask.tsguid = daytaskVo.tguid
             //*锛堜慨鏀癸級*鏃ヤ换鍔℃鍦ㄦ墽琛岋紝瀛愪换鍔$粨鏉燂紝閬嶅巻鎵�鏈夊叾浣欏瓙浠诲姟锛岄兘鏄粨鏉熸椂鎵嶅皢鏃ヤ换鍔′慨鏀逛负缁撴潫****
             if (subtask.status == Constant.TaskProgress.RUNINGSTATUS3.text
-                && daytaskVo.runingstatus == Constant.TaskProgress.RUNINGSTATUS2.text){
+                && daytaskVo.runingstatus == Constant.TaskProgress.RUNINGSTATUS2.text
+            ) {
                 val subtaskVolist = findByDayTaskID(daytaskVo.tguid!!)
                 var bool = false
                 subtaskVolist.forEach {
-                    if (it.status != Constant.TaskProgress.RUNINGSTATUS3.text){
+                    if (it.status != Constant.TaskProgress.RUNINGSTATUS3.text) {
                         bool = true
                     }
                 }
-                if (!bool){
+                if (!bool) {
                     daytaskVo.runingstatus = Constant.TaskProgress.RUNINGSTATUS3.text
                 }
 
             }
             //涓よ�呯姸鎬佺浉鍚屾椂涓嶅仛淇敼锛屽叾浣欐儏鍐垫棩浠诲姟閮戒负姝e湪鎵ц
-            else if (subtask.status != daytaskVo.runingstatus){
+            else if (subtask.status != daytaskVo.runingstatus) {
                 daytaskVo.runingstatus = Constant.TaskProgress.RUNINGSTATUS2.text
             }
             val daytask = Task()
@@ -465,7 +482,7 @@
     }
 
     @Transactional
-    override fun delete(id: String): Int{
+    override fun delete(id: String): Int {
         val subtask = subtaskMapper.selectByPrimaryKey(id)
         val dayTaskId = subtask.tsguid
         subtaskMapper.deleteByPrimaryKey(id)
@@ -500,7 +517,15 @@
     }
 
 
-    override fun searchSubTask(token: String, sceneType: Int?, districtCode: String?, startTime: String?, endTime: String?, page: Int?, perPage: Int?): BaseSearchResultVo {
+    override fun searchSubTask(
+        token: String,
+        sceneType: Int?,
+        districtCode: String?,
+        startTime: String?,
+        endTime: String?,
+        page: Int?,
+        perPage: Int?,
+    ): BaseSearchResultVo {
         if (token != "jingan") {
             return BaseSearchResultVo().apply {
                 head = DataHead().apply {
@@ -543,7 +568,7 @@
 //        val  p = PageHelper.startPage<Subtask>(page ?: 1, perPage ?: 30)
         subtaskMapper.getSubtask2(null, null, _districtCode, _sceneType.toByte(), _startTime, _endTime).forEach {
             if (!subtaskMap.containsKey(it.subTaskId)) {
-                val vo =SubtaskSearchResultVo()
+                val vo = SubtaskSearchResultVo()
                 BeanUtils.copyProperties(it, vo)
                 subtaskMap[it.subTaskId] = vo
             }
@@ -553,7 +578,7 @@
                 problemMap[it.problemId] = problemDetail
                 subtaskMap[it.subTaskId]?.problemList?.add(problemDetail)
             }
-            val url = it.mExtension1 + it.mGuid+ ".jpg"
+            val url = it.mExtension1 + it.mGuid + ".jpg"
             if (it.isChanged == true) {
                 problemMap[it.problemId]?.rectificationPics?.add(url)
             } else {
@@ -647,8 +672,10 @@
                         .andNotEqualTo("extension3", Constant.CHANGE_CHECK_FAIL)
                         .andIsNotNull("extension3")
                     time?.let {
-                        and(createCriteria().orGreaterThan("time", it)
-                            .orGreaterThan("changedtime", it))
+                        and(
+                            createCriteria().orGreaterThan("time", it)
+                                .orGreaterThan("changedtime", it)
+                        )
                     }
                 }).forEach { p ->
                     val problem = ProblemDetail().apply {
@@ -743,7 +770,16 @@
         return BaseResponse(true, "璇锋眰鎴愬姛", data = result)
     }
 
-    override fun searchSubTask3(token: String, updateTime: String?, sceneType: Int?, districtCode: String?, startTime: String?, endTime: String?, page: Int?, perPage: Int?): BaseResponse<BaseSearchResultVo> {
+    override fun searchSubTask3(
+        token: String,
+        updateTime: String?,
+        sceneType: Int?,
+        districtCode: String?,
+        startTime: String?,
+        endTime: String?,
+        page: Int?,
+        perPage: Int?,
+    ): BaseResponse<BaseSearchResultVo> {
         if (token != "jinshan") {
             return BaseResponse(false, "璇锋眰token閿欒")
         }
@@ -798,8 +834,10 @@
                         .andNotEqualTo("extension3", Constant.CHANGE_CHECK_FAIL)
                         .andIsNotNull("extension3")
                     time?.let {
-                        and(createCriteria().orGreaterThan("time", it)
-                            .orGreaterThan("changedtime", it))
+                        and(
+                            createCriteria().orGreaterThan("time", it)
+                                .orGreaterThan("changedtime", it)
+                        )
                     }
                 }).forEach { p ->
                     val problem = ProblemDetail().apply {
@@ -868,7 +906,7 @@
 //            val p = PageHelper.startPage<Subtask>(page ?: 1, perPage ?: 30)
             subtaskMapper.getSubtask2(time, time2, _districtCode, _sceneType?.toByte(), null, null).forEach {
                 if (!subtaskMap.containsKey(it.subTaskId)) {
-                    val vo =SubtaskSearchResultVo()
+                    val vo = SubtaskSearchResultVo()
                     BeanUtils.copyProperties(it, vo)
                     subtaskMap[it.subTaskId] = vo
                 }
@@ -878,7 +916,7 @@
                     problemMap[it.problemId] = problemDetail
                     subtaskMap[it.subTaskId]?.problemList?.add(problemDetail)
                 }
-                val url = it.mExtension1 + it.mGuid+ ".jpg"
+                val url = it.mExtension1 + it.mGuid + ".jpg"
                 if (it.isChanged == true) {
                     problemMap[it.problemId]?.rectificationPics?.add(url)
                 } else {
@@ -899,15 +937,37 @@
         return BaseResponse(true, "璇锋眰鎴愬姛", data = result)
     }
 
-    override fun findByDate(date: String, userId: String): List<SubtaskVo> {
-        val time = DateUtil.StringToDate(date)
+    override fun findByDate(date: String?, userId: String?, sceneId: String?): List<SubtaskVo> {
+        val time = if (date == null) null else DateUtil.StringToDate(date)
 
         val resultList = mutableListOf<SubtaskVo>()
 
-        subtaskMapper.selectByExample(Example(Subtask::class.java).apply {
-            createCriteria().andLessThanOrEqualTo("planstarttime", time)
+        val subtasks = if (time != null) {
+            // 鑾峰彇鏌愪竴澶╃殑宸℃煡浠诲姟
+            subtaskMapper.selectByExample(Example(Subtask::class.java).apply {
+                createCriteria().andLessThanOrEqualTo("planstarttime", time)
                     .andGreaterThanOrEqualTo("planendtime", time)
-        }).forEach {
+                    .apply { sceneId?.let { andEqualTo("scenseid", it) } }
+            })
+        } else {
+            // 鑾峰彇鏈�杩戜竴涓湀鍐呯殑锛堟煇涓満鏅殑锛夋墍鏈夊贰鏌ヤ换鍔�
+            PageHelper.startPage<Subtask>(1, 1)
+            val lastOne = subtaskMapper.selectByExample(Example(Subtask::class.java).apply {
+                createCriteria().apply {
+                    sceneId?.let { andEqualTo("scenseid", it) }
+                }
+                orderBy("planstarttime").desc()
+            }).takeIf { it.isNotEmpty() }?.get(0)
+            if (lastOne == null) {
+                emptyList()
+            } else {
+                subtaskMapper.selectByExample(Example(Subtask::class.java).apply {
+                    createCriteria().andEqualTo("tguid", lastOne.tguid)
+                        .andEqualTo("scenseid", lastOne.scenseid)
+                })
+            }
+        }
+        subtasks.forEach {
             val vo = SubtaskVo()
             BeanUtils.copyProperties(it, vo)
             resultList.add(vo)
@@ -920,7 +980,7 @@
         topTaskId: String,
         startTime: String?,
         endTime: String?,
-        sceneTypeId: Int?
+        sceneTypeId: Int?,
     ): List<Subtask> {
 
         return subtaskMapper.selectByTopTask2(topTaskId, sceneTypeId)
@@ -933,7 +993,7 @@
     override fun getTaskProgressByArea(areaVo: AreaVo): List<TaskProgressVo> {
 //        areaVo.scensetypeid ?: throw BizException("缂哄皯鍦烘櫙绫诲瀷鍙傛暟")
         val res = mutableListOf<TaskProgressVo>()
-        taskRep.findTasks(areaVo).forEach {t->
+        taskRep.findTasks(areaVo).forEach { t ->
             if (t?.tguid == null) return@forEach
             val pro = TaskProgressVo().apply {
                 tguid = t.tguid
diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/TaskServiceImpl.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/TaskServiceImpl.kt
index f103925..61140aa 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/TaskServiceImpl.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/TaskServiceImpl.kt
@@ -339,14 +339,6 @@
             val filterSubTasks = subTasks.filter {s->
                 s?.tsguid == t?.tguid
             }
-            // 瀛愪换鍔℃�绘暟
-            val total = filterSubTasks.size
-
-            // 瀛愪换鍔″畬鎴愭暟
-            val complete = filterSubTasks.count {fs->
-                fs?.status == Constant.TaskProgress.RUNINGSTATUS3.text
-            }
-
             // 鑾峰彇褰撴棩鎵�鏈夌殑闂
             val subTaskIds = filterSubTasks.map { fs-> fs?.stguid }
             val problemList = if (subTaskIds.isNotEmpty()) {
@@ -356,8 +348,69 @@
             } else{
                 emptyList()
             }
+            /** 鎬诲贰鏌ラ噺缁熻 **/
+            // 瀛愪换鍔℃�绘暟
+            val total = filterSubTasks.size
+            // 瀛愪换鍔″畬鎴愭暟
+            val complete = filterSubTasks.count {fs->
+                fs?.status == Constant.TaskProgress.RUNINGSTATUS3.text
+            }
+            /** 鎬婚棶棰樻暣鏀圭巼缁熻 **/
+            // 鎬婚棶棰樻暟鍜屾�绘暣鏀规暟
+            val totalProblemNum = problemList.size
+            val changedProblemNum = problemList.filter { it.ischanged == true }.size
 
+            /** 姣忎釜浜虹殑宸℃煡閲忛棶棰樻暣鏀圭巼 **/
+            val userProgressMap = mutableMapOf<String, ProgressPerUserPerDay>()
+            filterSubTasks.forEach fst@ { fst->
+                fst ?: return@fst
+                // fixme 2025.11.30 鐢变簬鐩戠APP鐨刡ug锛屽鑷寸敤鎴峰彲浠ヤ笉閫夋嫨鎵ц浜哄憳鐩存帴鍒涘缓浠诲姟锛屾墍浠ユ殏鏃跺皢娌℃湁鎵ц浜哄憳鐨勪换鍔″畾涔変负鍖垮悕鐢ㄦ埛
+                if (fst.executorguids.isNullOrBlank()) {
+                    fst.executorguids = "niming"
+                    fst.executorusernames = "niming"
+                    fst.executorrealtimes = "鍖垮悕鐢ㄦ埛"
+                }
+                val ids = fst.executorguids?.split("#") ?: return@fst
+                val names = fst.executorrealtimes?.split("#") ?: return@fst
+                // 绛涢�夋瘡涓瓙浠诲姟涓嬬殑闂
+                val proList = problemList.filter { p-> p?.stguid == fst.stguid }
+                for (i in ids.indices) {
+                    val key = ids[i]
+                    if (!userProgressMap.containsKey(key)) {
+                        userProgressMap[key] = ProgressPerUserPerDay().apply {
+                            this.userId = key
+                            this.userName = names[i]
+                        }
+                    }
+                    userProgressMap[key]?.apply {
+                        // 鍗曚汉宸℃煡閲忕疮璁�
+                        // 褰撳涓汉涓�璧锋墽琛屽悓涓�浠诲姟鏃讹紝骞冲垎宸℃煡閲�
+                        this.totalTaskNum += 1.0 / ids.size
+                        if (fst.status== Constant.TaskProgress.RUNINGSTATUS3.text)
+                            this.completeTaskNum += 1.0 / ids.size
 
+                        // 鍗曚汉鏁存敼鐜囩疮璁★紙璇勫垎锛�
+                        this.totalProblemNum += proList.size.toDouble() / ids.size
+                        this.changedProblemNum += proList.filter { it.ischanged == true }.size.toDouble() / ids.size
+                        this.changedProblemNumOnTime += proList.filter {
+                            // 鏁存敼鑰楁椂锛堝ぉ锛�
+                            val day = ((it.changedtime?.time ?: 0L) - (it?.time?.time ?: 0L)).div(1000 * 60 * 60 * 24)
+                            it.ischanged == true &&  day <= 1
+                        }.size.toDouble() / ids.size
+                        // 姝ゅ鍏堢疮璁″贰鏌ユ椂闀匡紝鏈�鍚庡啀鏍规嵁浠诲姟鏁伴噺骞冲潎
+                        this.avgInspectionTime +=
+                            ((fst.executionendtime?.time ?: 0L) - (fst.executionstarttime?.time ?: 0L)).div(1000).div(ids.size)
+                    }
+
+                }
+            }
+            // 缁熶竴璁$畻骞冲潎宸℃煡鏃堕暱锛堢锛�
+            userProgressMap.forEach { (t, u) ->
+                u.avgInspectionTime = (u.avgInspectionTime / u.completeTaskNum).toLong()
+                u.formatParam()
+            }
+
+            /** 浠诲姟鏁存敼瀹屾垚鎯呭喌鍜屽鏍告儏鍐电粺璁� **/
             var changed = 0
             //瀹℃牳鏄惁瀹屾垚
             var check = true
@@ -376,9 +429,18 @@
                 }
             }
 
-            resultList.add(DayTaskProgressVo(
-                t?.tguid, t?.starttime, taskId, complete, changed, total, check
-            ))
+            resultList.add(DayTaskProgressVo().apply {
+                this.guid =t?.tguid
+                this.date =t?.starttime
+                this.tsGuid = taskId
+                this.totalTaskNum = total
+                this.completeTaskNum = complete
+                this.changedTaskNum = changed
+                this.check = check
+                this.totalProblemNum = totalProblemNum
+                this.changedProblemNum = changedProblemNum
+                this.progressPerUser = userProgressMap.entries.map { it.value }
+            })
         }
 
         return resultList
diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/DayTaskProgressVo.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/DayTaskProgressVo.kt
index 87cb4ff..e573562 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/DayTaskProgressVo.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/DayTaskProgressVo.kt
@@ -1,25 +1,80 @@
 package cn.flightfeather.supervision.lightshare.vo
 
+import org.apache.poi.hpsf.Decimal
+import java.math.BigDecimal
+import java.text.DecimalFormat
 import java.util.*
+import kotlin.math.round
 
 /**
  * @author riku
  * Date: 2019/7/30
  * 鏃ヤ换鍔¤繘搴︾被
  */
-data class DayTaskProgressVo(
-        //鏃ヤ换鍔d
-        val guid: String? = null,
-        //鏃ヤ换鍔℃椂闂�
-        val date: Date? = null,
-        //鎵�灞為《灞備换鍔d
-        val tsGuid: String? = null,
-        //瀹屾垚瀛愪换鍔℃暟
-        val completeTaskNum: Int = 0,
-        //宸叉暣鏀瑰瓙浠诲姟鏁�
-        val changedTaskNum: Int = 0,
-        //鎬诲瓙浠诲姟鏁�
-        val totalTaskNum: Int = 0,
-        //鏄惁鏈夋湭瀹℃牳鐨勯棶棰�
-        val check: Boolean = false
-)
\ No newline at end of file
+class DayTaskProgressVo {
+    //鏃ヤ换鍔d
+    var guid: String? = null
+
+    //鏃ヤ换鍔℃椂闂�
+    var date: Date? = null
+
+    //鎵�灞為《灞備换鍔d
+    var tsGuid: String? = null
+
+    //鎬诲瓙浠诲姟鏁�
+    var totalTaskNum: Int = 0
+
+    //瀹屾垚瀛愪换鍔℃暟
+    var completeTaskNum: Int = 0
+
+    //宸叉暣鏀瑰瓙浠诲姟鏁�
+    var changedTaskNum: Int = 0
+
+    //褰撳瓨鍦ㄨ嚦灏戜竴涓棶棰樻病鏈夊鏍告椂锛屽綋鏃ュ鏍哥姸鎬佷负鏈鏍�
+    var check: Boolean = false
+
+    // 鎬婚棶棰樻暟
+    var totalProblemNum: Int = 0
+    // 鎬绘暣鏀归棶棰樻暟
+    var changedProblemNum: Int = 0
+
+    // 姣忎釜鐢ㄦ埛鐨勫崟鏃ヤ换鍔¤繘搴�
+    var progressPerUser: List<ProgressPerUserPerDay>? = null
+}
+
+class ProgressPerUserPerDay{
+    //鐢ㄦ埛id
+    var userId: String? = null
+    //鐢ㄦ埛鍚�
+    var userName: String? = null
+
+    //鎬诲瓙浠诲姟鏁�
+    var totalTaskNum: Double = .0
+    //瀹屾垚瀛愪换鍔℃暟
+    var completeTaskNum: Double = .0
+
+    // 鎬婚棶棰樻暟
+    var totalProblemNum: Double = .0
+    //宸叉暣鏀归棶棰樻暟
+    var changedProblemNum: Double = .0
+    //宸叉暣鏀归棶棰樻暟锛堝湪褰撳ぉ鍐呮暣鏀癸級
+    var changedProblemNumOnTime: Double = .0
+
+    //骞冲潎宸℃煡鏃堕暱锛堢锛�
+    var avgInspectionTime: Long = 0
+
+    /**
+     * 鏍煎紡鍖朌ouble鍙傛暟锛屼繚鐣欎袱浣嶅皬鏁帮紝鍥涜垗浜斿叆
+     */
+    fun formatParam() {
+        totalTaskNum = numberFormat(totalTaskNum)
+        completeTaskNum = numberFormat(completeTaskNum)
+        totalProblemNum = numberFormat(totalProblemNum)
+        changedProblemNum = numberFormat(changedProblemNum)
+        changedProblemNumOnTime = numberFormat(changedProblemNumOnTime)
+    }
+
+    private fun numberFormat(value:Double): Double {
+        return BigDecimal(value).setScale(2, BigDecimal.ROUND_HALF_UP).toDouble()
+    }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/MonitorObjectVersionVo.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/MonitorObjectVersionVo.kt
index 38161d1..4bf348a 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/MonitorObjectVersionVo.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/MonitorObjectVersionVo.kt
@@ -1,6 +1,9 @@
 package cn.flightfeather.supervision.lightshare.vo
 
+import cn.flightfeather.supervision.domain.ds1.entity.BaseScene
 import cn.flightfeather.supervision.domain.ds1.entity.Monitorobjectversion
+import cn.flightfeather.supervision.domain.ds1.entity.SceneDevice
+import io.swagger.annotations.ApiModelProperty
 
 class MonitorObjectVersionVo : Monitorobjectversion() {
 
@@ -15,4 +18,8 @@
     var sceneType: String? = null
 
     var scene: ScenseVo? = null
+
+    //鍦烘櫙鐗规湁淇℃伅
+    @ApiModelProperty(value = "鍦烘櫙鐗规湁淇℃伅", name = "鏍规嵁涓嶅悓鐨勫満鏅被鍨嬶紝灞炴�у悇涓嶇浉鍚�")
+    var subScene: BaseScene? = null
 }
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/ScenseVo.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/ScenseVo.kt
index 103a3a6..3c4a37c 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/ScenseVo.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/ScenseVo.kt
@@ -6,70 +6,70 @@
 import java.util.*
 
 @JsonInclude(JsonInclude.Include.NON_NULL)
-public class ScenseVo {
-    var guid: String? = null
-
-    var name: String? = null
-
-    /**
-     * 浠庡�煎煙琛ㄩ噷鍙栧��
-     */
-    var typeid: Byte? = null
-
-    /**
-     * 浠庡�煎煙琛ㄩ噷鍙栧��
-     */
-    var type: String? = null
-
-    /**
-     * 浠庡�煎煙琛ㄩ噷鍙栧��
-     */
-    var scensesubtypeid: Byte? = null
-
-    /**
-     * 浠庡�煎煙琛ㄩ噷鍙栧��
-     */
-    var scensesubtype: String? = null
-
-    var location: String? = null
-
-    var longitude: BigDecimal? = null
-
-    var latitude: BigDecimal? = null
-
-    var provincecode: String? = null
-
-    var provincename: String? = null
-
-    var citycode: String? = null
-
-    var cityname: String? = null
-
-    var districtcode: String? = null
-
-    var districtname: String? = null
-
-    var towncode: String? = null
-
-    var townname: String? = null
-
-    var contactst: String? = null
-
-    var contactswx: String? = null
-
-    var contacts: String? = null
-
-    var createdate: Date? = null
-
-    var updatedate: Date? = null
-
-    var extension1: String? = null
-
-    var extension2: String? = null
-
-    var index: Int? = null
-
-    var remark: String? = null
+public class ScenseVo : Scense() {
+//    var guid: String? = null
+//
+//    var name: String? = null
+//
+//    /**
+//     * 浠庡�煎煙琛ㄩ噷鍙栧��
+//     */
+//    var typeid: Byte? = null
+//
+//    /**
+//     * 浠庡�煎煙琛ㄩ噷鍙栧��
+//     */
+//    var type: String? = null
+//
+//    /**
+//     * 浠庡�煎煙琛ㄩ噷鍙栧��
+//     */
+//    var scensesubtypeid: Byte? = null
+//
+//    /**
+//     * 浠庡�煎煙琛ㄩ噷鍙栧��
+//     */
+//    var scensesubtype: String? = null
+//
+//    var location: String? = null
+//
+//    var longitude: BigDecimal? = null
+//
+//    var latitude: BigDecimal? = null
+//
+//    var provincecode: String? = null
+//
+//    var provincename: String? = null
+//
+//    var citycode: String? = null
+//
+//    var cityname: String? = null
+//
+//    var districtcode: String? = null
+//
+//    var districtname: String? = null
+//
+//    var towncode: String? = null
+//
+//    var townname: String? = null
+//
+//    var contactst: String? = null
+//
+//    var contactswx: String? = null
+//
+//    var contacts: String? = null
+//
+//    var createdate: Date? = null
+//
+//    var updatedate: Date? = null
+//
+//    var extension1: String? = null
+//
+//    var extension2: String? = null
+//
+//    var index: Int? = null
+//
+//    var remark: String? = null
 
     var monitorNum: Int = 0
 
diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/web/ProblemlistController.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/web/ProblemlistController.kt
index 8db8d38..cb60564 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/web/ProblemlistController.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/web/ProblemlistController.kt
@@ -92,6 +92,13 @@
         @RequestParam date: String,
     ): List<ProblemListVo> = problemlistService.getProblemByScene(sceneId, date)
 
+    @GetMapping("/getBySceneMonth")
+    fun getBySceneMonth(
+        @RequestParam(value = "sceneId", required = true) sceneId: String,
+        @RequestParam(required = false) year: Int?,
+        @RequestParam(required = false) month: Int?,
+    ) = problemlistService.getBySceneMonth(sceneId, year, month)
+
     @IgnoreResponseAdvice
     @GetMapping("/month_anlysis")
     fun getMonthProblemsById(
diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/web/SubtaskController.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/web/SubtaskController.kt
index 21eda2a..84412d1 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/web/SubtaskController.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/web/SubtaskController.kt
@@ -10,6 +10,7 @@
 import cn.flightfeather.supervision.lightshare.vo.TaskVo
 import io.swagger.annotations.Api
 import io.swagger.annotations.ApiOperation
+import io.swagger.annotations.ApiParam
 import org.springframework.format.annotation.DateTimeFormat
 import org.springframework.web.bind.annotation.*
 import java.time.LocalDateTime
@@ -91,11 +92,13 @@
     ) = subtaskService.findByDayTaskID(dayTaskId, userId, userType)
 
     @IgnoreResponseAdvice
+    @ApiOperation("鏍规嵁鏃堕棿鍜屽満鏅痠d鑾峰彇宸℃煡浠诲姟")
     @GetMapping("/byDate")
     fun findByDate(
-        @RequestParam("date") date: String,
-        @RequestParam("userId") userId: String,
-    ) = subtaskService.findByDate(date, userId)
+        @ApiParam(value = "鏃堕棿锛屽鏋滀笉浼狅紝鍒欓粯璁よ幏鍙栨渶鏂颁竴鏈�") @RequestParam("date", required = false) date: String?,
+        @RequestParam("userId", required = false) userId: String?,
+        @ApiParam(value = "鍦烘櫙id") @RequestParam(required = false) sceneId: String?,
+    ) = subtaskService.findByDate(date, userId, sceneId)
 
     @IgnoreResponseAdvice
     @GetMapping("/getSubTask")
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 3218214..823498d 100644
--- a/src/test/kotlin/cn/flightfeather/supervision/business/location/LocationRoadNearbyTest.kt
+++ b/src/test/kotlin/cn/flightfeather/supervision/business/location/LocationRoadNearbyTest.kt
@@ -48,7 +48,7 @@
 //            LocationRoadNearby.BasePlace("甯傛帶鐐�-寰愬姹�", Pair(121.44187, 31.19793), Pair(121.44187, 31.19793)),
 //            LocationRoadNearby.BasePlace("甯傛帶鐐�-鍗庢尘", Pair(121.461985, 31.124359), Pair(121.461985, 31.124359)),
 //            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("閲戝北澶ч亾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.362928, 31.192925), Pair(121.362928, 31.192925)),
@@ -77,40 +77,40 @@
 //            LocationRoadNearby.BasePlace("涔濅赴璺�", Pair(121.254114, 30.903438), Pair(121.254715, 30.893363)),
 
 //            灏忓井绔�
-            LocationRoadNearby.BasePlace("姘稿拰浜屾潙", Pair(121.43165,31.29083), Pair(121.43165,31.29083)),
-            LocationRoadNearby.BasePlace("鑺锋睙涓矾529鍙�", Pair(121.468446,31.258494), Pair(121.468446,31.258494)),
-            LocationRoadNearby.BasePlace("搴峰畞璺�18鍙�", Pair(121.43447,31.306374), Pair(121.43447,31.306374)),
-            LocationRoadNearby.BasePlace("鍗忎俊鏄熷厜骞垮満", Pair(121.457125,31.297407), Pair(121.457125,31.297407)),
-            LocationRoadNearby.BasePlace("鍏卞悍鍓嶈繘鍏瘬", Pair(121.441018,31.319358), Pair(121.441018,31.319358)),
-            LocationRoadNearby.BasePlace("闈欏畨鐩戞祴绔�", Pair(121.429872,31.224094), Pair(121.429872,31.224094)),
-            LocationRoadNearby.BasePlace("鍏卞拰鏂拌矾鍦轰腑璺�", Pair(121.449074,31.306086), Pair(121.449074,31.306086)),
-            LocationRoadNearby.BasePlace("宀崡璺満涓矾", Pair(121.455317,31.304615), Pair(121.455317,31.304615)),
-            LocationRoadNearby.BasePlace("楂樺钩璺睙鍦鸿タ璺�", Pair(121.427832,31.296076), Pair(121.427832,31.296076)),
-            LocationRoadNearby.BasePlace("骞夸腑瑗胯矾鍏卞拰鏂拌矾", Pair(121.451879,31.278988), Pair(121.451879,31.278988)),
-            LocationRoadNearby.BasePlace("闂稿寳鍏洯", Pair(121.46179,31.271121), Pair(121.46179,31.271121)),
-            LocationRoadNearby.BasePlace("鏌宠惀璺叡鍜屾柊璺�", Pair(121.459427,31.265294), Pair(121.459427,31.265294)),
-            LocationRoadNearby.BasePlace("涓北鍖楄矾鍏卞拰鏂拌矾", Pair(121.46149,31.260937), Pair(121.46149,31.260937)),
-            LocationRoadNearby.BasePlace("涓滃疂鍏磋矾涓叴璺�2024骞�7鏈�24鏃ョЩ浣嶈嚦瀹濋�氳矾539鍙�", Pair(121.475521,31.261383), Pair(121.475521,31.261383)),
-            LocationRoadNearby.BasePlace("澶ф偊鍩�", Pair(121.472183,31.243488), Pair(121.472183,31.243488)),
-            LocationRoadNearby.BasePlace("闄曡タ鍖楄矾娴烽槻璺�", Pair(121.446472,31.238458), Pair(121.446472,31.238458)),
-            LocationRoadNearby.BasePlace("甯稿痉璺柊闂歌矾", Pair(121.447048,31.229643), Pair(121.447048,31.229643)),
-            LocationRoadNearby.BasePlace("寤跺畨涓矾瀵屾皯璺�", Pair(121.449711,31.221563), Pair(121.449711,31.221563)),
-            LocationRoadNearby.BasePlace("寤跺畨瑗胯矾闀囧畞璺�", Pair(121.439025,31.218146), Pair(121.439025,31.218146)),
-            LocationRoadNearby.BasePlace("骞夸腑瑗胯矾涓囪崳璺�", Pair(121.442032,31.278071), Pair(121.442032,31.278071)),
-            LocationRoadNearby.BasePlace("骞夸腑瑗胯矾杩愬煄璺�2024骞�9鏈�3鏃ョЩ浣嶈嚦涓叴绀惧尯280-06鍦板潡", Pair(121.473931,31.254645), Pair(121.473931,31.254645)),
-            LocationRoadNearby.BasePlace("鍢夊埄鏄庣彔鍩�", Pair(121.434364,31.304047), Pair(121.434364,31.304047)),
-            LocationRoadNearby.BasePlace("姹捐タ璺槼娉夎矾", Pair(121.464122,31.31351), Pair(121.464122,31.31351)),
-            LocationRoadNearby.BasePlace("娌冲崡鍖楄矾澶╂郊璺�", Pair(121.482241,31.243679), Pair(121.482241,31.243679)),
-            LocationRoadNearby.BasePlace("姹舵按璺竾鑽h矾", Pair(121.441558,31.291293), Pair(121.441558,31.291293)),
-            LocationRoadNearby.BasePlace("鐭抽棬涓�璺�348鍙�", Pair(121.462105,31.229639), Pair(121.462105,31.229639)),
-            LocationRoadNearby.BasePlace("杩愬煄璺疁宸濊矾", Pair(121.439137,31.271005), Pair(121.439137,31.271005)),
+//            LocationRoadNearby.BasePlace("姘稿拰浜屾潙", Pair(121.43165,31.29083), Pair(121.43165,31.29083)),
+//            LocationRoadNearby.BasePlace("鑺锋睙涓矾529鍙�", Pair(121.468446,31.258494), Pair(121.468446,31.258494)),
+//            LocationRoadNearby.BasePlace("搴峰畞璺�18鍙�", Pair(121.43447,31.306374), Pair(121.43447,31.306374)),
+//            LocationRoadNearby.BasePlace("鍗忎俊鏄熷厜骞垮満", Pair(121.457125,31.297407), Pair(121.457125,31.297407)),
+//            LocationRoadNearby.BasePlace("鍏卞悍鍓嶈繘鍏瘬", Pair(121.441018,31.319358), Pair(121.441018,31.319358)),
+//            LocationRoadNearby.BasePlace("闈欏畨鐩戞祴绔�", Pair(121.429872,31.224094), Pair(121.429872,31.224094)),
+//            LocationRoadNearby.BasePlace("鍏卞拰鏂拌矾鍦轰腑璺�", Pair(121.449074,31.306086), Pair(121.449074,31.306086)),
+//            LocationRoadNearby.BasePlace("宀崡璺満涓矾", Pair(121.455317,31.304615), Pair(121.455317,31.304615)),
+//            LocationRoadNearby.BasePlace("楂樺钩璺睙鍦鸿タ璺�", Pair(121.427832,31.296076), Pair(121.427832,31.296076)),
+//            LocationRoadNearby.BasePlace("骞夸腑瑗胯矾鍏卞拰鏂拌矾", Pair(121.451879,31.278988), Pair(121.451879,31.278988)),
+//            LocationRoadNearby.BasePlace("闂稿寳鍏洯", Pair(121.46179,31.271121), Pair(121.46179,31.271121)),
+//            LocationRoadNearby.BasePlace("鏌宠惀璺叡鍜屾柊璺�", Pair(121.459427,31.265294), Pair(121.459427,31.265294)),
+//            LocationRoadNearby.BasePlace("涓北鍖楄矾鍏卞拰鏂拌矾", Pair(121.46149,31.260937), Pair(121.46149,31.260937)),
+//            LocationRoadNearby.BasePlace("涓滃疂鍏磋矾涓叴璺�2024骞�7鏈�24鏃ョЩ浣嶈嚦瀹濋�氳矾539鍙�", Pair(121.475521,31.261383), Pair(121.475521,31.261383)),
+//            LocationRoadNearby.BasePlace("澶ф偊鍩�", Pair(121.472183,31.243488), Pair(121.472183,31.243488)),
+//            LocationRoadNearby.BasePlace("闄曡タ鍖楄矾娴烽槻璺�", Pair(121.446472,31.238458), Pair(121.446472,31.238458)),
+//            LocationRoadNearby.BasePlace("甯稿痉璺柊闂歌矾", Pair(121.447048,31.229643), Pair(121.447048,31.229643)),
+//            LocationRoadNearby.BasePlace("寤跺畨涓矾瀵屾皯璺�", Pair(121.449711,31.221563), Pair(121.449711,31.221563)),
+//            LocationRoadNearby.BasePlace("寤跺畨瑗胯矾闀囧畞璺�", Pair(121.439025,31.218146), Pair(121.439025,31.218146)),
+//            LocationRoadNearby.BasePlace("骞夸腑瑗胯矾涓囪崳璺�", Pair(121.442032,31.278071), Pair(121.442032,31.278071)),
+//            LocationRoadNearby.BasePlace("骞夸腑瑗胯矾杩愬煄璺�2024骞�9鏈�3鏃ョЩ浣嶈嚦涓叴绀惧尯280-06鍦板潡", Pair(121.473931,31.254645), Pair(121.473931,31.254645)),
+//            LocationRoadNearby.BasePlace("鍢夊埄鏄庣彔鍩�", Pair(121.434364,31.304047), Pair(121.434364,31.304047)),
+//            LocationRoadNearby.BasePlace("姹捐タ璺槼娉夎矾", Pair(121.464122,31.31351), Pair(121.464122,31.31351)),
+//            LocationRoadNearby.BasePlace("娌冲崡鍖楄矾澶╂郊璺�", Pair(121.482241,31.243679), Pair(121.482241,31.243679)),
+//            LocationRoadNearby.BasePlace("姹舵按璺竾鑽h矾", Pair(121.441558,31.291293), Pair(121.441558,31.291293)),
+//            LocationRoadNearby.BasePlace("鐭抽棬涓�璺�348鍙�", Pair(121.462105,31.229639), Pair(121.462105,31.229639)),
+//            LocationRoadNearby.BasePlace("杩愬煄璺疁宸濊矾", Pair(121.439137,31.271005), Pair(121.439137,31.271005)),
         )
         listOf(
-            500.0,
-            1000.0,
+//            500.0,
+//            1000.0,
 //            2000.0,
-//            3000.0,
-//            5000.0
+            3000.0,
+            5000.0
         ).forEach {
             locationRoadNearby.searchList(bList, it)
         }

--
Gitblit v1.9.3