feat: 导出多个装置的数据

iec104
huangfeng 1 year ago
parent ca3c9ef8b1
commit 29b10fc45e

@ -7,6 +7,7 @@ import com.xydl.cac.model.ConditionModel;
import com.xydl.cac.model.Response;
import com.xydl.cac.model.SensorDetail;
import com.xydl.cac.model.SensorUpdateModel;
import com.xydl.cac.repository.NSensorRepository;
import com.xydl.cac.service.NSensorService;
import com.xydl.cac.service.ParamBindService;
import com.xydl.cac.service.ReportService;
@ -16,6 +17,7 @@ import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.Page;
import org.springframework.data.repository.query.Param;
import org.springframework.util.CollectionUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@ -24,6 +26,7 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.NotNull;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@ -39,6 +42,8 @@ public class NSensorController extends BasicController {
ReportService reportService;
@Resource
ParamBindService bindService;
@Resource
NSensorRepository sensorRepository;
@GetMapping("getTrunk")
@ApiOperation("查询树干")
@ -137,18 +142,38 @@ public class NSensorController extends BasicController {
}
@GetMapping("export")
@ApiOperation("导出单个装置采集到的数据")
@ApiOperation("导出单个或多个装置采集到的数据")
public void export(@Validated ConditionModel model, HttpServletResponse response) throws Exception {
if (model.getPageNum() != null || model.getPageSize() != null) {
model.setPageNum(this.initPageNum(model.getPageNum()));
model.setPageSize(this.initPageSize(model.getPageSize()));
}
SensorDetail<Map<String, Object>> 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());
if (model.getTypeId() != null) {
String typename = "";
List<NSensor> list = sensorRepository.findByTypeId(model.getTypeId());
if (CollectionUtils.isEmpty(list)) {
throw new BusinessException("未找到该类型的装置");
}
List<SensorDetail<Map<String, Object>>> detailList = new ArrayList<>();
for (NSensor sensor : list) {
model.setId(sensor.getId());
SensorDetail<Map<String, Object>> detail = service.getDetail(model);
typename = detail.getSensor().getTypeName();
detailList.add(detail);
}
response.setHeader("Content-Disposition", "attachment; filename="
+ URLEncoder.encode(typename + ".xlsx", "UTF-8"));
reportService.exportSensorList(detailList, response.getOutputStream());
} else {
SensorDetail<Map<String, Object>> detail = service.getDetail(model);
response.setHeader("Content-Disposition", "attachment; filename="
+ URLEncoder.encode(detail.getSensor().getName() + ".xlsx", "UTF-8"));
reportService.exportSensor(detail, response.getOutputStream());
}
}
@PostMapping("importFromModev")

@ -37,7 +37,12 @@ public class ConditionModel {
@ApiModelProperty("不包含开始时间")
boolean excludeStartTime;
// 查询告警用
@ApiModelProperty("处理状态")
private String state;
// 导出多个用
@ApiModelProperty("类型Id")
private Integer typeId;
}

@ -4,11 +4,14 @@ import com.xydl.cac.model.SensorDetail;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
import java.util.Map;
public interface ReportService {
void exportSensor(SensorDetail<Map<String, Object>> detail, OutputStream output) throws Exception;
void exportSensorList(List<SensorDetail<Map<String, Object>>> detailList, OutputStream output) throws Exception;
void importCac(InputStream input) throws Exception;
}

@ -38,16 +38,43 @@ public class ReportServiceImpl implements ReportService {
@Override
public void exportSensor(SensorDetail<Map<String, Object>> detail, OutputStream output) throws Exception {
// 导出Excel
ExcelWriter excelWriter = EasyExcel.write(output).inMemory(true)
.registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build();
this.writerSheet(excelWriter, 0, detail);
excelWriter.finish();
}
@Override
public void exportSensorList(List<SensorDetail<Map<String, Object>>> detailList, OutputStream output) throws Exception {
// 导出Excel
ExcelWriter excelWriter = EasyExcel.write(output).inMemory(true)
.registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build();
for (int i = 0; i < detailList.size(); i++) {
SensorDetail<Map<String, Object>> detail = detailList.get(i);
this.writerSheet(excelWriter, i, detail);
}
excelWriter.finish();
}
private void writerSheet(ExcelWriter excelWriter, int idx, SensorDetail<Map<String, Object>> detail) throws Exception {
// 表头
List<List<String>> heads = new ArrayList<>();
List<String> head = new ArrayList<>();
head.add("时间");
heads.add(head);
for (ModevTypePoint point : detail.getPoints()) {
head = new ArrayList<>();
head.add(point.getFieldDesc());
head.add(point.getFieldDesc() + "(" + point.getUnit() + ")");
heads.add(head);
}
// 内容
List<List<String>> list = new ArrayList<>();
for (Map<String, Object> map : detail.getContent()) {
List<String> line = new ArrayList<>();
@ -63,16 +90,10 @@ public class ReportServiceImpl implements ReportService {
list.add(line);
}
// 导出Excel
ExcelWriter excelWriter = EasyExcel.write(output).inMemory(true)
.registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build();
WriteSheet writeSheet0 = EasyExcel.writerSheet(0, detail.getSensor().getName())
WriteSheet writeSheet = EasyExcel.writerSheet(idx, detail.getSensor().getName())
.head(heads)
.build();
excelWriter.write(list, writeSheet0);
excelWriter.finish();
excelWriter.write(list, writeSheet);
}
@Override

Loading…
Cancel
Save