feiyu02
2025-09-30 a3cc1d220f8a1de11874bebceba0130d32157ff1
src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/DataProdMiddleServiceImpl.kt
@@ -3,6 +3,7 @@
import cn.flightfeather.supervision.common.utils.Constant
import cn.flightfeather.supervision.common.utils.QueryByCache
import cn.flightfeather.supervision.domain.ds1.entity.SceneConstructionSite
import cn.flightfeather.supervision.domain.ds1.repository.TaskRep
import cn.flightfeather.supervision.lightshare.service.DataProdBaseService
import cn.flightfeather.supervision.lightshare.service.DataProdMiddleService
import cn.flightfeather.supervision.lightshare.vo.dataprod.QueryOpt
@@ -10,6 +11,7 @@
import cn.flightfeather.supervision.lightshare.vo.dataprod.middle.DPInspectionSummary
import cn.flightfeather.supervision.lightshare.vo.dataprod.middle.DPProblemCountByArea
import cn.flightfeather.supervision.lightshare.vo.dataprod.middle.DPProblemTypeCount
import org.springframework.beans.BeanUtils
import org.springframework.stereotype.Service
/**
@@ -18,7 +20,10 @@
 * @author feiyu02
 */
@Service
class DataProdMiddleServiceImpl(private val dataProdBaseService: DataProdBaseService) : DataProdMiddleService {
class DataProdMiddleServiceImpl(
    private val dataProdBaseService: DataProdBaseService, private val taskRep: TaskRep,
) : DataProdMiddleService {
    override fun getInspectionSummary(queryOpt: QueryOpt): DPInspectionSummary {
        return QueryByCache.queryCache(
@@ -34,7 +39,7 @@
                    when (it.scene?.typeid.toString()) {
                        // 对于建筑工地类型,根据其csStatus判断是否停工或完工
                        Constant.SceneType.TYPE1.value -> {
                            when ((it.subScene as SceneConstructionSite).csStatus) {
                            when ((it.subScene as SceneConstructionSite?)?.csStatus) {
                                "停工" -> {
                                    res.stopSceneCount++
                                }
@@ -54,7 +59,6 @@
                }
                return@queryCache res
            },
            save = {}
        )
    }
@@ -62,6 +66,16 @@
        return QueryByCache.queryCache(
            cache = { return@queryCache null },
            calculate = {
                // 查询上一个周期的总任务统计情况
                val lastTopTask = taskRep.findLastTopTask(queryOpt.topTaskId)
                val lastQueryOpt = QueryOpt()
                BeanUtils.copyProperties(queryOpt, lastQueryOpt)
                lastQueryOpt.topTaskId = lastTopTask?.tguid
                val lastInspectionInfo = dataProdBaseService.getInspectionInfo(lastQueryOpt)
                val lastAllProblemList = lastInspectionInfo.flatMap { it.problems ?: emptyList() }
                val lastAllProblemMap = lastAllProblemList.groupBy { it.typeid }
                // 查询当前周期的总任务统计情况
                val res = mutableListOf<DPProblemTypeCount>()
                val inspectionInfo = dataProdBaseService.getInspectionInfo(queryOpt)
                val allProblemList = inspectionInfo.flatMap { it.problems ?: emptyList() }
@@ -71,11 +85,16 @@
                        this.typeName = problemList.firstOrNull()?.typename
                        this.count = problemList.size
                        this.ratio = problemList.size.toDouble() / allProblemList.size
                        this.ratioDiff =
                            if (lastAllProblemMap[typeid] == null) {
                                this.ratio
                            } else {
                                this.ratio - lastAllProblemMap[typeid]!!.size.toDouble() / lastAllProblemList.size
                            }
                    })
                }
                return@queryCache res
            },
            save = {}
        )
    }
@@ -107,7 +126,6 @@
                return@queryCache res
            },
            save = {}
        )
    }
@@ -147,7 +165,6 @@
                return@queryCache res
            },
            save = {}
        )
    }
}