diff --git a/pom.xml b/pom.xml
index 0a31a24..15940a1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -79,6 +79,16 @@
validation-api
2.0.1.Final
+
+ com.alibaba
+ easyexcel
+ 3.3.3
+
+
+ com.alibaba
+ easyexcel-core
+ 3.3.3
+
diff --git a/src/main/java/com/xydl/cac/controller/NiecSensorController.java b/src/main/java/com/xydl/cac/controller/NiecSensorController.java
index e610709..c25069f 100644
--- a/src/main/java/com/xydl/cac/controller/NiecSensorController.java
+++ b/src/main/java/com/xydl/cac/controller/NiecSensorController.java
@@ -5,6 +5,7 @@ import com.xydl.cac.model.ConditionModel;
import com.xydl.cac.model.Response;
import com.xydl.cac.model.SensorDetail;
import com.xydl.cac.service.NiecSensorService;
+import com.xydl.cac.service.ReportService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
@@ -17,6 +18,8 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.net.URLEncoder;
import java.util.List;
@RestController
@@ -27,6 +30,8 @@ public class NiecSensorController extends BasicController {
@Resource
NiecSensorService service;
+ @Resource
+ ReportService reportService;
@GetMapping("list")
@ApiOperation("查询列表")
@@ -81,4 +86,23 @@ public class NiecSensorController extends BasicController {
}
}
+ @GetMapping("export")
+ @ApiOperation("导出单个装置采集到的数据")
+ public void export(@Validated ConditionModel model, HttpServletResponse response) {
+ try {
+ if (model.getPageNum() != null || model.getPageSize() != null) {
+ model.setPageNum(this.initPageNum(model.getPageNum()));
+ model.setPageSize(this.initPageSize(model.getPageSize()));
+ }
+ SensorDetail detail = service.getDetail(model);
+ response.setHeader("Content-Disposition", "attachment; filename="
+ + URLEncoder.encode(detail.getSensor().getName() + ".xlsx", "UTF-8"));
+ response.setContentType("application/vnd.ms-excel");
+ response.setCharacterEncoding("utf-8");
+ reportService.exportSensor(detail, response.getOutputStream());
+ } catch (Exception ex) {
+ log.error("exportDetail Exception.", ex);
+ }
+ }
+
}
diff --git a/src/main/java/com/xydl/cac/model/SensorDetail.java b/src/main/java/com/xydl/cac/model/SensorDetail.java
index 430c07f..6bce12d 100644
--- a/src/main/java/com/xydl/cac/model/SensorDetail.java
+++ b/src/main/java/com/xydl/cac/model/SensorDetail.java
@@ -1,6 +1,7 @@
package com.xydl.cac.model;
import com.xydl.cac.entity.NiecPoint;
+import com.xydl.cac.entity.NiecSensor;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -9,6 +10,8 @@ import java.util.Map;
@Data
public class SensorDetail {
+ @ApiModelProperty("装置信息")
+ private NiecSensor sensor;
@ApiModelProperty("点表配置")
private List points;
@ApiModelProperty("数据")
diff --git a/src/main/java/com/xydl/cac/service/ReportService.java b/src/main/java/com/xydl/cac/service/ReportService.java
new file mode 100644
index 0000000..6cfe75d
--- /dev/null
+++ b/src/main/java/com/xydl/cac/service/ReportService.java
@@ -0,0 +1,10 @@
+package com.xydl.cac.service;
+
+import com.xydl.cac.model.SensorDetail;
+
+import java.io.OutputStream;
+
+public interface ReportService {
+
+ void exportSensor(SensorDetail detail, OutputStream output) throws Exception;
+}
diff --git a/src/main/java/com/xydl/cac/service/impl/NiecSensorServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/NiecSensorServiceImpl.java
index d8695d9..9a835b4 100644
--- a/src/main/java/com/xydl/cac/service/impl/NiecSensorServiceImpl.java
+++ b/src/main/java/com/xydl/cac/service/impl/NiecSensorServiceImpl.java
@@ -99,6 +99,7 @@ public class NiecSensorServiceImpl implements NiecSensorService {
public SensorDetail getData(NiecSensor sensor, List points, ConditionModel model) {
SensorDetail result = new SensorDetail();
+ result.setSensor(sensor);
List pointList = new ArrayList<>();
String sqlFrom = " FROM " + sensor.getTableName();
diff --git a/src/main/java/com/xydl/cac/service/impl/ReportServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/ReportServiceImpl.java
new file mode 100644
index 0000000..3daba55
--- /dev/null
+++ b/src/main/java/com/xydl/cac/service/impl/ReportServiceImpl.java
@@ -0,0 +1,62 @@
+package com.xydl.cac.service.impl;
+
+import com.alibaba.excel.EasyExcel;
+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.NiecPoint;
+import com.xydl.cac.model.SensorDetail;
+import com.xydl.cac.service.ReportService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+@Service
+@Slf4j
+@Transactional(rollbackFor = Exception.class)
+public class ReportServiceImpl implements ReportService {
+
+ @Override
+ public void exportSensor(SensorDetail detail, OutputStream output) throws Exception {
+ List> heads = new ArrayList<>();
+ List head = new ArrayList<>();
+ head.add("时间");
+ heads.add(head);
+ for (NiecPoint point : detail.getPoints()) {
+ head = new ArrayList<>();
+ head.add(point.getName());
+ heads.add(head);
+ }
+
+ List> list = new ArrayList<>();
+ for (Map map : detail.getContent()) {
+ List line = new ArrayList<>();
+ Object data = map.get("acquisitionTime");
+ line.add(String.valueOf(data));
+ for (NiecPoint point : detail.getPoints()) {
+ data = map.get(point.getField());
+ if (data == null) {
+ data = "";
+ }
+ line.add(String.valueOf(data));
+ }
+ list.add(line);
+ }
+
+ // 导出Excel
+ ExcelWriter excelWriter = EasyExcel.write(output).inMemory(true)
+ .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build();
+
+ WriteSheet writeSheet0 = EasyExcel.writerSheet(0, detail.getSensor().getName())
+ .head(heads)
+ .build();
+ excelWriter.write(list, writeSheet0);
+
+ excelWriter.finish();
+ }
+}