1. 调整运算逻辑,取消部分中间值的存储,减少内存消耗
| | |
| | | // 计算结果 |
| | | private val result = mutableSetOf<BaseEffect>() |
| | | |
| | | private val rMap = mutableMapOf<String, MutableMap<String, MutableMap<String?, MutableList<Double>>>>() |
| | | |
| | | // 结果筛选方式 |
| | | abstract var sections: List<BaseSection<M, S>> |
| | | |
| | |
| | | */ |
| | | fun execute(mDataList: List<M>, sopList: List<S>) { |
| | | result.clear() |
| | | rMap.clear() |
| | | |
| | | //1. 数据预处理 |
| | | val mList = dataPrep.mDataPrep(mDataList) |
| | |
| | | sections.forEach { it.filter(mData, sop, effect) } |
| | | |
| | | // 保存结果 |
| | | result.add(effect) |
| | | // result.add(effect) |
| | | formatConversion2(effect) |
| | | } |
| | | |
| | | fun outputToExcel( |
| | |
| | | sheetName: String = "sheet1", |
| | | done: Boolean = true |
| | | ): Pair<HSSFWorkbook, FileOutputStream>? { |
| | | val rMap = formatConversion() |
| | | // val rMap = formatConversion() |
| | | |
| | | val workbook = _workbook ?: HSSFWorkbook() |
| | | val fileName = fName ?: "污染溯源权重模型${DateUtil().DateToString(Date(), "yyyy-MM-ddHHmmss")}.xls" |
| | |
| | | return rMap |
| | | } |
| | | |
| | | private fun formatConversion2(e: BaseEffect) { |
| | | val rKey = "${e.sourceName}(${e.index})" |
| | | if (!rMap.containsKey(rKey)) { |
| | | rMap[rKey] = mutableMapOf() |
| | | } |
| | | val lMap = rMap[rKey]!! |
| | | e.value.forEach { v -> |
| | | if (!lMap.containsKey(v.first.des)) { |
| | | lMap[v.first.des] = mutableMapOf() |
| | | } |
| | | val tMap = lMap[v.first.des]!! |
| | | e.tag.forEach { t -> |
| | | val factorName = v.first.des |
| | | val lKey = t.levelName + "($factorName)" |
| | | if (!tMap.containsKey(lKey)) { |
| | | tMap[lKey] = mutableListOf() |
| | | } |
| | | tMap[lKey]?.add(v.second) |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 监测数据合法性检查 |
| | | */ |
| | |
| | | |
| | | val dataSet = mutableListOf<DataVo>() |
| | | val timeSet = listOf( |
| | | Pair("2021-06-18 15:00:00", "2021-06-18 23:59:59"), |
| | | Pair("2021-06-19 00:00:00", "2021-06-19 23:59:59"), |
| | | Pair("2021-06-20 00:00:00", "2021-06-20 23:59:59"), |
| | | Pair("2021-06-21 00:00:00", "2021-06-21 23:59:59"), |
| | | Pair("2021-06-22 00:00:00", "2021-06-22 23:59:59"), |
| | | Pair("2021-06-23 00:00:00", "2021-06-23 23:59:59"), |
| | | Pair("2021-06-24 00:00:00", "2021-06-24 23:59:59"), |
| | | Pair("2021-06-25 00:00:00", "2021-06-25 23:59:59"), |
| | | Pair("2021-06-26 00:00:00", "2021-06-26 23:59:59"), |
| | | Pair("2021-06-27 00:00:00", "2021-06-27 23:59:59"), |
| | | Pair("2021-06-28 00:00:00", "2021-06-28 23:59:59"), |
| | | Pair("2021-06-29 00:00:00", "2021-06-29 23:59:59"), |
| | | Pair("2021-06-30 00:00:00", "2021-06-30 08:00:00"), |
| | | // Pair("2021-03-26 11:28:12", "2021-03-26 21:30:00"), |
| | | // Pair("2021-04-09 07:18:12", "2021-04-09 22:04:39"), |
| | | // Pair("2021-04-10 08:00:02", "2021-04-10 09:44:18"), |
| | | // Pair("2021-04-21 16:46:12", "2021-04-21 21:18:35"), |
| | | // Pair("2021-05-24 11:10:12", "2021-05-24 19:31:02"), |
| | | // Pair("2021-06-04 09:02:40", "2021-06-04 20:14:18"), |
| | | // Pair("2021-06-18 15:00:00", "2021-06-18 23:59:59"), |
| | | // Pair("2021-06-19 00:00:00", "2021-06-19 23:59:59"), |
| | | // Pair("2021-06-20 00:00:00", "2021-06-20 23:59:59"), |
| | | // Pair("2021-06-21 00:00:00", "2021-06-21 23:59:59"), |
| | | // Pair("2021-06-22 00:00:00", "2021-06-22 23:59:59"), |
| | | // Pair("2021-06-23 00:00:00", "2021-06-23 23:59:59"), |
| | | // Pair("2021-06-24 00:00:00", "2021-06-24 23:59:59"), |
| | | // Pair("2021-06-25 00:00:00", "2021-06-25 23:59:59"), |
| | | // Pair("2021-06-26 00:00:00", "2021-06-26 23:59:59"), |
| | | // Pair("2021-06-27 00:00:00", "2021-06-27 23:59:59"), |
| | | // Pair("2021-06-28 00:00:00", "2021-06-28 23:59:59"), |
| | | // Pair("2021-06-29 00:00:00", "2021-06-29 23:59:59"), |
| | | // Pair("2021-06-30 00:00:00", "2021-06-30 08:00:00"), |
| | | Pair("2021-03-26 11:28:12", "2021-03-26 21:30:00"), |
| | | Pair("2021-04-09 07:18:12", "2021-04-09 22:04:39"), |
| | | Pair("2021-04-10 08:00:02", "2021-04-10 09:44:18"), |
| | | Pair("2021-04-21 16:46:12", "2021-04-21 21:18:35"), |
| | | Pair("2021-05-24 11:10:12", "2021-05-24 19:31:02"), |
| | | Pair("2021-06-04 09:02:40", "2021-06-04 20:14:18"), |
| | | ) |
| | | |
| | | val epwModel = EPWModel() |