Forráskód Böngészése

任务提交 散点图导出和时间折线图导出EXCEL

qinguocai 1 éve
szülő
commit
8f8f79569b

+ 10 - 4
ruoyi-system/src/main/java/com/ruoyi/system/dto/TaskResultSortDTO.java

@@ -1,5 +1,6 @@
 package com.ruoyi.system.dto;
 
+import com.alibaba.excel.annotation.ExcelProperty;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 
@@ -17,21 +18,26 @@ public class TaskResultSortDTO implements Serializable {
     /**
      * 成果ID
      */
+    @ExcelProperty(value = "成果ID",index = 0)
     private Long resultId;
 
-    /**
-     * 总瞬时流量
-     */
-    private Double flowsum;
     /**
      * 创建时间
      */
+    @ExcelProperty(value = "创建时间",index = 1)
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date createTime;
 
+    /**
+     * 总瞬时流量
+     */
+    @ExcelProperty(value = "瞬时总流量",index = 2)
+    private Double flowsum;
+
     /**
      * 水位
      */
+    @ExcelProperty(value = "水位",index = 3)
     private Double waterlevel;
 
 }

+ 9 - 6
ruoyi-system/src/main/java/com/ruoyi/system/dto/WaterLevelDTO.java

@@ -1,5 +1,6 @@
 package com.ruoyi.system.dto;
 
+import com.alibaba.excel.annotation.ExcelProperty;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 
@@ -15,17 +16,19 @@ import java.util.Date;
 @Data
 public class WaterLevelDTO implements Serializable {
 
-
-    /**
-     * 水位平均值
-     */
-    private Double avgWaterlevel;
-
+    
     /**
      * 创建时间
      */
+    @ExcelProperty(value = "时间",index = 0)
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date time;
 
+    /**
+     * 水位平均值
+     */
+    @ExcelProperty(value = "平均水位",index = 1)
+    private Double avgWaterlevel;
+
 }
 

+ 2 - 1
ruoyi-system/src/main/java/com/ruoyi/system/mapper/WaterLevelMapper.java

@@ -2,6 +2,7 @@ package com.ruoyi.system.mapper;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.system.domain.WaterLevel;
+import com.ruoyi.system.dto.WaterLevelDTO;
 import com.ruoyi.system.paramet.WaterLevelQuery;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.data.domain.Pageable;
@@ -52,7 +53,7 @@ public interface WaterLevelMapper {
      * @param page         分页对象
      * @return 对象列表
      */
-    Page<WaterLevel> queryAllByTime(@Param("waterLevelQuery") WaterLevelQuery waterLevelQuery, Page page);
+    Page<WaterLevelDTO> queryAllByTime(@Param("waterLevelQuery") WaterLevelQuery waterLevelQuery, Page page);
 
 
     /**

+ 6 - 3
ruoyi-system/src/main/java/com/ruoyi/system/service/AchievementService.java

@@ -5,10 +5,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.system.domain.*;
 import com.ruoyi.system.dto.*;
 import com.ruoyi.system.paramet.*;
-import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
-import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 
 
@@ -17,10 +16,14 @@ public interface AchievementService {
 
     Page<TaskResult> queryAchievement(AchievementQuery achievementQuery);
 
-    Page<WaterLevel> getWaterLevelList(WaterLevelQuery waterLevelQuery);
+    Page<WaterLevelDTO> getWaterLevelList(WaterLevelQuery waterLevelQuery);
 
     boolean downAchievement(Long result_id, HttpServletResponse response);
 
     List<TaskResultSortDTO> getScatterPlot(ScattperPlotQuery scattperPlotQuery);
 
+    void downWaterLevel(Long siteId, Long type, String startTime, String endTime, HttpServletResponse response);
+
+    void downScatterPlot(Long siteId, String startTime, String endTime, HttpServletResponse response);
+
 }

+ 66 - 4
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AchievementServiceImpl.java

@@ -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++) {

+ 16 - 1
waterAffairs-admin/src/main/java/com/ruoyi/web/controller/tool/AchievementController.java

@@ -7,6 +7,7 @@ import com.ruoyi.system.domain.BerthingPoint;
 import com.ruoyi.system.domain.TaskResult;
 import com.ruoyi.system.domain.WaterLevel;
 import com.ruoyi.system.dto.TaskResultSortDTO;
+import com.ruoyi.system.dto.WaterLevelDTO;
 import com.ruoyi.system.paramet.AchievementQuery;
 import com.ruoyi.system.paramet.BerthingPointQuery;
 import com.ruoyi.system.paramet.ScattperPlotQuery;
@@ -20,6 +21,7 @@ import org.springframework.web.bind.annotation.*;
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
+import java.util.Date;
 import java.util.List;
 
 
@@ -51,9 +53,15 @@ public class AchievementController {
     //水位趋势
     @PostMapping(value = "/getWaterLevelList")
     @ApiOperation("获取水位趋势")
-    public R<Page<WaterLevel>> getWaterLevelList(@Valid @RequestBody WaterLevelQuery waterLevelQuery) {
+    public R<Page<WaterLevelDTO>> getWaterLevelList(@Valid @RequestBody WaterLevelQuery waterLevelQuery) {
         return R.ok(achievementService.getWaterLevelList(waterLevelQuery));
     }
+    //导出水位趋势
+    @GetMapping(value = "/downWaterLevel")
+    @ApiOperation(value = "导出水位趋势")
+    public void downWaterLevel(Long siteId, Long type, String startTime, String endTime, HttpServletResponse response) {
+        achievementService.downWaterLevel(siteId,type,startTime,endTime, response);
+    }
 
     //散点图
     @PostMapping(value = "/getScatterPlot")
@@ -62,4 +70,11 @@ public class AchievementController {
         return R.ok(achievementService.getScatterPlot(scattperPlotQuery));
     }
 
+    //导出散点图
+    @GetMapping(value = "/downScatterPlot")
+    @ApiOperation(value = "导出测流结果散点图")
+    public void downScatterPlot(Long siteId, String startTime, String endTime, HttpServletResponse response) {
+        achievementService.downScatterPlot(siteId,startTime,endTime, response);
+    }
+
 }