From 46872a311da9480d3edb19223aca2e0833fb1e31 Mon Sep 17 00:00:00 2001
From: hcong <1050828145@qq.com>
Date: 星期二, 17 十二月 2024 11:41:00 +0800
Subject: [PATCH] 1. 完成数据产品中间结果基本信息和具体信息入库 2. 修改ColInspectionInfo.kt 监管时间格式修改为yyyy-mm-dd 3. 新增数据产品类型枚举类 DataProductType 4. 修改BaseTemplate实现类通过重写genData方法生成Template相关数据 5. TODO 其他未涉及到的产品对象的中间结果对象

---
 src/main/kotlin/cn/flightfeather/supervision/business/report/template/ProAnalysisSummary.kt |   62 ++++++++++++++++++++++--------
 1 files changed, 45 insertions(+), 17 deletions(-)

diff --git a/src/main/kotlin/cn/flightfeather/supervision/business/report/template/ProAnalysisSummary.kt b/src/main/kotlin/cn/flightfeather/supervision/business/report/template/ProAnalysisSummary.kt
index 8317647..80914bc 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/business/report/template/ProAnalysisSummary.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/business/report/template/ProAnalysisSummary.kt
@@ -4,23 +4,27 @@
 import cn.flightfeather.supervision.business.report.BaseTemplate
 import cn.flightfeather.supervision.business.report.DataSource
 import cn.flightfeather.supervision.business.report.cols.ColInspectionInfo
+import cn.flightfeather.supervision.business.report.cols.ColStrategy
+import cn.flightfeather.supervision.business.report.cols.ColTotalGrade
 import cn.flightfeather.supervision.common.utils.Constant
 import cn.flightfeather.supervision.common.utils.ExcelUtil
 import cn.flightfeather.supervision.domain.ds1.entity.SceneConstructionSite
 import cn.flightfeather.supervision.domain.ds1.entity.SceneMixingPlant
 import cn.flightfeather.supervision.domain.ds1.entity.SceneStorageYard
 import cn.flightfeather.supervision.domain.ds1.entity.SceneWharf
