feiyu02
2024-01-10 30a53b41f09d2eefd33513a409d472c2166ba1ea
src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/EvaluationServiceImpl.kt
@@ -1,7 +1,11 @@
package cn.flightfeather.supervision.lightshare.service.impl
import cn.flightfeather.supervision.business.AutoScore2
import cn.flightfeather.supervision.business.storage.StAutoScore
import cn.flightfeather.supervision.business.autooutput.AopTaskCtrl
import cn.flightfeather.supervision.business.autooutput.score.AopEvaluation
import cn.flightfeather.supervision.common.executor.BackgroundTaskCtrl
import cn.flightfeather.supervision.common.executor.BgTaskStatus
import cn.flightfeather.supervision.common.executor.BgTaskType
import cn.flightfeather.supervision.domain.ds1.entity.Domainitem
import cn.flightfeather.supervision.domain.ds1.entity.Evaluation
import cn.flightfeather.supervision.domain.ds1.entity.Subtask
@@ -11,10 +15,14 @@
import cn.flightfeather.supervision.common.utils.Constant
import cn.flightfeather.supervision.common.utils.DateUtil
import cn.flightfeather.supervision.common.utils.Domain
import cn.flightfeather.supervision.domain.ds1.repository.EvaluationRep
import cn.flightfeather.supervision.domain.ds1.repository.TaskRep
import cn.flightfeather.supervision.lightshare.service.EvaluationService
import cn.flightfeather.supervision.lightshare.service.SubtaskService
import cn.flightfeather.supervision.lightshare.vo.AreaVo
import cn.flightfeather.supervision.lightshare.vo.SubtaskVo
import cn.flightfeather.supervision.lightshare.vo.AutoScoreResultVo
import cn.flightfeather.supervision.lightshare.vo.BaseResponse
import cn.flightfeather.supervision.lightshare.vo.EvaluateResVo
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.stereotype.Service
import tk.mybatis.mapper.entity.Example
@@ -22,7 +30,12 @@
import kotlin.Comparator
@Service
class EvaluationServiceImpl(val evaluationMapper: EvaluationMapper) : EvaluationService {
class EvaluationServiceImpl(
    private val evaluationMapper: EvaluationMapper,
    private val evaluationRep: EvaluationRep,
    private val taskRep: TaskRep,
    private val aopTaskCtrl: AopTaskCtrl,
) : EvaluationService {
    @Autowired
    lateinit var subtaskService: SubtaskService
@@ -31,13 +44,13 @@
    @Autowired
    lateinit var subtaskMapper: SubtaskMapper
    @Autowired
    lateinit var autoScore: StAutoScore
    lateinit var aopEvaluation: AopEvaluation
    private var isAutoScoreRunning = false
    //获取某顶层任务下某个场景的街道评分排名
    override fun getRankOfTown(tguid: String, scensetypeid: String?): List<AreaVo> {
    override fun getRankOfTown(tguid: String, scensetypeid: String?): List<EvaluateResVo> {
        val evaluationlist = getRankInfo(tguid, scensetypeid, null)
        var areaVolist = mutableListOf<AreaVo>()
        var areaVolist = mutableListOf<EvaluateResVo>()
        //考核类型是规范考核
        if (evaluationlist.isNotEmpty() &&
                Objects.equals(evaluationlist.get(0).ertype, Constant.RuleType.STANDARD.value)) {
@@ -53,7 +66,7 @@
                val iterator: MutableIterator<Evaluation> = tmplist.iterator()
                val evaluation = evaluationlist.get(0)//获取一种街镇
                var areaVo = AreaVo()
                var areaVo = EvaluateResVo()
                areaVo = transform(areaVo, evaluation)
                while (iterator.hasNext()){
                    val tmp = iterator.next()
@@ -85,7 +98,7 @@
                val iterator: MutableIterator<Evaluation> = tmplist.iterator()
                val evaluation = evaluationlist.get(0)//获取一种街镇
                var areaVo = AreaVo()
                var areaVo = EvaluateResVo()
                areaVo = transform(areaVo, evaluation)
                while (iterator.hasNext()){
                    val tmp = iterator.next()
@@ -159,7 +172,7 @@
    }
    //Evaluation传递数据给AreaVo
    fun transform(areaVo: AreaVo, evaluation: Evaluation):AreaVo{
    fun transform(areaVo: EvaluateResVo, evaluation: Evaluation):EvaluateResVo{
        areaVo.provincecode = evaluation.provincecode
        areaVo.provincename = evaluation.provincename
        areaVo.citycode = evaluation.citycode
@@ -172,9 +185,9 @@
    }
    //按街道严重不规范场景百分比排序
    fun sort(areaVolist: MutableList<AreaVo>):MutableList<AreaVo>{
        Collections.sort(areaVolist, object : Comparator<AreaVo>{
            override fun compare(o1: AreaVo?, o2: AreaVo?): Int {
    fun sort(areaVolist: MutableList<EvaluateResVo>):MutableList<EvaluateResVo>{
        Collections.sort(areaVolist, object : Comparator<EvaluateResVo>{
            override fun compare(o1: EvaluateResVo?, o2: EvaluateResVo?): Int {
                var num1 = 0.0
                if (o1!!.allsensenum != 0)
                    num1 = (o1.notstandardnum/o1.allsensenum).toDouble()
@@ -185,21 +198,6 @@
            }
        })
        return areaVolist
    }
    override fun getTopTaskByScene(sceneId: String?): String? {
        val example = Example(Evaluation::class.java)
        val criteria = example.createCriteria()
        criteria.andEqualTo("sguid", sceneId)
        example.orderBy("evaluatetime").desc()
        val evaluationlist = evaluationMapper.selectByExample(example)
        var subtask = SubtaskVo()
        if (evaluationlist.isNotEmpty()) {
            val stguid = evaluationlist[0].stguid
            if (stguid != null)
                subtask = subtaskService.findByID(stguid)
        }
        return subtask.tguid
    }
    override fun autoScore(districtCode: String, time: String): List<String> {
@@ -251,9 +249,10 @@
    override fun autoScore3(tGuid: String, sceneTypeId: String): String {
        if (isAutoScoreRunning) return "自动评分执行中,请等待完成"
        isAutoScoreRunning = true
        val t = Constant.ScenseType.getByValue(sceneTypeId)
        autoScore.sceneType = t
        autoScore.topTaskGrade(tGuid)
//        val t = Constant.ScenseType.getByValue(sceneTypeId)
//        autoScore.sceneType = t
//        autoScore.topTaskGrade(tGuid)
        aopEvaluation.executeByTopTask(tGuid, sceneTypeId.toInt())
        isAutoScoreRunning = false
        return "自动评分完成"
    }
@@ -263,4 +262,16 @@
            createCriteria().andEqualTo("iguid", inspectionId)
        })
    }
    override fun autoEvaluate(areaVo: AreaVo): BgTaskStatus? {
        //执行自动评估
        return aopTaskCtrl.startNewTask(areaVo)
    }
    override fun findAutoEvaluation(areaVo: AreaVo): List<AutoScoreResultVo?>? {
        //1. 查找历史记录,查看评估是否已存在
        areaVo.scensetypeid ?: throw IllegalStateException("查询时必须选择一个场景类型")
        val task = taskRep.findOneTask(areaVo) ?: throw IllegalStateException("查询时必须选择一个场景类型")
        return evaluationRep.findAutoScore(areaVo)
    }
}