From a3cc1d220f8a1de11874bebceba0130d32157ff1 Mon Sep 17 00:00:00 2001
From: feiyu02 <risaku@163.com>
Date: 星期二, 30 九月 2025 09:26:32 +0800
Subject: [PATCH] 2025.9.30 1. 联合前端调试数据产品接口(待完成)

---
 src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/TaskServiceImpl.kt |  104 +++++++++++++++++++++++++++++++++------------------
 1 files changed, 67 insertions(+), 37 deletions(-)

diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/TaskServiceImpl.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/TaskServiceImpl.kt
index 87908bb..f103925 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/TaskServiceImpl.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/TaskServiceImpl.kt
@@ -10,6 +10,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.SceneRep
 import cn.flightfeather.supervision.domain.ds1.repository.SubTaskRep
 import cn.flightfeather.supervision.domain.ds1.repository.TaskRep
 import cn.flightfeather.supervision.lightshare.service.*
@@ -26,6 +27,7 @@
     val taskMapper: TaskMapper,
     private val taskRep: TaskRep,
     private val subTaskRep: SubTaskRep,
+    private val sceneRep: SceneRep,
 ) : TaskService {
 
     @Autowired
@@ -318,55 +320,64 @@
         return taskVoList
     }
 
-    override fun getDayTask(taskId: String, userId: String, userType: String): List<DayTaskProgressVo> {
-        val example = Example(Task::class.java)
-        val criteria = example.createCriteria()
-        //鏋勯�犳煡璇㈡潯浠�
-        criteria.andEqualTo("tsguid", taskId)
-        if (userType == "1") {
-            criteria.andLike("executorguids", "%$userId%")
-        }
-
+    override fun getDayTask(taskId: String, userId: String?, userType: String): List<DayTaskProgressVo> {
         val resultList = ArrayList<DayTaskProgressVo>()
 
+        // 鑾峰彇鎬讳换鍔′笅鎵�鏈夋棩浠诲姟
+        val dayTasks = if (userType == "1") {
+            taskRep.findDayTasks(taskId, userId)
+        } else {
+            taskRep.findDayTasks(taskId)
+        }
+
+        // 鑾峰彇鎬讳换鍔′笅鎵�鏈夌殑瀛愪换鍔�
+        val subTasks = subTaskRep.findAll(Subtask().apply { tguid = taskId })
+
         //鏍规嵁sql鏉′欢鏌ヨ
-        taskMapper.selectByExample(example).forEach {
-            val exampleTotal = Example(Subtask::class.java).apply {
-                createCriteria().andEqualTo("tsguid", it.tguid)
+        dayTasks.forEach {t->
+            // 绛涢�夊綋鍓嶆棩浠诲姟涓嬬殑瀛愪换鍔�
+            val filterSubTasks = subTasks.filter {s->
+                s?.tsguid == t?.tguid
+            }
+            // 瀛愪换鍔℃�绘暟
+            val total = filterSubTasks.size
+
+            // 瀛愪换鍔″畬鎴愭暟
+            val complete = filterSubTasks.count {fs->
+                fs?.status == Constant.TaskProgress.RUNINGSTATUS3.text
             }
 
-            val total = subtaskMapper.selectCountByExample(exampleTotal)
-
-            val exampleComplete = exampleTotal.apply {
-                and().andEqualTo("status", Constant.TaskProgress.RUNINGSTATUS3.text)
+            // 鑾峰彇褰撴棩鎵�鏈夌殑闂
+            val subTaskIds = filterSubTasks.map { fs-> fs?.stguid }
+            val problemList = if (subTaskIds.isNotEmpty()) {
+                problemListMapper.selectByExample(Example(Problemlist::class.java).apply {
+                    createCriteria().andIn("stguid", subTaskIds)
+                })
+            } else{
+                emptyList()
             }
-            val complete = subtaskMapper.selectCountByExample(exampleComplete)
+
 
             var changed = 0
-            problemListMapper.findUnchangedCount(it.tguid ?: "").forEach { i ->
-                //缁撴灉琛ㄧず璇ュ瓙浠诲姟鏈暣鏀归棶棰樻暟
-                if (i == 0) {
-                    changed++
-                }
-            }
-
             //瀹℃牳鏄惁瀹屾垚
-            var check = false
-            with(subtaskMapper.selectByExample(exampleTotal)) breaking@{
-                forEach {
-                    problemListMapper.selectByExample(Example(Problemlist::class.java).apply {
-                        createCriteria().andEqualTo("stguid", it.stguid)
-                    }).forEach { problem ->
-                        if (problem.extension3 == Constant.PROBLEM_UNCHECKED) {
-                            check = true
-                            return@breaking
-                        }
+            var check = true
+            filterSubTasks.forEach {fs ->
+                // 绛涢�夋瘡涓瓙浠诲姟涓嬬殑闂鏈暣鏀规暟
+                problemList.filter { p-> p?.stguid == fs?.stguid }.onEach { pro ->
+                    // 褰撳瓨鍦ㄨ嚦灏戜竴涓棶棰樻病鏈夊鏍告椂锛屽綋鏃ュ鏍哥姸鎬佷负鏈鏍�
+                    if (pro.extension3 == Constant.PROBLEM_UNCHECKED || pro.extension3 == Constant.CHANGE_UNCHECKED) {
+                        check = false
+                    }
+                }.count { i -> i?.ischanged != true }.let { c ->
+                    // 娌℃湁鏈暣鏀归棶棰樻椂锛屽垯琛ㄧず璇ュ瓙浠诲姟宸茬粡鏁存敼瀹屾垚
+                    if (c == 0) {
+                        changed++
                     }
                 }
             }
 
             resultList.add(DayTaskProgressVo(
-                it.tguid, it.starttime, taskId, complete, changed, total, check
+                t?.tguid, t?.starttime, taskId, complete, changed, total, check
             ))
         }
 
@@ -757,14 +768,33 @@
                 districtName = t.districtname
                 townCode = t.towncode
                 townName = t.townname
+
                 var count = 0
+                val countByScene = mutableMapOf<String?, Int>()
+                val allScenes = sceneRep.findSceneList(t.tguid!!, areaVo.scensetypeid?.toInt(), areaVo.towncode)
                 taskRep.findMonitorList(t.tguid!!, areaVo.scensetypeid).forEach {
-                    val c = if (it.extension1 != null) it.extension1!!.toInt() else 1
+                    val c = it.monitornum ?: 1
                     count += c
+
+                    allScenes.find { s-> s?.guid == it.sguid }?.let { s->
+//                        if (!countByScene.containsKey(s.type)) {
+//                            countByScene[s.type] = 0
+//                        }
+                        countByScene[s.type] = (countByScene[s.type] ?: 0) + c
+                    }
                 }
                 totaltask = count
-                subTaskSummary = subTaskRep.findSummary(areaVo)
+                totaltaskByScene = countByScene
+
+                subTaskSummary = subTaskRep.findSummary(AreaVo().apply {
+                    topTaskId = t.tguid
+                })
+                val completeByScene = mutableMapOf<String?, Int>()
+                subTaskSummary?.forEach {
+                    completeByScene[it.sceneType] = (completeByScene[it.sceneType] ?: 0) + 1
+                }
                 completetask = this.subTaskSummary?.size
+                completetaskByScene = completeByScene
             }
             res.add(pro)
         }

--
Gitblit v1.9.3