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 | 80 +++++++++++++++++++++++++++++++++------ 1 files changed, 67 insertions(+), 13 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 a2c9c8c..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 @@ -15,6 +15,7 @@ import cn.flightfeather.supervision.common.utils.UUIDGenerator import cn.flightfeather.supervision.domain.ds1.entity.Evaluation import cn.flightfeather.supervision.domain.ds1.entity.Itemevaluation +import cn.flightfeather.supervision.domain.ds1.entity.Subtask import org.springframework.stereotype.Component import java.util.* import kotlin.math.abs @@ -24,9 +25,9 @@ */ @Component class AopEvaluation( + private val aopOutput: AopOutput, private val aopDbMapper: AopDbMapper, private val aopSceneTypeCheck: AopSceneTypeCheck, - private val aopOutput: AopOutput, csScoreItem1: CsScoreItem1, csScoreItem2: CsScoreItem2, mpScoreItem1: MpScoreItem1, @@ -35,15 +36,19 @@ whScoreItem1: WhScoreItem1, whScoreItem2: WhScoreItem2, reScoreItem5: ReScoreItem5, - reScoreItem7: ReScoreItem7, + // FIXME: 2023/12/29 鍒犲幓鐗规畩璇勪及瑙勫垯 +// reScoreItem7: ReScoreItem7, reScoreItem8: ReScoreItem8, reScoreItem9: ReScoreItem9, reScoreItem10: ReScoreItem10, reScoreItem11: ReScoreItem11, ) { + //姝e湪杩涜璇勪及鐨勫贰鏌ヤ换鍔� + private val runningSubtask = mutableListOf<String>() - //鏁版嵁婧� - private var source: AopDataSource? = null + //姝e湪杩涜璇勪及鐨勬�诲贰鏌ヤ换鍔� + private val runningTopTask = mutableListOf<String>() + //鐗瑰畾璇勫垎椤癸紙闄や簡缁熶竴鐨勬牴鎹贰鏌ラ棶棰樼洿鎺ユ墸鍒嗗锛屾湁鐗瑰畾鐨勬墸鍒嗛�昏緫鐨勮瘎浼伴」锛� private val itemList = mutableListOf<ScoreItem>() @@ -57,7 +62,7 @@ add(whScoreItem1) add(whScoreItem2) add(reScoreItem5) - add(reScoreItem7) +// add(reScoreItem7) add(reScoreItem8) add(reScoreItem9) add(reScoreItem10) @@ -65,18 +70,65 @@ } } - fun setResource(topTaskGuid: String?, sceneType: Int, districtName: String? = null, townCode: String? = null) { - source = AopDataSource(aopDbMapper, aopSceneTypeCheck) - source?.setResource(topTaskGuid, sceneType, districtName, townCode) + fun executeByTopTask(topTaskGuid: String?, sceneType: Int, districtName: String? = null, townCode: String? = null) { + val source = setResource(topTaskGuid, sceneType, districtName, townCode) + execute(source) + } + + /** + * 瀵圭壒瀹氱殑宸℃煡浠诲姟杩涜鍗曠嫭璇勫垎 + */ + 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 { + val source = AopDataSource(aopDbMapper, aopSceneTypeCheck) + source.setResource(subTask) + return source + } + + private fun setResource( + topTaskGuid: String?, + sceneType: Int, + districtName: String?, + townCode: String?, + ): AopDataSource { + val source = AopDataSource(aopDbMapper, aopSceneTypeCheck) + source.setResource(topTaskGuid, sceneType, districtName, townCode) + return source } /** * 鎵ц璇勫垎閫昏緫 */ - fun execute() { + private fun execute(source: AopDataSource) { //鑾峰彇鏁版嵁婧愶紙寰呰瘎浼扮殑鍦烘櫙锛� //寰幆澶勭悊姣忎釜鍦烘櫙 - source?.loop {index, evaluationScene -> + source.loop { index, evaluationScene -> if (evaluationScene.noRecord()) return@loop itemGrade(index, evaluationScene) @@ -84,7 +136,6 @@ aopOutput.toDbEvaluation(evaluationScene, this) } } - } /** @@ -142,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 @@ -155,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