From 7cbe1610b87da19ed8a146a09b1117f92d9d3d98 Mon Sep 17 00:00:00 2001
From: feiyu02 <risaku@163.com>
Date: 星期五, 19 九月 2025 17:30:37 +0800
Subject: [PATCH] 2025.9.19 1. 联合前端调试数据产品接口(待完成)

---
 src/main/kotlin/cn/flightfeather/supervision/domain/ds1/repository/TaskRep.kt |   85 +++++++++++++++++++++++++++++++++++++-----
 1 files changed, 74 insertions(+), 11 deletions(-)

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..5b6a53a 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,35 +6,66 @@
 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.*
 
 @Repository
 class TaskRep(private val taskMapper: TaskMapper, private val monitorobjectversionMapper: MonitorobjectversionMapper) {
 
-    private fun exampleTask(areaVo: AreaVo): Task?{
+    private fun exampleTask(areaVo: AreaVo, levelNum: Int? = null): Example? {
         areaVo.starttime ?: return null
         val mStart = areaVo.starttime!!.withDayOfMonth(1).withHour(0).withMinute(0).withSecond(0)
         val mEnd = mStart.plusMonths(1).minusSeconds(1)
-        return Task().apply {
-            provincecode = areaVo.provincecode
-            citycode = areaVo.citycode
-            districtcode = areaVo.districtcode
-            starttime = Date.from(mStart.atZone(ZoneId.systemDefault()).toInstant())
-            endtime = Date.from(mEnd.atZone(ZoneId.systemDefault()).toInstant())
+//        return Task().apply {
+//            provincecode = areaVo.provincecode
+//            citycode = areaVo.citycode
+//            districtcode = areaVo.districtcode
+//            starttime = Date.from(mStart.atZone(ZoneId.systemDefault()).toInstant())
+//            endtime = Date.from(mEnd.atZone(ZoneId.systemDefault()).toInstant())
+//        }
+
+        return Example(Task::class.java).apply {
+            createCriteria()
+                .apply {
+                    if (levelNum != null) {
+                        andEqualTo("levelnum", levelNum)
+                    } else {
+                        andIsNull("levelnum")
+                    }
+                }
+                .andEqualTo("provincecode", areaVo.provincecode)
+                .andEqualTo("citycode", areaVo.citycode)
+                .andEqualTo("districtcode", areaVo.districtcode)
+                .andGreaterThanOrEqualTo("starttime", mStart)
+                .andLessThanOrEqualTo("endtime", mEnd)
+            orderBy("starttime")
         }
     }
+
+    fun update(task: Task): Int {
+        return taskMapper.updateByPrimaryKeySelective(task)
+    }
+
     /**
      * 鏌ユ壘涓�涓�讳换鍔�
      */
     fun findOneTask(areaVo: AreaVo): Task? {
-        val example = exampleTask(areaVo) ?: return null
-        return taskMapper.selectOne(example)
+        val list = findTasks(areaVo)
+        return if (list.isEmpty()) {
+            null
+        } else {
+            list[0]
+        }
     }
 
     fun findTasks(areaVo: AreaVo): List<Task?> {
-        val example = exampleTask(areaVo) ?: return emptyList()
-        return taskMapper.select(example)
+        val example = exampleTask(areaVo, 2) ?: return emptyList()
+        return taskMapper.selectByExample(example)
+    }
+
+    fun findTasks(task: Task): List<Task?> {
+        return taskMapper.select(task)
     }
 
     /**
@@ -44,4 +75,36 @@
         val monitorList = monitorobjectversionMapper.findMonitorListByScene(taskId, sceneTypeId)
         return monitorList.sortedBy { it.displayid }
     }
+
+    /**
+     * 鑾峰彇鏃ヤ换鍔�
+     * @param taskId 椤跺眰浠诲姟id
+     * @param userId 鎵ц鐢ㄦ埛id
+     */
+    fun findDayTasks(taskId: String?, userId: String? = null): List<Task?> {
+        return taskMapper.selectByExample(Example(Task::class.java).apply {
+            createCriteria().andEqualTo("tsguid", taskId).apply {
+                userId?.let { andLike("executorguids", "%$it%") }
+            }
+            orderBy("starttime").desc()
+        })
+    }
+
+    /**
+     * 鑾峰彇鐩稿悓鍖哄煙鍐呬笂涓懆鏈熺殑鎬讳换鍔�
+     */
+    fun findLastTopTask(taskId: String?): Task? {
+        val task = taskMapper.selectByPrimaryKey(taskId) ?: return null
+
+        return taskMapper.selectByExample(Example(Task::class.java).apply {
+            createCriteria()
+                .andNotEqualTo("tguid", task.tguid)
+                .andEqualTo("typeno", task.typeno)
+                .andEqualTo("levelnum", 2)
+                .andEqualTo("provincecode", task.provincecode)
+                .andEqualTo("citycode", task.citycode)
+                .andEqualTo("districtcode", task.districtcode)
+            orderBy("starttime").desc()
+        }).firstOrNull()
+    }
 }
\ No newline at end of file

--
Gitblit v1.9.3