|
@@ -1,6 +1,7 @@
|
|
|
package com.ruoyi.system.service.impl;
|
|
|
|
|
|
|
|
|
+import cn.hutool.core.date.format.FastDateFormat;
|
|
|
import cn.hutool.core.io.resource.ClassPathResource;
|
|
|
import com.alibaba.excel.EasyExcel;
|
|
|
import com.alibaba.excel.ExcelWriter;
|
|
@@ -8,11 +9,14 @@ import com.alibaba.excel.support.ExcelTypeEnum;
|
|
|
import com.alibaba.excel.util.MapUtils;
|
|
|
import com.alibaba.excel.write.metadata.WriteSheet;
|
|
|
import com.alibaba.excel.write.metadata.fill.FillWrapper;
|
|
|
+import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.ruoyi.common.exception.base.BaseException;
|
|
|
import com.ruoyi.system.domain.TaskResult;
|
|
|
import com.ruoyi.system.domain.WaterLevel;
|
|
|
+import com.ruoyi.system.dto.PrintExcelDTO;
|
|
|
import com.ruoyi.system.dto.TaskResultSortDTO;
|
|
|
+import com.ruoyi.system.dto.WaterLevelDTO;
|
|
|
import com.ruoyi.system.mapper.TaskResultMapper;
|
|
|
import com.ruoyi.system.mapper.WaterLevelMapper;
|
|
|
import com.ruoyi.system.paramet.AchievementQuery;
|
|
@@ -27,9 +31,8 @@ import javax.servlet.http.HttpServletResponse;
|
|
|
import java.io.OutputStream;
|
|
|
import java.net.URLEncoder;
|
|
|
import java.nio.charset.StandardCharsets;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
+import java.util.*;
|
|
|
|
|
|
/**
|
|
|
* classname: 站点信息
|
|
@@ -57,7 +60,7 @@ public class AchievementServiceImpl implements AchievementService {
|
|
|
|
|
|
|
|
|
@Override
|
|
|
- public Page<WaterLevel> getWaterLevelList(WaterLevelQuery waterLevelQuery){
|
|
|
+ public Page<WaterLevelDTO> getWaterLevelList(WaterLevelQuery waterLevelQuery){
|
|
|
|
|
|
if (waterLevelQuery.getType() == null){
|
|
|
waterLevelQuery.setType(1L);
|
|
@@ -174,10 +177,69 @@ public class AchievementServiceImpl implements AchievementService {
|
|
|
log.error("获取数据失败", e);
|
|
|
throw new BaseException("获取数据失败");
|
|
|
}
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void downWaterLevel(Long siteId, Long type, String startTime, String endTime, HttpServletResponse response){
|
|
|
+ WaterLevelQuery waterLevelQuery = new WaterLevelQuery();
|
|
|
+ FastDateFormat fdf = FastDateFormat.getInstance("yyyy-MM-dd HH:mm:ss");
|
|
|
+ try {
|
|
|
+ Date startTimedDate = fdf.parse(startTime);
|
|
|
+ Date endTimedDate = fdf.parse(endTime);
|
|
|
+ waterLevelQuery.setSiteId(siteId);
|
|
|
+ waterLevelQuery.setStartTime(startTimedDate);
|
|
|
+ waterLevelQuery.setEndTime(endTimedDate);
|
|
|
+ waterLevelQuery.setType(type);
|
|
|
+ List<WaterLevelDTO> waterLevelList = waterLevelMapper.queryAllByTime(waterLevelQuery, new Page(1, 1000000)).getRecords();
|
|
|
+ if (!waterLevelList.isEmpty()) {
|
|
|
+ response.setContentType("application/octet-stream; charset=utf-8");
|
|
|
+ String today = new SimpleDateFormat("yyyyMMdd").format(new Date());
|
|
|
+ String fileName = "downWaterLevel_".concat(today);
|
|
|
+ response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
|
|
|
+ ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build();
|
|
|
+ WriteSheet detailSheet = EasyExcel.writerSheet(0, "水位数据").head(WaterLevelDTO.class).build();
|
|
|
+ excelWriter.write(waterLevelList, detailSheet);
|
|
|
+ excelWriter.finish();
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("水位列表下载失败",e);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void downScatterPlot(Long siteId, String startTime, String endTime, HttpServletResponse response){
|
|
|
+ ScattperPlotQuery scattperPlotQuery = new ScattperPlotQuery();
|
|
|
+ FastDateFormat fdf = FastDateFormat.getInstance("yyyy-MM-dd HH:mm:ss");
|
|
|
+ try {
|
|
|
+ Date startTimedDate = fdf.parse(startTime);
|
|
|
+ Date endTimedDate = fdf.parse(endTime);
|
|
|
+ scattperPlotQuery.setSiteId(siteId);
|
|
|
+ scattperPlotQuery.setStartTime(startTimedDate);
|
|
|
+ scattperPlotQuery.setEndTime(endTimedDate);
|
|
|
+ List<TaskResultSortDTO> taskResultList = taskResultMapper.queryByTimeQuery(scattperPlotQuery);
|
|
|
+ if (!taskResultList.isEmpty()) {
|
|
|
+ response.setContentType("application/octet-stream; charset=utf-8");
|
|
|
+ String today = new SimpleDateFormat("yyyyMMdd").format(new Date());
|
|
|
+ String fileName = "downScatterPlot_".concat(today);
|
|
|
+ response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
|
|
|
+ ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build();
|
|
|
+ WriteSheet detailSheet = EasyExcel.writerSheet(0, "测流结果").head(TaskResultSortDTO.class).build();
|
|
|
+ excelWriter.write(taskResultList, detailSheet);
|
|
|
+ excelWriter.finish();
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("测流结果下载失败",e);
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
public static <T> List<T> insertEmptyDataOnEvenRows(List<T> list, T emptyValue) {
|
|
|
List<T> modifiedList = new ArrayList<>(list.size() * 2 - 1); // 预估新列表的大小
|
|
|
for (int i = 0; i < list.size(); i++) {
|