feiyu02
2024-01-26 01eae19a4870033e879a3faa6749eece92926cab
src/main/kotlin/com/flightfeather/uav/model/BaseModel.kt
@@ -4,6 +4,7 @@
import com.flightfeather.uav.common.utils.ExcelUtil
import com.flightfeather.uav.socket.eunm.FactorType
import org.apache.poi.hssf.usermodel.HSSFWorkbook
import org.apache.poi.xssf.streaming.SXSSFWorkbook
import java.io.File
import java.io.FileOutputStream
import java.util.*
@@ -13,7 +14,7 @@
 * 污染源影响程度权重分析模型
 * 基类
 */
abstract class BaseModel<M : BaseMData, S : BaseSOP> {
abstract class BaseModel<M : BaseMData> {
    data class ResultCell(
        var total: Double = 0.0,
@@ -26,26 +27,26 @@
        }
    }
    abstract var dataPrep: BaseDataPrep<M, S>
    abstract var dataPrep: BaseDataPrep<M, BaseSOP>
    // 权重因子,在进行计算分析时使用的监测因子
    abstract var factorTypes: List<FactorType>
    // 权重值,多种权重进行乘积计算
    abstract var weights: List<BaseWeight<M, S>>
    abstract var weights: List<BaseWeight<M, BaseSOP>>
    // 计算结果
    private val rMap = mutableMapOf<String, MutableMap<String, MutableMap<String, ResultCell>>>()
    // 结果筛选方式
    abstract var sections: List<BaseSection<M, S>>
    abstract var sections: List<BaseSection<M, BaseSOP>>
    /**
     * 污染源影响程度计算
     * @param mDataList 监测数据集合
     * @param sopList 污染源集合
     */
    fun execute(mDataList: List<M>, sopList: List<S>, hasNext: Boolean = false) {
    fun execute(mDataList: List<M>, sopList: List<BaseSOP>, hasNext: Boolean = false) {
        if (!hasNext) rMap.clear()
        //1. 数据预处理
@@ -67,7 +68,7 @@
     * @param mData 监测数据
     * @param sop 污染源
     */
    private fun weightCompute(mData: M, sop: S) {
    private fun weightCompute(mData: M, sop: BaseSOP) {
        val effect = BaseEffect(sop.sourceId, sop.sourceName, sop.index)
        // 将原监测数据按照权重计算出结果值
@@ -88,14 +89,14 @@
    fun outputToExcel(
        fName: String? = null,
        _workbook: HSSFWorkbook? = null,
        _workbook: SXSSFWorkbook? = null,
        _out: FileOutputStream? = null,
        sheetName: String = "sheet1",
        done: Boolean = true
    ): Pair<HSSFWorkbook, FileOutputStream>? {
    ): Pair<SXSSFWorkbook, FileOutputStream>? {
//        val rMap = formatConversion()
        val workbook = _workbook ?: HSSFWorkbook()
        val workbook = _workbook ?: SXSSFWorkbook()
        val fileName = fName ?: "污染溯源权重模型${DateUtil.instance.dateToString(Date(), "yyyy-MM-ddHHmmss")}.xls"
//        val filePath = "E:\\work\\export\\$fileName"
//        val filePath = "E:\\工作\\开发\\走航监测\\算法相关\\自动输出\\$fileName"
@@ -233,5 +234,5 @@
    /**
     * 污染源数据合法性检查
     */
    abstract fun sopCheck(s: S): Boolean
    abstract fun sopCheck(s: BaseSOP): Boolean
}