feat: 增加导出excel

dev
huangfeng 2 years ago
parent 5375dc5629
commit 6c36d6f4da

@ -79,6 +79,16 @@
<artifactId>validation-api</artifactId>
<version>2.0.1.Final</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.3.3</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel-core</artifactId>
<version>3.3.3</version>
</dependency>
</dependencies>
<build>

@ -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);
}
}
}

@ -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<NiecPoint> points;
@ApiModelProperty("数据")

@ -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;
}

@ -99,6 +99,7 @@ public class NiecSensorServiceImpl implements NiecSensorService {
public SensorDetail getData(NiecSensor sensor, List<NiecPoint> points, ConditionModel model) {
SensorDetail result = new SensorDetail();
result.setSensor(sensor);
List<NiecPoint> pointList = new ArrayList<>();
String sqlFrom = " FROM " + sensor.getTableName();

@ -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<List<String>> heads = new ArrayList<>();
List<String> 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<String>> list = new ArrayList<>();
for (Map<String, Object> map : detail.getContent()) {
List<String> 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();
}
}
Loading…
Cancel
Save