feiyu02
2024-01-09 c1becf4cbd2e99601ce011c14b8742427249cfb4
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,14 @@
    whScoreItem1: WhScoreItem1,
    whScoreItem2: WhScoreItem2,
    reScoreItem5: ReScoreItem5,
    reScoreItem7: ReScoreItem7,
    // FIXME: 2023/12/29 删去特殊评估规则
//    reScoreItem7: ReScoreItem7,
    reScoreItem8: ReScoreItem8,
    reScoreItem9: ReScoreItem9,
    reScoreItem10: ReScoreItem10,
    reScoreItem11: ReScoreItem11,
) {
    //数据源
    private var source: AopDataSource? = null
    //特定评分项(除了统一的根据巡查问题直接扣分外,有特定的扣分逻辑的评估项)
    private val itemList = mutableListOf<ScoreItem>()
@@ -57,7 +57,7 @@
            add(whScoreItem1)
            add(whScoreItem2)
            add(reScoreItem5)
            add(reScoreItem7)
//            add(reScoreItem7)
            add(reScoreItem8)
            add(reScoreItem9)
            add(reScoreItem10)
@@ -65,18 +65,43 @@
        }
    }
    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) {
        val source = setResource(subTask)
        execute(source)
    }
    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 +109,6 @@
                aopOutput.toDbEvaluation(evaluationScene, this)
            }
        }
    }
    /**