diff --git a/src/main/java/com/xydl/cac/controller/NSensorController.java b/src/main/java/com/xydl/cac/controller/NSensorController.java index 4b41020..b5a6374 100644 --- a/src/main/java/com/xydl/cac/controller/NSensorController.java +++ b/src/main/java/com/xydl/cac/controller/NSensorController.java @@ -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> 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 list = sensorRepository.findByTypeId(model.getTypeId()); + if (CollectionUtils.isEmpty(list)) { + throw new BusinessException("未找到该类型的装置"); + } + List>> detailList = new ArrayList<>(); + for (NSensor sensor : list) { + model.setId(sensor.getId()); + SensorDetail> 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> 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") diff --git a/src/main/java/com/xydl/cac/model/ConditionModel.java b/src/main/java/com/xydl/cac/model/ConditionModel.java index 32e09a1..023ba7e 100644 --- a/src/main/java/com/xydl/cac/model/ConditionModel.java +++ b/src/main/java/com/xydl/cac/model/ConditionModel.java @@ -37,7 +37,12 @@ public class ConditionModel { @ApiModelProperty("不包含开始时间") boolean excludeStartTime; + // 查询告警用 @ApiModelProperty("处理状态") private String state; + // 导出多个用 + @ApiModelProperty("类型Id") + private Integer typeId; + } diff --git a/src/main/java/com/xydl/cac/service/ReportService.java b/src/main/java/com/xydl/cac/service/ReportService.java index eb3df7e..8f824c1 100644 --- a/src/main/java/com/xydl/cac/service/ReportService.java +++ b/src/main/java/com/xydl/cac/service/ReportService.java @@ -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> detail, OutputStream output) throws Exception; + void exportSensorList(List>> detailList, OutputStream output) throws Exception; + void importCac(InputStream input) 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 765f6c4..d136384 100644 --- a/src/main/java/com/xydl/cac/service/impl/ReportServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/ReportServiceImpl.java @@ -38,16 +38,43 @@ public class ReportServiceImpl implements ReportService { @Override public void exportSensor(SensorDetail> 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>> 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> detail = detailList.get(i); + this.writerSheet(excelWriter, i, detail); + } + + excelWriter.finish(); + } + + private void writerSheet(ExcelWriter excelWriter, int idx, SensorDetail> detail) throws Exception { + // 表头 List> heads = new ArrayList<>(); List 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 = new ArrayList<>(); for (Map map : detail.getContent()) { List 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