From 0516cba27e632f20efac2752787f38f0c87baafa Mon Sep 17 00:00:00 2001
From: feiyu02 <risaku@163.com>
Date: 星期三, 25 九月 2024 09:24:05 +0800
Subject: [PATCH] 1. 新增自动评估添加和更新接口

---
 src/main/kotlin/cn/flightfeather/supervision/business/autooutput/score/AopEvaluation.kt |   62 +++++++++++++++++++-----------
 1 files changed, 39 insertions(+), 23 deletions(-)

diff --git a/src/main/kotlin/cn/flightfeather/supervision/business/autooutput/score/AopEvaluation.kt b/src/main/kotlin/cn/flightfeather/supervision/business/autooutput/score/AopEvaluation.kt
index 3c0ae96..ccfac49 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/business/autooutput/score/AopEvaluation.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/business/autooutput/score/AopEvaluation.kt
@@ -122,15 +122,28 @@
     /**
      * 鎵ц璇勫垎閫昏緫
      */
-    private fun execute(source: AopDataSource) {
-        //鑾峰彇鏁版嵁婧愶紙寰呰瘎浼扮殑鍦烘櫙锛�
-        //寰幆澶勭悊姣忎釜鍦烘櫙
-        source.loop { index, evaluationScene ->
-            if (evaluationScene.noRecord()) return@loop
+    private fun execute(source: AopDataSource, isBySubtask: Boolean = false) {
+        // 褰撻渶瑕佸彧閽堝鍗曡瘝宸℃煡浠诲姟杩涜璇勪及鏃�
+        if (isBySubtask) {
+            source.runBySubTask { index, evaluationScene ->
+                if (evaluationScene.noRecord()) return@runBySubTask
 
-            itemGrade(index, evaluationScene)
-            totalGrade(index, evaluationScene)?.run {
-                aopOutput.toDbEvaluation(evaluationScene, this)
+                itemGrade(index, evaluationScene)
+                totalGrade(index, evaluationScene)?.run {
+                    aopOutput.toDbEvaluation(evaluationScene, this)
+                }
+            }
+        }
+        // 褰撻拡瀵瑰満鏅繘琛岃瘎浼版椂锛岃鍖呮嫭璇ュ満鏅綋鏈堝彲鑳藉瓨鍦ㄧ殑澶嶆牳宸℃煡鎯呭喌
+        else {
+            //寰幆澶勭悊姣忎釜鍦烘櫙
+            source.loop { index, evaluationScene ->
+                if (evaluationScene.noRecord()) return@loop
+
+                itemGrade(index, evaluationScene)
+                totalGrade(index, evaluationScene)?.run {
+                    aopOutput.toDbEvaluation(evaluationScene, this)
+                }
             }
         }
     }
@@ -140,10 +153,10 @@
      */
     private fun itemGrade(index: Int, evaluationScene: AopDataSource.EvaluationScene) {
         // 瑙勫垯鏉$洰寰楀垎鍒濆鍖�
-        evaluationScene.topItems.value?.forEach { s -> s.extension1 = null }
+        evaluationScene.topRules.value?.forEach { s -> s.clear() }
         evaluationScene.rules.value?.forEach { p ->
-            p.first.extension1 = null
-            p.second.forEach { e -> e.extension1 = null }
+            p.first.clear()
+            p.second.forEach { e -> e.clear() }
         }
 
         /** 1. 鏍规嵁璇勫垎瑙勫垯瀵瑰簲鐨勯棶棰樿嚜鍔ㄥ垽鏂槸鍚︽墸鍒�***************************************************************/
@@ -159,7 +172,7 @@
                 // 瀛樺湪澶氫釜璇勫垎椤瑰拰鍚屼竴涓棶棰樺叧鑱旓紝鍥犳蹇呴』鍏ㄩ儴璇勫垎椤归兘鍒ゅ畾涓�閬�
                 sr.problemlist?.split(",")?.forEach { pId ->
                     if (pList.contains(pId)) {
-                        sr.extension1 = (0 - (sr.maxscore ?: 0)).toString()
+                        sr.setMaxScore()
                     }
                 }
             }
@@ -169,18 +182,21 @@
         /** 2.閮ㄥ垎鏈夌壒娈婅瘎鍒嗛�昏緫鐨勮鍒欒繘琛岃绠�*************************************************************************/
         itemList.forEach { item -> item.execute(evaluationScene) }
 
-        /** 3. 琛ュ叏鍚勪笂绾ц瘎鍒嗛」鐨勮鍒�*************************************************************************/
+        /** 3. 琛ュ厖鍚勪笂绾ц瘎鍒嗛」鐨勮鍒�*************************************************************************/
         evaluationScene.rules.value?.forEach { r ->
             val fatherId = r.first.fatherid
-            for (t in (evaluationScene.topItems.value ?: emptyList())) {
+            for (t in (evaluationScene.topRules.value ?: emptyList())) {
                 if (t.guid == fatherId) {
-                    var s = t.extension1?.toIntOrNull() ?: 0
-                    s += r.first.extension1?.toIntOrNull() ?: 0
+                    var s = t.score
+                    s += r.first.score
                     // 闄愬埗鏈�楂樻墸鍒�
-                    if (abs(s) > (t.maxscore ?: 0)) {
-                        s = 0 - (t.maxscore ?: 0)
-                    }
-                    t.extension1 = s.toString()
+//                    if (abs(s) > (t.maxscore ?: 0)) {
+////                        s = 0 - (t.maxscore ?: 0)
+//                        t.setMaxScore()
+//                    } else {
+//                        t.score = s
+//                    }
+                    t.score = s
                     break
                 }
             }
@@ -195,15 +211,15 @@
         evaluationScene: AopDataSource.EvaluationScene,
     ): Pair<Evaluation, List<Itemevaluation>>? {
         val scene = evaluationScene.scene.value ?: return null
-        val topItems = evaluationScene.topItems.value ?: return null
+        val topItems = evaluationScene.topRules.value ?: return null
         val rules = evaluationScene.rules.value ?: return null
         val subTask = evaluationScene.subTask.value
         val inspection = evaluationScene.inspection.value
         val totalScore = evaluationScene.totalScore.value ?: return null
 
         var total = 0//鎬绘墸闄ょ殑鍒嗘暟
-        evaluationScene.topItems.value?.forEach top@{ top ->
-            total += top.extension1?.toIntOrNull() ?: 0
+        evaluationScene.topRules.value?.forEach top@{ top ->
+            total += top.score
         }
         val evaluation = Evaluation().apply {
             evaluationScene.baseRule.value?.let {

--
Gitblit v1.9.3