From b212ef0208cb094f63ea8a239a1361f8e859c839 Mon Sep 17 00:00:00 2001
From: feiyu02 <risaku@163.com>
Date: 星期一, 08 七月 2024 17:40:39 +0800
Subject: [PATCH] 2024.7.8

---
 src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/AutoScoreResultVo.kt                  |    1 
 src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/SubTaskSummary.kt                     |   27 
 src/main/resources/mapper/ds1/InspectionMapper.xml                                               |   56 +-
 src/main/resources/mapper/ds1/EvaluationMapper.xml                                               |    2 
 src/test/kotlin/cn/flightfeather/supervision/domain/ds1/repository/SubTaskRepTest.kt             |   35 +
 pom.xml                                                                                          |   20 
 src/main/kotlin/cn/flightfeather/supervision/SupervisionApplication.kt                           |    7 
 src/test/kotlin/cn/flightfeather/supervision/business/datafetch/FetchNightConstructionTest.kt    |    3 
 src/test/kotlin/cn/flightfeather/supervision/business/location/LocationRoadNearbyTest.kt         |    9 
 src/main/kotlin/cn/flightfeather/supervision/business/autooutput/score/AopEvaluation.kt          |   38 +
 src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/EvaluationVo.kt                       |   33 +
 src/main/kotlin/cn/flightfeather/supervision/lightshare/web/SubtaskController.kt                 |   11 
 src/main/kotlin/cn/flightfeather/supervision/business/autooutput/dataanalysis/AopDataAnalysis.kt |    2 
 src/test/kotlin/cn/flightfeather/supervision/business/autooutput/AopEvaluationTest.kt            |   42 +
 src/main/kotlin/cn/flightfeather/supervision/domain/ds1/repository/SubTaskRep.kt                 |   42 +
 src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/MediafileServiceImpl.kt     |    4 
 src/test/kotlin/cn/flightfeather/supervision/business/subtask/TaskTest.kt                        |   33 +
 src/main/kotlin/cn/flightfeather/supervision/domain/ds1/repository/SceneRep.kt                   |   13 
 src/main/kotlin/cn/flightfeather/supervision/business/bgtask/TaskFinishEvaluation.kt             |   29 +
 src/main/kotlin/cn/flightfeather/supervision/business/bgtask/TaskFinishTopTask.kt                |   49 ++
 src/main/kotlin/cn/flightfeather/supervision/business/datafetch/FetchData.kt                     |    2 
 src/main/kotlin/cn/flightfeather/supervision/business/autooutput/datasource/AopDataSource.kt     |   50 +
 src/test/kotlin/cn/flightfeather/supervision/business/bgtask/AopTaskCtrlTest.kt                  |   53 ++
 src/main/kotlin/cn/flightfeather/supervision/business/datafetch/FetchNightConstruction.kt        |    3 
 src/main/kotlin/cn/flightfeather/supervision/domain/ds1/mapper/SubtaskMapper.kt                  |    8 
 src/main/kotlin/cn/flightfeather/supervision/business/location/UtilFile.kt                       |    5 
 src/test/kotlin/cn/flightfeather/supervision/business/bgtask/JinAnScoreTaskCtrlTest.kt           |    4 
 src/main/kotlin/cn/flightfeather/supervision/business/datafetch/FetchController.kt               |    2 
 src/main/resources/log4j2.xml                                                                    |   16 
 src/main/kotlin/cn/flightfeather/supervision/business/bgtask/AopTaskCtrl.kt                      |   37 +
 src/main/kotlin/cn/flightfeather/supervision/business/location/LocationRoadNearby.kt             |    2 
 src/main/resources/mapper/ds1/SubtaskMapper.xml                                                  |  458 +++++++++++--------
 src/main/kotlin/cn/flightfeather/supervision/domain/ds1/repository/TaskRep.kt                    |   21 
 src/main/kotlin/cn/flightfeather/supervision/domain/ds1/repository/EvaluationRep.kt              |    9 
 src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/SubtaskServiceImpl.kt       |   56 +-
 src/main/kotlin/cn/flightfeather/supervision/business/bgtask/TaskFinishSubtask.kt                |   30 +
 src/main/kotlin/cn/flightfeather/supervision/config/AsyncConfig.kt                               |   28 +
 src/main/kotlin/cn/flightfeather/supervision/lightshare/service/SubtaskService.kt                |    6 
 src/main/kotlin/cn/flightfeather/supervision/scheduler/ScheduleService.kt                        |   59 ++
 src/main/resources/application.yml                                                               |   10 
 src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/SearchServiceImpl.kt        |    9 
 41 files changed, 988 insertions(+), 336 deletions(-)

diff --git a/pom.xml b/pom.xml
index b4fd6e9..93616db 100644
--- a/pom.xml
+++ b/pom.xml
@@ -34,24 +34,23 @@
     <dependencies>
         <dependency>
             <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-quartz</artifactId>
+            <artifactId>spring-boot-starter-web</artifactId>
             <exclusions>
                 <exclusion>
-                    <artifactId>spring-boot-starter-logging</artifactId>
                     <groupId>org.springframework.boot</groupId>
+                    <artifactId>spring-boot-starter-logging</artifactId>
                 </exclusion>
             </exclusions>
         </dependency>
 
         <dependency>
             <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-quartz</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-data-mongodb-reactive</artifactId>
-            <exclusions>
-                <exclusion>
-                    <artifactId>spring-boot-starter-logging</artifactId>
-                    <groupId>org.springframework.boot</groupId>
-                </exclusion>
-            </exclusions>
         </dependency>
 
         <dependency>
@@ -123,11 +122,6 @@
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-log4j2</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-web</artifactId>
         </dependency>
 
         <!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
diff --git a/src/main/kotlin/cn/flightfeather/supervision/SupervisionApplication.kt b/src/main/kotlin/cn/flightfeather/supervision/SupervisionApplication.kt
index 9099122..e21e4dd 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/SupervisionApplication.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/SupervisionApplication.kt
@@ -1,15 +1,16 @@
 package cn.flightfeather.supervision
 
-import cn.flightfeather.supervision.datafetch.FetchController
-import cn.flightfeather.supervision.infrastructure.service.ServerManager
+import cn.flightfeather.supervision.business.datafetch.FetchController
 import org.springframework.beans.factory.annotation.Autowired
 import org.springframework.boot.ApplicationRunner
 import org.springframework.boot.autoconfigure.SpringBootApplication
 import org.springframework.boot.runApplication
 import org.springframework.context.annotation.Bean
+import org.springframework.scheduling.annotation.EnableScheduling
 
 
 @SpringBootApplication
+@EnableScheduling
 class SupervisionApplication {
 
     @Autowired
@@ -18,7 +19,7 @@
 
     @Bean
     fun runner() = ApplicationRunner {
-        fetchController. run()
+        fetchController.run()
     }
 }
 
diff --git a/src/main/kotlin/cn/flightfeather/supervision/business/autooutput/dataanalysis/AopDataAnalysis.kt b/src/main/kotlin/cn/flightfeather/supervision/business/autooutput/dataanalysis/AopDataAnalysis.kt
index 2e3e308..1f84f3e 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/business/autooutput/dataanalysis/AopDataAnalysis.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/business/autooutput/dataanalysis/AopDataAnalysis.kt
@@ -106,6 +106,8 @@
                 drMin = tempMin.total
                 drOverAvgPer = overAvgRate(drAvg, dAvg)
                 drDataNum = count(dataList)
+                // 褰撴暟鎹噺涓�0鏃讹紝瓒呮湀搴﹀尯鍧囧�肩櫨鍒嗘瘮鍙樹负0
+                if (drDataNum == 0) drOverAvgPer = .0
                 drEffectiveRate = effectiveRate(dataList, evaluationScene)
             }
             //鏇存柊鍏ュ簱
diff --git a/src/main/kotlin/cn/flightfeather/supervision/business/autooutput/datasource/AopDataSource.kt b/src/main/kotlin/cn/flightfeather/supervision/business/autooutput/datasource/AopDataSource.kt
index ecc3eb2..a19472f 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/business/autooutput/datasource/AopDataSource.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/business/autooutput/datasource/AopDataSource.kt
@@ -70,7 +70,9 @@
                     evaluationScene.clear()
                     evaluationScene.index = i
                     evaluationScene.setDefaultScene(scene)
-                    callback(i, evaluationScene)
+                    do {
+                        callback(i, evaluationScene)
+                    } while (evaluationScene.gotoNextSubTask())
                 }
             }
             1 -> {
@@ -92,6 +94,9 @@
         sceneSourceList.clear()
         val taskSceneIdList =
             aopDbMapper.scenseMapper.getSceneByType(config.topTaskGuid, config.sceneType, config.townCode)
+        taskSceneIdList.forEach {
+            println(it.name)
+        }
         sceneSourceList.addAll(taskSceneIdList)
     }
 
@@ -150,12 +155,21 @@
             })
         }
         //宸℃煡浠诲姟淇℃伅
+        var subTaskIndex = 0
         val subTask = InfoProxy<Subtask> {_,_ ->
+            return@InfoProxy if (subTaskList.value?.isNotEmpty() == true) {
+                subTaskList.value?.get(subTaskIndex)
+            } else {
+                null
+            }
+        }
+
+        val subTaskList = InfoProxy<List<Subtask>> {_,_ ->
             return@InfoProxy aopDbMapper.subtaskMapper.selectByExample(Example(Subtask::class.java).apply {
                 createCriteria().andEqualTo("scenseid", scene.value?.guid)
 //                    .andBetween("planstarttime", config?.startTime, config?.endTime)
                     .andEqualTo("tguid", config?.topTaskGuid)
-            })?.takeIf { it.isNotEmpty() }?.get(0)
+            })
         }
 
         //鐜板満宸℃煡淇℃伅
@@ -341,21 +355,43 @@
          */
         fun clear() {
             scene.clear()
+            subTaskIndex = 0
+            subTaskList.clear()
             userInfo.clear()
             userInfoTZ.clear()
+            baseScene.clear()
+            problemTypes.clear()
+            ledgerCount.clear()
+            ledgerRecords.clear()
+
+            clearSubtask()
+        }
+
+        fun clearSubtask() {
             subTask.clear()
             inspection.clear()
-            baseScene.clear()
             problems.clear()
             evaluation.clear()
             itemevaluationList.clear()
-            problemTypes.clear()
-            baseRule.clear()
             totalScore.clear()
             topItems.clear()
+            baseRule.clear()
             rules.clear()
-            ledgerCount.clear()
-            ledgerRecords.clear()
+        }
+
+        /**
+         * 鍒囨崲鑷充笅涓�涓贰鏌ヤ换鍔�
+         * 涓�涓満鏅彲鑳藉悓鏃跺瓨鍦ㄥ涓贰鏌ヤ换鍔subTaskList]锛岄渶瑕佸姣忎釜宸℃煡浠诲姟鍒嗗埆杩涜璇勫垎
+         * @return 鏄惁鏈変笅涓�涓贰鏌ヤ换鍔�
+         */
+        fun gotoNextSubTask(): Boolean {
+            return if (subTaskIndex + 1 < (subTaskList.value?.size ?: 0)) {
+                clearSubtask()
+                subTaskIndex++
+                true
+            } else {
+                false
+            }
         }
 
         /**
diff --git a/src/main/kotlin/cn/flightfeather/supervision/business/autooutput/score/AopEvaluation.kt b/src/main/kotlin/cn/flightfeather/supervision/business/autooutput/score/AopEvaluation.kt
index 384110f..894422a 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/business/autooutput/score/AopEvaluation.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/business/autooutput/score/AopEvaluation.kt
@@ -43,6 +43,11 @@
     reScoreItem10: ReScoreItem10,
     reScoreItem11: ReScoreItem11,
 ) {
+    //姝e湪杩涜璇勪及鐨勫贰鏌ヤ换鍔�
+    private val runningSubtask = mutableListOf<String>()
+
+    //姝e湪杩涜璇勪及鐨勬�诲贰鏌ヤ换鍔�
+    private val runningTopTask = mutableListOf<String>()
 
     //鐗瑰畾璇勫垎椤癸紙闄や簡缁熶竴鐨勬牴鎹贰鏌ラ棶棰樼洿鎺ユ墸鍒嗗锛屾湁鐗瑰畾鐨勬墸鍒嗛�昏緫鐨勮瘎浼伴」锛�
     private val itemList = mutableListOf<ScoreItem>()
@@ -73,9 +78,31 @@
     /**
      * 瀵圭壒瀹氱殑宸℃煡浠诲姟杩涜鍗曠嫭璇勫垎
      */
