From 4e20a1aaaba1bb843820fca844c20055a33febce Mon Sep 17 00:00:00 2001
From: feiyu02 <risaku@163.com>
Date: 星期五, 19 七月 2024 17:39:19 +0800
Subject: [PATCH] 1. 新增webSocket相关功能

---
 src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/EvaluationsubruleServiceImpl.kt |  148 ++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 139 insertions(+), 9 deletions(-)

diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/EvaluationsubruleServiceImpl.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/EvaluationsubruleServiceImpl.kt
index d104301..e9d5732 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/EvaluationsubruleServiceImpl.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/EvaluationsubruleServiceImpl.kt
@@ -1,18 +1,25 @@
 package cn.flightfeather.supervision.lightshare.service.impl
 
-import cn.flightfeather.supervision.domain.ds1.entity.Evaluationrule
-import cn.flightfeather.supervision.domain.ds1.entity.Evaluationsubrule
+import cn.flightfeather.supervision.common.exception.BizException
+import cn.flightfeather.supervision.domain.ds1.entity.*
 import cn.flightfeather.supervision.domain.ds1.mapper.EvaluationruleMapper
 import cn.flightfeather.supervision.domain.ds1.mapper.EvaluationsubruleMapper
+import cn.flightfeather.supervision.domain.ds1.repository.EvaluationRep
+import cn.flightfeather.supervision.domain.ds1.repository.EvaluationRuleRep
 import cn.flightfeather.supervision.lightshare.service.EvaluationsubruleService
+import cn.flightfeather.supervision.lightshare.vo.EvaluationVo
+import cn.flightfeather.supervision.lightshare.vo.SubEvaluationVo
+import cn.flightfeather.supervision.lightshare.vo.ThirdEvaluationVo
 import org.springframework.stereotype.Service
 import tk.mybatis.mapper.entity.Example
 
 @Service
