| | |
| | | package cn.flightfeather.supervision.business.report.template |
| | | |
| | | import cn.flightfeather.supervision.business.report.DataSource |
| | | import cn.flightfeather.supervision.common.utils.Constant |
| | | import cn.flightfeather.supervision.common.utils.ExcelUtil |
| | | import kotlin.math.round |
| | | |
| | | class ProTypeRankMainSummary(dataSource: DataSource) : ProTypeRankSummary(dataSource) { |
| | | override val templateName: String = "月度主要或典型问题分析表" |
| | | |
| | | override fun formatTable(summarys: List<Summary>) { |
| | | summarys.sortedByDescending { it.count } |
| | | override fun formatTable(summarys: MutableList<Summary>) { |
| | | //排名靠前的max个问题被认定为主要或典型问题 |
| | | val max = when (dataSource.config.sceneType.toString()) { |
| | | Constant.ScenseType.TYPE1.value -> 5 |
| | | else -> 4 |
| | | } |
| | | |
| | | summarys.sortByDescending { it.count } |
| | | |
| | | var tPros = 0 |
| | | var mainTPros = 0 |
| | | var pDes = "" |
| | | for (i in summarys.indices) { |
| | | val it = summarys[i] |
| | | tPros += it.count |
| | | if (i < max) { |
| | | val lr = if (i > 0) "\n" else "" |
| | | mainTPros += it.count |
| | | pDes += "${lr}${i+1}、${it.proDes}" |
| | | } |
| | | } |
| | | var per = if (tPros == 0) .0 else mainTPros.toDouble() / tPros |
| | | |
| | | head.clear() |
| | | head.add( |
| | |
| | | ExcelUtil.MyCell("主要问题占比"), |
| | | ) |
| | | ) |
| | | for (i in summarys.indices) { |
| | | val s = summarys[i] |
| | | contents.add( |
| | | mutableListOf( |
| | | i + 1, "", "", dataSource.rowData.scene?.type ?: "", "", s.count, |
| | | s.proDes, s.count, "${round(s.countPer * 1000) / 10}%" |
| | | ) |
| | | // for (i in summarys.indices) { |
| | | // if (i >= max) break |
| | | // |
| | | // val s = summarys[i] |
| | | // contents.add( |
| | | // mutableListOf( |
| | | // i + 1, dataSource.year, dataSource.month, dataSource.rowData.scene?.type ?: "", dataSource.area, s.count, |
| | | // s.proDes, s.count, ExcelUtil.MyCell(s.countPer.toString(), isPercent = true) |
| | | // ) |
| | | // ) |
| | | // } |
| | | |
| | | contents.add( |
| | | mutableListOf( |
| | | 1, dataSource.year, dataSource.month, dataSource.rowData.scene?.type ?: "", dataSource.area, tPros, |
| | | pDes, mainTPros, ExcelUtil.MyCell(per.toString(), isPercent = true) |
| | | ) |
| | | } |
| | | ) |
| | | } |
| | | } |