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