-    fun executeBySubTask(subTask:Subtask) {
+    fun executeBySubTask(subTask: Subtask) {
+        if (checkSubtaskExist(subTask)) return
         val source = setResource(subTask)
         execute(source)
+        runningSubtask.remove(subTask.stguid)
+    }
+
+    @Synchronized
+    private fun checkTopTaskExist(topTaskGuid: String?): Boolean {
+        return if (runningTopTask.contains(topTaskGuid)) {
+            true
+        } else {
+            topTaskGuid?.let { runningTopTask.add(it) }
+            false
+        }
+    }
+
+    @Synchronized
+    private fun checkSubtaskExist(subTask: Subtask): Boolean {
+        return if (subTask.stguid == null || runningSubtask.contains(subTask.stguid)) {
+            true
+        } else {
+            runningSubtask.add(subTask.stguid!!)
+            false
+        }
     }
 
     private fun setResource(subTask: Subtask): AopDataSource {
@@ -101,7 +128,7 @@
     private fun execute(source: AopDataSource) {
         //鑾峰彇鏁版嵁婧愶紙寰呰瘎浼扮殑鍦烘櫙锛�
         //寰幆澶勭悊姣忎釜鍦烘櫙
-        source.loop {index, evaluationScene ->
+        source.loop { index, evaluationScene ->
             if (evaluationScene.noRecord()) return@loop
 
             itemGrade(index, evaluationScene)
@@ -166,7 +193,10 @@
     /**
      * 璁$畻鎬诲垎
      */
-    private fun totalGrade(index: Int, evaluationScene: AopDataSource.EvaluationScene): Pair<Evaluation, List<Itemevaluation>>? {
+    private fun totalGrade(
+        index: Int,
+        evaluationScene: AopDataSource.EvaluationScene,
+    ): Pair<Evaluation, List<Itemevaluation>>? {
         val scene = evaluationScene.scene.value ?: return null
         val topItems = evaluationScene.topItems.value ?: return null
         val rules = evaluationScene.rules.value ?: return null
@@ -179,7 +209,7 @@
             total += top.extension1?.toIntOrNull() ?: 0
         }
         val evaluation = Evaluation().apply {
-                evaluationScene.baseRule.value?.let {
+            evaluationScene.baseRule.value?.let {
                 guid = UUIDGenerator.generate16ShortUUID()
                 iguid = inspection?.guid
                 stguid = subTask?.stguid
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 5592fae..5c3c05a 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/business/bgtask/AopTaskCtrl.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/business/bgtask/AopTaskCtrl.kt
@@ -12,6 +12,7 @@
 import cn.flightfeather.supervision.domain.ds1.repository.TaskRep
 import cn.flightfeather.supervision.lightshare.vo.AreaVo
 import org.springframework.stereotype.Component
+import java.time.LocalDateTime
 
 /**
  * 鑷姩璇勪及浠诲姟绠$悊
@@ -37,6 +38,29 @@
         dataAnalysisMap["310116"]?.put(Constant.SceneType.TYPE1.value.toInt(), jsCsDataAnalysis)
         dataAnalysisMap["310116"]?.put(Constant.SceneType.TYPE2.value.toInt(), jsWhDataAnalysis)
         dataAnalysisMap["310116"]?.put(Constant.SceneType.TYPE3.value.toInt(), jsMpDataAnalysis)
+    }
+
+    fun startAllEvaluation(time: LocalDateTime) {
+        startEvaluation(getArea(time, "310106", "闈欏畨鍖�", Constant.SceneType.TYPE1))
+        startEvaluation(getArea(time, "310104", "寰愭眹鍖�", Constant.SceneType.TYPE5))
+        startEvaluation(getArea(time, "310116", "閲戝北鍖�", Constant.SceneType.TYPE1))
+        startEvaluation(getArea(time, "310116", "閲戝北鍖�", Constant.SceneType.TYPE2))
+        startEvaluation(getArea(time, "310116", "閲戝北鍖�", Constant.SceneType.TYPE3))
+    }
+
+    fun startEvaluation(areaVo: AreaVo) {
+        val task = taskRep.findOneTask(areaVo)
+        val taskId = task?.tguid
+        val sceneType = areaVo.scensetypeid?.toInt() ?: throw BizException("鍦烘櫙绫诲瀷鏈缃紝鏃犳硶璇勪及")
+        aopEvaluation.executeByTopTask(taskId, sceneType)
+    }
+
+    fun startAll(time: LocalDateTime) {
+        startNewTask(getArea(time, "310106", "闈欏畨鍖�", Constant.SceneType.TYPE1))
+        startNewTask(getArea(time, "310104", "寰愭眹鍖�", Constant.SceneType.TYPE5))
+        startNewTask(getArea(time, "310116", "閲戝北鍖�", Constant.SceneType.TYPE1))
+        startNewTask(getArea(time, "310116", "閲戝北鍖�", Constant.SceneType.TYPE2))
+        startNewTask(getArea(time, "310116", "閲戝北鍖�", Constant.SceneType.TYPE3))
     }
 
     fun startNewTask(areaVo: AreaVo): BgTaskStatus {
@@ -78,4 +102,17 @@
         aopDataAnalysis?.setResource(taskId, sceneType, year, month)
         aopDataAnalysis?.execute()
     }
+
+    fun getArea(time: LocalDateTime, dCode: String, dName: String, sceneType: Constant.SceneType): AreaVo {
+        return AreaVo().apply {
+            provincecode = "31"
+            provincename = "涓婃捣甯�"
+            citycode = "3100"
+            cityname = "涓婃捣甯�"
+            starttime = time
+            districtcode = dCode
+            districtname = dName
+            scensetypeid = sceneType.value
+        }
+    }
 }
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/business/bgtask/TaskFinishEvaluation.kt b/src/main/kotlin/cn/flightfeather/supervision/business/bgtask/TaskFinishEvaluation.kt
new file mode 100644
index 0000000..eab40e7
--- /dev/null
+++ b/src/main/kotlin/cn/flightfeather/supervision/business/bgtask/TaskFinishEvaluation.kt
@@ -0,0 +1,29 @@
+package cn.flightfeather.supervision.business.bgtask
+
+import cn.flightfeather.supervision.business.autooutput.score.AopEvaluation
+import cn.flightfeather.supervision.common.utils.Constant
+import cn.flightfeather.supervision.domain.ds1.entity.Subtask
+import cn.flightfeather.supervision.domain.ds1.repository.EvaluationRep
+import cn.flightfeather.supervision.domain.ds1.repository.SubTaskRep
+import org.springframework.stereotype.Component
+import java.time.LocalDateTime
+import java.util.*
+
+/**
+ * 琛ュ厖瀹屾垚鎵�鏈夋鍦ㄦ墽琛岀殑宸℃煡浠诲姟锛屽苟涓斿鏈瘎鍒嗙殑浠诲姟杩涜鑷姩璇勫垎
+ */
+@Component
+class TaskFinishEvaluation(
+    private val subTaskRep: SubTaskRep,
+    private val evaluationRep: EvaluationRep,
+    private val aopEvaluation: AopEvaluation,
+) {
+
+    fun handle() {
+        val list = subTaskRep.findByTime(2024, 5)
+        list.forEach {
+            it ?: return@forEach
+            evaluationRep.findBySubtask(it.stguid) ?: aopEvaluation.executeBySubTask(it)
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/business/bgtask/TaskFinishSubtask.kt b/src/main/kotlin/cn/flightfeather/supervision/business/bgtask/TaskFinishSubtask.kt
new file mode 100644
index 0000000..cdd4246
--- /dev/null
+++ b/src/main/kotlin/cn/flightfeather/supervision/business/bgtask/TaskFinishSubtask.kt
@@ -0,0 +1,30 @@
+package cn.flightfeather.supervision.business.bgtask
+
+import cn.flightfeather.supervision.business.autooutput.score.AopEvaluation
+import cn.flightfeather.supervision.common.utils.Constant
+import cn.flightfeather.supervision.domain.ds1.repository.EvaluationRep
+import cn.flightfeather.supervision.domain.ds1.repository.SubTaskRep
+import org.springframework.stereotype.Component
+import java.util.*
+
+/**
+ * 缁撴潫鎵�鏈夋鍦ㄦ墽琛岀殑宸℃煡浠诲姟锛屽苟涓斿鏈瘎鍒嗙殑浠诲姟杩涜鑷姩璇勫垎
+ */
+@Component
+class TaskFinishSubtask(
+    private val subTaskRep: SubTaskRep,
+    private val evaluationRep: EvaluationRep,
+    private val aopEvaluation: AopEvaluation,
+) {
+
+    fun handle() {
+        val list = subTaskRep.findByStatus(Constant.TaskProgress.RUNINGSTATUS2)
+        list.forEach {
+            it ?: return@forEach
+            evaluationRep.findBySubtask(it.stguid) ?: aopEvaluation.executeBySubTask(it)
+            it.status = Constant.TaskProgress.RUNINGSTATUS3.text
+            it.executionendtime = Date()
+            subTaskRep.update(it)
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/business/bgtask/TaskFinishTopTask.kt b/src/main/kotlin/cn/flightfeather/supervision/business/bgtask/TaskFinishTopTask.kt
new file mode 100644
index 0000000..e619119
--- /dev/null
+++ b/src/main/kotlin/cn/flightfeather/supervision/business/bgtask/TaskFinishTopTask.kt
@@ -0,0 +1,49 @@
+package cn.flightfeather.supervision.business.bgtask
+
+import cn.flightfeather.supervision.common.utils.Constant
+import cn.flightfeather.supervision.domain.ds1.entity.Task
+import cn.flightfeather.supervision.domain.ds1.repository.TaskRep
+import org.springframework.stereotype.Component
+import java.time.LocalDateTime
+import java.time.ZoneId
+
+/**
+ * 缁撴潫鏈湀涔嬪墠鎵�鏈夊凡鍒涘缓鐨勬棩浠诲姟閮藉畬鎴愮殑鐨勯《灞備换鍔�
+ * @date 2024/7/2
+ * @author feiyu02
+ */
+@Component
+class TaskFinishTopTask(private val taskRep: TaskRep) {
+
+    fun handle() {
+        // 绛涢�夋墍鏈夋鍦ㄦ墽琛屼腑鐨勯《灞備换鍔�
+        val topTasks = taskRep.findTasks(Task().apply {
+            levelnum = 2
+            runingstatus = Constant.TaskProgress.RUNINGSTATUS2.text
+        })
+
+        // 鑾峰彇涓婃湀搴曟椂闂�
+        val lastMonth = LocalDateTime.now().withDayOfMonth(1).withHour(0)
+            .withMinute(0).withSecond(0).minusSeconds(1)
+        topTasks.forEach { tt ->
+            if (tt == null) return@forEach
+            val time = LocalDateTime.ofInstant(tt.starttime?.toInstant(), ZoneId.systemDefault())
+            // 绛涢�夋湰鏈堜箣鍓嶇殑椤跺眰浠诲姟
+            if (time.isBefore(lastMonth)) {
+                // 缁熻瀵瑰簲鐨勬墍鏈夋棩浠诲姟鏄惁閮藉凡缁撴潫锛岃嫢閮界粨鏉燂紝鍒欑粨鏉熻椤跺眰浠诲姟
+                val dayTasks = taskRep.findDayTasks(tt.tguid)
+                var finished = true
+                for (dt in dayTasks) {
+                    if (dt?.runingstatus != Constant.TaskProgress.RUNINGSTATUS3.text) {
+                        finished = false
+                        break
+                    }
+                }
+                if (finished) {
+                    tt.runingstatus = Constant.TaskProgress.RUNINGSTATUS3.text
+                    taskRep.update(tt)
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/datafetch/FetchController.kt b/src/main/kotlin/cn/flightfeather/supervision/business/datafetch/FetchController.kt
similarity index 97%
rename from src/main/kotlin/cn/flightfeather/supervision/datafetch/FetchController.kt
rename to src/main/kotlin/cn/flightfeather/supervision/business/datafetch/FetchController.kt
index 3fece28..0afb971 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/datafetch/FetchController.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/business/datafetch/FetchController.kt
@@ -1,4 +1,4 @@
-package cn.flightfeather.supervision.datafetch
+package cn.flightfeather.supervision.business.datafetch
 
 import org.springframework.stereotype.Component
 import java.util.*
diff --git a/src/main/kotlin/cn/flightfeather/supervision/datafetch/FetchData.kt b/src/main/kotlin/cn/flightfeather/supervision/business/datafetch/FetchData.kt
similarity index 82%
rename from src/main/kotlin/cn/flightfeather/supervision/datafetch/FetchData.kt
rename to src/main/kotlin/cn/flightfeather/supervision/business/datafetch/FetchData.kt
index 29d6335..1376681 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/datafetch/FetchData.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/business/datafetch/FetchData.kt
@@ -1,4 +1,4 @@
-package cn.flightfeather.supervision.datafetch
+package cn.flightfeather.supervision.business.datafetch
 
 import java.util.concurrent.ExecutorService
 import java.util.concurrent.Executors
diff --git a/src/main/kotlin/cn/flightfeather/supervision/datafetch/FetchNightConstruction.kt b/src/main/kotlin/cn/flightfeather/supervision/business/datafetch/FetchNightConstruction.kt
similarity index 97%
rename from src/main/kotlin/cn/flightfeather/supervision/datafetch/FetchNightConstruction.kt
rename to src/main/kotlin/cn/flightfeather/supervision/business/datafetch/FetchNightConstruction.kt
index 6c76816..85b4cc8 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/datafetch/FetchNightConstruction.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/business/datafetch/FetchNightConstruction.kt
@@ -1,4 +1,4 @@
-package cn.flightfeather.supervision.datafetch
+package cn.flightfeather.supervision.business.datafetch
 
 import cn.flightfeather.supervision.common.net.NCHttpService
 import cn.flightfeather.supervision.domain.ds1.entity.NightConstruction
@@ -11,7 +11,6 @@
 import com.github.pagehelper.PageHelper
 import org.springframework.beans.factory.annotation.Autowired
 import org.springframework.stereotype.Component
-import org.springframework.transaction.annotation.Transactional
 import tk.mybatis.mapper.entity.Example
 import java.util.*
 import javax.annotation.PostConstruct
diff --git a/src/main/kotlin/cn/flightfeather/supervision/business/location/LocationRoadNearby.kt b/src/main/kotlin/cn/flightfeather/supervision/business/location/LocationRoadNearby.kt
index c8fb9bc..9b73da9 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/business/location/LocationRoadNearby.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/business/location/LocationRoadNearby.kt
@@ -53,7 +53,7 @@
             }
             utilFile.index = 1
         }
-        utilFile.outPutToFile()
+        utilFile.outPutToFile(distance)
     }
 
     /**
diff --git a/src/main/kotlin/cn/flightfeather/supervision/business/location/UtilFile.kt b/src/main/kotlin/cn/flightfeather/supervision/business/location/UtilFile.kt
index f6aeb9c..04e78b4 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/business/location/UtilFile.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/business/location/UtilFile.kt
@@ -74,9 +74,10 @@
         index++
     }
 
-    fun outPutToFile() {
+    fun outPutToFile(distance: Double? = null) {
         val workbook = HSSFWorkbook()
-        val fileName = "閲戝北鍖哄懆杈圭偣浣�-${DateUtil().DateToString(Date(), "yyyy-MM-ddhhmmss")}.xls"
+        val tag = if (distance == null) "" else  "${distance}绫�"
+        val fileName = "鍛ㄨ竟${tag}鐐逛綅-${DateUtil().DateToString(Date(), "yyyy-MM-ddhhmmss")}.xls"
         val filePath = "C:\\work\\宸ヤ綔\\绗笁鏂圭洃绠\鍛ㄨ竟鐐逛綅\\$fileName"
         val out = FileOutputStream(File(filePath))
         ExcelUtil.write(heads, contents, workbook)
diff --git a/src/main/kotlin/cn/flightfeather/supervision/config/AsyncConfig.kt b/src/main/kotlin/cn/flightfeather/supervision/config/AsyncConfig.kt
new file mode 100644
index 0000000..e4ca469
--- /dev/null
+++ b/src/main/kotlin/cn/flightfeather/supervision/config/AsyncConfig.kt
@@ -0,0 +1,28 @@
+package cn.flightfeather.supervision.config
+
+import org.springframework.context.annotation.Bean
+import org.springframework.context.annotation.Configuration
+import org.springframework.scheduling.annotation.EnableAsync
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor
+import java.util.concurrent.Executor
+
+
+@Configuration
+@EnableAsync
+class AsyncConfig {
+    /*
+     *姝ゅ鎴愬憳鍙橀噺搴旇浣跨敤@Value浠庨厤缃腑璇诲彇
+    */
+    private val corePoolSize = 10
+    private val maxPoolSize = 200
+    private val queueCapacity = 10
+    @Bean
+    fun taskExecutor(): Executor {
+        val executor = ThreadPoolTaskExecutor()
+        executor.corePoolSize = corePoolSize
+        executor.maxPoolSize = maxPoolSize
+        executor.setQueueCapacity(queueCapacity)
+        executor.initialize()
+        return executor
+    }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/domain/ds1/mapper/SubtaskMapper.kt b/src/main/kotlin/cn/flightfeather/supervision/domain/ds1/mapper/SubtaskMapper.kt
index 7b3bb4b..390cc08 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/domain/ds1/mapper/SubtaskMapper.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/domain/ds1/mapper/SubtaskMapper.kt
@@ -3,10 +3,7 @@
 import cn.flightfeather.supervision.domain.ds1.entity.Scense
 import cn.flightfeather.supervision.domain.ds1.entity.Subtask
 import cn.flightfeather.supervision.domain.util.MyMapper
-import cn.flightfeather.supervision.lightshare.vo.SubTaskSearchResultVo2
-import cn.flightfeather.supervision.lightshare.vo.SubTaskSummary
-import cn.flightfeather.supervision.lightshare.vo.SubtaskSearchResultVo
-import cn.flightfeather.supervision.lightshare.vo.SubtaskVo
+import cn.flightfeather.supervision.lightshare.vo.*
 import org.apache.ibatis.annotations.Mapper
 import java.time.LocalDateTime
 import java.util.*
@@ -24,6 +21,9 @@
 
     fun getSummary(topTaskId: String, sceneTypeId: Int?): List<SubTaskSummary>
 
+    // 鏍规嵁鍖哄煙鑼冨洿绛涢��
+    fun getSummaryByArea(areaVo: AreaVo): List<SubTaskSummary>
+
     fun getSummaryByScene(sceneId: String, startTime: LocalDateTime?, endTime: LocalDateTime?): List<SubTaskSummary>
 
     fun findSubTasksByProType(topTaskId: String, sceneTypeId: String, proType: String): List<Subtask>
diff --git a/src/main/kotlin/cn/flightfeather/supervision/domain/ds1/repository/EvaluationRep.kt b/src/main/kotlin/cn/flightfeather/supervision/domain/ds1/repository/EvaluationRep.kt
index b02ade6..c3ccd05 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/domain/ds1/repository/EvaluationRep.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/domain/ds1/repository/EvaluationRep.kt
@@ -1,5 +1,6 @@
 package cn.flightfeather.supervision.domain.ds1.repository
 
+import cn.flightfeather.supervision.common.exception.BizException
 import cn.flightfeather.supervision.domain.ds1.entity.Evaluation
 import cn.flightfeather.supervision.domain.ds1.entity.Itemevaluation
 import cn.flightfeather.supervision.domain.ds1.mapper.EvaluationMapper
@@ -33,6 +34,14 @@
         return if (res.isNotEmpty()) res[0] else null
     }
 
+    fun findBySubtask(subTaskId: String?): Evaluation? {
+        try {
+            return evaluationMapper.selectOne(Evaluation().apply { stguid = subTaskId })
+        } catch (e: Exception) {
+            throw BizException("宸℃煡[${subTaskId}]瀵瑰簲浜嗗鏉¤瘎浼版�诲垎璁板綍锛岃妫�鏌ユ槸鍚︽湁绯荤粺閫昏緫閿欒")
+        }
+    }
+
 
     /**
      * 鏌ユ壘鑷姩璇勫垎缁撴灉
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 cec2e1a..d5f3c14 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
@@ -5,7 +5,6 @@
 import cn.flightfeather.supervision.domain.ds1.entity.Scense
 import cn.flightfeather.supervision.domain.ds1.mapper.ScenseMapper
 import cn.flightfeather.supervision.domain.ds1.mapper.UserinfoMapper
-import javafx.scene.Scene
 import org.springframework.stereotype.Repository
 import tk.mybatis.mapper.entity.Example
 import java.util.*
@@ -20,11 +19,11 @@
     private val subTaskRep: SubTaskRep,
 ) {
 
-    fun insert(scense: Scense?):Int {
-        scense ?: return 0
-        if (scense.guid == null) scense.guid = UUIDGenerator.generate16ShortUUID()
-        scense.createdate = Date()
-        return scenseMapper.insertSelective(scense)
+    fun insert(scene: Scense?):Int {
+        scene ?: return 0
+        if (scene.guid == null) scene.guid = UUIDGenerator.generate16ShortUUID()
+        scene.createdate = Date()
+        return scenseMapper.insertSelective(scene)
     }
 
     /**
@@ -53,7 +52,7 @@
     }
 
     fun findBySubTask(subTaskId: String): Scense? {
-        val subtask = subTaskRep.find(subTaskId)
+        val subtask = subTaskRep.findOne(subTaskId)
         return scenseMapper.selectByPrimaryKey(subtask?.scenseid)
     }
 }
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/domain/ds1/repository/SubTaskRep.kt b/src/main/kotlin/cn/flightfeather/supervision/domain/ds1/repository/SubTaskRep.kt
index feb9778..b541b19 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/domain/ds1/repository/SubTaskRep.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/domain/ds1/repository/SubTaskRep.kt
@@ -1,20 +1,60 @@
 package cn.flightfeather.supervision.domain.ds1.repository
 
+import cn.flightfeather.supervision.common.utils.Constant
 import cn.flightfeather.supervision.domain.ds1.entity.Subtask
 import cn.flightfeather.supervision.domain.ds1.mapper.SubtaskMapper
+import cn.flightfeather.supervision.lightshare.vo.AreaVo
+import cn.flightfeather.supervision.lightshare.vo.SubTaskSummary
 import org.springframework.stereotype.Repository
+import tk.mybatis.mapper.entity.Example
+import java.time.LocalDateTime
 
 @Repository
 class SubTaskRep(private val subtaskMapper: SubtaskMapper) {
 
+    fun update(subtask: Subtask): Int {
+        return subtaskMapper.updateByPrimaryKey(subtask)
+    }
 
-    fun find(id:String): Subtask? {
+    fun findOne(id:String): Subtask? {
         return subtaskMapper.selectByPrimaryKey(id)
     }
+
+    fun findAll(subtask: Subtask): List<Subtask?> {
+        return subtaskMapper.select(subtask)
+    }
+
     /**
      * 鏍规嵁鎬讳换鍔°�佸満鏅被鍨嬨�侀棶棰樼被鍨嬶紝鑾峰彇鍙戠幇璇ョ绫婚棶棰樼殑鍦烘櫙淇℃伅
      */
     fun findSubtasks(topTaskId: String, sceneTypeId:String, proType: String): List<Subtask?> {
         return subtaskMapper.findSubTasksByProType(topTaskId, sceneTypeId, proType)
     }
+
+    /**
+     * 鏌ユ壘姝e湪鎵ц鐨勫贰鏌ヤ换鍔�
+     */
+    fun findByStatus(status: Constant.TaskProgress): List<Subtask?> {
+        return subtaskMapper.selectByExample(Example(Subtask::class.java).apply {
+            createCriteria().andEqualTo("status", status.text)
+        })
+    }
+
+    fun findByTime(sT: LocalDateTime, eT: LocalDateTime): List<Subtask?> {
+        return subtaskMapper.selectByExample(Example(Subtask::class.java).apply {
+            createCriteria().andBetween("planstarttime", sT, eT)
+        })
+    }
+
+    fun findByTime(year: Int, month: Int): List<Subtask?> {
+        val sT = LocalDateTime.of(year, month, 1, 0, 0, 0)
+        val eT = sT.plusMonths(1).minusSeconds(1)
+        return findByTime(sT, eT)
+    }
+
+
+    // 宸℃煡浠诲姟闂鏁存敼璇︽儏缁熻鐩稿叧
+    fun findSummary(areaVo: AreaVo): List<SubTaskSummary> {
+        return subtaskMapper.getSummaryByArea(areaVo)
+    }
 }
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/domain/ds1/repository/TaskRep.kt b/src/main/kotlin/cn/flightfeather/supervision/domain/ds1/repository/TaskRep.kt
index 58db4df..21133a7 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/domain/ds1/repository/TaskRep.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/domain/ds1/repository/TaskRep.kt
@@ -6,6 +6,7 @@
 import cn.flightfeather.supervision.domain.ds1.mapper.TaskMapper
 import cn.flightfeather.supervision.lightshare.vo.AreaVo
 import org.springframework.stereotype.Repository
+import tk.mybatis.mapper.entity.Example
 import java.time.ZoneId
 import java.util.*
 
@@ -24,6 +25,11 @@
             endtime = Date.from(mEnd.atZone(ZoneId.systemDefault()).toInstant())
         }
     }
+
+    fun update(task: Task): Int {
+        return taskMapper.updateByPrimaryKeySelective(task)
+    }
+
     /**
      * 鏌ユ壘涓�涓�讳换鍔�
      */
@@ -37,6 +43,10 @@
         return taskMapper.select(example)
     }
 
+    fun findTasks(task: Task): List<Task?> {
+        return taskMapper.select(task)
+    }
+
     /**
      * 鑾峰彇鎬讳换鍔″搴旂殑鐩戠鐗堟湰
      */
@@ -44,4 +54,15 @@
         val monitorList = monitorobjectversionMapper.findMonitorListByScene(taskId, sceneTypeId)
         return monitorList.sortedBy { it.displayid }
     }
+
+    /**
+     * 鑾峰彇鏃ヤ换鍔�
+     * @param taskId 椤跺眰浠诲姟id
+     */
+    fun findDayTasks(taskId: String?): List<Task?> {
+        return taskMapper.selectByExample(Example(Task::class.java).apply {
+            createCriteria().andEqualTo("tsguid", taskId)
+            orderBy("starttime").desc()
+        })
+    }
 }
\ No newline at end of file
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 b8da107..19fe742 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/SubtaskService.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/SubtaskService.kt
@@ -45,9 +45,11 @@
 
     fun getByTopTaskAndDate(topTaskId: String, startTime: String?, endTime: String?, sceneTypeId: Int? = null): List<Subtask>
 
+    fun getTaskProgressByArea(areaVo: AreaVo): List<TaskProgressVo>
+
     fun getSummary(topTaskId: String, sceneTypeId: Int? = null): List<SubTaskSummary>
 
-    fun getSummaryByArea(areaVo: AreaVo): List<TaskProgressVo>
-
     fun getByScene(sceneId: String, startTime: LocalDateTime?, endTime: LocalDateTime?): List<SubTaskSummary>
+
+    fun getSummaryByArea(areaVo: AreaVo): List<SubTaskSummary>
 }
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/MediafileServiceImpl.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/MediafileServiceImpl.kt
index 6a74971..4c5d8c6 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/MediafileServiceImpl.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/MediafileServiceImpl.kt
@@ -50,8 +50,8 @@
 
     //鏂板濯掍綋鏂囦欢
     override fun addMedifile(mediafileVoList: String, files: Array<MultipartFile>) {
-        logging.info("涓婁紶鏂囦欢鏂规硶璋冪敤")
-        logging.info("mediafileVoList:" + mediafileVoList)
+//        logging.info("涓婁紶鏂囦欢鏂规硶璋冪敤")
+//        logging.info("mediafileVoList:" + mediafileVoList)
         val mapper = ObjectMapper()
 
         //json杞琽bject
diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/SearchServiceImpl.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/SearchServiceImpl.kt
index c7be139..51c20ef 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/SearchServiceImpl.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/SearchServiceImpl.kt
@@ -12,6 +12,7 @@
 import cn.flightfeather.supervision.domain.ds1.mapper.*
 import cn.flightfeather.supervision.domain.ds1.repository.EvaluationRep
 import cn.flightfeather.supervision.domain.ds1.repository.EvaluationRuleRep
+import cn.flightfeather.supervision.domain.ds1.repository.SceneRep
 import cn.flightfeather.supervision.domain.ds2.mapper.LedgerRecordMapper
 import cn.flightfeather.supervision.domain.ds2.mapper.LedgerSubTypeMapper
 import cn.flightfeather.supervision.domain.ds2.mapper.UserMapMapper
@@ -62,6 +63,7 @@
     val taskService: TaskService,
     private val evaluationRep: EvaluationRep,
     private val evaluationRuleRep: EvaluationRuleRep,
+    private val sceneRep: SceneRep,
     @Value("\${filePath}") var filePath: String,
     @Value("\${imgPath}") var imgPath: String,
 ) : SearchService {
@@ -560,15 +562,22 @@
     }
 
     override fun getScoreDetail(subTaskId: String): ScoreDetail {
+        //鍦烘櫙淇℃伅
+        val scene = sceneRep.findBySubTask(subTaskId)
+        //鎬诲垎
+        val evaluation = evaluationRep.findBySubtask(subTaskId)
         //瀛愯鍒欓�愭潯寰楀垎
         val subRuleScores = evaluationRep.findItemEvaluation(subTaskId)
+        if (subRuleScores.isEmpty()) throw BizException("鏃犺瘎浼拌褰�")
         //璇勫垎鎬昏鍒�
         val rule = evaluationRuleRep.findAutoEvaluationRule(subTaskId) ?: throw BizException("鏈壘鍒扮浉鍏宠嚜鍔ㄨ瘎浼拌鍒�")
         //鎬昏鍒欏搴旂殑璇勫垎瀛愯鍒�
         val subRules = evaluationRuleRep.findSubRule(rule.guid)
         //鏌ヨ缁撴灉
         val result = ScoreDetail()
+        result.status = if (scene?.extension1.equals("1")) "鍦ㄥ缓" else "瀹屽伐"
 
+        result.updateTime = evaluation?.updatedate
         subRules.forEach {
             it.ertype ?: return@forEach
             result.addDetail(result.details, it, it.ertype!! - 1, subRuleScores, true)
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 dafb0c5..37f67a2 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
@@ -7,6 +7,7 @@
 import cn.flightfeather.supervision.common.utils.Constant
 import cn.flightfeather.supervision.common.utils.DateUtil
 import cn.flightfeather.supervision.common.utils.UUIDGenerator
+import cn.flightfeather.supervision.domain.ds1.repository.SubTaskRep
 import cn.flightfeather.supervision.domain.ds1.repository.TaskRep
 import cn.flightfeather.supervision.lightshare.service.SubtaskService
 import cn.flightfeather.supervision.lightshare.service.TaskService
@@ -27,6 +28,7 @@
     private val subtaskMapper: SubtaskMapper,
     private val aopEvaluation: AopEvaluation,
     private val taskRep: TaskRep,
+    private val subTaskRep: SubTaskRep,
 ) : SubtaskService {
 
     val dateUtil = DateUtil()
@@ -393,7 +395,7 @@
 //        //鏍规嵁鏃ユ湡鑾峰彇鏃ヤ换鍔�
 //        val daytaskVo = taskService.findByDate(dateUtil.getDate(subtask.planstarttime)!!)
 
-        //2019.3.1 by Riku 搴旇鐩存帴鏍规嵁瀛愪换鍔$殑鏃ヤ换鍔d鏌ヨ鏃ヤ换鍔�
+        //搴旇鐩存帴鏍规嵁瀛愪换鍔$殑鏃ヤ换鍔d鏌ヨ鏃ヤ换鍔�
         val daytaskVo = taskService.findByID(subtask.tsguid!!)
 
         //鍒ゆ柇鏄惁鏈夋棩浠诲姟
@@ -442,28 +444,28 @@
         }
 
         //鍒ゆ柇瀵瑰簲椤跺眰浠诲姟鐨勬墽琛岀姸鎬�
-        val daytaskVolist = taskService.getDayTaskByTaskID(toptaskVo.tguid!!)
-        val iterator: Iterator<TaskVo> = daytaskVolist.iterator()
-        if (daytaskVo.runingstatus == Constant.TaskProgress.RUNINGSTATUS3.text
-                && toptaskVo.runingstatus == Constant.TaskProgress.RUNINGSTATUS2.text) {
-            var bool = false
-            while (iterator.hasNext()) {
-                val tmp = iterator.next()
-                if (tmp.runingstatus != Constant.TaskProgress.RUNINGSTATUS3.text) {
-                    bool = true
-                    break
-                }
-            }
-            if (!bool){
-                toptaskVo.runingstatus = Constant.TaskProgress.RUNINGSTATUS3.text
-            }
-        }
-        else if (daytaskVo.runingstatus != toptaskVo.runingstatus){
-            toptaskVo.runingstatus = Constant.TaskProgress.RUNINGSTATUS2.text
-        }
-        val toptask = Task()
-        BeanUtils.copyProperties(toptaskVo, toptask)
-        taskMapper.updateByPrimaryKeySelective(toptask)
+//        val daytaskVolist = taskService.getDayTaskByTaskID(toptaskVo.tguid!!)
+//        val iterator: Iterator<TaskVo> = daytaskVolist.iterator()
+//        if (daytaskVo.runingstatus == Constant.TaskProgress.RUNINGSTATUS3.text
+//                && toptaskVo.runingstatus == Constant.TaskProgress.RUNINGSTATUS2.text) {
+//            var bool = false
+//            while (iterator.hasNext()) {
+//                val tmp = iterator.next()
+//                if (tmp.runingstatus != Constant.TaskProgress.RUNINGSTATUS3.text) {
+//                    bool = true
+//                    break
+//                }
+//            }
+//            if (!bool){
+//                toptaskVo.runingstatus = Constant.TaskProgress.RUNINGSTATUS3.text
+//            }
+//        }
+//        else if (daytaskVo.runingstatus != toptaskVo.runingstatus){
+//            toptaskVo.runingstatus = Constant.TaskProgress.RUNINGSTATUS2.text
+//        }
+//        val toptask = Task()
+//        BeanUtils.copyProperties(toptaskVo, toptask)
+//        taskMapper.updateByPrimaryKeySelective(toptask)
 
         //瀵瑰凡缁撴潫鐨勫瓙浠诲姟杩涜鑷姩璇勫垎
         if (subtask.status == Constant.TaskProgress.RUNINGSTATUS3.text) {
@@ -946,8 +948,8 @@
         return subtaskMapper.getSummary(topTaskId, sceneTypeId)
     }
 
-    override fun getSummaryByArea(areaVo: AreaVo): List<TaskProgressVo> {
-        areaVo.scensetypeid ?: throw BizException("缂哄皯鍦烘櫙绫诲瀷鍙傛暟")
+    override fun getTaskProgressByArea(areaVo: AreaVo): List<TaskProgressVo> {
+//        areaVo.scensetypeid ?: throw BizException("缂哄皯鍦烘櫙绫诲瀷鍙傛暟")
         val res = mutableListOf<TaskProgressVo>()
         taskRep.findTasks(areaVo).forEach {t->
             if (t?.tguid == null) return@forEach
@@ -973,4 +975,8 @@
     override fun getByScene(sceneId: String, startTime: LocalDateTime?, endTime: LocalDateTime?): List<SubTaskSummary> {
         return subtaskMapper.getSummaryByScene(sceneId, startTime, endTime)
     }
+
+    override fun getSummaryByArea(areaVo: AreaVo): List<SubTaskSummary> {
+        return subTaskRep.findSummary(areaVo)
+    }
 }
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/AutoScoreResultVo.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/AutoScoreResultVo.kt
index 4ff51a7..f238900 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/AutoScoreResultVo.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/AutoScoreResultVo.kt
@@ -12,6 +12,7 @@
     var userId: String? = null
     var userName: String? = null
     var isEnable: Boolean = true
+    var sceneIndex: Int? = null
     var sceneId: String? = null
     var sceneName: String? = null
     var pName: String? = null
diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/EvaluationVo.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/EvaluationVo.kt
index efd7cec..ca80a1d 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/EvaluationVo.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/EvaluationVo.kt
@@ -3,17 +3,27 @@
 import cn.flightfeather.supervision.domain.ds1.entity.Evaluationsubrule2
 import cn.flightfeather.supervision.domain.ds1.entity.Itemevaluation
 import com.fasterxml.jackson.annotation.JsonInclude
+import java.util.*
 
 /**
  * 璇勫垎瑙勫垯鍙婂緱鍒�
  */
 @JsonInclude(JsonInclude.Include.NON_NULL)
 class ScoreDetail {
+    // 宸ュ湴鐘舵�侊紙鍦ㄥ缓鎴栧畬宸ワ級
+    var status: String? = null
+
     // 鎬诲垎
     var totalScore: Int = 0
 
     // 寰楀垎
     var score: Int = 0
+
+    // 瑙勮寖鎬х瓑绾�
+    var grade: String? = null
+
+    // 鏇存柊鏃堕棿
+    var updateTime: Date? = null
 
     // 寰楀垎缁嗗垯
     var details = mutableListOf<ScoreItem>()
@@ -69,12 +79,27 @@
     fun calScore() {
         details.forEach {
             totalScore += it.maxScore
-            if (it.gradeMode == "minus_mode") {
-                score += (it.score + it.maxScore)
-            } else if (it.gradeMode == "add_mode") {
-                score += it.score
+            score += when (it.gradeMode) {
+                "minus_mode" -> {
+                    (it.score + it.maxScore)
+                }
+                "add_mode" -> {
+                    it.score
+                }
+                else -> {
+                    (it.score + it.maxScore)
+                }
             }
         }
+        grade = when {
+            score >= 95 -> "瑙勮寖"
+            // 鍩烘湰瑙勮寖(90..94)鍜岃鑼冿紙>=95锛�
+            score >= 90 -> "鍩烘湰瑙勮寖"
+            // 涓嶈鑼�
+            score >= 50 -> "涓嶈鑼�"
+            // 涓ラ噸涓嶈鑼�
+            else -> "涓ラ噸涓嶈鑼�"
+        }
     }
 }
 
diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/SubTaskSummary.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/SubTaskSummary.kt
index d45b1fa..a89e990 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/SubTaskSummary.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/SubTaskSummary.kt
@@ -1,20 +1,37 @@
 package cn.flightfeather.supervision.lightshare.vo
 
+import cn.flightfeather.supervision.domain.ds1.entity.Inspection
+import cn.flightfeather.supervision.domain.ds1.entity.Scense
+import cn.flightfeather.supervision.domain.ds1.entity.Subtask
+import java.math.BigDecimal
 import java.util.*
 
 class SubTaskSummary {
+    // 宸℃煡浠诲姟
     var stGuid: String? = null
     var stName: String? = null
-    var insGuid: String? = null
-    var sceneId: String? = null
-    var sceneName: String? = null
-    var sceneType: String? = null
     var stPlanTime: Date? = null
     var stStatus:String? = null
+    var subtask: Subtask? = null
 
+    // 宸℃煡鎵ц璁板綍
+    var insGuid: String? = null
+    var inspection: Inspection? = null
+
+    // 瀵瑰簲鍦烘櫙淇℃伅
+    var sceneId: String? = null
+    var sceneName: String? = null
+    var sceneTypeId: Byte? = null
+    var sceneType: String? = null
+    var sceneIndex: Int? = null
+    var longitude: BigDecimal? = null
+    var latitude: BigDecimal? = null
+    var location: String? = null
+    var scene: Scense? = null
+
+    // 闂鏁存敼鍙婂叾瀵瑰簲瀹℃牳鐨勮鏁�
     var proNum = 0
     var changeNum = 0
-
     var proCheckedNum: Int = 0
     var changeCheckedNum: Int = 0
 }
\ No newline at end of file
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 8bb3c96..dca0a62 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/web/SubtaskController.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/web/SubtaskController.kt
@@ -4,7 +4,6 @@
 import cn.flightfeather.supervision.lightshare.service.SubtaskService
 import cn.flightfeather.supervision.lightshare.vo.AreaVo
 import cn.flightfeather.supervision.lightshare.vo.TaskVo
-import com.fasterxml.jackson.annotation.JsonFormat
 import io.swagger.annotations.Api
 import io.swagger.annotations.ApiOperation
 import org.springframework.format.annotation.DateTimeFormat
@@ -76,9 +75,9 @@
 
     @ApiOperation("鑾峰彇鏌愮被鍦烘櫙鐨勫贰鏌ヤ换鍔$粺璁′俊鎭�")
     @PostMapping("/summary/area")
-    fun getSummaryByArea(
+    fun getTaskProgressByArea(
         @RequestBody areaVo: AreaVo,
-    ) = subtaskService.getSummaryByArea(areaVo)
+    ) = resPack { subtaskService.getTaskProgressByArea(areaVo) }
 
     @ApiOperation("鑾峰彇鏌愪釜鍦烘櫙鐨勫贰鏌ヤ换鍔�")
     @GetMapping("/byScene")
@@ -87,4 +86,10 @@
         @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") startTime: LocalDateTime?,
         @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") endTime: LocalDateTime?,
     ) = subtaskService.getByScene(sceneId, startTime, endTime)
+
+    @ApiOperation("鑾峰彇鏌愮被鍦烘櫙鐨勫贰鏌ヤ换鍔$粺璁′俊鎭�")
+    @PostMapping("/summary/area/problem")
+    fun getSummaryByArea(
+        @RequestBody areaVo: AreaVo,
+    ) = resPack { subtaskService.getSummaryByArea(areaVo) }
 }
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/scheduler/ScheduleService.kt b/src/main/kotlin/cn/flightfeather/supervision/scheduler/ScheduleService.kt
new file mode 100644
index 0000000..45ebef0
--- /dev/null
+++ b/src/main/kotlin/cn/flightfeather/supervision/scheduler/ScheduleService.kt
@@ -0,0 +1,59 @@
+package cn.flightfeather.supervision.scheduler
+
+import cn.flightfeather.supervision.business.bgtask.AopTaskCtrl
+import cn.flightfeather.supervision.business.bgtask.TaskFinishSubtask
+import cn.flightfeather.supervision.business.bgtask.TaskFinishTopTask
+import cn.flightfeather.supervision.lightshare.vo.AreaVo
+import org.slf4j.Logger
+import org.slf4j.LoggerFactory
+import org.springframework.scheduling.annotation.Async
+import org.springframework.scheduling.annotation.Scheduled
+import org.springframework.stereotype.Component
+import java.time.LocalDateTime
+
+/**
+ * 瀹氭椂浠诲姟璋冨害
+ * 涓�涓猚ron琛ㄨ揪寮忔湁鑷冲皯6涓紙涔熷彲鑳�7涓級鏈夌┖鏍煎垎闅旂殑鏃堕棿鍏冪礌銆傛寜椤哄簭渚濇涓猴細
+ * 绉掞紙0~59锛�
+ * 鍒嗛挓锛�0~59锛�
+ * 灏忔椂锛�0~23锛�
+ * 澶╋紙1~31锛�
+ * 鏈堬紙1~12锛�
+ * 鏄熸湡锛�1~7 1=SUN 鎴� SUN锛孧ON锛孴UE锛學ED锛孴HU锛孎RI锛孲AT锛�
+ */
+@Component
+class ScheduleService(
+    private val taskFinishSubtask: TaskFinishSubtask,
+    private val taskFinishTopTask: TaskFinishTopTask,
+    private val aopTaskCtrl: AopTaskCtrl,
+) {
+    val logger: Logger = LoggerFactory.getLogger(ScheduleService::class.java)
+
+    @Async
+    @Scheduled(cron = "0 0 0 * * *")
+    fun eachDay() {
+        logger.info("=====>>>>>姣忔棩浠诲姟鎵ц {}", System.currentTimeMillis())
+        taskFinishSubtask.handle()
+        logger.info("=====>>>>>姣忔棩浠诲姟缁撴潫 {}", System.currentTimeMillis())
+    }
+
+    @Async
+    @Scheduled(cron = "0 0 0 * * MON")
+    fun eachWeek() {
+        logger.info("=====>>>>>姣忓懆浠诲姟鎵ц {}", System.currentTimeMillis())
+        // 鎵ц涓婂懆鐨勮嚜璇勪换鍔�
+        aopTaskCtrl.startAllEvaluation(LocalDateTime.now())
+        logger.info("=====>>>>>姣忓懆浠诲姟缁撴潫 {}", System.currentTimeMillis())
+    }
+
+    @Async
+    @Scheduled(cron = "0 0 0 2 * *")
+    fun eachMonth() {
+        logger.info("=====>>>>>姣忔湀浠诲姟鎵ц {}", System.currentTimeMillis())
+        // 鎵ц涓婁釜鏈堢殑瀹屾暣鑷瘎浠诲姟
+        aopTaskCtrl.startAll(LocalDateTime.now().minusMonths(1))
+        // 鎵ц椤跺眰浠诲姟鑷姩缁撴潫浠诲姟
+        taskFinishTopTask.handle()
+        logger.info("=====>>>>>姣忔湀浠诲姟缁撴潫 {}", System.currentTimeMillis())
+    }
+}
\ No newline at end of file
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index fe97bae..3818bca 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -71,8 +71,12 @@
 
 # mybatis 閰嶇疆
 mybatis:
-  type-aliases-package: cn.flightfeather.supervision.domain.ds1.entity, cn.flightfeather.supervision.domain.ds2.entity
+  type-aliases-package: cn.flightfeather.supervision.domain.ds1.entity, cn.flightfeather.supervision.domain.ds2.entity, cn.flightfeather.supervision.domain.ds3.entity
   mapper-locations: classpath*:mapper/**/*.xml
+  configuration:
+    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+  #    log-impl: org.apache.ibatis.logging.nologging.NoLoggingImpl
+  #    map-underscore-to-camel-case: true
 
 ## 閫氱敤 Mapper 閰嶇疆
 #mappers 澶氫釜鎺ュ彛鏃堕�楀彿闅斿紑
@@ -83,7 +87,9 @@
 
 #logging璺緞璁剧疆
 logging:
-    config: classpath:log4j2.xml
+#  config: classpath:log4j2.xml
+  level:
+    cn.flightfeather.supervision.domain: debug
 
 springfox:
   documentation:
diff --git a/src/main/resources/log4j2.xml b/src/main/resources/log4j2.xml
index b996538..281c647 100644
--- a/src/main/resources/log4j2.xml
+++ b/src/main/resources/log4j2.xml
@@ -59,24 +59,28 @@
 	<!--鐒跺悗瀹氫箟logger锛屽彧鏈夊畾涔変簡logger骞跺紩鍏ョ殑appender锛宎ppender鎵嶄細鐢熸晥-->
 	<Loggers>
 		<!--杩囨护鎺塻pring鍜宮ybatis鐨勪竴浜涙棤鐢ㄧ殑DEBUG淇℃伅-->
-		<logger name="org.springframework" level="INFO">
+		<logger name="org.springframework" level="ERROR">
 			<appender-ref ref="Console"/>
 		</logger>
 		<logger name="org.mybatis" level="DEBUG">
-<!--			<appender-ref ref="Console"/>-->
+			<appender-ref ref="Console"/>
 		</logger>
 		<logger name="org.apache.ibatis" level="DEBUG">
-<!--			<appender-ref ref="Console"/>-->
+			<appender-ref ref="Console"/>
 		</logger>
+        <Logger name="java.sql.PreparedStatement" level="DEBUG" >
+            <appender-ref ref="Console"/>
+        </Logger>
 
 		<logger name="cn.flightfeather.supervision" level="INFO" includeLocation="true" additivity="false">
 			<appender-ref ref="Console"/>
+			<appender-ref ref="RollingFileInfo"/>
 		</logger>
 
 		<root level="all">
-			<!--<appender-ref ref="Console"/>-->
-<!--			<appender-ref ref="RollingFileInfo"/>-->
-<!--			<appender-ref ref="RollingFileWarn"/>-->
+			<appender-ref ref="Console"/>
+			<appender-ref ref="RollingFileInfo"/>
+			<appender-ref ref="RollingFileWarn"/>
 			<appender-ref ref="RollingFileError"/>
 		</root>
 	</Loggers>
diff --git a/src/main/resources/mapper/ds1/EvaluationMapper.xml b/src/main/resources/mapper/ds1/EvaluationMapper.xml
index 2be5553..11fbaf9 100644
--- a/src/main/resources/mapper/ds1/EvaluationMapper.xml
+++ b/src/main/resources/mapper/ds1/EvaluationMapper.xml
@@ -57,6 +57,7 @@
     <result column="userId" jdbcType="VARCHAR" property="userId"/>
     <result column="userName" jdbcType="VARCHAR" property="userName"/>
     <result column="isEnable" jdbcType="BIT" property="isEnable"/>
+    <result column="sceneIndex" property="sceneIndex" jdbcType="INTEGER" />
     <result column="sceneId" jdbcType="VARCHAR" property="sceneId"/>
     <result column="sceneName" jdbcType="VARCHAR" property="sceneName"/>
     <result column="pName" jdbcType="VARCHAR" property="pName"/>
@@ -73,6 +74,7 @@
     c.UI_GUID AS userId,
     c.UI_RealName AS userName,
     c.UI_IsEnable AS isEnable,
+    b.S_Index AS sceneIndex,
     b.S_GUID AS sceneId,
     b.S_Name AS sceneName,
     b.S_ProvinceName AS pName,
diff --git a/src/main/resources/mapper/ds1/InspectionMapper.xml b/src/main/resources/mapper/ds1/InspectionMapper.xml
index 66fdc3c..c606054 100644
--- a/src/main/resources/mapper/ds1/InspectionMapper.xml
+++ b/src/main/resources/mapper/ds1/InspectionMapper.xml
@@ -8,34 +8,34 @@
     <id column="I_GUID" property="guid" jdbcType="VARCHAR" />
     <result column="ST_GUID" property="stguid" jdbcType="VARCHAR" />
     <result column="S_GUID" property="sguid" jdbcType="VARCHAR" />
-    <result column="I_ScenseName" property="iScensename" jdbcType="VARCHAR" />
-    <result column="I_ScenseAddress" property="iScenseaddress" jdbcType="VARCHAR" />
-    <result column="I_IsTogether" property="iIstogether" jdbcType="BIT" />
-    <result column="I_EntourageT" property="iEntouraget" jdbcType="VARCHAR" />
-    <result column="I_EntourageWX" property="iEntouragewx" jdbcType="VARCHAR" />
-    <result column="I_Entourage" property="iEntourage" jdbcType="VARCHAR" />
-    <result column="I_ExecutionStartTime" property="iExecutionstarttime" jdbcType="TIMESTAMP" />
-    <result column="I_ExecutionEndTime" property="iExecutionendtime" jdbcType="TIMESTAMP" />
-    <result column="I_ProblemCount" property="iProblemcount" jdbcType="INTEGER" />
-    <result column="I_IsRechecked" property="iIsrechecked" jdbcType="BIT" />
-    <result column="I_RecheckCount" property="iRecheckcount" jdbcType="INTEGER" />
-    <result column="I_PromissedNum" property="iPromissednum" jdbcType="INTEGER" />
-    <result column="I_ChangedNum" property="iChangednum" jdbcType="INTEGER" />
-    <result column="I_IsChanged" property="iIschanged" jdbcType="BIT" />
-    <result column="I_IsRvaluated" property="iIsrvaluated" jdbcType="BIT" />
-    <result column="I_isPromissed" property="iIspromissed" jdbcType="BIT" />
-    <result column="I_PromissedTime" property="iPromissedtime" jdbcType="TIMESTAMP" />
-    <result column="I_PromissedUserGUID" property="iPromisseduserguid" jdbcType="VARCHAR" />
-    <result column="I_PromissedUserName" property="iPromissedusername" jdbcType="VARCHAR" />
-    <result column="I_PromissedUserRealName" property="iPromisseduserrealname" jdbcType="VARCHAR" />
-    <result column="I_PromissedWay" property="iPromissedway" jdbcType="VARCHAR" />
-    <result column="I_PromissedDeadline" property="iPromisseddeadline" jdbcType="TIMESTAMP" />
-    <result column="I_PromissBookPath" property="iPromissbookpath" jdbcType="VARCHAR" />
-    <result column="I_SignPath" property="iSignpath" jdbcType="VARCHAR" />
-    <result column="I_Extension1" property="iExtension1" jdbcType="VARCHAR" />
-    <result column="I_Extension2" property="iExtension2" jdbcType="VARCHAR" />
-    <result column="I_Extension3" property="iExtension3" jdbcType="VARCHAR" />
-    <result column="I_Remark" property="iRemark" jdbcType="VARCHAR" />
+    <result column="I_ScenseName" property="scensename" jdbcType="VARCHAR" />
+    <result column="I_ScenseAddress" property="scenseaddress" jdbcType="VARCHAR" />
+    <result column="I_IsTogether" property="istogether" jdbcType="BIT" />
+    <result column="I_EntourageT" property="entouraget" jdbcType="VARCHAR" />
+    <result column="I_EntourageWX" property="entouragewx" jdbcType="VARCHAR" />
+    <result column="I_Entourage" property="entourage" jdbcType="VARCHAR" />
+    <result column="I_ExecutionStartTime" property="executionstarttime" jdbcType="TIMESTAMP" />
+    <result column="I_ExecutionEndTime" property="executionendtime" jdbcType="TIMESTAMP" />
+    <result column="I_ProblemCount" property="problemcount" jdbcType="INTEGER" />
+    <result column="I_IsRechecked" property="isrechecked" jdbcType="BIT" />
+    <result column="I_RecheckCount" property="recheckcount" jdbcType="INTEGER" />
+    <result column="I_PromissedNum" property="promissednum" jdbcType="INTEGER" />
+    <result column="I_ChangedNum" property="changednum" jdbcType="INTEGER" />
+    <result column="I_IsChanged" property="ischanged" jdbcType="BIT" />
+    <result column="I_IsRvaluated" property="isrvaluated" jdbcType="BIT" />
+    <result column="I_isPromissed" property="ispromissed" jdbcType="BIT" />
+    <result column="I_PromissedTime" property="promissedtime" jdbcType="TIMESTAMP" />
+    <result column="I_PromissedUserGUID" property="promisseduserguid" jdbcType="VARCHAR" />
+    <result column="I_PromissedUserName" property="promissedusername" jdbcType="VARCHAR" />
+    <result column="I_PromissedUserRealName" property="promisseduserrealname" jdbcType="VARCHAR" />
+    <result column="I_PromissedWay" property="promissedway" jdbcType="VARCHAR" />
+    <result column="I_PromissedDeadline" property="promisseddeadline" jdbcType="TIMESTAMP" />
+    <result column="I_PromissBookPath" property="promissbookpath" jdbcType="VARCHAR" />
+    <result column="I_SignPath" property="signpath" jdbcType="VARCHAR" />
+    <result column="I_Extension1" property="extension1" jdbcType="VARCHAR" />
+    <result column="I_Extension2" property="extension2" jdbcType="VARCHAR" />
+    <result column="I_Extension3" property="extension3" jdbcType="VARCHAR" />
+    <result column="I_Remark" property="remark" jdbcType="VARCHAR" />
   </resultMap>
 
   <sql id="Base_Column_List" >
diff --git a/src/main/resources/mapper/ds1/SubtaskMapper.xml b/src/main/resources/mapper/ds1/SubtaskMapper.xml
index e3ddd41..e3a8cfe 100644
--- a/src/main/resources/mapper/ds1/SubtaskMapper.xml
+++ b/src/main/resources/mapper/ds1/SubtaskMapper.xml
@@ -1,185 +1,247 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
-<mapper namespace="cn.flightfeather.supervision.domain.ds1.mapper.SubtaskMapper" >
-  <resultMap id="BaseResultMap" type="cn.flightfeather.supervision.domain.ds1.entity.Subtask" >
-    <!--
-      WARNING - @mbg.generated
-    -->
-    <id column="ST_GUID" property="stguid" jdbcType="VARCHAR" />
-    <result column="T_GUID" property="tguid" jdbcType="VARCHAR" />
-    <result column="TS_GUID" property="tsguid" jdbcType="VARCHAR" />
-    <result column="ST_name" property="name" jdbcType="VARCHAR" />
-    <result column="ST_Priority" property="priority" jdbcType="BIT" />
-    <result column="ST_TypeNo" property="typeno" jdbcType="TINYINT" />
-    <result column="ST_Type" property="type" jdbcType="VARCHAR" />
-    <result column="ST_ProvinceCode" property="provincecode" jdbcType="VARCHAR" />
-    <result column="ST_ProvinceName" property="provincename" jdbcType="VARCHAR" />
-    <result column="ST_CityCode" property="citycode" jdbcType="VARCHAR" />
-    <result column="ST_CityName" property="cityname" jdbcType="VARCHAR" />
-    <result column="ST_DistrictCode" property="districtcode" jdbcType="VARCHAR" />
-    <result column="ST_DistrictName" property="districtname" jdbcType="VARCHAR" />
-    <result column="ST_TownCode" property="towncode" jdbcType="VARCHAR" />
-    <result column="ST_TownName" property="townname" jdbcType="VARCHAR" />
-    <result column="ST_ScenseName" property="scensename" jdbcType="VARCHAR" />
-    <result column="ST_ScenseID" property="scenseid" jdbcType="VARCHAR" />
-    <result column="ST_ScenseAddress" property="scenseaddress" jdbcType="VARCHAR" />
-    <result column="ST_DeadLineType" property="deadlinetype" jdbcType="VARCHAR" />
-    <result column="ST_PlanStartTime" property="planstarttime" jdbcType="TIMESTAMP" />
-    <result column="ST_PlanEndTime" property="planendtime" jdbcType="TIMESTAMP" />
-    <result column="ST_DeployerGUID" property="deployerguid" jdbcType="VARCHAR" />
-    <result column="ST_DeployerUserName" property="deployerusername" jdbcType="VARCHAR" />
-    <result column="ST_DeployerRealName" property="deployerrealname" jdbcType="VARCHAR" />
-    <result column="ST_DeployTime" property="deploytime" jdbcType="TIMESTAMP" />
-    <result column="ST_ExecutionStartTime" property="executionstarttime" jdbcType="TIMESTAMP" />
-    <result column="ST_ExecutionEndTime" property="executionendtime" jdbcType="TIMESTAMP" />
-    <result column="ST_ExecutorGUIDs" property="executorguids" jdbcType="VARCHAR" />
-    <result column="ST_ExecutorUserNames" property="executorusernames" jdbcType="VARCHAR" />
-    <result column="ST_ExecutorRealTimes" property="executorrealtimes" jdbcType="VARCHAR" />
-    <result column="ST_Status" property="status" jdbcType="VARCHAR" />
-    <result column="ST_NotifedCount" property="notifedcount" jdbcType="INTEGER" />
-    <result column="ST_RuleList" property="rulelist" jdbcType="VARCHAR" />
-    <result column="ST_AssessorGUID" property="stAssessorguid" jdbcType="VARCHAR" />
-    <result column="ST_AssessorUserName" property="assessorusername" jdbcType="VARCHAR" />
-    <result column="ST_AssessorRealName" property="assessorrealname" jdbcType="VARCHAR" />
-    <result column="ST_AssessTime" property="assesstime" jdbcType="TIMESTAMP" />
-    <result column="ST_AssessResult" property="assessresult" jdbcType="VARCHAR" />
-    <result column="ST_ThirdAssessorGUID" property="thirdassessorguid" jdbcType="VARCHAR" />
-    <result column="ST_ThirdAssessorUserName" property="thirdassessorusername" jdbcType="VARCHAR" />
-    <result column="ST_ThirdAssessorRealName" property="thirdassessorrealname" jdbcType="VARCHAR" />
-    <result column="ST_ThirdAssessTime" property="thirdassesstime" jdbcType="TIMESTAMP" />
-    <result column="ST_ThirdAssessResult" property="thirdassessresult" jdbcType="VARCHAR" />
-    <result column="ST_Extension1" property="extension1" jdbcType="VARCHAR" />
-    <result column="ST_Extension2" property="extension2" jdbcType="VARCHAR" />
-    <result column="ST_Extension3" property="extension3" jdbcType="VARCHAR" />
-    <result column="ST_Remark" property="remark" jdbcType="VARCHAR" />
-  </resultMap>
-  
-  <resultMap id="SubtaskSearchResultVo" type="cn.flightfeather.supervision.lightshare.vo.SubtaskSearchResultVo">
-    <result column="subTaskId" property="subTaskId" jdbcType="VARCHAR" />
-    <result column="districtName" property="districtName" jdbcType="VARCHAR" />
-    <result column="townName" property="townName" jdbcType="VARCHAR" />
-    <result column="sceneId" property="sceneId" jdbcType="VARCHAR" />
-    <result column="sceneName" property="sceneName" jdbcType="VARCHAR" />
-    <result column="sceneTypeId" property="sceneTypeId" jdbcType="TINYINT" />
-    <result column="sceneType" property="sceneType" jdbcType="VARCHAR" />
-    <result column="sceneAddress" property="sceneAddress" jdbcType="VARCHAR" />
-    <result column="planStartTime" property="planStartTime" jdbcType="TIMESTAMP" />
-    <result column="planEndTime" property="planEndTime" jdbcType="TIMESTAMP" />
-    <result column="status" property="status" jdbcType="VARCHAR" />
-    <result column="path" property="path" jdbcType="VARCHAR" />
-  </resultMap>
-
-  <resultMap id="SubTaskSearchResultVo2" type="cn.flightfeather.supervision.lightshare.vo.SubTaskSearchResultVo2">
-    <result column="subTaskId" property="subTaskId" jdbcType="VARCHAR" />
-    <result column="districtName" property="districtName" jdbcType="VARCHAR" />
-    <result column="townName" property="townName" jdbcType="VARCHAR" />
-    <result column="sceneId" property="sceneId" jdbcType="VARCHAR" />
-    <result column="sceneName" property="sceneName" jdbcType="VARCHAR" />
-    <result column="sceneTypeId" property="sceneTypeId" jdbcType="TINYINT" />
-    <result column="sceneType" property="sceneType" jdbcType="VARCHAR" />
-    <result column="sceneAddress" property="sceneAddress" jdbcType="VARCHAR" />
-    <result column="planStartTime" property="planStartTime" jdbcType="TIMESTAMP" />
-    <result column="planEndTime" property="planEndTime" jdbcType="TIMESTAMP" />
-    <result column="status" property="status" jdbcType="VARCHAR" />
-    <result column="path" property="path" jdbcType="VARCHAR" />
-
-    <result column="problemId" property="problemId" jdbcType="VARCHAR" />
-    <result column="problemName" property="problemName" jdbcType="VARCHAR" />
-      <result column="problemCode" property="problemCode" jdbcType="VARCHAR" />
-    <result column="longitude" property="longitude" jdbcType="DECIMAL" />
-    <result column="latitude" property="latitude" jdbcType="DECIMAL" />
-    <result column="location" property="location" jdbcType="VARCHAR" />
-    <result column="rectification" property="rectification" jdbcType="BIT" />
-    <result column="rectificationTime" property="rectificationTime" jdbcType="TIMESTAMP" />
-    <result column="updateTime" property="updateTime" jdbcType="TIMESTAMP" />
-
-    <result column="mGuid" property="mGuid" jdbcType="VARCHAR" />
-    <result column="mExtension1" property="mExtension1" jdbcType="VARCHAR" />
-    <result column="isChanged" property="isChanged" jdbcType="BIT" />
-  </resultMap>
-
-    <resultMap id="SubtaskVoMap" type="cn.flightfeather.supervision.lightshare.vo.SubtaskVo" >
-        <id column="ST_GUID" property="stguid" jdbcType="VARCHAR" />
-        <result column="T_GUID" property="tguid" jdbcType="VARCHAR" />
-        <result column="TS_GUID" property="tsguid" jdbcType="VARCHAR" />
-        <result column="ST_name" property="name" jdbcType="VARCHAR" />
-        <result column="ST_Priority" property="priority" jdbcType="BIT" />
-        <result column="ST_TypeNo" property="typeno" jdbcType="TINYINT" />
-        <result column="ST_Type" property="type" jdbcType="VARCHAR" />
-        <result column="ST_ProvinceCode" property="provincecode" jdbcType="VARCHAR" />
-        <result column="ST_ProvinceName" property="provincename" jdbcType="VARCHAR" />
-        <result column="ST_CityCode" property="citycode" jdbcType="VARCHAR" />
-        <result column="ST_CityName" property="cityname" jdbcType="VARCHAR" />
-        <result column="ST_DistrictCode" property="districtcode" jdbcType="VARCHAR" />
-        <result column="ST_DistrictName" property="districtname" jdbcType="VARCHAR" />
-        <result column="ST_TownCode" property="towncode" jdbcType="VARCHAR" />
-        <result column="ST_TownName" property="townname" jdbcType="VARCHAR" />
-        <result column="ST_ScenseName" property="scensename" jdbcType="VARCHAR" />
-        <result column="S_TypeID" property="scenseTypeId" jdbcType="VARCHAR" />
-        <result column="ST_ScenseID" property="scenseid" jdbcType="VARCHAR" />
-        <result column="ST_ScenseAddress" property="scenseaddress" jdbcType="VARCHAR" />
-        <result column="ST_DeadLineType" property="deadlinetype" jdbcType="VARCHAR" />
-        <result column="ST_PlanStartTime" property="planstarttime" jdbcType="TIMESTAMP" />
-        <result column="ST_PlanEndTime" property="planendtime" jdbcType="TIMESTAMP" />
-        <result column="ST_DeployerGUID" property="deployerguid" jdbcType="VARCHAR" />
-        <result column="ST_DeployerUserName" property="deployerusername" jdbcType="VARCHAR" />
-        <result column="ST_DeployerRealName" property="deployerrealname" jdbcType="VARCHAR" />
-        <result column="ST_DeployTime" property="deploytime" jdbcType="TIMESTAMP" />
-        <result column="ST_ExecutionStartTime" property="executionstarttime" jdbcType="TIMESTAMP" />
-        <result column="ST_ExecutionEndTime" property="executionendtime" jdbcType="TIMESTAMP" />
-        <result column="ST_ExecutorGUIDs" property="executorguids" jdbcType="VARCHAR" />
-        <result column="ST_ExecutorUserNames" property="executorusernames" jdbcType="VARCHAR" />
-        <result column="ST_ExecutorRealTimes" property="executorrealtimes" jdbcType="VARCHAR" />
-        <result column="ST_Status" property="status" jdbcType="VARCHAR" />
-        <result column="ST_NotifedCount" property="notifedcount" jdbcType="INTEGER" />
-        <result column="ST_RuleList" property="rulelist" jdbcType="VARCHAR" />
-        <result column="ST_AssessorGUID" property="stAssessorguid" jdbcType="VARCHAR" />
-        <result column="ST_AssessorUserName" property="assessorusername" jdbcType="VARCHAR" />
-        <result column="ST_AssessorRealName" property="assessorrealname" jdbcType="VARCHAR" />
-        <result column="ST_AssessTime" property="assesstime" jdbcType="TIMESTAMP" />
-        <result column="ST_AssessResult" property="assessresult" jdbcType="VARCHAR" />
-        <result column="ST_ThirdAssessorGUID" property="thirdassessorguid" jdbcType="VARCHAR" />
-        <result column="ST_ThirdAssessorUserName" property="thirdassessorusername" jdbcType="VARCHAR" />
-        <result column="ST_ThirdAssessorRealName" property="thirdassessorrealname" jdbcType="VARCHAR" />
-        <result column="ST_ThirdAssessTime" property="thirdassesstime" jdbcType="TIMESTAMP" />
-        <result column="ST_ThirdAssessResult" property="thirdassessresult" jdbcType="VARCHAR" />
-        <result column="ST_Extension1" property="extension1" jdbcType="VARCHAR" />
-        <result column="ST_Extension2" property="extension2" jdbcType="VARCHAR" />
-        <result column="ST_Extension3" property="extension3" jdbcType="VARCHAR" />
-        <result column="ST_Remark" property="remark" jdbcType="VARCHAR" />
+<mapper namespace="cn.flightfeather.supervision.domain.ds1.mapper.SubtaskMapper">
+    <resultMap id="BaseResultMap" type="cn.flightfeather.supervision.domain.ds1.entity.Subtask">
+        <!--
+          WARNING - @mbg.generated
+        -->
+        <id column="ST_GUID" property="stguid" jdbcType="VARCHAR"/>
+        <result column="T_GUID" property="tguid" jdbcType="VARCHAR"/>
+        <result column="TS_GUID" property="tsguid" jdbcType="VARCHAR"/>
+        <result column="ST_name" property="name" jdbcType="VARCHAR"/>
+        <result column="ST_Priority" property="priority" jdbcType="BIT"/>
+        <result column="ST_TypeNo" property="typeno" jdbcType="TINYINT"/>
+        <result column="ST_Type" property="type" jdbcType="VARCHAR"/>
+        <result column="ST_ProvinceCode" property="provincecode" jdbcType="VARCHAR"/>
+        <result column="ST_ProvinceName" property="provincename" jdbcType="VARCHAR"/>
+        <result column="ST_CityCode" property="citycode" jdbcType="VARCHAR"/>
+        <result column="ST_CityName" property="cityname" jdbcType="VARCHAR"/>
+        <result column="ST_DistrictCode" property="districtcode" jdbcType="VARCHAR"/>
+        <result column="ST_DistrictName" property="districtname" jdbcType="VARCHAR"/>
+        <result column="ST_TownCode" property="towncode" jdbcType="VARCHAR"/>
+        <result column="ST_TownName" property="townname" jdbcType="VARCHAR"/>
+        <result column="ST_ScenseName" property="scensename" jdbcType="VARCHAR"/>
+        <result column="ST_ScenseID" property="scenseid" jdbcType="VARCHAR"/>
+        <result column="ST_ScenseAddress" property="scenseaddress" jdbcType="VARCHAR"/>
+        <result column="ST_DeadLineType" property="deadlinetype" jdbcType="VARCHAR"/>
+        <result column="ST_PlanStartTime" property="planstarttime" jdbcType="TIMESTAMP"/>
+        <result column="ST_PlanEndTime" property="planendtime" jdbcType="TIMESTAMP"/>
+        <result column="ST_DeployerGUID" property="deployerguid" jdbcType="VARCHAR"/>
+        <result column="ST_DeployerUserName" property="deployerusername" jdbcType="VARCHAR"/>
+        <result column="ST_DeployerRealName" property="deployerrealname" jdbcType="VARCHAR"/>
+        <result column="ST_DeployTime" property="deploytime" jdbcType="TIMESTAMP"/>
+        <result column="ST_ExecutionStartTime" property="executionstarttime" jdbcType="TIMESTAMP"/>
+        <result column="ST_ExecutionEndTime" property="executionendtime" jdbcType="TIMESTAMP"/>
+        <result column="ST_ExecutorGUIDs" property="executorguids" jdbcType="VARCHAR"/>
+        <result column="ST_ExecutorUserNames" property="executorusernames" jdbcType="VARCHAR"/>
+        <result column="ST_ExecutorRealTimes" property="executorrealtimes" jdbcType="VARCHAR"/>
+        <result column="ST_Status" property="status" jdbcType="VARCHAR"/>
+        <result column="ST_NotifedCount" property="notifedcount" jdbcType="INTEGER"/>
+        <result column="ST_RuleList" property="rulelist" jdbcType="VARCHAR"/>
+        <result column="ST_AssessorGUID" property="stAssessorguid" jdbcType="VARCHAR"/>
+        <result column="ST_AssessorUserName" property="assessorusername" jdbcType="VARCHAR"/>
+        <result column="ST_AssessorRealName" property="assessorrealname" jdbcType="VARCHAR"/>
+        <result column="ST_AssessTime" property="assesstime" jdbcType="TIMESTAMP"/>
+        <result column="ST_AssessResult" property="assessresult" jdbcType="VARCHAR"/>
+        <result column="ST_ThirdAssessorGUID" property="thirdassessorguid" jdbcType="VARCHAR"/>
+        <result column="ST_ThirdAssessorUserName" property="thirdassessorusername" jdbcType="VARCHAR"/>
+        <result column="ST_ThirdAssessorRealName" property="thirdassessorrealname" jdbcType="VARCHAR"/>
+        <result column="ST_ThirdAssessTime" property="thirdassesstime" jdbcType="TIMESTAMP"/>
+        <result column="ST_ThirdAssessResult" property="thirdassessresult" jdbcType="VARCHAR"/>
+        <result column="ST_Extension1" property="extension1" jdbcType="VARCHAR"/>
+        <result column="ST_Extension2" property="extension2" jdbcType="VARCHAR"/>
+        <result column="ST_Extension3" property="extension3" jdbcType="VARCHAR"/>
+        <result column="ST_Remark" property="remark" jdbcType="VARCHAR"/>
     </resultMap>
 
-    <resultMap id="SubTaskSummary" type="cn.flightfeather.supervision.lightshare.vo.SubTaskSummary" >
-        <result column="ST_GUID" property="stGuid" jdbcType="VARCHAR" />
-        <result column="ST_name" property="stName" jdbcType="VARCHAR" />
-        <result column="ST_PlanStartTime" property="stPlanTime" jdbcType="TIMESTAMP" />
-        <result column="ST_Status" property="stStatus" jdbcType="VARCHAR" />
-        <result column="S_GUID" property="sceneId" jdbcType="VARCHAR" />
-        <result column="S_Name" property="sceneName" jdbcType="VARCHAR" />
-        <result column="S_Type" property="sceneType" jdbcType="VARCHAR" />
-        <result column="I_GUID" property="insGuid" jdbcType="VARCHAR" />
-        <result column="proNum" property="proNum" jdbcType="INTEGER" />
-        <result column="changeNum" property="changeNum" jdbcType="INTEGER" />
-        <result column="proCheckedNum" property="proCheckedNum" jdbcType="INTEGER" />
-        <result column="changeCheckedNum" property="changeCheckedNum" jdbcType="INTEGER" />
-    </resultMap>
-  <sql id="Base_Column_List" >
-    <!--
-      WARNING - @mbg.generated
-    -->
-    ST_GUID, T_GUID, TS_GUID, ST_name, ST_Priority, ST_TypeNo, ST_Type, ST_ProvinceCode, 
-    ST_ProvinceName, ST_CityCode, ST_CityName, ST_DistrictCode, ST_DistrictName, ST_TownCode, 
-    ST_TownName, ST_ScenseName, ST_ScenseID, ST_ScenseAddress, ST_DeadLineType, ST_PlanStartTime, 
-    ST_PlanEndTime, ST_DeployerGUID, ST_DeployerUserName, ST_DeployerRealName, ST_DeployTime, 
-    ST_ExecutionStartTime, ST_ExecutionEndTime, ST_ExecutorGUIDs, ST_ExecutorUserNames, 
-    ST_ExecutorRealTimes, ST_Status, ST_NotifedCount, ST_RuleList, ST_AssessorGUID, ST_AssessorUserName, 
-    ST_AssessorRealName, ST_AssessTime, ST_AssessResult, ST_ThirdAssessorGUID, ST_ThirdAssessorUserName, 
-    ST_ThirdAssessorRealName, ST_ThirdAssessTime, ST_ThirdAssessResult, ST_Extension1, 
-    ST_Extension2, ST_Extension3, ST_Remark
-  </sql>
+    <sql id="Base_Column_List">
+        <!--
+          WARNING - @mbg.generated
+        -->
+        ST_GUID, T_GUID, TS_GUID, ST_name, ST_Priority, ST_TypeNo, ST_Type, ST_ProvinceCode,
+        ST_ProvinceName, ST_CityCode, ST_CityName, ST_DistrictCode, ST_DistrictName, ST_TownCode,
+        ST_TownName, ST_ScenseName, ST_ScenseID, ST_ScenseAddress, ST_DeadLineType, ST_PlanStartTime,
+        ST_PlanEndTime, ST_DeployerGUID, ST_DeployerUserName, ST_DeployerRealName, ST_DeployTime,
+        ST_ExecutionStartTime, ST_ExecutionEndTime, ST_ExecutorGUIDs, ST_ExecutorUserNames,
+        ST_ExecutorRealTimes, ST_Status, ST_NotifedCount, ST_RuleList, ST_AssessorGUID, ST_AssessorUserName,
+        ST_AssessorRealName, ST_AssessTime, ST_AssessResult, ST_ThirdAssessorGUID, ST_ThirdAssessorUserName,
+        ST_ThirdAssessorRealName, ST_ThirdAssessTime, ST_ThirdAssessResult, ST_Extension1,
+        ST_Extension2, ST_Extension3, ST_Remark
+    </sql>
 
-  <select id="getSubtask" resultMap="SubtaskSearchResultVo">
-      SELECT
+    <resultMap id="SubtaskSearchResultVo" type="cn.flightfeather.supervision.lightshare.vo.SubtaskSearchResultVo">
+        <result column="subTaskId" property="subTaskId" jdbcType="VARCHAR"/>
+        <result column="districtName" property="districtName" jdbcType="VARCHAR"/>
+        <result column="townName" property="townName" jdbcType="VARCHAR"/>
+        <result column="sceneId" property="sceneId" jdbcType="VARCHAR"/>
+        <result column="sceneName" property="sceneName" jdbcType="VARCHAR"/>
+        <result column="sceneTypeId" property="sceneTypeId" jdbcType="TINYINT"/>
+        <result column="sceneType" property="sceneType" jdbcType="VARCHAR"/>
+        <result column="sceneAddress" property="sceneAddress" jdbcType="VARCHAR"/>
+        <result column="planStartTime" property="planStartTime" jdbcType="TIMESTAMP"/>
+        <result column="planEndTime" property="planEndTime" jdbcType="TIMESTAMP"/>
+        <result column="status" property="status" jdbcType="VARCHAR"/>
+        <result column="path" property="path" jdbcType="VARCHAR"/>
+    </resultMap>
+    <resultMap id="SubTaskSearchResultVo2" type="cn.flightfeather.supervision.lightshare.vo.SubTaskSearchResultVo2">
+        <result column="subTaskId" property="subTaskId" jdbcType="VARCHAR"/>
+        <result column="districtName" property="districtName" jdbcType="VARCHAR"/>
+        <result column="townName" property="townName" jdbcType="VARCHAR"/>
+        <result column="sceneId" property="sceneId" jdbcType="VARCHAR"/>
+        <result column="sceneName" property="sceneName" jdbcType="VARCHAR"/>
+        <result column="sceneTypeId" property="sceneTypeId" jdbcType="TINYINT"/>
+        <result column="sceneType" property="sceneType" jdbcType="VARCHAR"/>
+        <result column="sceneAddress" property="sceneAddress" jdbcType="VARCHAR"/>
+        <result column="planStartTime" property="planStartTime" jdbcType="TIMESTAMP"/>
+        <result column="planEndTime" property="planEndTime" jdbcType="TIMESTAMP"/>
+        <result column="status" property="status" jdbcType="VARCHAR"/>
+        <result column="path" property="path" jdbcType="VARCHAR"/>
+
+        <result column="problemId" property="problemId" jdbcType="VARCHAR"/>
+        <result column="problemName" property="problemName" jdbcType="VARCHAR"/>
+        <result column="problemCode" property="problemCode" jdbcType="VARCHAR"/>
+        <result column="longitude" property="longitude" jdbcType="DECIMAL"/>
+        <result column="latitude" property="latitude" jdbcType="DECIMAL"/>
+        <result column="location" property="location" jdbcType="VARCHAR"/>
+        <result column="rectification" property="rectification" jdbcType="BIT"/>
+        <result column="rectificationTime" property="rectificationTime" jdbcType="TIMESTAMP"/>
+        <result column="updateTime" property="updateTime" jdbcType="TIMESTAMP"/>
+
+        <result column="mGuid" property="mGuid" jdbcType="VARCHAR"/>
+        <result column="mExtension1" property="mExtension1" jdbcType="VARCHAR"/>
+        <result column="isChanged" property="isChanged" jdbcType="BIT"/>
+    </resultMap>
+    <resultMap id="SubtaskVoMap" type="cn.flightfeather.supervision.lightshare.vo.SubtaskVo">
+        <id column="ST_GUID" property="stguid" jdbcType="VARCHAR"/>
+        <result column="T_GUID" property="tguid" jdbcType="VARCHAR"/>
+        <result column="TS_GUID" property="tsguid" jdbcType="VARCHAR"/>
+        <result column="ST_name" property="name" jdbcType="VARCHAR"/>
+        <result column="ST_Priority" property="priority" jdbcType="BIT"/>
+        <result column="ST_TypeNo" property="typeno" jdbcType="TINYINT"/>
+        <result column="ST_Type" property="type" jdbcType="VARCHAR"/>
+        <result column="ST_ProvinceCode" property="provincecode" jdbcType="VARCHAR"/>
+        <result column="ST_ProvinceName" property="provincename" jdbcType="VARCHAR"/>
+        <result column="ST_CityCode" property="citycode" jdbcType="VARCHAR"/>
+        <result column="ST_CityName" property="cityname" jdbcType="VARCHAR"/>
+        <result column="ST_DistrictCode" property="districtcode" jdbcType="VARCHAR"/>
+        <result column="ST_DistrictName" property="districtname" jdbcType="VARCHAR"/>
+        <result column="ST_TownCode" property="towncode" jdbcType="VARCHAR"/>
+        <result column="ST_TownName" property="townname" jdbcType="VARCHAR"/>
+        <result column="ST_ScenseName" property="scensename" jdbcType="VARCHAR"/>
+        <result column="S_TypeID" property="scenseTypeId" jdbcType="VARCHAR"/>
+        <result column="ST_ScenseID" property="scenseid" jdbcType="VARCHAR"/>
+        <result column="ST_ScenseAddress" property="scenseaddress" jdbcType="VARCHAR"/>
+        <result column="ST_DeadLineType" property="deadlinetype" jdbcType="VARCHAR"/>
+        <result column="ST_PlanStartTime" property="planstarttime" jdbcType="TIMESTAMP"/>
+        <result column="ST_PlanEndTime" property="planendtime" jdbcType="TIMESTAMP"/>
+        <result column="ST_DeployerGUID" property="deployerguid" jdbcType="VARCHAR"/>
+        <result column="ST_DeployerUserName" property="deployerusername" jdbcType="VARCHAR"/>
+        <result column="ST_DeployerRealName" property="deployerrealname" jdbcType="VARCHAR"/>
+        <result column="ST_DeployTime" property="deploytime" jdbcType="TIMESTAMP"/>
+        <result column="ST_ExecutionStartTime" property="executionstarttime" jdbcType="TIMESTAMP"/>
+        <result column="ST_ExecutionEndTime" property="executionendtime" jdbcType="TIMESTAMP"/>
+        <result column="ST_ExecutorGUIDs" property="executorguids" jdbcType="VARCHAR"/>
+        <result column="ST_ExecutorUserNames" property="executorusernames" jdbcType="VARCHAR"/>
+        <result column="ST_ExecutorRealTimes" property="executorrealtimes" jdbcType="VARCHAR"/>
+        <result column="ST_Status" property="status" jdbcType="VARCHAR"/>
+        <result column="ST_NotifedCount" property="notifedcount" jdbcType="INTEGER"/>
+        <result column="ST_RuleList" property="rulelist" jdbcType="VARCHAR"/>
+        <result column="ST_AssessorGUID" property="stAssessorguid" jdbcType="VARCHAR"/>
+        <result column="ST_AssessorUserName" property="assessorusername" jdbcType="VARCHAR"/>
+        <result column="ST_AssessorRealName" property="assessorrealname" jdbcType="VARCHAR"/>
+        <result column="ST_AssessTime" property="assesstime" jdbcType="TIMESTAMP"/>
+        <result column="ST_AssessResult" property="assessresult" jdbcType="VARCHAR"/>
+        <result column="ST_ThirdAssessorGUID" property="thirdassessorguid" jdbcType="VARCHAR"/>
+        <result column="ST_ThirdAssessorUserName" property="thirdassessorusername" jdbcType="VARCHAR"/>
+        <result column="ST_ThirdAssessorRealName" property="thirdassessorrealname" jdbcType="VARCHAR"/>
+        <result column="ST_ThirdAssessTime" property="thirdassesstime" jdbcType="TIMESTAMP"/>
+        <result column="ST_ThirdAssessResult" property="thirdassessresult" jdbcType="VARCHAR"/>
+        <result column="ST_Extension1" property="extension1" jdbcType="VARCHAR"/>
+        <result column="ST_Extension2" property="extension2" jdbcType="VARCHAR"/>
+        <result column="ST_Extension3" property="extension3" jdbcType="VARCHAR"/>
+        <result column="ST_Remark" property="remark" jdbcType="VARCHAR"/>
+    </resultMap>
+    <resultMap id="SubTaskSummary" type="cn.flightfeather.supervision.lightshare.vo.SubTaskSummary">
+        <result column="ST_GUID" property="stGuid" jdbcType="VARCHAR"/>
+        <result column="ST_name" property="stName" jdbcType="VARCHAR"/>
+        <result column="ST_PlanStartTime" property="stPlanTime" jdbcType="TIMESTAMP"/>
+        <result column="ST_Status" property="stStatus" jdbcType="VARCHAR"/>
+        <result column="S_GUID" property="sceneId" jdbcType="VARCHAR"/>
+        <result column="S_Name" property="sceneName" jdbcType="VARCHAR"/>
+        <result column="S_TypeID" property="sceneTypeId" jdbcType="TINYINT"/>
+        <result column="S_Type" property="sceneType" jdbcType="VARCHAR"/>
+        <result column="S_Location" property="location" jdbcType="VARCHAR"/>
+        <result column="S_Longitude" property="longitude" jdbcType="DECIMAL"/>
+        <result column="S_Latitude" property="latitude" jdbcType="DECIMAL"/>
+        <result column="S_Index" property="sceneIndex" jdbcType="INTEGER"/>
+        <result column="I_GUID" property="insGuid" jdbcType="VARCHAR"/>
+        <result column="proNum" property="proNum" jdbcType="INTEGER"/>
+        <result column="changeNum" property="changeNum" jdbcType="INTEGER"/>
+        <result column="proCheckedNum" property="proCheckedNum" jdbcType="INTEGER"/>
+        <result column="changeCheckedNum" property="changeCheckedNum" jdbcType="INTEGER"/>
+        <association property="subtask" resultMap="BaseResultMap"/>
+        <association property="inspection"
+                     resultMap="cn.flightfeather.supervision.domain.ds1.mapper.InspectionMapper.BaseResultMap"/>
+        <association property="scene"
+                     resultMap="cn.flightfeather.supervision.domain.ds1.mapper.ScenseMapper.BaseResultMap"/>
+    </resultMap>
+
+    <sql id="Sub_Task_Summary_Column_List">
+        SELECT
+        a.*,
+        b.*,
+        c.*,
+        SUM(d.PL_GUID is NOT null) AS proNum,
+        SUM(d.PL_IsChanged = TRUE) AS changeNum,
+        SUM(d.PL_Extension3 != 'unCheck') AS proCheckedNum,
+        SUM(
+        d.PL_Extension3 = 'change_pass' || d.PL_Extension3 = 'change_fail'
+        ) AS changeCheckedNum
+        FROM
+        tm_t_subtask AS a
+        LEFT JOIN sm_t_scense AS b ON a.ST_ScenseID = b.S_GUID
+        LEFT JOIN im_t_inspection AS c ON a.ST_GUID = c.ST_GUID
+        LEFT JOIN im_t_problemlist AS d ON a.ST_GUID = d.ST_GUID
+    </sql>
+    <!-- 琛屾斂鍖哄垝鏉′欢 -->
+    <sql id="Where_Area">
+        <if test="provincecode != null">
+            AND ${tableAlias}.ST_ProvinceCode = #{provincecode}
+        </if>
+        <if test="provincename != null">
+            AND ${tableAlias}.ST_ProvinceName = #{provincename}
+        </if>
+        <if test="citycode != null">
+            AND ${tableAlias}.ST_CityCode = #{citycode}
+        </if>
+        <if test="cityname != null">
+            AND ${tableAlias}.ST_CityName = #{cityname}
+        </if>
+        <if test="districtcode != null">
+            AND ${tableAlias}.ST_DistrictCode = #{districtcode}
+        </if>
+        <if test="districtname != null">
+            AND ${tableAlias}.ST_DistrictName = #{districtname}
+        </if>
+        <if test="towncode != null">
+            AND ${tableAlias}.ST_TownCode = #{towncode}
+        </if>
+        <if test="townname != null">
+            AND ${tableAlias}.ST_TownName = #{townname}
+        </if>
+    </sql>
+    <!-- 浠诲姟璁″垝鏃堕棿鏉′欢 -->
+    <sql id="Where_Plan_Time">
+        <if test="starttime != null">
+            AND ${tableAlias}.ST_PlanStartTime >= #{starttime}
+        </if>
+        <if test="endtime != null">
+            AND ${tableAlias}.ST_PlanStartTime &lt;= #{endtime}
+        </if>
+    </sql>
+
+    <select id="getSubtask" resultMap="SubtaskSearchResultVo">
+        SELECT
         a.ST_GUID as 'subTaskId',
         a.ST_DistrictName as 'districtName',
         b.S_TownName as 'townName',
@@ -192,19 +254,19 @@
         a.ST_PlanEndTime as 'planEndTime',
         a.ST_Status as 'status',
         c.I_Extension1 as 'path'
-      FROM
+        FROM
         tm_t_subtask AS a
         LEFT JOIN sm_t_scense AS b ON a.ST_ScenseID = b.S_GUID
         LEFT JOIN im_t_inspection AS c ON a.ST_GUID = c.ST_GUID
         LEFT JOIN ea_t_evaluation AS d ON a.ST_GUID = d.ST_GUID
-      WHERE
+        WHERE
         a.ST_DistrictCode = #{param1}
         AND a.ST_PlanStartTime >= #{param2}
-        AND a.ST_PlanEndTime  &lt;= #{param3}
-      <if test="param4 != null">
-        AND b.S_TypeID = #{param4}
-      </if>
-  </select>
+        AND a.ST_PlanEndTime &lt;= #{param3}
+        <if test="param4 != null">
+            AND b.S_TypeID = #{param4}
+        </if>
+    </select>
     <select id="getSubtask2" resultMap="SubTaskSearchResultVo2">
         SELECT
         a.ST_GUID as 'subTaskId',
@@ -228,8 +290,8 @@
         d.PL_IsChanged as 'rectification',
         d.PL_ChangedTime as 'rectificationTime',
         (CASE WHEN d.PL_IsChanged IS FALSE THEN d.PL_Time
-          WHEN d.PL_ChangedTime IS  NULL THEN d.PL_Time
-          ELSE d.PL_ChangedTime END ) as 'updateTime',
+        WHEN d.PL_ChangedTime IS NULL THEN d.PL_Time
+        ELSE d.PL_ChangedTime END ) as 'updateTime',
         e.MF_GUID as 'mGuid',
         e.MF_Extension1 as 'mExtension1',
         e.MF_IsChanged as 'isChanged'
@@ -258,7 +320,6 @@
         AND d.PL_Extension3 IS NOT NULL
         ORDER BY updateTime
     </select>
-
     <select id="selectByTopTask" resultMap="SubtaskVoMap"><![CDATA[
         select * from tm_t_subtask as a left join sm_t_scense as b on a.ST_ScenseID = b.S_GUID
         where a.ST_PlanStartTime >=#{param2} and a.ST_PlanEndTime <= #{param3} and a.T_GUID = #{param1}]]>
@@ -266,7 +327,6 @@
             and b.S_TypeID = #{param4}
         </if>
     </select>
-
     <select id="selectByTopTask2" resultMap="BaseResultMap">
         select * from tm_t_subtask as a left join sm_t_scense as b on a.ST_ScenseID = b.S_GUID
         where a.T_GUID = #{param1}
@@ -274,7 +334,6 @@
             and b.S_TypeID = #{param2}
         </if>
     </select>
-
     <select id="getSummary" resultMap="SubTaskSummary">
         SELECT
         a.ST_GUID,
@@ -283,7 +342,12 @@
         a.ST_Status,
         b.S_GUID,
         b.S_Name,
+        b.S_TypeID,
         b.S_Type,
+        b.S_Location,
+        b.S_Longitude,
+        b.S_Latitude,
+        b.S_Index,
         c.I_GUID,
         SUM(d.PL_GUID is NOT null) AS proNum,
         SUM(d.PL_IsChanged = TRUE) AS changeNum,
@@ -305,7 +369,6 @@
         GROUP BY
         a.ST_GUID
     </select>
-
     <select id="getSummaryByScene" resultMap="SubTaskSummary">
         SELECT
         a.ST_GUID,
@@ -337,7 +400,20 @@
         a.ST_GUID
         ORDER BY a.ST_PlanStartTime DESC
     </select>
-
+    <select id="getSummaryByArea" resultMap="SubTaskSummary">
+        <include refid="Sub_Task_Summary_Column_List"/>
+        <where>
+            <include refid="Where_Area">
+                <property name="tableAlias" value="a"/>
+            </include>
+            <include refid="Where_Plan_Time">
+                <property name="tableAlias" value="a"/>
+            </include>
+        </where>
+        GROUP BY
+        a.ST_GUID
+        ORDER BY a.ST_PlanStartTime DESC
+    </select>
     <select id="findSubTasksByProType" resultMap="BaseResultMap">
         SELECT
         a.*
diff --git a/src/test/kotlin/cn/flightfeather/supervision/business/autooutput/AopEvaluationTest.kt b/src/test/kotlin/cn/flightfeather/supervision/business/autooutput/AopEvaluationTest.kt
index 07b51cc..4a2d87a 100644
--- a/src/test/kotlin/cn/flightfeather/supervision/business/autooutput/AopEvaluationTest.kt
+++ b/src/test/kotlin/cn/flightfeather/supervision/business/autooutput/AopEvaluationTest.kt
@@ -9,6 +9,7 @@
 import cn.flightfeather.supervision.business.autooutput.datasource.AopDataConfig
 import cn.flightfeather.supervision.business.autooutput.score.AopCreditCode
 import cn.flightfeather.supervision.common.utils.Constant
+import cn.flightfeather.supervision.domain.ds1.repository.SubTaskRep
 import cn.flightfeather.supervision.lightshare.service.SearchService
 import cn.flightfeather.supervision.lightshare.vo.ExcelConfigVo
 import org.junit.Test
@@ -48,18 +49,21 @@
     @Autowired
     lateinit var jsWhDataAnalysis: JSWhDataAnalysis
 
+    @Autowired
+    lateinit var subTaskRep: SubTaskRep
+
     /**
      * 闈欏畨宸ュ湴鑷瘎
      */
     @Test
     fun test1() {
-        val taskId = "tTbZIUg7nQJ1MRgE"
+        val taskId = "P7hsgDedyN9XLrbt"
         val districtCode = "310106"
-        val year = 2023
-        val month = 12
+        val year = 2024
+        val month = 6
         val sceneType = Constant.SceneType.TYPE1.value.toInt()
         jaCsDataAnalysis.setResource(taskId, sceneType, year, month)
-        jaCsDataAnalysis.execute(0.124)
+        jaCsDataAnalysis.execute()
 
         aopEvaluation.executeByTopTask(taskId, sceneType)
 
@@ -78,19 +82,19 @@
         val taskId = "88wgq9l5gm9cUMg1"
         val districtCode = "310104"
         val districtName = "寰愭眹鍖�"
-        val year = 2023
-        val month = 11
+        val year = 2024
+        val month = 5
         val sceneType = Constant.SceneType.TYPE5.value.toInt()
-        xhFuDataAnalysis.setResource(taskId, sceneType, year, month)
-        xhFuDataAnalysis.execute()
-
-        aopEvaluation.executeByTopTask(taskId, sceneType)
-
-        val mode = 9
-        searchService.writeToFile(ExcelConfigVo(
-            taskId,
-            districtCode = districtCode,
-            sceneType = sceneType), mode)
+//        xhFuDataAnalysis.setResource(taskId, sceneType, year, month)
+//        xhFuDataAnalysis.execute()
+//
+//        aopEvaluation.executeByTopTask(taskId, sceneType)
+//
+//        val mode = 9
+//        searchService.writeToFile(ExcelConfigVo(
+//            taskId,
+//            districtCode = districtCode,
+//            sceneType = sceneType), mode)
         aopCreditCode.execute(AopDataConfig(
             year = year,
             month = month,
@@ -137,4 +141,10 @@
             districtCode = districtCode,
             sceneType = sceneType), mode)
     }
+
+    @Test
+    fun aopSubtask() {
+        val s = subTaskRep.findOne("yMRHdPg7e4i8M6aB")
+        aopEvaluation.executeBySubTask(s!!)
+    }
 }
\ No newline at end of file
diff --git a/src/test/kotlin/cn/flightfeather/supervision/business/bgtask/AopTaskCtrlTest.kt b/src/test/kotlin/cn/flightfeather/supervision/business/bgtask/AopTaskCtrlTest.kt
new file mode 100644
index 0000000..d8b9149
--- /dev/null
+++ b/src/test/kotlin/cn/flightfeather/supervision/business/bgtask/AopTaskCtrlTest.kt
@@ -0,0 +1,53 @@
+package cn.flightfeather.supervision.business.bgtask
+
+import cn.flightfeather.supervision.common.utils.Constant
+import cn.flightfeather.supervision.domain.ds1.repository.TaskRep
+import org.junit.Test
+import org.junit.jupiter.api.extension.ExtendWith
+import org.junit.runner.RunWith
+import org.springframework.beans.factory.annotation.Autowired
+import org.springframework.boot.test.context.SpringBootTest
+import org.springframework.test.context.junit.jupiter.SpringExtension
+import org.springframework.test.context.junit4.SpringRunner
+import java.io.BufferedReader
+import java.io.InputStreamReader
+import java.time.LocalDate
+
+
+@RunWith(SpringRunner::class)
+@ExtendWith(SpringExtension::class)
+@SpringBootTest
+class AopTaskCtrlTest {
+
+    @Autowired
+    lateinit var aopTaskCtrl: AopTaskCtrl
+
+    @Autowired
+    lateinit var taskRep: TaskRep
+
+    @Test
+    fun startEvaluation() {
+        val time = LocalDate.of(2024, 6, 23).atStartOfDay()
+        aopTaskCtrl.startEvaluation(aopTaskCtrl.getArea(time, "310106", "闈欏畨鍖�", Constant.SceneType.TYPE1))
+    }
+
+    @Test
+    fun startNewTask(){
+        val time = LocalDate.of(2024, 6, 23).atStartOfDay()
+        aopTaskCtrl.startNewTask(aopTaskCtrl.getArea(time, "310106", "闈欏畨鍖�", Constant.SceneType.TYPE1))
+        val reader = BufferedReader(InputStreamReader(System.`in`))
+        reader.readLine()
+    }
+
+    @Test
+    fun foo1() {
+        val time = LocalDate.of(2024, 6, 23).atStartOfDay()
+        val t1 = taskRep.findOneTask(aopTaskCtrl.getArea(time, "310106", "闈欏畨鍖�", Constant.SceneType.TYPE1))
+        val t2 = taskRep.findOneTask(aopTaskCtrl.getArea(time, "310104", "寰愭眹鍖�", Constant.SceneType.TYPE5))
+        val t3 = taskRep.findOneTask(aopTaskCtrl.getArea(time, "310116", "閲戝北鍖�", Constant.SceneType.TYPE1))
+        val t4 = taskRep.findOneTask(aopTaskCtrl.getArea(time, "310116", "閲戝北鍖�", Constant.SceneType.TYPE2))
+        val t5 = taskRep.findOneTask(aopTaskCtrl.getArea(time, "310116", "閲戝北鍖�", Constant.SceneType.TYPE3))
+        println(t5)
+    }
+
+}
\ No newline at end of file
diff --git a/src/test/kotlin/cn/flightfeather/supervision/business/bgtask/JinAnScoreTaskCtrlTest.kt b/src/test/kotlin/cn/flightfeather/supervision/business/bgtask/JinAnScoreTaskCtrlTest.kt
index 1a6a96a..d5680fb 100644
--- a/src/test/kotlin/cn/flightfeather/supervision/business/bgtask/JinAnScoreTaskCtrlTest.kt
+++ b/src/test/kotlin/cn/flightfeather/supervision/business/bgtask/JinAnScoreTaskCtrlTest.kt
@@ -18,8 +18,8 @@
 
     @Test
     fun startTask() {
-        var time = LocalDateTime.of(2024, 2, 1, 0, 0, 0)
-        repeat(3) {
+        var time = LocalDateTime.of(2024, 5, 1, 0, 0, 0)
+        repeat(1) {
             jinAnScoreTaskCtrl.startTaskJinAn(time)
             time = time.plusMonths(1)
         }
diff --git a/src/test/kotlin/cn/flightfeather/supervision/datafetch/FetchNightConstructionTest.kt b/src/test/kotlin/cn/flightfeather/supervision/business/datafetch/FetchNightConstructionTest.kt
similarity index 86%
rename from src/test/kotlin/cn/flightfeather/supervision/datafetch/FetchNightConstructionTest.kt
rename to src/test/kotlin/cn/flightfeather/supervision/business/datafetch/FetchNightConstructionTest.kt
index 2878288..3f5cb1f 100644
--- a/src/test/kotlin/cn/flightfeather/supervision/datafetch/FetchNightConstructionTest.kt
+++ b/src/test/kotlin/cn/flightfeather/supervision/business/datafetch/FetchNightConstructionTest.kt
@@ -1,8 +1,7 @@
-package cn.flightfeather.supervision.datafetch
+package cn.flightfeather.supervision.business.datafetch
 
 import cn.flightfeather.supervision.SupervisionApplication
 import org.junit.Test
-import org.junit.jupiter.api.Assertions.*
 import org.junit.runner.RunWith
 import org.springframework.beans.factory.annotation.Autowired
 import org.springframework.boot.test.context.SpringBootTest
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 a45e020..e159369 100644
--- a/src/test/kotlin/cn/flightfeather/supervision/business/location/LocationRoadNearbyTest.kt
+++ b/src/test/kotlin/cn/flightfeather/supervision/business/location/LocationRoadNearbyTest.kt
@@ -45,8 +45,13 @@
 //            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.416643,31.163531), Pair(121.416643,31.163531)),
+            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.419384,31.161433)),
         )
-        locationRoadNearby.searchList(bList, 2000.0)
+        listOf(500.0, 1000.0, 2000.0, 3000.0).forEach {
+            locationRoadNearby.searchList(bList, it)
+        }
     }
 }
\ No newline at end of file
diff --git a/src/test/kotlin/cn/flightfeather/supervision/business/subtask/TaskTest.kt b/src/test/kotlin/cn/flightfeather/supervision/business/subtask/TaskTest.kt
new file mode 100644
index 0000000..4dfe6b2
--- /dev/null
+++ b/src/test/kotlin/cn/flightfeather/supervision/business/subtask/TaskTest.kt
@@ -0,0 +1,33 @@
+package cn.flightfeather.supervision.business.subtask
+
+import cn.flightfeather.supervision.business.bgtask.TaskFinishEvaluation
+import cn.flightfeather.supervision.business.bgtask.TaskFinishSubtask
+import org.junit.Test
+import org.junit.jupiter.api.extension.ExtendWith
+import org.junit.runner.RunWith
+import org.springframework.beans.factory.annotation.Autowired
+import org.springframework.boot.test.context.SpringBootTest
+import org.springframework.test.context.junit.jupiter.SpringExtension
+import org.springframework.test.context.junit4.SpringRunner
+
+@RunWith(SpringRunner::class)
+@ExtendWith(SpringExtension::class)
+@SpringBootTest
+class TaskTest {
+
+    @Autowired
+    lateinit var taskFinishSubtask: TaskFinishSubtask
+
+    @Autowired
+    lateinit var taskFinishEvaluation: TaskFinishEvaluation
+
+    @Test
+    fun handle() {
+        taskFinishSubtask.handle()
+    }
+
+    @Test
+    fun handle2() {
+        taskFinishEvaluation.handle()
+    }
+}
\ No newline at end of file
diff --git a/src/test/kotlin/cn/flightfeather/supervision/domain/ds1/repository/SubTaskRepTest.kt b/src/test/kotlin/cn/flightfeather/supervision/domain/ds1/repository/SubTaskRepTest.kt
new file mode 100644
index 0000000..d248257
--- /dev/null
+++ b/src/test/kotlin/cn/flightfeather/supervision/domain/ds1/repository/SubTaskRepTest.kt
@@ -0,0 +1,35 @@
+package cn.flightfeather.supervision.domain.ds1.repository
+
+import cn.flightfeather.supervision.lightshare.vo.AreaVo
+import org.junit.Test
+import org.junit.jupiter.api.extension.ExtendWith
+import org.junit.runner.RunWith
+import org.springframework.beans.factory.annotation.Autowired
+import org.springframework.boot.test.context.SpringBootTest
+import org.springframework.test.context.junit.jupiter.SpringExtension
+import org.springframework.test.context.junit4.SpringRunner
+import java.time.LocalDateTime
+
+@RunWith(SpringRunner::class)
+@ExtendWith(SpringExtension::class)
+@SpringBootTest
+class SubTaskRepTest {
+
+    @Autowired
+    lateinit var subTaskRep: SubTaskRep
+
+    @Test
+    fun findSummary() {
+        val res = subTaskRep.findSummary(AreaVo().apply {
+            provincecode = "31"
+            provincename = "涓婃捣甯�"
+            citycode = "3100"
+            cityname = "涓婃捣甯�"
+            districtcode = "310116"
+            districtname = "閲戝北鍖�"
+            starttime = LocalDateTime.of(2024, 7, 5, 0, 0, 0, 0)
+            endtime = LocalDateTime.of(2024, 7, 6, 0, 0, 0, 0)
+        })
+        println(res)
+    }
+}
\ No newline at end of file

--
Gitblit v1.9.3