Browse Source

检查日志代码提交

jingyuanchao 1 year ago
parent
commit
b4f488bffe

+ 2 - 1
soc-modules/soc-modules-deploy/src/main/java/com/xunmei/deploy/controller/IotDailyCheckDataController.java

@@ -11,6 +11,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
 
 /**
  * <p>
@@ -35,7 +36,7 @@ public class IotDailyCheckDataController {
     }
 
     @GetMapping("/downLoad/{id}")
-    public void downLoad(@PathVariable String id,HttpServerResponse response){
+    public void downLoad(@PathVariable String id, HttpServletResponse response){
          dailyCheckDataService.downLoad(id,response);
 
     }

+ 3 - 2
soc-modules/soc-modules-deploy/src/main/java/com/xunmei/deploy/service/IotDailyCheckDataService.java

@@ -1,11 +1,12 @@
 package com.xunmei.deploy.service;
 
-import cn.hutool.http.server.HttpServerResponse;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.xunmei.common.core.domain.iot.domain.IotDailyCheckData;
 import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.deploy.dto.dailycheck.DailyCheckDataPageDto;
 
+import javax.servlet.http.HttpServletResponse;
+
 /**
  * <p>
  * 网点日常自检日志表 服务类
@@ -18,5 +19,5 @@ public interface IotDailyCheckDataService extends IService<IotDailyCheckData> {
 
     TableDataInfo selectPage(DailyCheckDataPageDto req);
 
-    void downLoad(String id, HttpServerResponse response);
+    void downLoad(String id, HttpServletResponse response);
 }

+ 55 - 2
soc-modules/soc-modules-deploy/src/main/java/com/xunmei/deploy/service/impl/IotDailyCheckDataServiceImpl.java

@@ -1,23 +1,34 @@
 package com.xunmei.deploy.service.impl;
 
 import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.date.LocalDateTimeUtil;
 import cn.hutool.core.util.ObjectUtil;
-import cn.hutool.http.server.HttpServerResponse;
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
+import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.xunmei.common.core.constant.Constants;
 import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.domain.iot.domain.IotDailyCheckData;
+import com.xunmei.common.core.domain.iot.vo.DailyCheckReq;
 import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.deploy.dao.IotDailyCheckDataMapper;
 import com.xunmei.deploy.dto.dailycheck.DailyCheckDataPageDto;
 import com.xunmei.deploy.service.IotDailyCheckDataService;
+import com.xunmei.deploy.util.ValueCellWriteHandler;
 import com.xunmei.deploy.vo.DailyCheckDataPageVo;
+import com.xunmei.deploy.vo.DailyCheckItemExportVo;
 import com.xunmei.system.api.RemoteOrgService;
 import com.xunmei.system.api.domain.SysOrg;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.net.URLEncoder;
+import java.util.ArrayList;
 import java.util.Date;
+import java.util.List;
 
 /**
  * <p>
@@ -55,7 +66,49 @@ public class IotDailyCheckDataServiceImpl extends ServiceImpl<IotDailyCheckDataM
     }
 
     @Override
-    public void downLoad(String id, HttpServerResponse response) {
+    public void downLoad(String id, HttpServletResponse response) {
+        IotDailyCheckData checkData = getById(id);
+        if (ObjectUtil.isEmpty(checkData)) {
+            throw new RuntimeException("未查询到数据");
+        }
+
+
+        List<DailyCheckItemExportVo> exportDataList = new ArrayList<>();
+        String data = checkData.getData();
+        DailyCheckReq checkReq = JSON.parseObject(data, DailyCheckReq.class);
+        exportDataList.add(new DailyCheckItemExportVo(checkReq.getFsuElectric(),"电器火灾"));
+        exportDataList.add(new DailyCheckItemExportVo(checkReq.getVideoRecordComplete(),"昨日录像丢失"));
+        exportDataList.add(new DailyCheckItemExportVo(checkReq.getFsuFireFight(),"消防报警"));
+        exportDataList.add(new DailyCheckItemExportVo(checkReq.getDisk(),"硬盘状态"));
+        exportDataList.add(new DailyCheckItemExportVo(checkReq.getDiagnose(),"视频质量"));
+        exportDataList.add(new DailyCheckItemExportVo(checkReq.getFsuOther(),"技防环境"));
+        exportDataList.add(new DailyCheckItemExportVo(checkReq.getNet(),"网络状态"));
+        for (DailyCheckItemExportVo exportVo : exportDataList) {
+            exportVo.setTitle("智能巡查每日工作登记簿");
+            exportVo.setTime(LocalDateTimeUtil.format(checkData.getRecordDate(), Constants.HMS_FORMAT));
+            exportVo.setOrgName(checkData.getOrgName());
+            exportVo.setUserName(checkData.getUserName());
+        }
+        try {
+            String baseHeaderName = checkData.getFileName();
+            // 设置响应头
+            response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(baseHeaderName, "utf-8"));
+            response.setContentType("application/octet-stream;charset=UTF-8");
+            response.setCharacterEncoding("utf-8");
+           // String header = baseHeaderName;
+            // 数据导出
+            EasyExcel.write(response.getOutputStream(), DailyCheckItemExportVo.class)
+                    .registerWriteHandler(new ValueCellWriteHandler(baseHeaderName))
+                    .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
+                    .sheet(baseHeaderName)
+                    .doWrite(exportDataList);
+        } catch (Exception e) {
+            e.printStackTrace();
+            // 重置response
+            response.reset();
+            response.setContentType("application/json");
+            response.setCharacterEncoding("utf-8");
+        }
 
     }
 }

+ 58 - 0
soc-modules/soc-modules-deploy/src/main/java/com/xunmei/deploy/util/ValueCellWriteHandler.java

@@ -0,0 +1,58 @@
+package com.xunmei.deploy.util;
+
+import com.alibaba.excel.metadata.CellData;
+import com.alibaba.excel.metadata.Head;
+import com.alibaba.excel.write.handler.CellWriteHandler;
+import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
+import com.alibaba.excel.write.metadata.holder.WriteTableHolder;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.Row;
+import org.springframework.util.PropertyPlaceholderHelper;
+
+import java.util.List;
+import java.util.Properties;
+
+/**
+ * @author 冥河教主
+ * @Date 2021/02/08 16:00
+ */
+public class ValueCellWriteHandler implements CellWriteHandler {
+    private String cellWritervalue;
+    PropertyPlaceholderHelper propertyPlaceholderHelper = new PropertyPlaceholderHelper("${","}");
+
+    public ValueCellWriteHandler(String cellvalue) {
+        this.cellWritervalue = cellvalue;
+    }
+
+    @Override
+    public void beforeCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder,
+                                 Row row, Head head, Integer integer, Integer integer1, Boolean aBoolean) {
+        if (head != null) {
+            List<String> headNameList = head.getHeadNameList();
+            if (CollectionUtils.isNotEmpty(headNameList)) {
+                Properties properties = new Properties();
+                properties.setProperty("cellWriterValue", cellWritervalue);
+                for (int i = 0; i < headNameList.size(); i++) {
+                    headNameList.set(i, propertyPlaceholderHelper.replacePlaceholders(headNameList.get(i), properties));
+                }
+            }
+        }
+    }
+
+    @Override
+    public void afterCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Cell cell, Head head, Integer integer, Boolean aBoolean) {
+
+    }
+
+    @Override
+    public void afterCellDataConverted(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, CellData cellData, Cell cell, Head head, Integer integer, Boolean aBoolean) {
+
+    }
+
+    @Override
+    public void afterCellDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, List<CellData> list, Cell cell, Head head, Integer integer, Boolean aBoolean) {
+
+    }
+
+}

