From 52a0c16de9b0955a5f092560b73f16e41684f97b Mon Sep 17 00:00:00 2001
From: feiyu02 <risaku@163.com>
Date: 星期二, 31 十二月 2024 10:13:35 +0800
Subject: [PATCH] 1. 环信码生成时,如果在线场景当期没有评估(未巡查)结果,则延用历史最新一次的结果; 2. 新增跨时间跨月度的历史整改记录查询逻辑 3. 优化获取顶层任务和日任务的获取逻辑

---
 src/main/kotlin/cn/flightfeather/supervision/domain/ds1/repository/TaskRep.kt |   67 ++++++++++++++++++++++++++++-----
 1 files changed, 56 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..85bffce 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,18 @@
         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()
+        })
+    }
 }
\ No newline at end of file

--
Gitblit v1.9.3