-import kotlin.math.round
+import cn.flightfeather.supervision.business.report.bean.BaseTemplateResult
+import cn.flightfeather.supervision.business.report.bean.ProAnalysisSummaryResult
 
 /**
  * 鍒嗚闀囬棶棰樻暣鏀瑰垎鏋愭眹鎬昏〃
  */
 class ProAnalysisSummary(dataSource: DataSource) : BaseTemplate(dataSource) {
-    override val cols: List<BaseCols> = listOf(ColInspectionInfo())
+    override var resultObjects: MutableList<BaseTemplateResult> = mutableListOf(ProAnalysisSummaryResult())
+    override val cols: List<BaseCols> = listOf(ColInspectionInfo(), ColTotalGrade(), ColStrategy())
 
     override val templateName: String = "鍒嗚闀囬棶棰樻暣鏀瑰垎鏋愭眹鎬昏〃"
 
-    override fun execute() {
+    override fun genData() {
         //鏁版嵁婧愰噸缃�
         dataSource.reset()
 
@@ -31,6 +35,8 @@
             if (rowData.noRecord()) return@loop
 
             val r = cols[0].getOneRow(rowData)
+            val r1 = cols[1].getOneRow(rowData)
+            val r2 = cols[2].getOneRow(rowData)
 
             val k = rowData.scene?.townname
             if (!districtMap.containsKey(k)) {
@@ -43,22 +49,22 @@
             districtMap[k]?.apply {
                 sceneCount++
                 val status = when (dataSource.config.sceneType.toString()) {
-                    Constant.ScenseType.TYPE1.value -> {
+                    Constant.SceneType.TYPE1.value -> {
                         (rowData.baseScene as SceneConstructionSite?)?.csStatus
                     }
-                    Constant.ScenseType.TYPE2.value -> {
+                    Constant.SceneType.TYPE2.value -> {
                         (rowData.baseScene as SceneWharf?)?.getwStatus()
                     }
-                    Constant.ScenseType.TYPE3.value -> {
+                    Constant.SceneType.TYPE3.value -> {
                         (rowData.baseScene as SceneMixingPlant?)?.mpStatus
                     }
-                    Constant.ScenseType.TYPE14.value -> {
+                    Constant.SceneType.TYPE14.value -> {
                         (rowData.baseScene as SceneStorageYard?)?.syStatus
                     }
                     else -> ""
                 }
                 // FIXME: 2022/7/18 鍚庣画鍦烘櫙鐨勬柦宸ョ姸鎬佹敼涓哄竷灏斿�煎瓨鍌�
-                if ((status?.contains("瀹屽伐") == true) || (status?.contains("鏈柦宸�") == true) || (status?.contains("鍋�") == true)
+                if ((status?.contains("瀹屽伐") == true) || (status?.contains("鏈柦宸�") == true) || (status?.contains("鍋滃伐") == true)
                     || (status?.contains("鍏�") == true)
                 ) {
                     inactiveScenes++
@@ -70,6 +76,13 @@
                 if (pNum > 0 && cNum > 0) changeScenes++
                 proNum += pNum
                 changeNum += cNum
+
+
+                //鏍规嵁瑙勮寖鎬у拰鐩戠绛栫暐缁撴灉鍒ゆ柇鏄惁涓洪噸鐐圭洃绠″璞�
+                val standard = r1[1] as ExcelUtil.MyCell
+                if (standard.text.contains("涓ラ噸涓嶈鑼�") || r2[0].toString().contains("7銆�")) {
+                    focusSceneNum++
+                }
             }
         }
 
@@ -81,23 +94,32 @@
         }
         districtMap.forEach {
             val v = it.value
-            v.changeScenePer = round(v.changeScenes.toDouble() / v.sceneCount * 1000) / 1000
-            v.proPer = round(v.proNum.toDouble() / totalPro * 1000) / 1000
-            v.changePer = round(v.changeNum.toDouble() / v.proNum * 1000) / 1000
+            v.changeScenePer = v.changeScenes.toDouble() / v.sceneCount
+            v.proPer = v.proNum.toDouble() / totalPro
+            v.changePer = v.changeNum.toDouble() / v.proNum
+            v.focusScenePer = v.focusSceneNum.toDouble() / v.sceneCount
         }
         //鏁存敼鍗曚綅姣旀帓鍚�
         summarys.sortByDescending {
             it.changeScenePer
         }
         for (i in summarys.indices) {
-            summarys[i].changeSceneRank = i + 1
+            if (i > 0 && summarys[i - 1].changeScenePer == summarys[i].changeScenePer) {
+                summarys[i].changeSceneRank = summarys[i - 1].changeSceneRank
+            } else {
+                summarys[i].changeSceneRank = i + 1
+            }
         }
         //闂鏁存敼鐜囨帓鍚�
         summarys.sortByDescending {
             it.changePer
         }
         for (i in summarys.indices) {
-            summarys[i].proChangeRank = i + 1
+            if (i > 0 && summarys[i - 1].changePer == summarys[i].changePer) {
+                summarys[i].proChangeRank = summarys[i - 1].proChangeRank
+            } else {
+                summarys[i].proChangeRank = i + 1
+            }
         }
 
         //鏇存柊琛ㄥご
@@ -131,12 +153,15 @@
             ExcelUtil.MyCell("鎷熷垪鍏ラ噸鐐圭洃绠″崰姣�"),
         ))
         //鏇存柊鍐呭
-        summarys.forEach {
+        summarys.sortBy { it.townCode }
+        for (i in summarys.indices) {
+            val it = summarys[i]
             contents.add(
                 mutableListOf(
-                    it.townCode, it.townName, it.type, it.sceneCount, it.inactiveScenes, it.activeScenes, it.changeScenes,
-                    "${round(it.changeScenePer * 1000) / 10}%",
-                    it.proNum, "${round(it.proPer * 1000) / 10}%", it.changeNum, "${round(it.changePer * 1000) / 10}%", it.changeSceneRank, it.proChangeRank
+                    i+1, it.townName, it.type, it.sceneCount, it.inactiveScenes, it.activeScenes, it.changeScenes,
+                        ExcelUtil.MyCell(it.changeScenePer.toString(), isPercent = true),
+                    it.proNum, ExcelUtil.MyCell(it.proPer.toString(), isPercent = true), it.changeNum, ExcelUtil.MyCell(it.changePer.toString(), isPercent = true), it.changeSceneRank, it.proChangeRank,
+                        it.focusSceneNum, ExcelUtil.MyCell(it.focusScenePer.toString(), isPercent = true)
                 )
             )
         }
@@ -165,5 +190,8 @@
 
         var changeSceneRank = 0
         var proChangeRank = 0
+
+        var focusSceneNum = 0
+        var focusScenePer = .0
     }
 }
\ No newline at end of file

--
Gitblit v1.9.3