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

---
 src/main/kotlin/cn/flightfeather/supervision/domain/ds1/repository/SceneRep.kt |  116 +++++++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 107 insertions(+), 9 deletions(-)

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 d5f3c14..e29beea 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/domain/ds1/repository/SceneRep.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/domain/ds1/repository/SceneRep.kt
@@ -1,10 +1,11 @@
 package cn.flightfeather.supervision.domain.ds1.repository
 
 import cn.flightfeather.supervision.common.exception.BizException
+import cn.flightfeather.supervision.common.utils.Constant
 import cn.flightfeather.supervision.common.utils.UUIDGenerator
-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 cn.flightfeather.supervision.domain.ds1.entity.*
+import cn.flightfeather.supervision.domain.ds1.mapper.*
+import com.google.gson.Gson
 import org.springframework.stereotype.Repository
 import tk.mybatis.mapper.entity.Example
 import java.util.*
@@ -17,6 +18,11 @@
     private val scenseMapper: ScenseMapper,
     private val userinfoMapper: UserinfoMapper,
     private val subTaskRep: SubTaskRep,
+    val sceneConstructionSiteMapper: SceneConstructionSiteMapper,
+    val sceneDeviceMapper: SceneDeviceMapper,
+    val sceneMixingPlantMapper: SceneMixingPlantMapper,
+    val sceneStorageYardMapper: SceneStorageYardMapper,
+    val sceneWharfMapper: SceneWharfMapper,
 ) {
 
     fun insert(scene: Scense?):Int {
@@ -26,11 +32,92 @@
         return scenseMapper.insertSelective(scene)
     }
 
-    /**
-     * 鏌ユ壘鍦烘櫙
-     */
-    fun findScene(topTaskId: String, sceneTypeId: Int? = null, townCode: String? = null): List<Scense?> {
-        return scenseMapper.getSceneByType(topTaskId, sceneTypeId, townCode)
+    fun insertOrUpdateSubScene(typeId: Int?, guid: String?, subScene: BaseScene?): Pair<Boolean, Int> {
+        var r = 0
+        var isUpdate = false
+        subScene ?: return false to 0
+
+        when (typeId.toString()) {
+            Constant.SceneType.TYPE1.value -> {
+                if ((subScene as SceneConstructionSite).getsGuid() == null) {
+                    subScene.setsGuid(guid)
+                }
+                subScene.csUpdateTime = Date()
+                val record = sceneConstructionSiteMapper.selectByPrimaryKey(subScene.getsGuid())
+                r = if (record == null) {
+                    sceneConstructionSiteMapper.insert(subScene)
+                } else {
+                    sceneConstructionSiteMapper.updateByPrimaryKeySelective(subScene)
+                }
+            }
+
+            Constant.SceneType.TYPE2.value -> {
+                if ((subScene as SceneWharf).getsGuid() == null) {
+                    subScene.setsGuid(guid)
+                }
+                val record = sceneWharfMapper.selectByPrimaryKey(subScene.getsGuid())
+                r = if (record == null) {
+                    sceneWharfMapper.insert(subScene)
+                } else {
+                    sceneWharfMapper.updateByPrimaryKeySelective(subScene)
+                }
+            }
+
+            Constant.SceneType.TYPE3.value -> {
+                if ((subScene as SceneMixingPlant).getsGuid() == null) {
+                    subScene.setsGuid(guid)
+                }
+                val record = sceneMixingPlantMapper.selectByPrimaryKey(subScene.getsGuid())
+                r = if (record == null) {
+                    sceneMixingPlantMapper.insert(subScene)
+                } else {
+                    sceneMixingPlantMapper.updateByPrimaryKeySelective(subScene)
+                }
+            }
+
+            Constant.SceneType.TYPE14.value -> {
+                if ((subScene as SceneStorageYard).getsGuid() == null) {
+                    subScene.setsGuid(guid)
+                }
+                val record = sceneStorageYardMapper.selectByPrimaryKey(subScene.getsGuid())
+                isUpdate = record != null
+                r = if (record == null) {
+                    sceneStorageYardMapper.insert(subScene)
+                } else {
+                    sceneStorageYardMapper.updateByPrimaryKeySelective(subScene)
+                }
+            }
+        }
+        return isUpdate to r
+    }
+
+    fun findSubSceneList(scenes: List<Scense>): List<BaseScene?> {
+        val result = mutableListOf<BaseScene>()
+        scenes.groupBy { it.typeid }.forEach {
+            when (it.key.toString()) {
+                Constant.SceneType.TYPE1.value -> {
+                    sceneConstructionSiteMapper.selectByExample(Example(SceneConstructionSite::class.java).apply {
+                        createCriteria().andIn("sGuid", it.value.map { v-> v.guid })
+                    }).let { s-> result.addAll(s) }
+                }
+                Constant.SceneType.TYPE2.value -> {
+                    sceneWharfMapper.selectByExample(Example(SceneWharf::class.java).apply {
+                        createCriteria().andIn("sGuid", it.value.map { v-> v.guid })
+                    }).let { s-> result.addAll(s) }
+                }
+                Constant.SceneType.TYPE3.value -> {
+                    sceneMixingPlantMapper.selectByExample(Example(SceneMixingPlant::class.java).apply {
+                        createCriteria().andIn("sGuid", it.value.map { v-> v.guid })
+                    }).let { s-> result.addAll(s) }
+                }
+                Constant.SceneType.TYPE14.value -> {
+                    sceneStorageYardMapper.selectByExample(Example(SceneStorageYard::class.java).apply {
+                        createCriteria().andIn("sGuid", it.value.map { v-> v.guid })
+                    }).let { s-> result.addAll(s) }
+                }
+            }
+        }
+        return result
     }
 
     fun findScene(userId: String?): Scense? {
@@ -45,12 +132,23 @@
         })
     }
 
-    fun findScenes(nameList: List<String?>): List<Scense?> {
+    fun findSceneList(scene: Scense): List<Scense?> {
+        return scenseMapper.select(scene)
+    }
+
+    fun findSceneList(nameList: List<String?>): List<Scense?> {
         return scenseMapper.selectByExample(Example(Scense::class.java).apply {
             createCriteria().andIn("name", nameList)
         })
     }
 
+    /**
+     * 鏌ユ壘鍦烘櫙
+     */
+    fun findSceneList(topTaskId: String, sceneTypeId: Int? = null, townCode: String? = null): List<Scense?> {
+        return scenseMapper.getSceneByType(topTaskId, sceneTypeId, townCode)
+    }
+
     fun findBySubTask(subTaskId: String): Scense? {
         val subtask = subTaskRep.findOne(subTaskId)
         return scenseMapper.selectByPrimaryKey(subtask?.scenseid)

--
Gitblit v1.9.3