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
|
}
|
}
|
}
|
}
|