diff --git a/src/main/java/com/xydl/cac/controller/NSensorController.java b/src/main/java/com/xydl/cac/controller/NSensorController.java index c230132..65e76ac 100644 --- a/src/main/java/com/xydl/cac/controller/NSensorController.java +++ b/src/main/java/com/xydl/cac/controller/NSensorController.java @@ -27,6 +27,7 @@ import javax.servlet.http.HttpServletResponse; import javax.validation.constraints.NotNull; import java.net.URLEncoder; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -191,15 +192,23 @@ public class NSensorController extends BasicController { 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() + "的最新数据"; + 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); + } } + + String excelName = "传感器的最新数据"; + response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(excelName + ".xlsx", "UTF-8")); - reportService.exportLatest(result, response.getOutputStream()); + reportService.exportLatest(map, 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 53453fd..bf84f78 100644 --- a/src/main/java/com/xydl/cac/service/ReportService.java +++ b/src/main/java/com/xydl/cac/service/ReportService.java @@ -16,5 +16,5 @@ public interface ReportService { void importCac(InputStream input) throws Exception; - void exportLatest(List result, OutputStream output) throws Exception; + void exportLatest(Map> map, 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 fee7012..7eef80f 100644 --- a/src/main/java/com/xydl/cac/service/impl/ReportServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/ReportServiceImpl.java @@ -108,66 +108,61 @@ public class ReportServiceImpl implements ReportService { } @Override - public void exportLatest(List result, OutputStream output) throws Exception { + public void exportLatest(Map> map, 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; + int idx = 0; for (Integer key : map.keySet()) { List nSensors = map.get(key); - // 表头 - List> heads = new ArrayList<>(); - List head = new ArrayList<>(); - head.add("主设备名称"); - heads.add(head); + this.writerSheetLatest(excelWriter, idx, nSensors); + + idx++; + } + + excelWriter.finish(); + } + + public void writerSheetLatest(ExcelWriter excelWriter, int idx, List nSensors) { + // 表头 + 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("时间"); + head.add(point.getFieldDesc() + "(" + point.getUnit() + ")"); 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> 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++; + list.add(line); } - excelWriter.finish(); + WriteSheet writeSheet = EasyExcel.writerSheet(idx, nSensors.get(0).getTypeName()) + .head(heads) + .build(); + + excelWriter.write(list, writeSheet); } }