+ 55 - 0
soc-modules/soc-modules-deploy/src/main/java/com/xunmei/deploy/vo/DailyCheckItemExportVo.java

@@ -0,0 +1,55 @@
+package com.xunmei.deploy.vo;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.xunmei.common.core.domain.iot.vo.DailyCheckItem;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ColumnWidth(15) //列宽,最大值为255
+@HeadRowHeight(16) //表头行高
+@ContentRowHeight(16) //数据行高
+public class DailyCheckItemExportVo {
+
+    @ExcelProperty(value = {"智能巡查每日工作登记簿"})
+    private String title;
+
+    @ExcelProperty(value = {"智能巡查每日工作登记簿","日期"})
+    private String time;
+    @ExcelProperty(value = {"智能巡查每日工作登记簿","机构"})
+    private String orgName;
+    @ExcelProperty(value = {"智能巡查每日工作登记簿","登记人"})
+    private String userName;
+
+    @ExcelProperty(value = {"智能巡查每日工作登记簿","日期","检测项"})
+    private String type;
+
+    @ExcelProperty(value = {"智能巡查每日工作登记簿","日期","检测项","总数"})
+    @ApiModelProperty(value = "总数")
+    private String totalCount;
+
+    @ExcelProperty(value = {"智能巡查每日工作登记簿","日期","检测项","异常数"})
+    @ApiModelProperty(value = "异常数")
+    private String exceptionCount;
+
+    @ExcelProperty(value = {"智能巡查每日工作登记簿","机构","检查结果"})
+    @ApiModelProperty(value = "检查结果")
+    private String result;
+
+    @ExcelProperty(value = {"智能巡查每日工作登记簿","检查结果"})
+    @ApiModelProperty(value = "处置意见")
+    private String resolution;
+
+    public DailyCheckItemExportVo(DailyCheckItem item,String typeName) {
+        this.type=typeName;
+        this.result = item.getResult();
+        this.exceptionCount = item.getExceptionCount();
+        this.totalCount = item.getTotalCount();
+        this.resolution = item.getResolution();
+
+    }
+
+}