Parcourir la source

导出告警excel

lin il y a 3 ans
Parent
commit
0a083e2336

+ 3 - 2
zoniot-common/zoniot-core-utils/src/main/java/com/zcxk/core/utils/export/EasyExcelUtil.java

@@ -65,10 +65,11 @@ public  class EasyExcelUtil {
     }
 
     public static void excelWrite(HttpServletResponse response,Class t, String excelName, List data) throws Exception {
-        String fileName =  excelName +"-"+ DateUtil.format(new Date(), "yyyyMMddHHmmss")  + ".xlsx";
+        String fileName =  excelName +"-"+ DateUtil.format(new Date(), "yyyyMMddHHmmss") ;
+        fileName = URLEncoder.encode(fileName, "UTF-8");
         response.setContentType("application/vnd.ms-excel");
         response.setCharacterEncoding("utf8");
-        response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
+        response.setHeader("Content-Disposition", "attachment; filename=" + fileName + ".xlsx");
         response.setHeader("Pragma", "public");
         response.setHeader("Cache-Control", "no-store");
         response.addHeader("Cache-Control", "max-age=0");

+ 39 - 0
zoniot-rmcp/zoniot-rmcp-api/src/main/java/com/zcxk/rmcp/api/vo/DownloadAlarmVo.java

@@ -0,0 +1,39 @@
+package com.zcxk.rmcp.api.vo;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.zcxk.rmcp.api.pojo.LocalDateTimeConverter;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+/**
+ * @author linqingwei
+ * @date 2021-08-18 10:28
+ */
+@Data
+public class DownloadAlarmVo {
+
+    @ExcelProperty(value = "告警类型" ,index = 0)
+    private String alarmTypeName;
+
+    @ExcelProperty(value = "告警时间" ,index = 1,converter = LocalDateTimeConverter.class)
+    private LocalDateTime lastAlarmTime;
+
+    @ExcelProperty(value = "水表电子号" ,index = 2)
+    private String meterNo;
+
+    @ExcelProperty(value = "设备型号" ,index = 3)
+    private String deviceTypeName;
+
+    @ExcelProperty(value = "公司" ,index = 4)
+    private String companyName;
+
+    @ExcelProperty(value = "部门" ,index = 5)
+    private String deptName;
+
+    @ExcelProperty(value = "安装地址" ,index = 6)
+    private String address;
+
+    @ExcelProperty(value = "处理时间" ,index = 7,converter = LocalDateTimeConverter.class)
+    private LocalDateTime handleTime;
+}

+ 14 - 0
zoniot-rmcp/zoniot-rmcp-web/src/main/java/com/zcxk/rmcp/web/service/DeviceAlarmService.java

@@ -12,7 +12,21 @@ import javax.servlet.http.HttpServletResponse;
  * @date 2021-08-10 15:44
  */
 public interface DeviceAlarmService {
+    /*
+     * @description 告警分页
+     * @param dto
+     * @param page
+     * @return
+     * @author linqingwei
+     **/
     Pagination<DeviceAlarmVo> getPage(DeviceAlarmQueryDto dto, BasePageDto page);
 
+    /*
+     * @description 导出excel
+     * @param dto
+     * @param httpServletResponse
+     * @return
+     * @author linqingwei
+     **/
     void exportExcel(DeviceAlarmQueryDto dto, HttpServletResponse httpServletResponse);
 }

+ 17 - 1
zoniot-rmcp/zoniot-rmcp-web/src/main/java/com/zcxk/rmcp/web/service/impl/DeviceAlarmServiceImpl.java

@@ -1,15 +1,20 @@
 package com.zcxk.rmcp.web.service.impl;
 
+import cn.hutool.extra.cglib.CglibUtil;
 import com.github.pagehelper.PageHelper;
 import com.zcxk.core.common.exception.BusinessException;
+import com.zcxk.core.common.util.BeanCopyUtils;
 import com.zcxk.core.mysql.pageing.Pagination;
 import com.zcxk.core.oauth2.util.UserUtil;
 import com.zcxk.core.utils.export.EasyExcelUtil;
 import com.zcxk.rmcp.api.dto.BasePageDto;
 import com.zcxk.rmcp.api.dto.alarm.DeviceAlarmQueryDto;
+import com.zcxk.rmcp.api.enums.DeviceStatusEnum;
 import com.zcxk.rmcp.api.enums.RmcpErrorEnum;
+import com.zcxk.rmcp.api.enums.ValveStatusEnum;
 import com.zcxk.rmcp.api.vo.DeviceAlarmVo;
 import com.zcxk.rmcp.api.vo.DeviceVo;
+import com.zcxk.rmcp.api.vo.DownloadAlarmVo;
 import com.zcxk.rmcp.api.vo.DownloadDeviceVo;
 import com.zcxk.rmcp.core.dao.DeviceAlarmMapper;
 import com.zcxk.rmcp.web.service.DeviceAlarmService;
@@ -18,6 +23,7 @@ import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -43,9 +49,19 @@ public class DeviceAlarmServiceImpl implements DeviceAlarmService {
         try {
             List<DeviceAlarmVo> list = deviceAlarmMapper.findList(dto, UserUtil.getCurrentUser().getUserCondition());
 
-            //EasyExcelUtil.excelWrite(httpServletResponse, DeviceAlarmVo.class,"告警列表",convert(list));
+            EasyExcelUtil.excelWrite(httpServletResponse, DownloadAlarmVo.class,"告警列表",convert(list));
         }catch (Exception e){
             throw BusinessException.builder(RmcpErrorEnum.RMCP_DOWNLOAD_ERROR);
         }
     }
+
+    private List<DownloadAlarmVo> convert (List<DeviceAlarmVo> list){
+        List<DownloadAlarmVo> results = new ArrayList<>();
+        for (DeviceAlarmVo deviceAlarmVo : list) {
+            DownloadAlarmVo vo = CglibUtil.copy(deviceAlarmVo,DownloadAlarmVo.class);
+            vo.setDeviceTypeName(deviceAlarmVo.getManufacturerName()+"/"+deviceAlarmVo.getProductName()+"/"+deviceAlarmVo.getProductModel());
+            results.add(vo);
+        }
+        return results;
+    }
 }