| | |
| | | package com.flightfeather.uav.lightshare.service.impl |
| | | |
| | | import com.flightfeather.uav.common.utils.ExcelUtil |
| | | import com.flightfeather.uav.common.utils.FileExchange |
| | | import com.flightfeather.uav.common.utils.GsonUtils |
| | | import com.flightfeather.uav.domain.entity.RealTimeData |
| | | import com.flightfeather.uav.domain.entity.toRowContent |
| | | import com.flightfeather.uav.domain.entity.toRowTitle |
| | | import com.flightfeather.uav.domain.mapper.RealTimeDataMapper |
| | | import com.flightfeather.uav.lightshare.bean.BaseResponse |
| | | import com.flightfeather.uav.lightshare.bean.DataHead |
| | | import com.flightfeather.uav.lightshare.bean.DataVo |
| | | import com.flightfeather.uav.lightshare.bean.* |
| | | import com.flightfeather.uav.lightshare.service.RealTimeDataService |
| | | import com.flightfeather.uav.socket.bean.AirData |
| | | import com.github.pagehelper.PageHelper |
| | | import org.apache.poi.hssf.usermodel.HSSFWorkbook |
| | | import org.springframework.stereotype.Service |
| | | import org.springframework.web.multipart.MultipartFile |
| | | import tk.mybatis.mapper.entity.Example |
| | | import java.io.ByteArrayInputStream |
| | | import java.io.FileInputStream |
| | | import java.io.InputStream |
| | | import java.text.DateFormat |
| | | import java.text.SimpleDateFormat |
| | | import javax.servlet.http.HttpServletResponse |
| | | |
| | | @Service |
| | | class RealTimeDataServiceImpl(val realTimeDataMapper: RealTimeDataMapper) : RealTimeDataService { |
| | | |
| | | private var dateFormatter = SimpleDateFormat("yyyy-MM-dd HH:mm:ss") |
| | | private val fileExchange = FileExchange() |
| | | |
| | | override fun getSecondData(deviceCode: String?, startTime: String?, endTime: String?, page: Int?, perPage: Int?): BaseResponse<List<DataVo>> { |
| | | val _perPage = perPage ?: 60 |
| | |
| | | } |
| | | return BaseResponse(true, head = DataHead(pageInfo.pageNum, pageInfo.pages), data = result) |
| | | } |
| | | |
| | | override fun importData(file: MultipartFile): BaseResponse<DataImportResult> { |
| | | val f = ByteArrayInputStream(file.bytes) |
| | | fileExchange.exchangeBoatData("0c0000000001", f).forEach { |
| | | realTimeDataMapper.insert(it) |
| | | } |
| | | return BaseResponse(true, data = DataImportResult("")) |
| | | } |
| | | |
| | | override fun outToWorkbook(deviceCode: String, startTime: String, endTime: String): HSSFWorkbook { |
| | | val sTime = dateFormatter.parse(startTime) |
| | | val eTime = dateFormatter.parse(endTime) |
| | | val r = realTimeDataMapper.selectByExample(Example(RealTimeData::class.java).apply { |
| | | createCriteria().andEqualTo("deviceCode", deviceCode) |
| | | .apply { |
| | | sTime?.let { andGreaterThanOrEqualTo("dataTime", it) } |
| | | eTime?.let { andLessThanOrEqualTo("dataTime", it) } |
| | | } |
| | | }) |
| | | val workbook = HSSFWorkbook() |
| | | if (r.isNotEmpty()) { |
| | | val heads = getTableTitle(r[0]) |
| | | val contents = getTableContents(r) |
| | | |
| | | ExcelUtil.write(heads, contents, workbook) |
| | | } |
| | | return workbook |
| | | } |
| | | |
| | | override fun outToExcel(deviceCode: String, startTime: String, endTime: String, response: HttpServletResponse): HttpServletResponse { |
| | | val workbook = outToWorkbook(deviceCode, startTime, endTime) |
| | | |
| | | val out = response.outputStream |
| | | workbook.write(out) |
| | | workbook.close() |
| | | out.flush() |
| | | out.close() |
| | | |
| | | return response |
| | | } |
| | | |
| | | fun getTableTitle(d: RealTimeData): List<Array<String>> { |
| | | return listOf(d.toRowTitle()) |
| | | } |
| | | |
| | | fun getTableContents(list: List<RealTimeData>): List<Array<Any>> { |
| | | val contents = mutableListOf<Array<Any>>() |
| | | list.forEach { |
| | | contents.add(it.toRowContent()) |
| | | } |
| | | return contents |
| | | } |
| | | } |