src/main/kotlin/cn/flightfeather/supervision/business/report/BaseExcel.kt
@@ -1,10 +1,10 @@ package cn.flightfeather.supervision.business.report import cn.flightfeather.supervision.business.report.bean.BaseTemplateResult import org.apache.poi.hssf.usermodel.HSSFWorkbook import java.io.File import java.io.FileOutputStream import java.io.OutputStream import java.util.* /** * 忍¡æ¿åå¹¶è¾åºä¸ºæ´ä½ææ¡£ @@ -16,10 +16,23 @@ abstract val fileName: String // ä¸é´ç»æå¯¹è±¡ by hc 2024.12.06 private val objectResults: MutableList<MutableList<BaseTemplateResult>> = mutableListOf() // excelææ¡£ private var workbook = HSSFWorkbook() fun getReportName(): String = "${dataSource.areaName()}-${fileName}.xlsx" // è¾åºå°å¯¹è±¡ fun toObject() { templates.forEach { if (!it.isExecuted) { it.execute() } objectResults.add(it.toObject()) } } fun toFile(path: String) { val fileName = getReportName() @@ -33,7 +46,9 @@ fun toOutputStream(out: OutputStream) { templates.forEach { if (!it.isExecuted) { it.execute() } it.toWorkBook(workbook) } workbook.write(out) src/main/kotlin/cn/flightfeather/supervision/business/report/BaseTemplate.kt
@@ -1,14 +1,12 @@ package cn.flightfeather.supervision.business.report import cn.flightfeather.supervision.common.utils.Constant import cn.flightfeather.supervision.common.utils.DateUtil import cn.flightfeather.supervision.common.utils.ExcelUtil import cn.flightfeather.supervision.domain.ds1.entity.Problemlist import cn.flightfeather.supervision.business.report.bean.BaseTemplateResult import org.apache.poi.hssf.usermodel.HSSFWorkbook import tk.mybatis.mapper.entity.Example import java.io.FileOutputStream import java.io.OutputStream import java.util.* import kotlin.reflect.full.createInstance /** * excelæ¥å模æ¿åºç±» @@ -23,14 +21,20 @@ //模æ¿åç§° abstract val templateName: String // ä¸é´ç»æå¯¹è±¡ by hc 2024.12.5 abstract var resultObjects: MutableList<BaseTemplateResult> // æ§è¡ç¶æ by hc 2024.12.5 var isExecuted: Boolean = false //表头 val head = mutableListOf<MutableList<ExcelUtil.MyCell>>() //å 容 val contents = mutableListOf<MutableList<Any>>() open fun execute() { // çæTemplateç¸å ³æ°æ® by hc 2024.12.9 open fun genData() { //æ°æ®æºéç½® dataSource.reset() //åæè¡¨å¤´ @@ -49,6 +53,16 @@ } } open fun execute() { try { genData() // 没æé误æ£å¸¸è¿è¡ç»æ isExecuted = true } catch (e: Exception) { // TODO: handle exception } } override fun toWorkBook(wb: HSSFWorkbook) { val f = tableFormat() ExcelUtil.write(f.first, f.second, wb, templateName) @@ -60,6 +74,33 @@ } /** * è¾åºå°å¯¹è±¡ * hc 2024.12.06 */ fun toObject(): MutableList<BaseTemplateResult> { if (!isExecuted) { execute() } // è·å¾åtemplate对åºçä¸é´ç»ææ°æ®å¯¹è±¡KCLASS对象 val classType = resultObjects.first()::class try { // æ¸ ç©ºæ°ç» resultObjects.clear() contents.forEach { // å建对åºçä¸é´ç»ææ°æ®å¯¹è±¡ val resultObj = classType.createInstance() resultObj.setProperties(it) resultObjects.add(resultObj) } }catch (e: Exception) { // 妿åºç°å¼å¸¸æ¢å¤å°åå§ç¶æ é¿å 䏿¬¡è°ç¨toObjectæ°æ®éå¤ resultObjects.clear() resultObjects.add(classType.createInstance()) } return resultObjects } /** * è¾åºä¸ºææ¡£ */ override fun toFile(path: String) { src/main/kotlin/cn/flightfeather/supervision/business/report/bean/BaseTemplateResult.kt
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,47 @@ package cn.flightfeather.supervision.business.report.bean import cn.flightfeather.supervision.common.utils.ExcelUtil import kotlin.reflect.KMutableProperty import kotlin.reflect.full.declaredMemberProperties import kotlin.reflect.full.findAnnotation /** * excelæ¥å模æ¿ä¸é´ç»æå¯¹è±¡åºç±» * hc 2024.12.06 */ abstract class BaseTemplateResult { // å®ä¹æ³¨è§£ annotation class ExcelHead(val index: Int, val des: String) fun setProperties(values: MutableList<Any>) { // é忿屿§å¹¶èµå¼ var index = 0 this::class.declaredMemberProperties.sortedBy { it.findAnnotation<ExcelHead>()?.index }.forEach { property -> // æ£æ¥å±æ§æ¯å¦å¯ä»¥è®¾ç½®å¼ if (property is KMutableProperty<*>) { try { // æåæåç屿§å¼çåé é»è®¤å°±æ¯values[index] var c: Any = values[index] // ä» ä» ä¸ºäºç®åvalues[index] val v = values[index++] // ä»MyCellå¯¹è±¡ä¸æ¿åºç¾åæ¯ç±»å if (v is ExcelUtil.MyCell) { if (v.isPercent) { val percent = v.text.toBigDecimalOrNull() if (percent != null) { percent.setScale(2) c = percent }else { c = "" } } } // å屿§ä¸èµå¼ property.setter.call(this, c) } catch (e: Exception) { } } } } } src/main/kotlin/cn/flightfeather/supervision/business/report/bean/ProAnalysisSummaryResult.kt
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,57 @@ package cn.flightfeather.supervision.business.report.bean import java.math.BigDecimal /** * åè¡éé®é¢æ´æ¹åææ±æ»è¡¨ä¸é´ç»æå¯¹è±¡ * hc 2024.12.06 */ class ProAnalysisSummaryResult : BaseTemplateResult() { @ExcelHead(1, "è¡éåºå·") var formIndex: Int? = null @ExcelHead(2, "è¡é/å·¥ä¸åº") var sceneTownname: String? = null @ExcelHead(3, "åºæ¯ç±»å«") var sceneType: String? = null @ExcelHead(4, "åºæ¯æ°") var sceneCount: Int? = null @ExcelHead(5, "å®å·¥ãæªæ½å·¥ãåå·¥æåä¸ãå ³éç") var inactiveScenes: Int? = null @ExcelHead(6, "æ½å·¥ä¸ãè¿è¥ä¸æ»æ°") var activeScenes: Int? = null @ExcelHead(7, "æ´æ¹å使°") var changeScenes: Int? = null @ExcelHead(8, "æ´æ¹åä½å æ¯") var changeScenePer: BigDecimal? = null @ExcelHead(9, "é®é¢æ°") var proNum: Int? = null @ExcelHead(10, "é®é¢å æ¯") var proPer: BigDecimal? = null @ExcelHead(11, "æ´æ¹æ°") var changeNum: Int? = null @ExcelHead(12, "æ´æ¹ç") var changePer: BigDecimal? = null @ExcelHead(13, "æ´æ¹å使¯æå") var changeSceneRank: Int? = null @ExcelHead(14, "é®é¢æ´æ¹çæå") var proChangeRank: Int? = null @ExcelHead(15, "æåå ¥éç¹ç管æ°") var focusSceneNum: Int? = null @ExcelHead(16, "æåå ¥éç¹çç®¡å æ¯") var focusScenePer: BigDecimal? = null } src/main/kotlin/cn/flightfeather/supervision/business/report/bean/ProDetailSummaryResult.kt
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,94 @@ package cn.flightfeather.supervision.business.report.bean import java.math.BigDecimal /** * é®é¢ä¸æ´æ¹è·è¸ªæ±æ»è¡¨ä¸é´ç»æå¯¹è±¡ * hc 2024.12.06 */ class ProDetailSummaryResult : BaseTemplateResult() { @ExcelHead(1, "表åç¼å·") var formIndex: Int? = null @ExcelHead(2, "å¯ä¸åºå·") var sceneIndex: Int? = null @ExcelHead(3, "åºæ¯ç±»å") var sceneType: String? = null @ExcelHead(4, "åºæ¯åç§°") var sceneName: String? = null @ExcelHead(5, "ç管æ¶é´") var subTaskPlanstarttime: String? = null @ExcelHead(6, "å·¡æ¥äººå") var subTaskExecutorrealtimes: String? = null @ExcelHead(7, "é®é¢ç±»å") var problemTypename: String? = null @ExcelHead(8, "é®é¢æè¿°") var problemDescription: String? = null @ExcelHead(9, "é®é¢ä½ç½®") var problemLocation: String? = null @ExcelHead(10, "é®é¢æ°") var problemNum: Int? = null @ExcelHead(11, "æ´æ¹æ¶é´") var changeTime: String? = null @ExcelHead(12, "æ´æ¹æ åµ") var problemChanged: String? = null @ExcelHead(13, "æ´æ¹é®é¢") var changedProblem: String? = null @ExcelHead(14, "æ´æ¹æ°") var changedNum: Int? = null @ExcelHead(15, "æªæ´æ¹é®é¢") var unchangedProblems: String? = null @ExcelHead(16, "æªæ´æ¹æ°") var unChangedProblem: Int? = null @ExcelHead(17, "é®é¢æ´æ¹ç") var changePercent: BigDecimal? = null @ExcelHead(18, "å®¡æ ¸æ åµ") var checkStatus: String? = null @ExcelHead(19, "é®é¢å®¡æ ¸æ¶é´") var pCheckTime: String? = null @ExcelHead(20, "æ´æ¹å®¡æ ¸æ¶é´") var cCheckTime: String? = null @ExcelHead(21, "é®é¢å®¡æ ¸æ°") var pCheckNum: Int? = null @ExcelHead(22, "é®é¢å®¡æ ¸å æ¯") var pCheckPer: BigDecimal? = null @ExcelHead(23, "æ´æ¹å®¡æ ¸æ°") var cCheckNum: Int? = null @ExcelHead(24, "æ´æ¹å®¡æ ¸å æ¯") var cCheckPer: BigDecimal? = null @ExcelHead(25, "å°è´¦æäº¤ç¾åæ¯") var ledgerPercent: BigDecimal? = null @ExcelHead(26, "å°è´¦æäº¤æ¶é´") var ledgerSubmitdate: String? = null @ExcelHead(27, "å°è´¦å®¡æ ¸æ¶é´") var ledgerCheckTime: String? = null @ExcelHead(28, "æ´æ¹è·è¸ªæé") var changeTrackingReminder: String? = null } src/main/kotlin/cn/flightfeather/supervision/business/report/template/ProAnalysisSummary.kt
@@ -12,16 +12,19 @@ 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 cn.flightfeather.supervision.business.report.bean.BaseTemplateResult import cn.flightfeather.supervision.business.report.bean.ProAnalysisSummaryResult /** * åè¡éé®é¢æ´æ¹åææ±æ»è¡¨ */ class ProAnalysisSummary(dataSource: DataSource) : BaseTemplate(dataSource) { 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() src/main/kotlin/cn/flightfeather/supervision/business/report/template/ProDetailSummary.kt
@@ -7,9 +7,11 @@ import cn.flightfeather.supervision.business.report.cols.ColLedger import cn.flightfeather.supervision.business.report.cols.ColSceneName import cn.flightfeather.supervision.business.report.cols.ColStrategy import cn.flightfeather.supervision.business.report.bean.BaseTemplateResult import cn.flightfeather.supervision.business.report.bean.ProDetailSummaryResult class ProDetailSummary(dataSource: DataSource) : BaseTemplate(dataSource) { override val cols: List<BaseCols> = listOf(ColSceneName(), ColInspectionInfo(), ColLedger(), ColStrategy()) override var resultObjects: MutableList<BaseTemplateResult> = mutableListOf(ProDetailSummaryResult()) override val templateName: String = "é®é¢ä¸æ´æ¹è·è¸ªæ±æ»è¡¨" }