From c03e1d823eb86c856ecbe40d8d2180ffce7c7b0f Mon Sep 17 00:00:00 2001
From: feiyu02 <risaku@163.com>
Date: 星期五, 14 十一月 2025 17:45:39 +0800
Subject: [PATCH] 2025.11.14 新增值域的增删改接口

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

diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/DomaincatalogServiceImpl.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/DomaincatalogServiceImpl.kt
index 34c5a2e..97cf9cb 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/DomaincatalogServiceImpl.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/DomaincatalogServiceImpl.kt
@@ -1,14 +1,27 @@
 package cn.flightfeather.supervision.lightshare.service.impl
 
-import cn.flightfeather.supervision.domain.ds1.entity.Domaincatalog
-import cn.flightfeather.supervision.domain.ds1.mapper.DomaincatalogMapper
+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.*
+import cn.flightfeather.supervision.domain.ds1.mapper.*
 import cn.flightfeather.supervision.lightshare.service.DomaincatalogService
+import cn.flightfeather.supervision.lightshare.vo.AreaVo
 import cn.flightfeather.supervision.lightshare.vo.DomaincatalogVo
 import org.springframework.beans.BeanUtils
 import org.springframework.stereotype.Service
+import org.springframework.transaction.annotation.Transactional
+import tk.mybatis.mapper.entity.Example
+import java.util.*
 
 @Service
-class DomaincatalogServiceImpl(val domaincatalogMapper: DomaincatalogMapper) : DomaincatalogService {
+class DomaincatalogServiceImpl(
+    private val domaincatalogMapper: DomaincatalogMapper,
+    private val problemtypeMapper: ProblemtypeMapper,
+    private val changeAdviceMapper: ChangeAdviceMapper,
+    private val evaluationruleMapper: EvaluationruleMapper,
+    private val evaluationsubruleMapper: EvaluationsubruleMapper,
+) : DomaincatalogService {
     //鏍规嵁name鏌ヨ
     override fun findOneByName(name: String): Domaincatalog? {
         val domaincatalog = Domaincatalog()
@@ -21,7 +34,9 @@
     //鑾峰彇鍏ㄩ儴
     override fun findAll(): MutableList<DomaincatalogVo> {
         val domaincatalogVoList = mutableListOf<DomaincatalogVo>()
-        val domaincatalogList = domaincatalogMapper.selectAll()
+        val domaincatalogList = domaincatalogMapper.selectByExample(Example(Domaincatalog::class.java).apply {
+            orderBy("name")
+        })
         domaincatalogList.forEach {
             val domaincatalogVo = DomaincatalogVo()
             BeanUtils.copyProperties(it,domaincatalogVo)
@@ -30,9 +45,92 @@
         return domaincatalogVoList
     }
 
-    override fun save(domaincatalog: Domaincatalog): Int = domaincatalogMapper.insert(domaincatalog)
+    override fun save(domaincatalog: Domaincatalog): Domaincatalog{
+        if (domaincatalog.guid == null) {
+            domaincatalog.guid = UUIDGenerator.generate16ShortUUID()
+        }
+        if (domaincatalogMapper.insert(domaincatalog) == 1) {
+            return domaincatalog
+        } else {
+            throw BizException("鍊煎煙椤规柊澧炲け璐�")
+        }
+    }
 
-    override fun update(domaincatalog: Domaincatalog): Int = domaincatalogMapper.updateByPrimaryKey(domaincatalog)
+    override fun update(domaincatalog: Domaincatalog): Domaincatalog{
+        // 2025.11.11 鏂板鐗堟湰鍙峰姣旈�昏緫锛岃嫢鏇存柊鐨勯厤缃俊鎭増鏈彿绛変簬鏁版嵁鍘嗗彶鐗堟湰鍙凤紝鎵嶈兘鏇存柊
+        val oldOne = domaincatalogMapper.selectByPrimaryKey(domaincatalog.guid)
+        if ((domaincatalog.version == oldOne.version)) {
+            // 鏇存柊鏃讹紝鐗堟湰鍙烽�掑
+            domaincatalog.version = (domaincatalog.version ?: 0) + 1
+            domaincatalogMapper.updateByPrimaryKey(domaincatalog)
+
+            return domaincatalog
+        } else {
+            throw BizException("鐗堟湰鍙蜂笉涓�鑷达紝鏇存柊澶辫触")
+        }
+    }
 
     override fun delete(id: String): Int = domaincatalogMapper.deleteByPrimaryKey(id)
+
+    @Transactional
+    override fun quickConfiguration(
+        target: Constant.SceneType,
+        targetArea: AreaVo,
+        source: Constant.SceneType,
+        sourceArea: AreaVo,
+    ): Boolean {
+        //1. 闂绫诲瀷鍜屾暣鏀瑰缓璁�
+        val adviceList = changeAdviceMapper.selectByExample(Example(ChangeAdvice::class.java).apply {
+            createCriteria().andEqualTo("adExtension1", sourceArea.districtname)
+                .andEqualTo("adExtension2", source.text)
+        })
+        problemtypeMapper.selectByExample(Example(Problemtype::class.java).apply {
+            createCriteria().andEqualTo("scensetypeid", source.value.toByte())
+                .andEqualTo("districtname", sourceArea.districtname)
+        }).forEach {
+            val newProblemGuid = UUIDGenerator.generate16ShortUUID()
+            adviceList.find { ad -> ad.adProblemtypeguid == it.guid }?.let { ad ->
+                ad.adGuid = UUIDGenerator.generate16ShortUUID()
+                ad.adProblemtypeguid = newProblemGuid
+                ad.adCreatedate = Date()
+                ad.adUpdatedate = Date()
+                ad.adExtension1 = targetArea.districtname
+                ad.adExtension2 = target.text
+                changeAdviceMapper.insert(ad)
+            }
+
+            it.guid = newProblemGuid
+            it.scensetypeid = target.value.toByte()
+            it.scensetype = target.text
+            it.createdate = Date()
+            it.updatedate = Date()
+            it.provincecode = targetArea.provincecode
+            it.provincename = targetArea.provincename
+            it.citycode = targetArea.citycode
+            it.cityname = targetArea.cityname
+            it.districtcode = targetArea.districtcode
+            it.districtname = targetArea.districtname
+
+            problemtypeMapper.insert(it)
+        }
+
+        return true
+
+        //2. 闂浣嶇疆锛堥粯璁ゅ伐鍦帮紝鍙笉淇敼锛�
+        //3. 鑷瘎瑙勫垯琛�
+//        evaluationruleMapper.selectByExample(Example(Evaluationrule::class.java).apply {
+//            createCriteria().andEqualTo("tasktypeid", 99)
+//                .andEqualTo("scensetypeid", source.value)
+//            and(createCriteria().orEqualTo("provincecode", sourceArea.provincecode).orIsNull("provincecode"))
+//            and(createCriteria().orEqualTo("citycode", sourceArea.citycode).orIsNull("citycode"))
+//            and(createCriteria().orEqualTo("districtcode", sourceArea.districtcode).orIsNull("districtcode"))
+//            and(createCriteria().orEqualTo("towncode", sourceArea.towncode).orIsNull("towncode"))
+//        }).takeIf { it.isNotEmpty() }?.get(0).let {sourceRule ->
+//            if (sourceRule != null) {
+//                evaluationsubruleMapper.selectByExample(Example(Evaluationsubrule::class.java).apply {
+//                    createCriteria().andEqualTo("", sourceRule)
+//                })
+//            }
+//        }
+    }
 }
\ No newline at end of file

--
Gitblit v1.9.3