feiyu02
2025-09-12 dc4f12f66685260ac357997680e5f3fe723c3c4a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
package cn.flightfeather.supervision.lightshare.vo
 
import cn.flightfeather.supervision.common.utils.Constant
import cn.flightfeather.supervision.domain.ds1.entity.Evaluationsubrule2
import kotlin.math.abs
 
/**
 * @date 2024.9.24
 * 评估详细规则
 */
class EvaluationSubRuleVo : Evaluationsubrule2() {
    // 得分记录(根据条目的评分模式,加分或减分,存储得分或者扣分)
    var score: Int = 0
        // 得分在赋值时,不能超过得分上限
        set(value) {
            field = if (maxscore != null && abs(value) > maxscore!!) {
                when (extension2) {
                    // 减分模式,记录为扣分(负数)
                    Constant.EvaGradeMode.MINUS_MODE.value -> {
                        (0 - (maxscore ?: 0))
                    }
                    // 加分模式,记录为得分(正数)
                    Constant.EvaGradeMode.ADD_MODE.value -> {
                        maxscore ?: 0
                    }
                    // 默认减分模式
                    else -> {
                        (0 - (maxscore ?: 0))
                    }
                }
            } else {
                value
            }
            selected = true
        }
 
    // 是否选中本评估条目
    var selected: Boolean = false
 
    /**
     * 情况得分和选中状态
     */
    fun clear() {
        score = 0
        selected = false
    }
 
    /**
     * 直接根据条目的总分和得分模式获取最终得分
     */
    fun setMaxScore() {
        score = when (extension2) {
            // 减分模式,记录为扣分(负数)
            Constant.EvaGradeMode.MINUS_MODE.value -> {
                (0 - (maxscore ?: 0))
            }
            // 加分模式,记录为得分(正数)
            Constant.EvaGradeMode.ADD_MODE.value -> {
                maxscore ?: 0
            }
            // 默认减分模式
            else -> {
                (0 - (maxscore ?: 0))
            }
        }
    }
 
    /**
     * 获取最终得分(正数)
     * 一般用于计算总分时(总分通常情况下都为正数)
     */
    fun getFinalScore(): Int {
        return when (extension2) {
            // 减分模式下,记录为扣分,所以得分为总分减去扣分
            Constant.EvaGradeMode.MINUS_MODE.value -> {
                maxscore?.minus(abs(score)) ?: 0
            }
            // 加分模式,记录为得分,直接加入总分
            Constant.EvaGradeMode.ADD_MODE.value -> {
                score
            }
            // 默认减分模式
            else -> {
                maxscore?.minus(abs(score)) ?: 0
            }
        }
    }
}