package cn.flightfeather.supervision.lightshare.service.impl
|
|
import cn.flightfeather.supervision.common.exception.BizException
|
import cn.flightfeather.supervision.domain.ds1.entity.*
|
import cn.flightfeather.supervision.domain.ds1.mapper.EvaluationruleMapper
|
import cn.flightfeather.supervision.domain.ds1.mapper.EvaluationsubruleMapper
|
import cn.flightfeather.supervision.domain.ds1.repository.EvaluationRep
|
import cn.flightfeather.supervision.domain.ds1.repository.EvaluationRuleRep
|
import cn.flightfeather.supervision.lightshare.service.EvaluationsubruleService
|
import cn.flightfeather.supervision.lightshare.vo.EvaluationVo
|
import cn.flightfeather.supervision.lightshare.vo.SubEvaluationVo
|
import cn.flightfeather.supervision.lightshare.vo.ThirdEvaluationVo
|
import org.springframework.stereotype.Service
|
import tk.mybatis.mapper.entity.Example
|
|
@Service
|
class EvaluationsubruleServiceImpl(
|
val evaluationsubruleMapper: EvaluationsubruleMapper,
|
val evaluationruleMapper: EvaluationruleMapper,
|
private val evaluationRep: EvaluationRep,
|
private val evaluationRuleRep: EvaluationRuleRep,
|
) : EvaluationsubruleService {
|
|
override fun findOne(id: String): Evaluationsubrule = evaluationsubruleMapper.selectByPrimaryKey(id)
|
|
override fun findAll(): MutableList<Evaluationsubrule> = evaluationsubruleMapper.selectAll()
|
|
override fun save(evaluationsubrule: Evaluationsubrule): Int = evaluationsubruleMapper.insert(evaluationsubrule)
|
|
override fun update(evaluationsubrule: Evaluationsubrule): Int =
|
evaluationsubruleMapper.updateByPrimaryKey(evaluationsubrule)
|
|
override fun delete(id: String): Int = evaluationsubruleMapper.deleteByPrimaryKey(id)
|
|
override fun findByRuleId(erguid: String): List<Evaluationsubrule> {
|
val example = Example(Evaluationsubrule::class.java)
|
val criteria = example.createCriteria()
|
criteria.andEqualTo("erguid", erguid)
|
example.orderBy("extension1").desc()
|
return evaluationsubruleMapper.selectByExample(example)
|
}
|
|
override fun search(districtCode: String, sceneTypeId: String, version: String?): List<Evaluationsubrule> {
|
val result = mutableListOf<Evaluationsubrule>()
|
evaluationruleMapper.selectByExample(Example(Evaluationrule::class.java).apply {
|
createCriteria().andEqualTo("districtcode", districtCode)
|
.andEqualTo("scensetypeid", sceneTypeId)
|
}).takeIf { it.isNotEmpty() }?.get(0)?.let { rule ->
|
evaluationsubruleMapper.selectByExample(Example(Evaluationsubrule::class.java).apply {
|
createCriteria().andEqualTo("erguid", rule.guid)
|
})
|
}?.also {
|
result.addAll(it)
|
}
|
|
return result
|
}
|
|
override fun getAutoScore(subTaskId: String): List<EvaluationVo> {
|
//子规则逐条得分
|
val subRuleScores = evaluationRep.findItemEvaluation(subTaskId)
|
//评分总规则
|
val rule = evaluationRuleRep.findAutoEvaluationRule(subTaskId) ?: throw BizException("未找到相关自动评估规则")
|
//总规则对应的评分子规则
|
val subRules = evaluationRuleRep.findSubRule(rule.guid)
|
//查询结果
|
val resultList = mutableListOf<EvaluationVo>()
|
|
var _group = 0
|
subRules.forEach {
|
when (it.ertype) {
|
2 -> resultList.add(EvaluationVo().apply {
|
id = it.guid
|
title = it.itemname
|
scoreMode = it.extension1
|
gradeMode = it.extension2
|
maxScore = when (gradeMode) {
|
"minus_mode" -> it.minscore?.minus(it.maxscore ?: 0) ?: 0
|
"add_mode" -> it.maxscore ?: 0
|
else -> it.minscore?.minus(it.maxscore ?: 0) ?: 0
|
}
|
selectMode = it.extension3
|
|
//如果有得分记录,则改变状态为选中
|
for (s in subRuleScores) {
|
if (it.guid == s.esrguid) {
|
select = s.extension1 == "true"
|
break
|
}
|
}
|
})
|
3 -> {
|
for (r in resultList) {
|
if (it.fatherid == r.id) {
|
r.subList.add(SubEvaluationVo().apply {
|
id = it.guid
|
title2 = it.itemname
|
gradeMode = it.extension2
|
selectMode = it.extension3
|
score = when (gradeMode) {
|
"minus_mode" -> it.minscore?.minus(it.maxscore ?: 0) ?: 0
|
"add_mode" -> it.maxscore ?: 0
|
else -> it.minscore?.minus(it.maxscore ?: 0) ?: 0
|
}
|
group = _group++
|
|
//如果有得分记录,则改变状态为选中
|
for (s in subRuleScores) {
|
if (it.guid == s.esrguid) {
|
select = s.extension1 == "true"
|
break
|
}
|
}
|
})
|
break
|
}
|
}
|
}
|
4 -> {
|
resultList.forEach{ r ->
|
//4级的评估项直接附属于2级评估项
|
if (r.id == it.fatherid) {
|
if (r.subList.isEmpty()) {
|
r.subList.add(SubEvaluationVo().apply {
|
placeholder = true
|
id = it.guid
|
title2 = r.title
|
score = r.maxScore
|
gradeMode = r.gradeMode
|
selectMode = r.selectMode
|
group = _group++
|
})
|
}
|
r.subList[0].sub2.add(ThirdEvaluationVo().apply {
|
id = it.guid
|
content = it.itemname
|
score = when (r.subList[0].gradeMode) {
|
"minus_mode" -> r.maxScore.plus(it.maxscore ?: 0)
|
"add_mode" -> it.maxscore ?: 0
|
else -> r.maxScore.plus(it.maxscore ?: 0)
|
}
|
//如果有得分记录,则改变状态为选中
|
for (s in subRuleScores) {
|
if (it.guid == s.esrguid) {
|
select = s.extension1 == "true"
|
break
|
}
|
}
|
})
|
} else {
|
r.subList.forEach { sr ->
|
if (sr.id == it.fatherid){
|
sr.sub2.add(ThirdEvaluationVo().apply {
|
id = it.guid
|
content = it.itemname
|
score = when (sr.gradeMode) {
|
"minus_mode" -> sr.score.plus(it.maxscore ?: 0)
|
"add_mode" -> it.maxscore ?: 0
|
else -> sr.score.plus(it.maxscore ?: 0)
|
}
|
//如果有得分记录,则改变状态为选中
|
for (s in subRuleScores) {
|
if (it.guid == s.esrguid) {
|
select = s.extension1 == "true"
|
break
|
}
|
}
|
})
|
}
|
}
|
}
|
}
|
}
|
}
|
}
|
|
return resultList
|
|
}
|
}
|