hxf 1 年間 前
コミット
2d7741ac02

+ 8 - 2
wps-biz/pom.xml

@@ -16,6 +16,13 @@
     </description>
 
     <dependencies>
+
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>easyexcel</artifactId>
+            <version>3.3.2</version>
+        </dependency>
+
         <dependency>
             <groupId>com.baomidou</groupId>
             <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
@@ -43,7 +50,7 @@
             <artifactId>spring-boot-devtools</artifactId>
             <optional>true</optional> <!-- 表示依赖不会传递 -->
         </dependency>
-<!--        modbus-->
+        <!--        modbus-->
         <dependency>
             <groupId>wei.yigulu</groupId>
             <artifactId>protocol-modbus</artifactId>
@@ -60,7 +67,6 @@
             <artifactId>commons-math3</artifactId>
             <version>3.6.1</version>
         </dependency>
-
     </dependencies>
 
     <profiles>    <!--考虑到window 和linux环境 npm命令格式的问题,使用maven的profile实现动态指定命令-->

+ 1 - 1
wps-biz/src/main/java/com/jiayue/biz/conf/Channel.java

@@ -56,6 +56,7 @@ public class Channel {
     private HashMap<String, ModbusTcpMasterBuilder> masterMap;
 
     @Bean
+//    @Scheduled(fixedDelay = 60000 * 5)
     public void timingTunnel() {
         List<TunnelInfo> tunnelInfoList = tunnelInfoService.list();
         for (TunnelInfo tunnelInfo : tunnelInfoList) {
@@ -86,7 +87,6 @@ public class Channel {
     }
 
     @Scheduled(cron = "0 0/10 * * * ? ")
-//    @Scheduled(fixedDelay = 60000)
     public void tunnel() {
         List<TunnelInfo> tunnelInfoList = tunnelInfoService.list();
         List<PointAttribute> attributeList = pointAttributeService.list();

+ 7 - 0
wps-biz/src/main/java/com/jiayue/biz/controller/EnvironmentalDataController.java

@@ -8,6 +8,8 @@ import lombok.RequiredArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletResponse;
+
 
 @RequiredArgsConstructor(onConstructor_ = @Autowired)
 @RestController
@@ -37,5 +39,10 @@ public class EnvironmentalDataController extends BaseController {
         return AjaxResult.success(environmentalDataService.selectHomePage(weatherLookNo));
     }
 
+    @GetMapping("/exportAll")
+    public void exportExcel(HttpServletResponse response, String weatherLookNo, long startTime, long endTime){
+        environmentalDataService.exportExcel(response,weatherLookNo,startTime,endTime);
+    }
+
 
 }

+ 38 - 0
wps-biz/src/main/java/com/jiayue/biz/domain/CustomStringStringConverter.java

@@ -0,0 +1,38 @@
+package com.jiayue.biz.domain;
+
+import com.alibaba.excel.converters.Converter;
+import com.alibaba.excel.enums.CellDataTypeEnum;
+import com.alibaba.excel.metadata.GlobalConfiguration;
+import com.alibaba.excel.metadata.data.ReadCellData;
+import com.alibaba.excel.metadata.data.WriteCellData;
+import com.alibaba.excel.metadata.property.ExcelContentProperty;
+import com.jiayue.common.utils.DateUtil;
+
+import java.sql.Timestamp;
+import java.util.Date;
+
+/**
+ * 重写转换器 Timestamp转String
+ */
+public class CustomStringStringConverter implements Converter<Timestamp> {
+    @Override
+    public Class<?> supportJavaTypeKey() {
+        return Timestamp.class;
+    }
+
+    @Override
+    public CellDataTypeEnum supportExcelTypeKey() {
+        return CellDataTypeEnum.STRING;
+    }
+
+    //写入excel
+    @Override
+    public WriteCellData<?> convertToExcelData(Timestamp value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception {
+        return new WriteCellData<>(DateUtil.format(new Date(value.getTime()),"yyyy-MM-dd  HH:mm"));
+    }
+
+    @Override
+    public Timestamp convertToJavaData(ReadCellData<?> cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception {
+        return Converter.super.convertToJavaData(cellData, contentProperty, globalConfiguration);
+    }
+}

+ 9 - 1
wps-biz/src/main/java/com/jiayue/biz/domain/EnvironmentalData.java

@@ -1,18 +1,26 @@
 package com.jiayue.biz.domain;
 
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
 import lombok.Data;
 
 import java.sql.Timestamp;
 
 @Data
 public class EnvironmentalData {
+    @ExcelProperty(value = "时间",converter = CustomStringStringConverter.class)
     private Timestamp ts;
+    @ExcelProperty("风速")
     private Float ws;
+    @ExcelProperty("风向")
     private Float wd;
+    @ExcelProperty("温度")
     private Float t;
+    @ExcelProperty("湿度")
     private Float rh;
+    @ExcelProperty("压强")
     private Float pa;
-    //环境检测仪编号
+    @ExcelIgnore
     private String weatherLookNo;
 
 

+ 5 - 0
wps-biz/src/main/java/com/jiayue/biz/mapper/EnvironmentalDataMapper.java

@@ -23,4 +23,9 @@ public interface EnvironmentalDataMapper extends BaseMapper<EnvironmentalData> {
     @Select("select last (ts) from environmental_${weatherLookNo}")
     List<Entity> getLastData(@Param("weatherLookNo") String weatherLookNo);
 
+
+    @Select("select * from environmental_${weatherLookNo}")
+    List<EnvironmentalData> selectAll(@Param("weatherLookNo") String weatherLookNo);
+
+
 }

+ 2 - 0
wps-biz/src/main/java/com/jiayue/biz/service/EnvironmentalDataService.java

@@ -3,6 +3,7 @@ package com.jiayue.biz.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.jiayue.biz.domain.EnvironmentalData;
 
+import javax.servlet.http.HttpServletResponse;
 import java.sql.Timestamp;
 import java.util.HashMap;
 import java.util.List;
@@ -18,4 +19,5 @@ public interface EnvironmentalDataService extends IService<EnvironmentalData> {
     // 查询首页数据
     HashMap<String, Object> selectHomePage(String weatherLookNo);
 
+    void exportExcel(HttpServletResponse response, String weatherLookNo, long startTime, long endTime);
 }

+ 36 - 1
wps-biz/src/main/java/com/jiayue/biz/service/impl/EnvironmentalDataServiceImpl.java

@@ -1,14 +1,30 @@
 package com.jiayue.biz.service.impl;
 
 import cn.hutool.db.Entity;
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.converters.AutoConverter;
+import com.alibaba.excel.converters.Converter;
+import com.alibaba.excel.enums.CellDataTypeEnum;
+import com.alibaba.excel.metadata.GlobalConfiguration;
+import com.alibaba.excel.metadata.data.CellData;
+import com.alibaba.excel.metadata.data.WriteCellData;
+import com.alibaba.excel.metadata.property.ExcelContentProperty;
+import com.alibaba.excel.util.DateUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jiayue.biz.domain.CustomStringStringConverter;
 import com.jiayue.biz.domain.EnvironmentalData;
 import com.jiayue.biz.mapper.EnvironmentalDataMapper;
 import com.jiayue.biz.service.EnvironmentalDataService;
+import com.jiayue.biz.util.FileUtil;
 import com.jiayue.common.utils.DateUtil;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
+import javax.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.io.IOException;
 import java.sql.Timestamp;
+import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.HashMap;
@@ -18,6 +34,10 @@ import java.util.stream.Collectors;
 @Service
 public class EnvironmentalDataServiceImpl extends ServiceImpl<EnvironmentalDataMapper, EnvironmentalData> implements EnvironmentalDataService {
 
+    @Value("${elf.profile}")
+    private String profile;
+
+
     public void insertOne(EnvironmentalData environmentalData) {
         baseMapper.insertOne(environmentalData);
     }
@@ -130,7 +150,7 @@ public class EnvironmentalDataServiceImpl extends ServiceImpl<EnvironmentalDataM
         List<Entity> lastData = baseMapper.getLastData(weatherLookNo);
         Timestamp timeEnd = (Timestamp) lastData.get(0).get("last (ts)");
         List<EnvironmentalData> environmentalDataList = environmentalData.stream().filter(e -> e.getTs().getTime() == timeEnd.getTime()).collect(Collectors.toList());
-        if(environmentalDataList.size() != 0){
+        if (environmentalDataList.size() != 0) {
             dataMap.put("t", environmentalDataList.get(0).getT());
             dataMap.put("rh", environmentalDataList.get(0).getRh());
             dataMap.put("pa", environmentalDataList.get(0).getPa());
@@ -142,5 +162,20 @@ public class EnvironmentalDataServiceImpl extends ServiceImpl<EnvironmentalDataM
 
     }
 
+    public void exportExcel(HttpServletResponse response, String weatherLookNo, long startTime, long endTime) {
+        List<EnvironmentalData> environmentalDataList = this.selectAllData(weatherLookNo, startTime, endTime);
+//        List<EnvironmentalData> environmentalDataList = baseMapper.selectAll(weatherLookNo);
+        File file = new File("D:\\weatherLookNoExcel");
+        if(!file.exists()){
+            file.mkdirs();
+        }
+        String fileName = file.getPath() + File.separator +  weatherLookNo + "-" + DateUtil.format(new Date(startTime),"yyyy-MM-dd") + "-" + DateUtil.format(new Date(endTime),"yyyy-MM-dd") + ".xlsx";
+        // 这里 需要指定写用哪个class去写,然后写到第一个sheet,名字为模板 然后文件流会自动关闭
+        // 如果这里想使用03 则 传入excelType参数即可
+        EasyExcel.write(fileName, EnvironmentalData.class).sheet().registerConverter(new CustomStringStringConverter()).doWrite(environmentalDataList);
+        FileUtil.downloadFile(new File(fileName),response);
+
+    }
+
 
 }

+ 36 - 4
wps-biz/src/main/java/com/jiayue/biz/util/FileUtil.java

@@ -4,11 +4,12 @@ import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.io.FileUtils;
 import org.springframework.util.ResourceUtils;
 
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletResponse;
+import java.io.*;
 import java.net.URLDecoder;
+import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
 import java.nio.file.LinkOption;
 import java.nio.file.Path;
@@ -273,4 +274,35 @@ public class FileUtil {
     public static String getEnvironmentalDataFile() {
         return createUploadAllDir("environmentalDataFile");
     }
+
+
+    //下载文件
+    public static void downloadFile(File file, HttpServletResponse response) {
+        String name = file.getName();
+        FileInputStream fileInputStream = null;
+        ServletOutputStream outputStream = null;
+        try {
+            fileInputStream = new FileInputStream(file);
+            String encode = URLEncoder.encode(name, StandardCharsets.UTF_8.toString());
+            response.setContentType("application/octet-stream");
+            String percentEncodedFileName = encode.replaceAll("\\+", "%20");
+//            String contentDispositionValue =
+//                    "attachment; filename=" + percentEncodedFileName + ";filename*=utf-8''" + percentEncodedFileName;
+            String contentDispositionValue =
+                    "attachment; filename=" + percentEncodedFileName;
+            response.setHeader("Content-disposition", contentDispositionValue);
+            int len = 0;
+            byte[] buffer = new byte[1024];
+            outputStream = response.getOutputStream();
+            while ((len = fileInputStream.read(buffer)) > 0) {
+                outputStream.write(buffer, 0, len);
+            }
+            fileInputStream.close();
+            outputStream.flush();
+            outputStream.close();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
 }