feiyu02
2024-09-25 0516cba27e632f20efac2752787f38f0c87baafa
src/main/kotlin/cn/flightfeather/supervision/business/autooutput/score/ScoreItem.kt
@@ -1,13 +1,10 @@
package cn.flightfeather.supervision.business.autooutput.score
import cn.flightfeather.supervision.business.autooutput.datasource.AopDataSource
import cn.flightfeather.supervision.common.utils.DateUtil
import cn.flightfeather.supervision.domain.ds1.entity.Evaluationsubrule2
import cn.flightfeather.supervision.domain.ds1.entity.Problemlist
import cn.flightfeather.supervision.domain.ds1.mapper.ProblemlistMapper
import cn.flightfeather.supervision.lightshare.vo.EvaluationSubRuleVo
import org.springframework.beans.factory.annotation.Autowired
import tk.mybatis.mapper.entity.Example
import kotlin.math.abs
/**
 * 自动评分条目
@@ -23,13 +20,12 @@
    //最小分值(默认0分)
    var minScore: Int = 0
    val dateUtil = DateUtil()
    // 评分项是否豁免不扣分
    var exemption = false
    lateinit var evaluationScene: AopDataSource.EvaluationScene
    private var rulePair: Pair<Evaluationsubrule2, MutableList<Evaluationsubrule2>>? = null
    private var rulePair: Pair<EvaluationSubRuleVo, MutableList<EvaluationSubRuleVo>>? = null
    @Autowired
    lateinit var problemlistMapper: ProblemlistMapper
@@ -40,6 +36,7 @@
    fun execute(evaluationScene: AopDataSource.EvaluationScene) {
        this.evaluationScene = evaluationScene
        if (!exemption && !evaluationScene.noRecord()) {
            val a = evaluationScene.topRules.value
            getRule(evaluationScene.rules.value)
            calScore()
        }
@@ -48,7 +45,7 @@
    /**
     * 获取评分规则
     */
    private fun getRule(eList: MutableList<Pair<Evaluationsubrule2, MutableList<Evaluationsubrule2>>>?) {
    private fun getRule(eList: MutableList<Pair<EvaluationSubRuleVo, MutableList<EvaluationSubRuleVo>>>?) {
        if (eList == null) return
        for (e in eList) {
            if (e.first.guid == id) {
@@ -66,7 +63,7 @@
     * @param size 传入评分条目的数量,评分条目按照一定规则进行排序
     * @return 返回需要扣分的评分条目的序号
     */
    abstract fun otherProblem(size: Int): Int?
    abstract fun otherProblem(size: Int): List<Int>?
    /**
     * 自动评分计算逻辑
@@ -77,15 +74,10 @@
            return
        }
        otherProblem(rulePair?.second!!.size)?.let {i-> rulePair?.second!![i].getScore() }
        otherProblem(rulePair?.second!!.size)?.let { it.forEach {i ->
            rulePair?.second!![i].setMaxScore()
        } }
        ScoreUtil.subRuleCal(rulePair)
    }
    /**
     * 减分模式下,计算具体选项的得分
     */
    fun Evaluationsubrule2.getScore() {
        extension1 = (0 - (maxscore ?: 0)).toString()
    }
}