From 39e208b6b0482a25c77e53590087c02d9d937563 Mon Sep 17 00:00:00 2001 From: feiyu02 <risaku@163.com> Date: 星期三, 20 七月 2022 09:04:48 +0800 Subject: [PATCH] 1. 巡查汇总报告功能编写完成 --- src/main/kotlin/cn/flightfeather/supervision/common/utils/DateUtil.kt | 2 src/main/kotlin/cn/flightfeather/supervision/business/report/template/ProTypeRankSummary.kt | 34 + src/main/kotlin/cn/flightfeather/supervision/business/report/cols/ColSceneName.kt | 3 src/main/resources/mapper/ds1/DustDataResultMapper.xml | 2 src/main/kotlin/cn/flightfeather/supervision/business/report/template/ScoreDetailSummary.kt | 5 src/main/kotlin/cn/flightfeather/supervision/business/report/template/ProDetailSummary.kt | 4 src/main/kotlin/cn/flightfeather/supervision/business/report/template/ProTypeStatusSummary.kt | 6 src/main/kotlin/cn/flightfeather/supervision/common/utils/ExcelUtil.kt | 55 +++- /dev/null | 111 -------- src/main/kotlin/cn/flightfeather/supervision/business/report/template/ScoreAnalysisSummary.kt | 30 + src/main/kotlin/cn/flightfeather/supervision/business/report/template/ProAnalysisSummary.kt | 43 ++ src/main/kotlin/cn/flightfeather/supervision/business/report/cols/ColLedger.kt | 15 + src/main/kotlin/cn/flightfeather/supervision/domain/ds1/entity/DustDataResult.java | 6 src/main/kotlin/cn/flightfeather/supervision/business/report/cols/ColInspectionInfo.kt | 84 ++++- src/main/kotlin/cn/flightfeather/supervision/business/report/cols/ColItemGrade.kt | 111 ++++++++ src/main/kotlin/cn/flightfeather/supervision/business/report/DataSource.kt | 78 +++++ src/main/kotlin/cn/flightfeather/supervision/business/report/BaseCols.kt | 33 + src/main/kotlin/cn/flightfeather/supervision/business/report/cols/ColTotalGrade.kt | 54 ++++ src/main/kotlin/cn/flightfeather/supervision/business/report/template/ProTypeRankMainSummary.kt | 16 src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/SearchServiceImpl.kt | 47 ++- 20 files changed, 510 insertions(+), 229 deletions(-) diff --git a/src/main/kotlin/cn/flightfeather/supervision/business/report/BaseCols.kt b/src/main/kotlin/cn/flightfeather/supervision/business/report/BaseCols.kt index c12a5cc..ae22382 100644 --- a/src/main/kotlin/cn/flightfeather/supervision/business/report/BaseCols.kt +++ b/src/main/kotlin/cn/flightfeather/supervision/business/report/BaseCols.kt @@ -20,13 +20,14 @@ //鐢熸垚涓�琛屽唴瀹� fun getOneRow(rowData: DataSource.RowData): List<Any> { - return if (rowData.noRecord()) { - val r = mutableListOf<String>() - repeat(heads.last().size) { r.add(("")) } - r - } else { - onOneRow(rowData) - } +// return if (rowData.noRecord()) { +// val r = mutableListOf<String>() +// repeat(heads.last().size) { r.add(("")) } +// r +// } else { +// onOneRow(rowData) +// } + return onOneRow(rowData) } abstract fun onOneRow(rowData: DataSource.RowData): List<Any> @@ -57,7 +58,12 @@ oldHeads.first().forEach { it.rowSpan++ } } val h = mutableListOf<ExcelUtil.MyCell>() - repeat(oldHeads.size) { h.add(ExcelUtil.MyCell("")) } + + var cols = 0 + oldHeads.last().forEach { + cols += it.colSpan + } + repeat(cols) { h.add(ExcelUtil.MyCell("")) } oldHeads.add(h) h } @@ -70,12 +76,19 @@ newHeads.first().forEach { it.rowSpan++ } } val h = mutableListOf<ExcelUtil.MyCell>() - repeat(newHeads.size) { h.add(ExcelUtil.MyCell("")) } + + var cols = 0 + newHeads.last().forEach { + cols += it.colSpan + } + repeat(cols) { h.add(ExcelUtil.MyCell("")) } newHeads.add(h) h } + } - oH.addAll(nH) + for (i in oldHeads.indices) { + oldHeads[i].addAll(newHeads[i]) } } } diff --git a/src/main/kotlin/cn/flightfeather/supervision/business/report/DataSource.kt b/src/main/kotlin/cn/flightfeather/supervision/business/report/DataSource.kt index 77154e7..cea8933 100644 --- a/src/main/kotlin/cn/flightfeather/supervision/business/report/DataSource.kt +++ b/src/main/kotlin/cn/flightfeather/supervision/business/report/DataSource.kt @@ -4,10 +4,18 @@ import cn.flightfeather.supervision.common.utils.DateUtil import cn.flightfeather.supervision.domain.ds1.entity.* import cn.flightfeather.supervision.domain.ds1.mapper.* +import cn.flightfeather.supervision.domain.ds2.entity.LedgerRecord +import cn.flightfeather.supervision.domain.ds2.entity.LedgerSubType +import cn.flightfeather.supervision.domain.ds2.entity.UserMap +import cn.flightfeather.supervision.domain.ds2.mapper.LedgerRecordMapper +import cn.flightfeather.supervision.domain.ds2.mapper.LedgerSubTypeMapper +import cn.flightfeather.supervision.domain.ds2.mapper.UserMapMapper import cn.flightfeather.supervision.lightshare.vo.ExcelConfigVo import org.springframework.beans.factory.annotation.Autowired import org.springframework.stereotype.Component import tk.mybatis.mapper.entity.Example +import java.time.LocalDateTime +import java.time.ZoneId import javax.annotation.PostConstruct /** @@ -20,6 +28,12 @@ private val dateUtil = DateUtil() private val sourceList = mutableListOf<Subtask>() + + var year = 0 + + var month = 0 + + var area = "" val rowData = RowData() @@ -36,6 +50,7 @@ fun loop(callback: (index:Int, rowData: RowData) -> Unit) { reset() for (i in sourceList.indices) { + rowData.index = i rowData.clear() rowData.subTask = sourceList[i] callback(i, rowData) @@ -46,6 +61,7 @@ * 閲嶇疆 */ fun reset() { + rowData.index = 0 rowData.subTask = sourceList.first() rowData.clear() } @@ -55,7 +71,7 @@ */ fun areaName(): String { val t = dbMapper.taskMapper.selectByPrimaryKey(config.topTaskGuid) - return "${dateUtil.DateToString(t.starttime, DateUtil.DateStyle.YYYY_MM_CN)}${t.districtname}${Constant.ScenseType.getDes(config.sceneType)}" + return "${dateUtil.DateToString(t.starttime, DateUtil.DateStyle.YYYY_MM_CN)}${t.districtname}${if (area != t.districtname) area else ""}${Constant.ScenseType.getDes(config.sceneType)}" } /** @@ -65,6 +81,19 @@ if (config.sceneType == null) return val result = mutableListOf<Subtask>() + + if (config.townCode != null) { + dbMapper.townMapper.selectByExample(Example(Town::class.java).apply { + createCriteria().andEqualTo("towncode", config.townCode) + })?.takeIf { it.isNotEmpty() }?.get(0)?.let { area = it.townname ?: "" } + } + + dbMapper.taskMapper.selectByPrimaryKey(config.topTaskGuid).let { + val time = LocalDateTime.ofInstant(it.starttime?.toInstant(), ZoneId.systemDefault()) + this.year = time.year + this.month = time.monthValue + if (area.isBlank()) area = it.districtname ?: "" + } //1. 鏌ユ壘鐗瑰畾鐨勫贰鏌ヤ换鍔℃垨鑰呮墍鏈夌殑璁″垝宸℃煡浠诲姟 var taskSceneIdList = listOf<String>() @@ -109,6 +138,8 @@ inner class RowData(){ + var index = 0 + var subTask: Subtask? = null //鍦烘櫙鍩烘湰淇℃伅 @@ -263,6 +294,43 @@ } private var _rules = mutableListOf<Pair<Evaluationsubrule2, MutableList<Evaluationsubrule2>>>() + //蹇呭~鍙拌处鏁伴噺 + val ledgerCount: Int + get() { + if (_ledgerCount == -1) { + val tzSceneType = Constant.ScenseType.typeMap(config.sceneType?.toByte()) + _ledgerCount = dbMapper.ledgerSubTypeMapper.selectCountByExample(Example(LedgerSubType::class.java).apply { + createCriteria().andEqualTo("lScenetype", tzSceneType).andEqualTo("lNeedupdate", true) + }) + } + return _ledgerCount + } + private var _ledgerCount = -1 + + //鐢ㄦ埛瀹為檯鎻愪氦鍙拌处鏁伴噺 + val ledgerRecords: List<LedgerRecord> + get() { + if (_ledgerRecordNum == null) { + val userInfo = dbMapper.userinfoMapper.selectByExample(Example(Userinfo::class.java).apply { + createCriteria().andEqualTo("dGuid", subTask?.scenseid) + })?.takeIf { l -> l.isNotEmpty() }?.get(0) + + val tzUserId = dbMapper.userMapMapper.selectByExample(Example(UserMap::class.java).apply { + createCriteria().andEqualTo("svUserId", userInfo?.guid) + })?.takeIf { m-> m.isNotEmpty() }?.get(0)?.tzUserId + + if (tzUserId != null) { + _ledgerRecordNum = dbMapper.ledgerRecordMapper.selectByExample(Example(LedgerRecord::class.java).apply { + createCriteria().andEqualTo("lrYear", year) + .andEqualTo("lrMonth", month) + .andEqualTo("lrSubmitid", tzUserId) + }) + } + } + return _ledgerRecordNum ?: emptyList() + } + private var _ledgerRecordNum: List<LedgerRecord>? = null + /** * 娓呯┖褰撳墠澶勭悊鐨勫璞$殑鐩稿叧鏁版嵁婧� */ @@ -272,6 +340,7 @@ _problems.clear() _evaluation = null _itemevaluationList.clear() + _ledgerRecordNum = null } /** @@ -295,5 +364,10 @@ val evaluationruleMapper: EvaluationruleMapper, val evaluationsubruleMapper: EvaluationsubruleMapper2, val evaluationMapper: EvaluationMapper, - val itemevaluationMapper: ItemevaluationMapper + val itemevaluationMapper: ItemevaluationMapper, + val ledgerSubTypeMapper: LedgerSubTypeMapper, + val ledgerRecordMapper: LedgerRecordMapper, + val userinfoMapper: UserinfoMapper, + val userMapMapper: UserMapMapper, + val townMapper: TownMapper, ) diff --git a/src/main/kotlin/cn/flightfeather/supervision/business/report/cols/ColGrade.kt b/src/main/kotlin/cn/flightfeather/supervision/business/report/cols/ColGrade.kt deleted file mode 100644 index 271e082..0000000 --- a/src/main/kotlin/cn/flightfeather/supervision/business/report/cols/ColGrade.kt +++ /dev/null @@ -1,111 +0,0 @@ -package cn.flightfeather.supervision.business.report.cols - -import cn.flightfeather.supervision.business.report.BaseCols -import cn.flightfeather.supervision.business.report.DataSource -import cn.flightfeather.supervision.common.utils.ExcelUtil -import cn.flightfeather.supervision.domain.ds1.entity.Itemevaluation -import org.apache.poi.hssf.util.HSSFColor - -class ColGrade(private val hasHead3: Boolean = true) : BaseCols() { - - override fun onHeads(dataSource: DataSource): MutableList<MutableList<ExcelUtil.MyCell>> { - val h1 = mutableListOf<ExcelUtil.MyCell>() - h1.add(ExcelUtil.MyCell("鐜俊鐮�", 3, 1)) - h1.add(ExcelUtil.MyCell("闃叉不瑙勮寖鎬�", 3, 1)) - h1.add(ExcelUtil.MyCell("鎬诲垎", 3, 1)) - val h2 = mutableListOf<ExcelUtil.MyCell>() - h2.add(ExcelUtil.MyCell("")) - h2.add(ExcelUtil.MyCell("")) - h2.add(ExcelUtil.MyCell("")) - val h3 = mutableListOf<ExcelUtil.MyCell>() - h3.add(ExcelUtil.MyCell("")) - h3.add(ExcelUtil.MyCell("")) - h3.add(ExcelUtil.MyCell("")) - dataSource.rowData.topItems.forEach { - h1.add(ExcelUtil.MyCell(it.itemname ?: "", 1, 0)) - for (r in dataSource.rowData.rules) { - if (r.first.fatherid == it.guid || r.first.guid == it.guid) { - h2.add(ExcelUtil.MyCell(r.first.itemname ?: "", 1, 0)) - if (hasHead3) { - r.second.forEach { s -> - h3.add(ExcelUtil.MyCell(s.itemname ?: "")) - h2.last().colSpan++ - h1.last().colSpan++ - } - } else { - h2.last().colSpan++ - h1.last().colSpan++ - } - } - } - } - - return mutableListOf(h1, h2, h3) - } - - override fun onOneRow(rowData: DataSource.RowData): List<Any> { - val row = mutableListOf<Any>() - - if (rowData.noRecord()) { - repeat(heads.last().size) { row.add(("")) } - } else { - row.apply { - //鎬诲垎鍜岀幆淇$爜 - rowData.evaluation.let { e -> - val s = e?.resultscorebef?.toIntOrNull() ?: "" - val code = when (s) { - in 0..59 -> ExcelUtil.MyCell("绾㈢爜", fontColor = HSSFColor.HSSFColorPredefined.RED.index) - in 60..89 -> ExcelUtil.MyCell("榛勭爜", fontColor = HSSFColor.HSSFColorPredefined.GOLD.index) - in 90..100 -> ExcelUtil.MyCell("缁跨爜", fontColor = HSSFColor.HSSFColorPredefined.BRIGHT_GREEN.index) - "" -> ExcelUtil.MyCell("", fontColor = HSSFColor.HSSFColorPredefined.BLACK.index) - else -> ExcelUtil.MyCell("瓒呭嚭鑼冨洿锛�${s}", fontColor = HSSFColor.HSSFColorPredefined.BLACK.index) - } - val normalization = when (s) { - in 0..59 -> ExcelUtil.MyCell("涓ラ噸涓嶈鑼�", fontColor = HSSFColor.HSSFColorPredefined.ROSE.index) - in 60..89 -> ExcelUtil.MyCell("涓嶈鑼�", fontColor = HSSFColor.HSSFColorPredefined.RED.index) - in 90..99 -> ExcelUtil.MyCell("鍩烘湰瑙勮寖", fontColor = HSSFColor.HSSFColorPredefined.GOLD.index) - 100 -> ExcelUtil.MyCell("瑙勮寖", fontColor = HSSFColor.HSSFColorPredefined.BRIGHT_GREEN.index) - "" -> ExcelUtil.MyCell("", fontColor = HSSFColor.HSSFColorPredefined.BLACK.index) - else -> ExcelUtil.MyCell("瓒呭嚭鑼冨洿锛�${s}", fontColor = HSSFColor.HSSFColorPredefined.BLACK.index) - } - add(code) - add(normalization) - add(s) - } - - - //姣忎竴椤瑰叿浣撳緱鍒� - rowData.topItems.forEach { - for (r in rowData.rules) { - if (r.first.fatherid == it.guid || r.first.guid == it.guid) { - // FIXME: 2021/4/25 鍐冲畾鏄惁鍐檋3 - if (hasHead3) { - r.second.forEach { s -> - val v = searchScore(s.guid, rowData.itemevaluationList) - add(v.toIntOrNull() ?: "") - } - } else { - val v = searchScore(r.first.guid, rowData.itemevaluationList) - add(v.toIntOrNull() ?: "") - } - } - } - } - } - } - - return row - } - - //鏌ユ壘寰楀垎璁板綍鍐呭搴旇鍒欑殑寰楀垎 - private fun searchScore(ruleId: String?, itemevaluations: List<Itemevaluation>): String { - var score = "" - for (e in itemevaluations) { - if (ruleId == e.esrguid) { - score = e.value ?: "" - break - } - } - return score - } -} \ No newline at end of file diff --git a/src/main/kotlin/cn/flightfeather/supervision/business/report/cols/ColInspectionInfo.kt b/src/main/kotlin/cn/flightfeather/supervision/business/report/cols/ColInspectionInfo.kt index da2bfe8..0da1231 100644 --- a/src/main/kotlin/cn/flightfeather/supervision/business/report/cols/ColInspectionInfo.kt +++ b/src/main/kotlin/cn/flightfeather/supervision/business/report/cols/ColInspectionInfo.kt @@ -10,22 +10,26 @@ class ColInspectionInfo() : BaseCols() { override fun onHeads(dataSource: DataSource): MutableList<MutableList<ExcelUtil.MyCell>> { return mutableListOf(mutableListOf( - ExcelUtil.MyCell("鐩戠鏃堕棿"), - ExcelUtil.MyCell("宸℃煡浜哄憳"), - ExcelUtil.MyCell("闂绫诲瀷"), - ExcelUtil.MyCell("闂鎻忚堪"), - ExcelUtil.MyCell("闂浣嶇疆"), - ExcelUtil.MyCell("闂鏁�"), - ExcelUtil.MyCell("鏁存敼鏃堕棿"), - ExcelUtil.MyCell("鏁存敼鎯呭喌"), - ExcelUtil.MyCell("鏁存敼闂"), - ExcelUtil.MyCell("鏁存敼鏁�"), - ExcelUtil.MyCell("鏈暣鏀归棶棰�"), - ExcelUtil.MyCell("鏈暣鏀规暟"), - ExcelUtil.MyCell("瀹℃牳鎯呭喌"), - ExcelUtil.MyCell("闂瀹℃牳鏃堕棿"), - ExcelUtil.MyCell("鏁存敼瀹℃牳鏃堕棿"), - ExcelUtil.MyCell("闂鏁存敼鐜�"), + ExcelUtil.MyCell("鐩戠鏃堕棿"), + ExcelUtil.MyCell("宸℃煡浜哄憳"), + ExcelUtil.MyCell("闂绫诲瀷"), + ExcelUtil.MyCell("闂鎻忚堪"), + ExcelUtil.MyCell("闂浣嶇疆"), + ExcelUtil.MyCell("闂鏁�"), + ExcelUtil.MyCell("鏁存敼鏃堕棿"), + ExcelUtil.MyCell("鏁存敼鎯呭喌"), + ExcelUtil.MyCell("鏁存敼闂"), + ExcelUtil.MyCell("鏁存敼鏁�"), + ExcelUtil.MyCell("鏈暣鏀归棶棰�"), + ExcelUtil.MyCell("鏈暣鏀规暟"), + ExcelUtil.MyCell("闂鏁存敼鐜�"), + ExcelUtil.MyCell("瀹℃牳鎯呭喌"), + ExcelUtil.MyCell("闂瀹℃牳鏃堕棿"), + ExcelUtil.MyCell("鏁存敼瀹℃牳鏃堕棿"), + ExcelUtil.MyCell("闂瀹℃牳鏁�"), + ExcelUtil.MyCell("闂瀹℃牳鍗犳瘮"), + ExcelUtil.MyCell("鏁存敼瀹℃牳鏁�"), + ExcelUtil.MyCell("鏁存敼瀹℃牳鍗犳瘮"), )) } @@ -53,10 +57,15 @@ var cNum = 0//鏁存敼鏁� var unChangedProblem = ""//鏈暣鏀归棶棰� var unChangeNum = 0//鏈暣鏀规暟 + var changePercent: Any = ""//闂鏁存敼鐜� + var checkStatus = ""//瀹℃牳鎯呭喌 var pCheckTime = ""//闂瀹℃牳鏃堕棿 var cCheckTime = ""//鏁存敼瀹℃牳鏃堕棿 - var changePercent = ""//闂鏁存敼鐜� + var pCheckNum = 0//闂瀹℃牳鏁� + var pCheckPer: Any = ""//闂瀹℃牳鍗犳瘮 + var cCheckNum = 0//鏁存敼瀹℃牳鏁� + var cCheckPer: Any = ""//鏁存敼瀹℃牳鍗犳瘮F rowData.problems.forEach { p -> var typeName = "" for (t in rowData.problemTypes) { @@ -71,7 +80,7 @@ pDes += "${lr}$y銆�${p.problemname}" pLoc += "${lr}$y銆�${p.location}" pNum++ - changeTime = "${lr}$y銆�${dateUtil.DateToString(p.changedtime, DateUtil.DateStyle.YYYY_MM_DD_HH_MM_CN)}" + changeTime += "${lr}$y銆�${dateUtil.DateToString(p.changedtime, DateUtil.DateStyle.YYYY_MM_DD_HH_MM_CN)}" pChanged += "${lr}$y銆�${if (p.ischanged == true) "鉁�" else "脳"}" if (p.ischanged == true) { if (changedProblem.isNotBlank()) { @@ -86,23 +95,48 @@ unChangedProblem += "$y銆�${p.problemname}" unChangeNum++ } + changePercent = if (pNum == 0) "" else ExcelUtil.MyCell((cNum.toDouble() / pNum).toString(), isPercent = true) + val status = when (p.extension3) { - Constant.PROBLEM_CHECK_PASS -> "闂瀹℃牳閫氳繃"// - Constant.PROBLEM_CHECK_FAIL -> "闂瀹℃牳鏈�氳繃"// Constant.PROBLEM_UNCHECKED -> "闂鏈鏍�"// - Constant.CHANGE_UNCHECKED -> "鏁存敼鏈鏍�"// - Constant.CHANGE_CHECK_PASS -> "鏁存敼瀹℃牳閫氳繃"// - Constant.CHANGE_CHECK_FAIL -> "鏁存敼瀹℃牳鏈�氳繃"// + Constant.PROBLEM_CHECK_PASS -> { + pCheckNum++ + "闂瀹℃牳閫氳繃" + }// + Constant.PROBLEM_CHECK_FAIL -> { + pCheckNum++ + "闂瀹℃牳鏈�氳繃" + }// + Constant.CHANGE_UNCHECKED -> { + pCheckNum++ + "鏁存敼鏈鏍�" + }// + Constant.CHANGE_CHECK_PASS -> { + pCheckNum++ + cCheckNum++ + "鏁存敼瀹℃牳閫氳繃" + }// + Constant.CHANGE_CHECK_FAIL -> { + pCheckNum++ + cCheckNum++ + "鏁存敼瀹℃牳鏈�氳繃" + }// else -> "闂鏈鏍�" } checkStatus += "${lr}$y銆�${status}" - changePercent = if (pNum == 0) "" else "${(cNum * 100 / pNum)}%" + pCheckTime += "${lr}$y銆�/" + cCheckTime += "${lr}$y銆�/" + pCheckPer = if (pNum == 0) "" else ExcelUtil.MyCell((pCheckNum.toDouble() / pNum).toString(), isPercent = true) + cCheckPer = if (cNum == 0) "" else ExcelUtil.MyCell((cCheckNum.toDouble() / cNum).toString(), isPercent = true) + + y++ } addAll( listOf( pType, pDes, pLoc, pNum, changeTime, pChanged, changedProblem, cNum, - unChangedProblem, unChangeNum, checkStatus, pCheckTime, cCheckTime, changePercent + unChangedProblem, unChangeNum, changePercent, checkStatus, pCheckTime, cCheckTime, + pCheckNum, pCheckPer, cCheckNum, cCheckPer ) ) } diff --git a/src/main/kotlin/cn/flightfeather/supervision/business/report/cols/ColItemGrade.kt b/src/main/kotlin/cn/flightfeather/supervision/business/report/cols/ColItemGrade.kt new file mode 100644 index 0000000..757019b --- /dev/null +++ b/src/main/kotlin/cn/flightfeather/supervision/business/report/cols/ColItemGrade.kt @@ -0,0 +1,111 @@ +package cn.flightfeather.supervision.business.report.cols + +import cn.flightfeather.supervision.business.report.BaseCols +import cn.flightfeather.supervision.business.report.DataSource +import cn.flightfeather.supervision.common.utils.ExcelUtil +import cn.flightfeather.supervision.domain.ds1.entity.Itemevaluation +import org.apache.poi.hssf.util.HSSFColor + +class ColItemGrade(private val hasHead3: Boolean = true) : BaseCols() { + + override fun onHeads(dataSource: DataSource): MutableList<MutableList<ExcelUtil.MyCell>> { + val h1 = mutableListOf<ExcelUtil.MyCell>() +// h1.add(ExcelUtil.MyCell("鐜俊鐮�", 3, 1)) +// h1.add(ExcelUtil.MyCell("闃叉不瑙勮寖鎬�", 3, 1)) +// h1.add(ExcelUtil.MyCell("鎬诲垎", 3, 1)) + val h2 = mutableListOf<ExcelUtil.MyCell>() +// h2.add(ExcelUtil.MyCell("")) +// h2.add(ExcelUtil.MyCell("")) +// h2.add(ExcelUtil.MyCell("")) + val h3 = mutableListOf<ExcelUtil.MyCell>() +// h3.add(ExcelUtil.MyCell("")) +// h3.add(ExcelUtil.MyCell("")) +// h3.add(ExcelUtil.MyCell("")) + dataSource.rowData.topItems.forEach { + h1.add(ExcelUtil.MyCell(it.itemname ?: "", 1, 0)) + for (r in dataSource.rowData.rules) { + if (r.first.fatherid == it.guid || r.first.guid == it.guid) { + h2.add(ExcelUtil.MyCell(r.first.itemname ?: "", 1, 0)) + if (hasHead3) { + r.second.forEach { s -> + h3.add(ExcelUtil.MyCell(s.itemname ?: "")) + h2.last().colSpan++ + h1.last().colSpan++ + } + } else { + h2.last().colSpan++ + h1.last().colSpan++ + } + } + } + } + + return mutableListOf(h1, h2, h3) + } + + override fun onOneRow(rowData: DataSource.RowData): List<Any> { + val row = mutableListOf<Any>() + + if (rowData.noRecord()) { + repeat(heads.last().size) { row.add(("")) } + } else { + row.apply { + //鎬诲垎鍜岀幆淇$爜 +// rowData.evaluation.let { e -> +// val s = e?.resultscorebef?.toIntOrNull() ?: "" +// val code = when (s) { +// in 0..59 -> ExcelUtil.MyCell("绾㈢爜", fontColor = HSSFColor.HSSFColorPredefined.RED.index) +// in 60..89 -> ExcelUtil.MyCell("榛勭爜", fontColor = HSSFColor.HSSFColorPredefined.GOLD.index) +// in 90..100 -> ExcelUtil.MyCell("缁跨爜", fontColor = HSSFColor.HSSFColorPredefined.BRIGHT_GREEN.index) +// "" -> ExcelUtil.MyCell("", fontColor = HSSFColor.HSSFColorPredefined.BLACK.index) +// else -> ExcelUtil.MyCell("瓒呭嚭鑼冨洿锛�${s}", fontColor = HSSFColor.HSSFColorPredefined.BLACK.index) +// } +// val normalization = when (s) { +// in 0..59 -> ExcelUtil.MyCell("涓ラ噸涓嶈鑼�", fontColor = HSSFColor.HSSFColorPredefined.ROSE.index) +// in 60..89 -> ExcelUtil.MyCell("涓嶈鑼�", fontColor = HSSFColor.HSSFColorPredefined.RED.index) +// in 90..99 -> ExcelUtil.MyCell("鍩烘湰瑙勮寖", fontColor = HSSFColor.HSSFColorPredefined.GOLD.index) +// 100 -> ExcelUtil.MyCell("瑙勮寖", fontColor = HSSFColor.HSSFColorPredefined.BRIGHT_GREEN.index) +// "" -> ExcelUtil.MyCell("", fontColor = HSSFColor.HSSFColorPredefined.BLACK.index) +// else -> ExcelUtil.MyCell("瓒呭嚭鑼冨洿锛�${s}", fontColor = HSSFColor.HSSFColorPredefined.BLACK.index) +// } +// add(code) +// add(normalization) +// add(s) +// } + + + //姣忎竴椤瑰叿浣撳緱鍒� + rowData.topItems.forEach { + for (r in rowData.rules) { + if (r.first.fatherid == it.guid || r.first.guid == it.guid) { + // FIXME: 2021/4/25 鍐冲畾鏄惁鍐檋3 + if (hasHead3) { + r.second.forEach { s -> + val v = searchScore(s.guid, rowData.itemevaluationList) + add(v.toIntOrNull() ?: "") + } + } else { + val v = searchScore(r.first.guid, rowData.itemevaluationList) + add(v.toIntOrNull() ?: "") + } + } + } + } + } + } + + return row + } + + //鏌ユ壘寰楀垎璁板綍鍐呭搴旇鍒欑殑寰楀垎 + private fun searchScore(ruleId: String?, itemevaluations: List<Itemevaluation>): String { + var score = "" + for (e in itemevaluations) { + if (ruleId == e.esrguid) { + score = e.value ?: "" + break + } + } + return if (score == "0") "" else score + } +} \ No newline at end of file diff --git a/src/main/kotlin/cn/flightfeather/supervision/business/report/cols/ColLedger.kt b/src/main/kotlin/cn/flightfeather/supervision/business/report/cols/ColLedger.kt index 9f2b23f..bbb0751 100644 --- a/src/main/kotlin/cn/flightfeather/supervision/business/report/cols/ColLedger.kt +++ b/src/main/kotlin/cn/flightfeather/supervision/business/report/cols/ColLedger.kt @@ -2,7 +2,9 @@ import cn.flightfeather.supervision.business.report.BaseCols import cn.flightfeather.supervision.business.report.DataSource +import cn.flightfeather.supervision.common.utils.DateUtil import cn.flightfeather.supervision.common.utils.ExcelUtil +import kotlin.math.round class ColLedger : BaseCols() { override fun onHeads(dataSource: DataSource): MutableList<MutableList<ExcelUtil.MyCell>> { @@ -14,6 +16,17 @@ } override fun onOneRow(rowData: DataSource.RowData): List<Any> { - return listOf("", "", "") + val dateUtil = DateUtil() + rowData.ledgerRecords.sortedByDescending { + it.lrSubmitdate + } + val per = rowData.ledgerRecords.size.toDouble() / rowData.ledgerCount + var t1 = "" + var t2 = "/" + if (rowData.ledgerRecords.isNotEmpty()) { + val r = rowData.ledgerRecords[0] + t1 = "${dateUtil.DateToString(r.lrSubmitdate, DateUtil.DateStyle.YYYY_MM_DD_HH_MM_CN)}" + } + return listOf(ExcelUtil.MyCell(per.toString(), isPercent = true), t1, t2) } } \ No newline at end of file diff --git a/src/main/kotlin/cn/flightfeather/supervision/business/report/cols/ColSceneName.kt b/src/main/kotlin/cn/flightfeather/supervision/business/report/cols/ColSceneName.kt index 7e2cc48..979b066 100644 --- a/src/main/kotlin/cn/flightfeather/supervision/business/report/cols/ColSceneName.kt +++ b/src/main/kotlin/cn/flightfeather/supervision/business/report/cols/ColSceneName.kt @@ -13,6 +13,7 @@ } override fun onOneRow(rowData: DataSource.RowData): List<Any> { - return listOf(rowData.scene?.index ?: -99, rowData.scene?.extension2 ?: "", rowData.scene?.name ?: "") +// return listOf(rowData.scene?.index ?: -99, rowData.scene?.extension2 ?: "", rowData.scene?.name ?: "") + return listOf(rowData.index + 1, rowData.scene?.index ?: -99, rowData.scene?.name ?: "") } } \ No newline at end of file diff --git a/src/main/kotlin/cn/flightfeather/supervision/business/report/cols/ColTotalGrade.kt b/src/main/kotlin/cn/flightfeather/supervision/business/report/cols/ColTotalGrade.kt new file mode 100644 index 0000000..4efda09 --- /dev/null +++ b/src/main/kotlin/cn/flightfeather/supervision/business/report/cols/ColTotalGrade.kt @@ -0,0 +1,54 @@ +package cn.flightfeather.supervision.business.report.cols + +import cn.flightfeather.supervision.business.report.BaseCols +import cn.flightfeather.supervision.business.report.DataSource +import cn.flightfeather.supervision.common.utils.ExcelUtil +import cn.flightfeather.supervision.domain.ds1.entity.Itemevaluation +import org.apache.poi.hssf.util.HSSFColor + +class ColTotalGrade() : BaseCols() { + + override fun onHeads(dataSource: DataSource): MutableList<MutableList<ExcelUtil.MyCell>> { + val h1 = mutableListOf<ExcelUtil.MyCell>() + h1.add(ExcelUtil.MyCell("鐜俊鐮�")) + h1.add(ExcelUtil.MyCell("闃叉不瑙勮寖鎬�")) + h1.add(ExcelUtil.MyCell("鎬诲垎")) + + return mutableListOf(h1) + } + + override fun onOneRow(rowData: DataSource.RowData): List<Any> { + val row = mutableListOf<Any>() + + if (rowData.noRecord()) { + repeat(heads.last().size) { row.add(("")) } + } else { + row.apply { + //鎬诲垎鍜岀幆淇$爜 + rowData.evaluation.let { e -> + val s = e?.resultscorebef?.toIntOrNull() ?: -1 + val code = when (s) { + in 0..59 -> ExcelUtil.MyCell("绾㈢爜", fontColor = HSSFColor.HSSFColorPredefined.RED.index) + in 60..89 -> ExcelUtil.MyCell("榛勭爜", fontColor = HSSFColor.HSSFColorPredefined.GOLD.index) + in 90..100 -> ExcelUtil.MyCell("缁跨爜", fontColor = HSSFColor.HSSFColorPredefined.BRIGHT_GREEN.index) + -1 -> ExcelUtil.MyCell("", fontColor = HSSFColor.HSSFColorPredefined.BLACK.index) + else -> ExcelUtil.MyCell("瓒呭嚭鑼冨洿锛�${s}", fontColor = HSSFColor.HSSFColorPredefined.BLACK.index) + } + val normalization = when (s) { + in 0..59 -> ExcelUtil.MyCell("涓ラ噸涓嶈鑼�", fontColor = HSSFColor.HSSFColorPredefined.RED.index) + in 60..89 -> ExcelUtil.MyCell("涓嶈鑼�", fontColor = HSSFColor.HSSFColorPredefined.ROSE.index) + in 90..99 -> ExcelUtil.MyCell("鍩烘湰瑙勮寖", fontColor = HSSFColor.HSSFColorPredefined.GOLD.index) + 100 -> ExcelUtil.MyCell("瑙勮寖", fontColor = HSSFColor.HSSFColorPredefined.BRIGHT_GREEN.index) + -1 -> ExcelUtil.MyCell("", fontColor = HSSFColor.HSSFColorPredefined.BLACK.index) + else -> ExcelUtil.MyCell("瓒呭嚭鑼冨洿锛�${s}", fontColor = HSSFColor.HSSFColorPredefined.BLACK.index) + } + add(code) + add(normalization) + add(s) + } + } + } + + return row + } +} \ No newline at end of file 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..7a62467 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,6 +4,7 @@ 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.ColTotalGrade import cn.flightfeather.supervision.common.utils.Constant import cn.flightfeather.supervision.common.utils.ExcelUtil import cn.flightfeather.supervision.domain.ds1.entity.SceneConstructionSite @@ -16,7 +17,7 @@ * 鍒嗚闀囬棶棰樻暣鏀瑰垎鏋愭眹鎬昏〃 */ class ProAnalysisSummary(dataSource: DataSource) : BaseTemplate(dataSource) { - override val cols: List<BaseCols> = listOf(ColInspectionInfo()) + override val cols: List<BaseCols> = listOf(ColInspectionInfo(), ColTotalGrade()) override val templateName: String = "鍒嗚闀囬棶棰樻暣鏀瑰垎鏋愭眹鎬昏〃" @@ -31,6 +32,7 @@ if (rowData.noRecord()) return@loop val r = cols[0].getOneRow(rowData) + val r1 = cols[1].getOneRow(rowData) val k = rowData.scene?.townname if (!districtMap.containsKey(k)) { @@ -70,6 +72,12 @@ if (pNum > 0 && cNum > 0) changeScenes++ proNum += pNum changeNum += cNum + + + val standard = r1[1] as ExcelUtil.MyCell + if (standard.text.contains("涓嶈鑼�")) { + focusSceneNum++ + } } } @@ -81,23 +89,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 +148,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 +185,8 @@ var changeSceneRank = 0 var proChangeRank = 0 + + var focusSceneNum = 0 + var focusScenePer = .0 } } \ No newline at end of file diff --git a/src/main/kotlin/cn/flightfeather/supervision/business/report/template/ProDetailSummary.kt b/src/main/kotlin/cn/flightfeather/supervision/business/report/template/ProDetailSummary.kt index edc0440..7435e3d 100644 --- a/src/main/kotlin/cn/flightfeather/supervision/business/report/template/ProDetailSummary.kt +++ b/src/main/kotlin/cn/flightfeather/supervision/business/report/template/ProDetailSummary.kt @@ -4,9 +4,11 @@ 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.ColLedger import cn.flightfeather.supervision.business.report.cols.ColSceneName class ProDetailSummary(dataSource: DataSource) : BaseTemplate(dataSource) { - override val cols: List<BaseCols> = listOf(ColSceneName(), ColInspectionInfo()) + override val cols: List<BaseCols> = listOf(ColSceneName(), ColInspectionInfo(), ColLedger()) + override val templateName: String = "闂涓庢暣鏀硅窡韪眹鎬昏〃" } \ No newline at end of file diff --git a/src/main/kotlin/cn/flightfeather/supervision/business/report/template/ProTypeRankMainSummary.kt b/src/main/kotlin/cn/flightfeather/supervision/business/report/template/ProTypeRankMainSummary.kt index 688d2e2..1eec3c3 100644 --- a/src/main/kotlin/cn/flightfeather/supervision/business/report/template/ProTypeRankMainSummary.kt +++ b/src/main/kotlin/cn/flightfeather/supervision/business/report/template/ProTypeRankMainSummary.kt @@ -1,14 +1,20 @@ 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>) { + val max = when (dataSource.config.sceneType.toString()) { + Constant.ScenseType.TYPE1.value -> 5 + else -> 4 + } + + summarys.sortByDescending { it.count } head.clear() head.add( @@ -36,11 +42,13 @@ ) ) for (i in summarys.indices) { + if (i >= max) break + val s = summarys[i] contents.add( mutableListOf( - i + 1, "", "", dataSource.rowData.scene?.type ?: "", "", s.count, - s.proDes, s.count, "${round(s.countPer * 1000) / 10}%" + 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) ) ) } diff --git a/src/main/kotlin/cn/flightfeather/supervision/business/report/template/ProTypeRankSummary.kt b/src/main/kotlin/cn/flightfeather/supervision/business/report/template/ProTypeRankSummary.kt index 0eec5f3..04aef32 100644 --- a/src/main/kotlin/cn/flightfeather/supervision/business/report/template/ProTypeRankSummary.kt +++ b/src/main/kotlin/cn/flightfeather/supervision/business/report/template/ProTypeRankSummary.kt @@ -48,19 +48,27 @@ for (i in summarys.indices) { val it = summarys[i] it.countPer = it.count.toDouble() / tPros - it.countRank = i + 1 + if (i > 0 && summarys[i - 1].countPer == it.countPer) { + it.countRank = summarys[i - 1].countRank + } else { + it.countRank = i + 1 + } it.changePer = it.changeNum.toDouble() / it.count } summarys.sortByDescending { it.changePer } for (i in summarys.indices) { val it = summarys[i] - it.changeRank = i + 1 + if (i > 0 && summarys[i - 1].changePer == it.changePer) { + it.changeRank = summarys[i - 1].changeRank + } else { + it.changeRank = i + 1 + } } formatTable(summarys) } - open fun formatTable(summarys: List<Summary>) { + open fun formatTable(summarys: MutableList<Summary>) { head.clear() head.add( mutableListOf( @@ -94,13 +102,21 @@ ) for (i in summarys.indices) { val s = summarys[i] +// contents.add( +// mutableListOf( +// i + 1, dataSource.year, dataSource.month, dataSource.rowData.scene?.type ?: "", dataSource.area, +// s.proType, s.proDes, +// s.count, "${round(s.countPer * 1000) / 10}%", s.countRank, +// s.changeNum, "${round(s.changePer * 1000) / 10}%", s.changeRank +// ) +// ) contents.add( - mutableListOf( - i + 1, "", "", dataSource.rowData.scene?.type ?: "", "", - s.proType, s.proDes, - s.count, "${round(s.countPer * 1000) / 10}%", s.countRank, - s.changeNum, "${round(s.changePer * 1000) / 10}%", s.changeRank - ) + mutableListOf( + i + 1, dataSource.year, dataSource.month, dataSource.rowData.scene?.type ?: "", dataSource.area, + s.proType, s.proDes, + s.count, ExcelUtil.MyCell(s.countPer.toString(), isPercent = true), s.countRank, + s.changeNum, ExcelUtil.MyCell(s.changePer.toString(), isPercent = true), s.changeRank + ) ) } } diff --git a/src/main/kotlin/cn/flightfeather/supervision/business/report/template/ProTypeStatusSummary.kt b/src/main/kotlin/cn/flightfeather/supervision/business/report/template/ProTypeStatusSummary.kt index b63af99..aa6e38a 100644 --- a/src/main/kotlin/cn/flightfeather/supervision/business/report/template/ProTypeStatusSummary.kt +++ b/src/main/kotlin/cn/flightfeather/supervision/business/report/template/ProTypeStatusSummary.kt @@ -100,10 +100,10 @@ val s = summarys[i] contents.add( mutableListOf( - i + 1, "", "", dataSource.rowData.scene?.type ?: "", "", s.status, s.status, + i + 1, dataSource.year, dataSource.month, dataSource.rowData.scene?.type ?: "", dataSource.area, s.status, s.status, s.proType, s.proDes, - s.count, "${round(s.countPer * 1000) / 10}%", - s.changeNum, "${round(s.changePer * 1000) / 10}%", + s.count, ExcelUtil.MyCell(s.countPer.toString(), isPercent = true), + s.changeNum, ExcelUtil.MyCell(s.changePer.toString(), isPercent = true), ) ) } diff --git a/src/main/kotlin/cn/flightfeather/supervision/business/report/template/ScoreAnalysisSummary.kt b/src/main/kotlin/cn/flightfeather/supervision/business/report/template/ScoreAnalysisSummary.kt index e6bf6cb..1dce64b 100644 --- a/src/main/kotlin/cn/flightfeather/supervision/business/report/template/ScoreAnalysisSummary.kt +++ b/src/main/kotlin/cn/flightfeather/supervision/business/report/template/ScoreAnalysisSummary.kt @@ -3,12 +3,12 @@ import cn.flightfeather.supervision.business.report.BaseCols import cn.flightfeather.supervision.business.report.BaseTemplate import cn.flightfeather.supervision.business.report.DataSource -import cn.flightfeather.supervision.business.report.cols.ColGrade +import cn.flightfeather.supervision.business.report.cols.ColTotalGrade import cn.flightfeather.supervision.common.utils.ExcelUtil import kotlin.math.round class ScoreAnalysisSummary(dataSource: DataSource) : BaseTemplate(dataSource) { - override val cols: List<BaseCols> = listOf(ColGrade()) + override val cols: List<BaseCols> = listOf(ColTotalGrade()) override val templateName: String = "鍒嗚闀囪鑼冩�у垎鏋愯〃" @@ -75,7 +75,7 @@ tNonstandard += v.nonstandard tStandard += v.standard } - summarys.sortByDescending { it.standardPer } + summarys.sortByDescending { it.standard } for (i in summarys.indices) { val it = summarys[i] //鍙傝瘎鐧惧垎姣� @@ -90,7 +90,11 @@ //瑙勮寖鍖哄煙鍗犳瘮 it.standardPer = it.standard.toDouble() / tStandard //瑙勮寖鍗犳瘮鎺掑悕 - it.rank = i + 1 + if (i > 0 && summarys[i - 1].standard == it.standard) { + it.rank = summarys[i - 1].rank + } else { + it.rank = i + 1 + } } head.clear() @@ -124,16 +128,18 @@ 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.gradeCount, "${round(it.gradePer * 1000) / 10}%", - it.level1, "${round(it.level1Per * 1000) / 10}%", - it.level2, "${round(it.level2Per * 1000) / 10}%", - it.level3, "${round(it.level3Per * 1000) / 10}%", - it.level4, "${round(it.level4Per * 1000) / 10}%", - it.nonstandard, "${round(it.nonstandardPer * 1000) / 10}%", - it.standard, "${round(it.standardPer * 1000) / 10}%", + i + 1, it.townName, it.type, it.sceneCount, it.gradeCount, ExcelUtil.MyCell(it.gradePer.toString(), isPercent = true), + it.level1, ExcelUtil.MyCell(it.level1Per.toString(), isPercent = true), + it.level2, ExcelUtil.MyCell(it.level2Per.toString(), isPercent = true), + it.level3, ExcelUtil.MyCell(it.level3Per.toString(), isPercent = true), + it.level4, ExcelUtil.MyCell(it.level4Per.toString(), isPercent = true), + it.nonstandard, ExcelUtil.MyCell(it.nonstandardPer.toString(), isPercent = true), + it.standard, ExcelUtil.MyCell(it.standardPer.toString(), isPercent = true), it.rank ) ) diff --git a/src/main/kotlin/cn/flightfeather/supervision/business/report/template/ScoreDetailSummary.kt b/src/main/kotlin/cn/flightfeather/supervision/business/report/template/ScoreDetailSummary.kt index 25b3c7a..0669097 100644 --- a/src/main/kotlin/cn/flightfeather/supervision/business/report/template/ScoreDetailSummary.kt +++ b/src/main/kotlin/cn/flightfeather/supervision/business/report/template/ScoreDetailSummary.kt @@ -3,11 +3,12 @@ import cn.flightfeather.supervision.business.report.BaseCols import cn.flightfeather.supervision.business.report.BaseTemplate import cn.flightfeather.supervision.business.report.DataSource -import cn.flightfeather.supervision.business.report.cols.ColGrade +import cn.flightfeather.supervision.business.report.cols.ColItemGrade import cn.flightfeather.supervision.business.report.cols.ColSceneName +import cn.flightfeather.supervision.business.report.cols.ColTotalGrade import cn.flightfeather.supervision.business.report.cols.ColTown class ScoreDetailSummary(dataSource: DataSource) : BaseTemplate(dataSource) { - override val cols: List<BaseCols> = listOf(ColSceneName(), ColTown(), ColGrade()) + override val cols: List<BaseCols> = listOf(ColSceneName(), ColTown(), ColTotalGrade(), ColItemGrade()) override val templateName: String = "瑙勮寖鎬ц瘎浼拌鎯呰〃" } \ No newline at end of file diff --git a/src/main/kotlin/cn/flightfeather/supervision/common/utils/DateUtil.kt b/src/main/kotlin/cn/flightfeather/supervision/common/utils/DateUtil.kt index 455e29f..2584613 100644 --- a/src/main/kotlin/cn/flightfeather/supervision/common/utils/DateUtil.kt +++ b/src/main/kotlin/cn/flightfeather/supervision/common/utils/DateUtil.kt @@ -271,7 +271,7 @@ * @return 鏃ユ湡瀛楃涓� */ fun DateToString(date: Date?, pattern: String): String? { - var dateString: String? = null + var dateString: String? = "" if (date != null) { try { dateString = getDateFormat(pattern).format(date) diff --git a/src/main/kotlin/cn/flightfeather/supervision/common/utils/ExcelUtil.kt b/src/main/kotlin/cn/flightfeather/supervision/common/utils/ExcelUtil.kt index 3bd21a9..f69a607 100644 --- a/src/main/kotlin/cn/flightfeather/supervision/common/utils/ExcelUtil.kt +++ b/src/main/kotlin/cn/flightfeather/supervision/common/utils/ExcelUtil.kt @@ -2,11 +2,11 @@ import org.apache.poi.hssf.usermodel.HSSFWorkbook import org.apache.poi.ss.util.CellRangeAddress -import java.io.File import java.io.OutputStream import java.time.LocalDate import java.util.* import kotlin.math.max + /** * @author riku @@ -18,7 +18,8 @@ var text: String, var rowSpan: Int = 1, var colSpan: Int = 1, - var fontColor: Short? = null + var fontColor: Short? = null, + var isPercent:Boolean = false ) /** @@ -88,15 +89,26 @@ when (c) { is MyCell -> { rows.createCell(col).apply { - c.fontColor?.let {fC -> - val font = workbook.createFont() + if (c.isPercent) { val cellStyle = workbook.createCellStyle() - - font.color = fC - cellStyle.setFont(font) + val format = workbook.createDataFormat() + cellStyle.dataFormat = format.getFormat("0.0%") setCellStyle(cellStyle) + val v = c.text.toDoubleOrNull() + if (v != null) { + setCellValue(v) + } + } else { + c.fontColor?.let {fC -> + val font = workbook.createFont() + val cellStyle = workbook.createCellStyle() + + font.color = fC + cellStyle.setFont(font) + setCellStyle(cellStyle) + } + setCellValue(c.text) } - setCellValue(c.text) } println("write1-1: ${c.text};($rowIndex, ${col})") } @@ -150,7 +162,28 @@ when (c) { is MyCell -> { - rows.createCell(map.key).setCellValue(c.text) + rows.createCell(col).apply { + if (c.isPercent) { + val cellStyle = workbook.createCellStyle() + val format = workbook.createDataFormat() + cellStyle.dataFormat = format.getFormat("0.0%") + setCellStyle(cellStyle) + val v = c.text.toDoubleOrNull() + if (v != null) { + setCellValue(v) + } + } else { + c.fontColor?.let {fC -> + val font = workbook.createFont() + val cellStyle = workbook.createCellStyle() + + font.color = fC + cellStyle.setFont(font) + setCellStyle(cellStyle) + } + setCellValue(c.text) + } + } println("write2-1: ${c.text};($_rowIndex, ${map.key})") } is String -> { @@ -191,10 +224,6 @@ workbook.close() out.flush() out.close() - } - - fun write3() { - } private fun getMaxRows(rowArray: Array<Any>): Int { diff --git a/src/main/kotlin/cn/flightfeather/supervision/domain/ds1/entity/DustDataResult.java b/src/main/kotlin/cn/flightfeather/supervision/domain/ds1/entity/DustDataResult.java index e3e174d..0418c15 100644 --- a/src/main/kotlin/cn/flightfeather/supervision/domain/ds1/entity/DustDataResult.java +++ b/src/main/kotlin/cn/flightfeather/supervision/domain/ds1/entity/DustDataResult.java @@ -19,7 +19,7 @@ * 鍦烘櫙鍚嶇О */ @Column(name = "DR_Scene_Name") - private Integer drSceneName; + private String drSceneName; /** * 璁板綍鏈堜唤 @@ -106,7 +106,7 @@ * * @return DR_Scene_Name - 鍦烘櫙鍚嶇О */ - public Integer getDrSceneName() { + public String getDrSceneName() { return drSceneName; } @@ -115,7 +115,7 @@ * * @param drSceneName 鍦烘櫙鍚嶇О */ - public void setDrSceneName(Integer drSceneName) { + public void setDrSceneName(String drSceneName) { this.drSceneName = drSceneName; } diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/SearchServiceImpl.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/SearchServiceImpl.kt index 647b09e..1025cf9 100644 --- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/SearchServiceImpl.kt +++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/SearchServiceImpl.kt @@ -9,6 +9,9 @@ import cn.flightfeather.supervision.common.utils.* import cn.flightfeather.supervision.domain.ds1.entity.* import cn.flightfeather.supervision.domain.ds1.mapper.* +import cn.flightfeather.supervision.domain.ds2.mapper.LedgerRecordMapper +import cn.flightfeather.supervision.domain.ds2.mapper.LedgerSubTypeMapper +import cn.flightfeather.supervision.domain.ds2.mapper.UserMapMapper import cn.flightfeather.supervision.lightshare.service.SearchService import cn.flightfeather.supervision.lightshare.vo.* import com.github.pagehelper.PageHelper @@ -28,25 +31,28 @@ */ @Service class SearchServiceImpl( - val userinfoMapper: UserinfoMapper, - val subtaskMapper: SubtaskMapper, - val scenseMapper: ScenseMapper, - val sceneConstructionSiteMapper: SceneConstructionSiteMapper, - val sceneMixingPlantMapper: SceneMixingPlantMapper, - val sceneStorageYardMapper: SceneStorageYardMapper, - val sceneWharfMapper: SceneWharfMapper, - val problemlistMapper: ProblemlistMapper, - val problemtypeMapper: ProblemtypeMapper, - val townMapper: TownMapper, - val mediafileMapper: MediafileMapper, - val scoreMapper: ScoreMapper, - val inspectionMapper: InspectionMapper, - val taskMapper: TaskMapper, - val monitorobjectversionMapper: MonitorobjectversionMapper, - val evaluationruleMapper: EvaluationruleMapper, - val evaluationsubruleMapper: EvaluationsubruleMapper2, - val evaluationMapper: EvaluationMapper, - val itemevaluationMapper: ItemevaluationMapper + val userinfoMapper: UserinfoMapper, + val subtaskMapper: SubtaskMapper, + val scenseMapper: ScenseMapper, + val sceneConstructionSiteMapper: SceneConstructionSiteMapper, + val sceneMixingPlantMapper: SceneMixingPlantMapper, + val sceneStorageYardMapper: SceneStorageYardMapper, + val sceneWharfMapper: SceneWharfMapper, + val problemlistMapper: ProblemlistMapper, + val problemtypeMapper: ProblemtypeMapper, + val townMapper: TownMapper, + val mediafileMapper: MediafileMapper, + val scoreMapper: ScoreMapper, + val inspectionMapper: InspectionMapper, + val taskMapper: TaskMapper, + val monitorobjectversionMapper: MonitorobjectversionMapper, + val evaluationruleMapper: EvaluationruleMapper, + val evaluationsubruleMapper: EvaluationsubruleMapper2, + val evaluationMapper: EvaluationMapper, + val itemevaluationMapper: ItemevaluationMapper, + val ledgerSubTypeMapper: LedgerSubTypeMapper, + val ledgerRecordMapper: LedgerRecordMapper, + val userMapMapper: UserMapMapper, ) : SearchService { private val dateUtil = DateUtil() @@ -63,7 +69,8 @@ sceneStorageYardMapper, sceneWharfMapper, taskMapper, - evaluationruleMapper, evaluationsubruleMapper, evaluationMapper, itemevaluationMapper + evaluationruleMapper, evaluationsubruleMapper, evaluationMapper, itemevaluationMapper, + ledgerSubTypeMapper, ledgerRecordMapper, userinfoMapper, userMapMapper, townMapper ) val dataSource = DataSource(config, dbMapper) val t = when (mode) { diff --git a/src/main/resources/mapper/ds1/DustDataResultMapper.xml b/src/main/resources/mapper/ds1/DustDataResultMapper.xml index 07b6df5..d96848f 100644 --- a/src/main/resources/mapper/ds1/DustDataResultMapper.xml +++ b/src/main/resources/mapper/ds1/DustDataResultMapper.xml @@ -7,7 +7,7 @@ --> <id column="DR_Id" property="drId" jdbcType="INTEGER" /> <result column="DR_Scene_Id" property="drSceneId" jdbcType="VARCHAR" /> - <result column="DR_Scene_Name" property="drSceneName" jdbcType="INTEGER" /> + <result column="DR_Scene_Name" property="drSceneName" jdbcType="VARCHAR" /> <result column="DR_Time" property="drTime" jdbcType="DATE" /> <result column="DR_Exceed_Times" property="drExceedTimes" jdbcType="INTEGER" /> <result column="DR_Avg" property="drAvg" jdbcType="DOUBLE" /> -- Gitblit v1.9.3