From b212ef0208cb094f63ea8a239a1361f8e859c839 Mon Sep 17 00:00:00 2001
From: feiyu02 <risaku@163.com>
Date: 星期一, 08 七月 2024 17:40:39 +0800
Subject: [PATCH] 2024.7.8

---
 src/main/kotlin/cn/flightfeather/supervision/business/autooutput/score/AopEvaluation.kt |   38 ++++++++++++++++++++++++++++++++++----
 1 files changed, 34 insertions(+), 4 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 384110f..894422a 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
@@ -43,6 +43,11 @@
     reScoreItem10: ReScoreItem10,
     reScoreItem11: ReScoreItem11,
 ) {
+    //姝e湪杩涜璇勪及鐨勫贰鏌ヤ换鍔�
+    private val runningSubtask = mutableListOf<String>()
+
+    //姝e湪杩涜璇勪及鐨勬�诲贰鏌ヤ换鍔�
+    private val runningTopTask = mutableListOf<String>()
 
     //鐗瑰畾璇勫垎椤癸紙闄や簡缁熶竴鐨勬牴鎹贰鏌ラ棶棰樼洿鎺ユ墸鍒嗗锛屾湁鐗瑰畾鐨勬墸鍒嗛�昏緫鐨勮瘎浼伴」锛�
     private val itemList = mutableListOf<ScoreItem>()
@@ -73,9 +78,31 @@
     /**
      * 瀵圭壒瀹氱殑宸℃煡浠诲姟杩涜鍗曠嫭璇勫垎
      */
-    fun executeBySubTask(subTask:Subtask) {
+    fun executeBySubTask(subTask: Subtask) {
+        if (checkSubtaskExist(subTask)) return
         val source = setResource(subTask)
         execute(source)
+        runningSubtask.remove(subTask.stguid)
+    }
+
+    @Synchronized
+    private fun checkTopTaskExist(topTaskGuid: String?): Boolean {
+        return if (runningTopTask.contains(topTaskGuid)) {
+            true
+        } else {
+            topTaskGuid?.let { runningTopTask.add(it) }
+            false
+        }
+    }
+
+    @Synchronized
+    private fun checkSubtaskExist(subTask: Subtask): Boolean {
+        return if (subTask.stguid == null || runningSubtask.contains(subTask.stguid)) {
+            true
+        } else {
+            runningSubtask.add(subTask.stguid!!)
+            false
+        }
     }
 
     private fun setResource(subTask: Subtask): AopDataSource {
@@ -101,7 +128,7 @@
     private fun execute(source: AopDataSource) {
         //鑾峰彇鏁版嵁婧愶紙寰呰瘎浼扮殑鍦烘櫙锛�
         //寰幆澶勭悊姣忎釜鍦烘櫙
-        source.loop {index, evaluationScene ->
+        source.loop { index, evaluationScene ->
             if (evaluationScene.noRecord()) return@loop
 
             itemGrade(index, evaluationScene)
@@ -166,7 +193,10 @@
     /**
      * 璁$畻鎬诲垎
      */
-    private fun totalGrade(index: Int, evaluationScene: AopDataSource.EvaluationScene): Pair<Evaluation, List<Itemevaluation>>? {
+    private fun totalGrade(
+        index: Int,
+        evaluationScene: AopDataSource.EvaluationScene,
+    ): Pair<Evaluation, List<Itemevaluation>>? {
         val scene = evaluationScene.scene.value ?: return null
         val topItems = evaluationScene.topItems.value ?: return null
         val rules = evaluationScene.rules.value ?: return null
@@ -179,7 +209,7 @@
             total += top.extension1?.toIntOrNull() ?: 0
         }
         val evaluation = Evaluation().apply {
-                evaluationScene.baseRule.value?.let {
+            evaluationScene.baseRule.value?.let {
                 guid = UUIDGenerator.generate16ShortUUID()
                 iguid = inspection?.guid
                 stguid = subTask?.stguid

--
Gitblit v1.9.3