| | |
| | | package cn.flightfeather.supervision.business.report |
| | | |
| | | /** |
| | | * 报告模板基类 |
| | | */ |
| | | abstract class BaseTemplate { |
| | | 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 org.apache.poi.hssf.usermodel.HSSFWorkbook |
| | | import tk.mybatis.mapper.entity.Example |
| | | import java.io.FileOutputStream |
| | | import java.io.OutputStream |
| | | import java.util.* |
| | | |
| | | //固定列组合 |
| | | //名称 |
| | | //基本信息 |
| | | //问题扣分分布 |
| | | //问题整改分布 |
| | | //监管详情 |
| | | } |
| | | /** |
| | | * excel报告模板基类 |
| | | */ |
| | | // FIXME: 2022/7/15 模板简化:只有表头会涉及单元格合并,默认表内容中没有合并 |
| | | abstract class BaseTemplate(val dataSource: DataSource){ |
| | | |
| | | //列组合 |
| | | abstract val cols: List<BaseCols> |
| | | |
| | | //模板名称 |
| | | abstract val templateName: String |
| | | |
| | | //表头 |
| | | val head = mutableListOf<MutableList<ExcelUtil.MyCell>>() |
| | | //内容 |
| | | val contents = mutableListOf<MutableList<Any>>() |
| | | |
| | | |
| | | open fun execute() { |
| | | //数据源重置 |
| | | dataSource.reset() |
| | | //合成表头 |
| | | cols.forEach { |
| | | it.combineHead(head,dataSource) |
| | | } |
| | | //合成数据 |
| | | dataSource.loop { index, rowData -> |
| | | cols.forEach {col -> |
| | | val r = col.getOneRow(rowData) |
| | | if (index >= contents.size) { |
| | | contents.add(mutableListOf()) |
| | | } |
| | | contents[index].addAll(r) |
| | | } |
| | | } |
| | | } |
| | | |
| | | fun toWorkBook(wb: HSSFWorkbook) { |
| | | val f = tableFormat() |
| | | ExcelUtil.write(f.first, f.second, wb, templateName) |
| | | } |
| | | |
| | | fun toOutputStream(out: OutputStream, sheetName: String? = null) { |
| | | val f = tableFormat() |
| | | ExcelUtil.write2(out, f.first, f.second, sheetName ?: templateName) |
| | | } |
| | | |
| | | /** |
| | | * 输出为文档 |
| | | */ |
| | | fun toFile(path: String) { |
| | | val fileName = "${dataSource.areaName()}-${templateName}-${Date().time}.xls" |
| | | val out = FileOutputStream(path + fileName) |
| | | toOutputStream(out) |
| | | } |
| | | |
| | | /** |
| | | * 表头和表内容格式转化 |
| | | */ |
| | | private fun tableFormat(): Pair<MutableList<Array<Any>>, MutableList<Array<Any>>> { |
| | | val h = mutableListOf<Array<Any>>() |
| | | val c = mutableListOf<Array<Any>>() |
| | | head.forEach { h.add(it.toTypedArray()) } |
| | | contents.forEach { c.add(it.toTypedArray()) } |
| | | val index = c[0][0] |
| | | if (index is Int) { |
| | | c.sortBy { |
| | | if (it[0] is Int) { |
| | | it[0] as Int |
| | | } else { |
| | | 0 |
| | | } |
| | | } |
| | | } else { |
| | | c.sortBy { |
| | | it[0].toString() |
| | | } |
| | | } |
| | | return Pair(h, c) |
| | | } |
| | | } |
| | | |
| | | //固定列组合 |
| | | |
| | | |
| | | //基本信息 |
| | | //问题扣分分布 |
| | | |
| | | |