From a3cc1d220f8a1de11874bebceba0130d32157ff1 Mon Sep 17 00:00:00 2001
From: feiyu02 <risaku@163.com>
Date: 星期二, 30 九月 2025 09:26:32 +0800
Subject: [PATCH] 2025.9.30 1. 联合前端调试数据产品接口(待完成)

---
 src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/DataProdMiddleServiceImpl.kt |   29 +++++++++++++++++++++++------
 1 files changed, 23 insertions(+), 6 deletions(-)

diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/DataProdMiddleServiceImpl.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/DataProdMiddleServiceImpl.kt
index b6e4029..458de79 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/DataProdMiddleServiceImpl.kt
+++ b/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 = {}
         )
     }
 }
\ No newline at end of file

--
Gitblit v1.9.3