package cn.flightfeather.supervision.lightshare.service.impl
|
|
import cn.flightfeather.supervision.common.exception.BizException
|
import cn.flightfeather.supervision.domain.ds1.entity.Evaluationrule
|
import cn.flightfeather.supervision.domain.ds1.entity.Evaluationsubrule2
|
import cn.flightfeather.supervision.domain.ds1.mapper.EvaluationruleMapper
|
import cn.flightfeather.supervision.domain.ds1.mapper.EvaluationsubruleMapper
|
import cn.flightfeather.supervision.domain.ds1.mapper.EvaluationsubruleMapper2
|
import cn.flightfeather.supervision.domain.ds1.repository.EvaluationRep
|
import cn.flightfeather.supervision.domain.ds1.repository.EvaluationRuleRep
|
import cn.flightfeather.supervision.domain.ds1.repository.SceneRep
|
import cn.flightfeather.supervision.lightshare.service.EvaluationsubruleService
|
import cn.flightfeather.supervision.lightshare.vo.ScoreDetail
|
import org.springframework.stereotype.Service
|
import tk.mybatis.mapper.entity.Example
|
|
@Service
|
class EvaluationsubruleServiceImpl(
|
val evaluationsubruleMapper: EvaluationsubruleMapper2,
|
val evaluationruleMapper: EvaluationruleMapper,
|
private val evaluationRep: EvaluationRep,
|
private val evaluationRuleRep: EvaluationRuleRep,
|
private val sceneRep: SceneRep,
|
) : EvaluationsubruleService {
|
|
override fun findOne(id: String): Evaluationsubrule2 = evaluationsubruleMapper.selectByPrimaryKey(id)
|
|
override fun findAll(): MutableList<Evaluationsubrule2> = evaluationsubruleMapper.selectAll()
|
|
override fun save(evaluationsubrule: Evaluationsubrule2): Int = evaluationsubruleMapper.insert(evaluationsubrule)
|
|
override fun update(evaluationsubrule: Evaluationsubrule2): Int =
|
evaluationsubruleMapper.updateByPrimaryKey(evaluationsubrule)
|
|
override fun delete(id: String): Int = evaluationsubruleMapper.deleteByPrimaryKey(id)
|
|
override fun findByRuleId(erguid: String): List<Evaluationsubrule2> {
|
return evaluationRuleRep.findSubRule(erguid)
|
}
|
|
override fun search(districtCode: String, sceneTypeId: String, version: String?): List<Evaluationsubrule2> {
|
val result = mutableListOf<Evaluationsubrule2>()
|
evaluationruleMapper.selectByExample(Example(Evaluationrule::class.java).apply {
|
createCriteria().andEqualTo("districtcode", districtCode)
|
.andEqualTo("scensetypeid", sceneTypeId)
|
}).takeIf { it.isNotEmpty() }?.get(0)?.let { rule ->
|
evaluationsubruleMapper.selectByExample(Example(Evaluationsubrule2::class.java).apply {
|
createCriteria().andEqualTo("erguid", rule.guid)
|
})
|
}?.also {
|
result.addAll(it)
|
}
|
|
return result
|
}
|
|
override fun getAutoScore(subTaskId: String): ScoreDetail {
|
//场景信息
|
val scene = sceneRep.findBySubTask(subTaskId)
|
//总分
|
val evaluation = evaluationRep.findBySubtask(subTaskId)
|
//子规则逐条得分
|
val subRuleScores = evaluationRep.findItemEvaluation(subTaskId)
|
if (subRuleScores.isEmpty()) throw BizException("无评估记录")
|
//评分总规则
|
val rule = evaluationRuleRep.findAutoEvaluationRule(subTaskId) ?: throw BizException("未找到相关自动评估规则")
|
//总规则对应的评分子规则
|
val subRules = evaluationRuleRep.findSubRule(rule.guid)
|
//查询结果
|
val result = ScoreDetail()
|
result.status = if (scene?.extension1.equals("1")) "在建" else "完工"
|
|
result.updateTime = evaluation?.updatedate
|
subRules.forEach {
|
it.ertype ?: return@forEach
|
result.addDetail(result.details, it, it.ertype!! - 1, subRuleScores, false)
|
}
|
result.calScore()
|
|
return result
|
}
|
}
|