feiyu02
2022-11-15 909fd8929d7906f1dca68acc05e36e29b0b9192c
src/main/kotlin/cn/flightfeather/supervision/business/report/BaseCols.kt
@@ -5,28 +5,58 @@
/**
 * 统计数据列基类
 * @param chooseIndexList 选择需要输出的列序号,不填写时表示默认输出所有列
 */
abstract class BaseCols(){
abstract class BaseCols(private val chooseIndexList: List<Int>){
    protected var heads = mutableListOf<MutableList<ExcelUtil.MyCell>>()
    //生成表头
    fun getHeads(dataSource: DataSource): MutableList<MutableList<ExcelUtil.MyCell>> {
        heads = onHeads(dataSource)
        return heads
        val _heads = if (chooseIndexList.isNotEmpty()) {
            val __heads = mutableListOf<MutableList<ExcelUtil.MyCell>>()
            heads.forEach {head ->
                val h = mutableListOf<ExcelUtil.MyCell>()
                chooseIndexList.forEach {i ->
                    if (i < head.size) {
                        h.add(head[i])
                    }
                }
                __heads.add(h)
            }
            __heads
        } else {
            heads
        }
        return _heads
    }
    abstract fun onHeads(dataSource: DataSource): MutableList<MutableList<ExcelUtil.MyCell>>
    //生成一行内容
    fun getOneRow(rowData: DataSource.RowData): List<Any> {
        return if (rowData.noRecord()) {
            val r = mutableListOf<String>()
            repeat(heads.last().size) { r.add(("")) }
//        return if (rowData.noRecord()) {
//            val r = mutableListOf<String>()
//            repeat(heads.last().size) { r.add(("")) }
//            r
//        } else {
//            onOneRow(rowData)
//        }
        val row = onOneRow(rowData)
        val _row = if (chooseIndexList.isNotEmpty()) {
            val r = mutableListOf<Any>()
            chooseIndexList.forEach {i ->
                if (i < row.size) {
                    r.add(row[i])
                }
            }
            r
        } else {
            onOneRow(rowData)
            row
        }
        return _row
    }
    abstract fun onOneRow(rowData: DataSource.RowData): List<Any>
@@ -57,7 +87,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 +105,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])
            }
        }
    }