From 7106c5229a29c8c11cf9a3f735ee1870131017eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=AD=E6=89=BF?= Date: Wed, 30 Oct 2024 16:36:54 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E6=96=B0=E5=A2=9E=E5=AF=BC=E5=87=BA?= =?UTF-8?q?=E4=B8=BB=E8=AE=BE=E5=A4=87=E7=9A=84=E6=9C=80=E6=96=B0=E6=95=B0?= =?UTF-8?q?=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cac/controller/NSensorController.java | 20 ++++++ .../com/xydl/cac/service/ReportService.java | 3 + .../cac/service/impl/ReportServiceImpl.java | 66 +++++++++++++++++++ 3 files changed, 89 insertions(+) diff --git a/src/main/java/com/xydl/cac/controller/NSensorController.java b/src/main/java/com/xydl/cac/controller/NSensorController.java index b5a6374..c230132 100644 --- a/src/main/java/com/xydl/cac/controller/NSensorController.java +++ b/src/main/java/com/xydl/cac/controller/NSensorController.java @@ -183,4 +183,24 @@ public class NSensorController extends BasicController { return Response.success(str); } + + @GetMapping("exportLatest") + @ApiOperation("导出") + public void exportLatest(@ApiParam("主设备id") @RequestParam(value = "zsbid", required = false) Integer zsbid, HttpServletResponse response) throws Exception { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + List result = service.listAll(zsbid); + + String excelName = ""; + if (null != result && result.size() > 0) { + NSensor nSensor = result.get(0); + excelName = nSensor.getZsbName() + "的最新数据"; + } + response.setHeader("Content-Disposition", "attachment; filename=" + + URLEncoder.encode(excelName + ".xlsx", "UTF-8")); + + reportService.exportLatest(result, response.getOutputStream()); + + } + } diff --git a/src/main/java/com/xydl/cac/service/ReportService.java b/src/main/java/com/xydl/cac/service/ReportService.java index 8f824c1..53453fd 100644 --- a/src/main/java/com/xydl/cac/service/ReportService.java +++ b/src/main/java/com/xydl/cac/service/ReportService.java @@ -1,5 +1,6 @@ package com.xydl.cac.service; +import com.xydl.cac.entity.NSensor; import com.xydl.cac.model.SensorDetail; import java.io.InputStream; @@ -14,4 +15,6 @@ public interface ReportService { void exportSensorList(List>> detailList, OutputStream output) throws Exception; void importCac(InputStream input) throws Exception; + + void exportLatest(List result, OutputStream output) throws Exception; } diff --git a/src/main/java/com/xydl/cac/service/impl/ReportServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/ReportServiceImpl.java index d136384..fee7012 100644 --- a/src/main/java/com/xydl/cac/service/impl/ReportServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/ReportServiceImpl.java @@ -5,6 +5,7 @@ import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.write.metadata.WriteSheet; import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy; import com.xydl.cac.entity.ModevTypePoint; +import com.xydl.cac.entity.NSensor; import com.xydl.cac.excel.CacExcelListener; import com.xydl.cac.excel.CacLine; import com.xydl.cac.model.SensorDetail; @@ -21,6 +22,7 @@ import javax.annotation.Resource; import java.io.InputStream; import java.io.OutputStream; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -104,4 +106,68 @@ public class ReportServiceImpl implements ReportService { .sheet(0) .doRead(); } + + @Override + public void exportLatest(List result, OutputStream output) throws Exception { + + // 导出Excel + ExcelWriter excelWriter = EasyExcel.write(output).inMemory(true) + .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build(); + + Map> map = new HashMap<>(); + for (NSensor nSensor : result) { + if (map.containsKey(nSensor.getTypeId())) { + map.get(nSensor.getTypeId()).add(nSensor); + } else { + List list = new ArrayList<>(); + list.add(nSensor); + map.put(nSensor.getTypeId(), list); + } + } + + int i = 0; + for (Integer key : map.keySet()) { + List nSensors = map.get(key); + + // 表头 + List> heads = new ArrayList<>(); + List head = new ArrayList<>(); + head.add("主设备名称"); + heads.add(head); + head = new ArrayList<>(); + head.add("时间"); + heads.add(head); + for (ModevTypePoint point : nSensors.get(0).getTypePoints()) { + head = new ArrayList<>(); + head.add(point.getFieldDesc() + "(" + point.getUnit() + ")"); + heads.add(head); + } + + // 内容 + List> list = new ArrayList<>(); + for (NSensor nSensor : nSensors) { + List line = new ArrayList<>(); + line.add(nSensor.getZsbName()); + HashMap lastData = nSensor.getLastData(); + if (null != lastData) { + String acquisitionTime = nSensor.getLastData().get("acquisitionTime"); + line.add(acquisitionTime); + for (ModevTypePoint typePoint : nSensor.getTypePoints()) { + line.add(lastData.get(typePoint.getField())); + } + } + list.add(line); + } + + WriteSheet writeSheet = EasyExcel.writerSheet(i, key + "") + .head(heads) + .build(); + + excelWriter.write(list, writeSheet); + i++; + } + + excelWriter.finish(); + } + }