From c55c9a51cea46caea88b2bee5cc3c9ddaa9fc468 Mon Sep 17 00:00:00 2001
From: hcong <1050828145@qq.com>
Date: 星期三, 11 十二月 2024 08:44:22 +0800
Subject: [PATCH] 1. 新增 BaseExcel.kt 和 BaseTemplate.kt 的 toObject输出到对象方法 2. 新增 BaseTemplate 是否执行的状态属性 3. 在cn.flightfeather.supervision.business.report.bean包下新增 BaseTemplateResult.kt 结果对象抽象类 以及 ProAnalysisSummaryResult.kt 和 ProDetailSummaryResult.kt 对应实现:问题整改动态跟踪和分街镇问题整改分析的中间结果对象  注:除了问题整改动态跟踪和分街镇问题整改分析其他的汇总表对象中都没有对应中间结果对象,因此这里还有报错信息

---
 src/main/kotlin/cn/flightfeather/supervision/business/report/bean/ProAnalysisSummaryResult.kt |   57 +++++++++++
 src/main/kotlin/cn/flightfeather/supervision/business/report/template/ProAnalysisSummary.kt   |    5 
 src/main/kotlin/cn/flightfeather/supervision/business/report/bean/BaseTemplateResult.kt       |   47 +++++++++
 src/main/kotlin/cn/flightfeather/supervision/business/report/BaseExcel.kt                     |   19 +++
 src/main/kotlin/cn/flightfeather/supervision/business/report/BaseTemplate.kt                  |   53 +++++++++-
 src/main/kotlin/cn/flightfeather/supervision/business/report/template/ProDetailSummary.kt     |    4 
 src/main/kotlin/cn/flightfeather/supervision/business/report/bean/ProDetailSummaryResult.kt   |   94 ++++++++++++++++++
 7 files changed, 269 insertions(+), 10 deletions(-)

diff --git a/src/main/kotlin/cn/flightfeather/supervision/business/report/BaseExcel.kt b/src/main/kotlin/cn/flightfeather/supervision/business/report/BaseExcel.kt
index e182a98..86d3475 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/business/report/BaseExcel.kt
+++ b/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 {
-            it.execute()
+            if (!it.isExecuted) {
+                it.execute()
+            }
             it.toWorkBook(workbook)
         }
         workbook.write(out)
diff --git a/src/main/kotlin/cn/flightfeather/supervision/business/report/BaseTemplate.kt b/src/main/kotlin/cn/flightfeather/supervision/business/report/BaseTemplate.kt
index fefb508..a053d99 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/business/report/BaseTemplate.kt
+++ b/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()
+            // 娌℃湁閿欒姝e父杩愯缁撴潫
+            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()
+        }
+        // 鑾峰緱鍜宼emplate瀵瑰簲鐨勪腑闂寸粨鏋滄暟鎹璞CLASS瀵硅薄
+        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) {
diff --git a/src/main/kotlin/cn/flightfeather/supervision/business/report/bean/BaseTemplateResult.kt b/src/main/kotlin/cn/flightfeather/supervision/business/report/bean/BaseTemplateResult.kt
new file mode 100644
index 0000000..04826b8
--- /dev/null
+++ b/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]
+                    // 浠呬粎涓轰簡绠�鍐檝alues[index]
+                    val v = values[index++]
+                    // 浠嶮yCell瀵硅薄涓嬁鍑虹櫨鍒嗘瘮绫诲瀷
+                    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) {
+
+                }
+            }
+        }
+    }
+}
diff --git a/src/main/kotlin/cn/flightfeather/supervision/business/report/bean/ProAnalysisSummaryResult.kt b/src/main/kotlin/cn/flightfeather/supervision/business/report/bean/ProAnalysisSummaryResult.kt
new file mode 100644
index 0000000..0711386
--- /dev/null
+++ b/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
+}
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/business/report/bean/ProDetailSummaryResult.kt b/src/main/kotlin/cn/flightfeather/supervision/business/report/bean/ProDetailSummaryResult.kt
new file mode 100644
index 0000000..209e29b
--- /dev/null
+++ b/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
+}
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 fdec9ce..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
@@ -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()
 
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 8ad525b..737af42 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
@@ -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 = "闂涓庢暣鏀硅窡韪眹鎬昏〃"
 }
\ No newline at end of file

--
Gitblit v1.9.3