riku
2021-11-15 1fa0e57df26dcbf9f7c936806b5f4f0744e1d543
src/test/kotlin/com/flightfeather/uav/model/epw/EPWDataPrepTest.kt
@@ -5,6 +5,8 @@
import com.flightfeather.uav.lightshare.bean.DataVo
import com.flightfeather.uav.lightshare.service.RealTimeDataService
import org.apache.poi.hssf.usermodel.HSSFWorkbook
import org.apache.poi.xssf.streaming.SXSSFWorkbook
import org.apache.poi.xssf.usermodel.XSSFWorkbook
import org.junit.Assert.*
import org.junit.Test
import org.junit.runner.RunWith
@@ -12,7 +14,10 @@
import org.springframework.boot.test.context.SpringBootTest
import org.springframework.test.context.junit4.SpringRunner
import java.io.File
import java.io.FileInputStream
import java.io.FileOutputStream
import java.time.LocalDateTime
import java.time.format.DateTimeFormatter
import java.util.*
@RunWith(SpringRunner::class)
@@ -65,12 +70,12 @@
            var totalPage = -1
            val dataList = mutableListOf<DataVo>()
            while (totalPage == -1 || page <= totalPage) {
                realTimeDataService.getSecondData(deviceCode, it.first, it.second, page, 50000).apply {
                realTimeDataService.getSecondData(deviceCode, it.first, it.second, 0, page, 50000).apply {
                    if (totalPage == -1) {
                        totalPage = head?.totalPage ?: 0
                    }
                    val list = data?: emptyList()
                    val list = data ?: emptyList()
                    val prepList = prep.mDataPrep(list)
@@ -81,7 +86,7 @@
            }
            if (dataList.isNotEmpty()) {
                val workbook = HSSFWorkbook()
                val workbook = SXSSFWorkbook()
                val heads = mutableListOf<Array<String>>()
                heads.add(dataList[0].toRowTitle())
                val contents = mutableListOf<Array<Any>>()
@@ -100,4 +105,72 @@
            }
        }
    }
    @Test
    fun foo2() {
        var fileName = "网格化监测预处理连续数据${Date().time}.xls"
        var filePath = "C:\\work\\工作\\走航监测\\预处理连续数据\\$fileName"
        var workBook = SXSSFWorkbook(1000)
        var out: FileOutputStream
        var input: FileInputStream
        var row = 0
        val maxRow = 100000
        var hasHead = false
        val ePWDataPrep = EPWDataPrep()
        val endDateTime = LocalDateTime.now()
        var sTime = LocalDateTime.of(2021, 6, 19, 0, 0, 0)
        var eTime = LocalDateTime.of(2021, 6, 19, 23, 59, 59)
        while (sTime.isBefore(endDateTime)) {
            val deviceCode = "0d0000000001"
            val dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")
            val s = sTime.format(dateFormatter)
            val e = eTime.format(dateFormatter)
            val data = realTimeDataService.getSecondData(deviceCode, s, e, 0, 1, 30000).data
            data?.let {
                val dataList = ePWDataPrep.mDataPrep(it)
                if (row + dataList.size > maxRow) {
                    fileName = "网格化监测预处理连续数据${Date().time}.xls"
                    filePath = "C:\\work\\工作\\走航监测\\预处理连续数据\\$fileName"
                    workBook = SXSSFWorkbook(1000)
                    row = 0
                    hasHead = false
                }
                if (!hasHead) {
                    out = FileOutputStream(filePath)
                    val heads = mutableListOf<Array<String>>()
                    heads.add(dataList[0].toRowTitle())
                    row = ExcelUtil.write(heads, emptyList(), workBook, row = row)
                    workBook.write(out)
                    workBook.close()
                    out.flush()
                    out.close()
                    hasHead = true
                }
                input = FileInputStream(filePath)
                workBook = SXSSFWorkbook(XSSFWorkbook(input), 1000)
                out = FileOutputStream(filePath)
                val contents = mutableListOf<Array<Any>>()
                dataList.forEach {d ->
                    contents.add(d.toRowContent())
                }
                row = ExcelUtil.write(emptyList(), contents, workBook, row = row)
                workBook.write(out)
                workBook.close()
                input.close()
                out.flush()
                out.close()
            }
            sTime = sTime.plusDays(1)
            eTime = eTime.plusDays(1)
        }
    }
}