-class EvaluationsubruleServiceImpl (
-        val evaluationsubruleMapper: EvaluationsubruleMapper,
-        val evaluationruleMapper: EvaluationruleMapper
-):EvaluationsubruleService {
+class EvaluationsubruleServiceImpl(
+    val evaluationsubruleMapper: EvaluationsubruleMapper,
+    val evaluationruleMapper: EvaluationruleMapper,
+    private val evaluationRep: EvaluationRep,
+    private val evaluationRuleRep: EvaluationRuleRep,
+) : EvaluationsubruleService {
 
     override fun findOne(id: String): Evaluationsubrule = evaluationsubruleMapper.selectByPrimaryKey(id)
 
@@ -20,7 +27,8 @@
 
     override fun save(evaluationsubrule: Evaluationsubrule): Int = evaluationsubruleMapper.insert(evaluationsubrule)
 
-    override fun update(evaluationsubrule: Evaluationsubrule): Int = evaluationsubruleMapper.updateByPrimaryKey(evaluationsubrule)
+    override fun update(evaluationsubrule: Evaluationsubrule): Int =
+        evaluationsubruleMapper.updateByPrimaryKey(evaluationsubrule)
 
     override fun delete(id: String): Int = evaluationsubruleMapper.deleteByPrimaryKey(id)
 
@@ -36,8 +44,8 @@
         val result = mutableListOf<Evaluationsubrule>()
         evaluationruleMapper.selectByExample(Example(Evaluationrule::class.java).apply {
             createCriteria().andEqualTo("districtcode", districtCode)
-                    .andEqualTo("scensetypeid", sceneTypeId)
-        }).takeIf { it.isNotEmpty() }?.get(0)?.let {rule ->
+                .andEqualTo("scensetypeid", sceneTypeId)
+        }).takeIf { it.isNotEmpty() }?.get(0)?.let { rule ->
             evaluationsubruleMapper.selectByExample(Example(Evaluationsubrule::class.java).apply {
                 createCriteria().andEqualTo("erguid", rule.guid)
             })
@@ -47,4 +55,126 @@
 
         return result
     }
+
+    override fun getAutoScore(subTaskId: String): List<EvaluationVo> {
+        //瀛愯鍒欓�愭潯寰楀垎
+        val subRuleScores = evaluationRep.findItemEvaluation(subTaskId)
+        //璇勫垎鎬昏鍒�
+        val rule = evaluationRuleRep.findAutoEvaluationRule(subTaskId) ?: throw BizException("鏈壘鍒扮浉鍏宠嚜鍔ㄨ瘎浼拌鍒�")
+        //鎬昏鍒欏搴旂殑璇勫垎瀛愯鍒�
+        val subRules = evaluationRuleRep.findSubRule(rule.guid)
+        //鏌ヨ缁撴灉
+        val resultList = mutableListOf<EvaluationVo>()
+
+        var _group = 0
+        subRules.forEach {
+            when (it.ertype) {
+                2 -> resultList.add(EvaluationVo().apply {
+                    id = it.guid
+                    title = it.itemname
+                    scoreMode = it.extension1
+                    gradeMode = it.extension2
+                    maxScore = when (gradeMode) {
+                        "minus_mode" -> it.minscore?.minus(it.maxscore ?: 0) ?: 0
+                        "add_mode" -> it.maxscore ?: 0
+                        else -> it.minscore?.minus(it.maxscore ?: 0) ?: 0
+                    }
+                    selectMode = it.extension3
+
+                    //濡傛灉鏈夊緱鍒嗚褰曪紝鍒欐敼鍙樼姸鎬佷负閫変腑
+                    for (s in subRuleScores) {
+                        if (it.guid == s.esrguid) {
+                            select = s.extension1 == "true"
+                            break
+                        }
+                    }
+                })
+                3 -> {
+                    for (r in resultList) {
+                        if (it.fatherid == r.id) {
+                            r.subList.add(SubEvaluationVo().apply {
+                                id = it.guid
+                                title2 = it.itemname
+                                gradeMode = it.extension2
+                                selectMode = it.extension3
+                                score = when (gradeMode) {
+                                    "minus_mode" -> it.minscore?.minus(it.maxscore ?: 0) ?: 0
+                                    "add_mode" -> it.maxscore ?: 0
+                                    else -> it.minscore?.minus(it.maxscore ?: 0) ?: 0
+                                }
+                                group = _group++
+
+                                //濡傛灉鏈夊緱鍒嗚褰曪紝鍒欐敼鍙樼姸鎬佷负閫変腑
+                                for (s in subRuleScores) {
+                                    if (it.guid == s.esrguid) {
+                                        select = s.extension1 == "true"
+                                        break
+                                    }
+                                }
+                            })
+                            break
+                        }
+                    }
+                }
+                4 -> {
+                    resultList.forEach{ r ->
+                        //4绾х殑璇勪及椤圭洿鎺ラ檮灞炰簬2绾ц瘎浼伴」
+                        if (r.id == it.fatherid) {
+                            if (r.subList.isEmpty()) {
+                                r.subList.add(SubEvaluationVo().apply {
+                                    placeholder = true
+                                    id = it.guid
+                                    title2 = r.title
+                                    score = r.maxScore
+                                    gradeMode = r.gradeMode
+                                    selectMode = r.selectMode
+                                    group = _group++
+                                })
+                            }
+                            r.subList[0].sub2.add(ThirdEvaluationVo().apply {
+                                id = it.guid
+                                content = it.itemname
+                                score = when (r.subList[0].gradeMode) {
+                                    "minus_mode" -> r.maxScore.plus(it.maxscore ?: 0)
+                                    "add_mode" -> it.maxscore ?: 0
+                                    else -> r.maxScore.plus(it.maxscore ?: 0)
+                                }
+                                //濡傛灉鏈夊緱鍒嗚褰曪紝鍒欐敼鍙樼姸鎬佷负閫変腑
+                                for (s in subRuleScores) {
+                                    if (it.guid == s.esrguid) {
+                                        select = s.extension1 == "true"
+                                        break
+                                    }
+                                }
+                            })
+                        } else {
+                            r.subList.forEach { sr ->
+                                if (sr.id == it.fatherid){
+                                    sr.sub2.add(ThirdEvaluationVo().apply {
+                                        id = it.guid
+                                        content = it.itemname
+                                        score = when (sr.gradeMode) {
+                                            "minus_mode" -> sr.score.plus(it.maxscore ?: 0)
+                                            "add_mode" -> it.maxscore ?: 0
+                                            else -> sr.score.plus(it.maxscore ?: 0)
+                                        }
+                                        //濡傛灉鏈夊緱鍒嗚褰曪紝鍒欐敼鍙樼姸鎬佷负閫変腑
+                                        for (s in subRuleScores) {
+                                            if (it.guid == s.esrguid) {
+                                                select = s.extension1 == "true"
+                                                break
+                                            }
+                                        }
+                                    })
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+
+        return resultList
+
+    }
 }
\ No newline at end of file

--
Gitblit v1.9.3