fix:修改主设备导出最新数据代码业务逻辑

haikang
郭承 8 months ago
parent ffa8294ac9
commit 2b8ac6e6b8

@ -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<NSensor> result = service.listAll(zsbid);
String excelName = "";
if (null != result && result.size() > 0) {
NSensor nSensor = result.get(0);
excelName = nSensor.getZsbName() + "的最新数据";
Map<Integer, List<NSensor>> map = new HashMap<>();
for (NSensor nSensor : result) {
if (map.containsKey(nSensor.getTypeId())) {
map.get(nSensor.getTypeId()).add(nSensor);
} else {
List<NSensor> 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());
}

@ -16,5 +16,5 @@ public interface ReportService {
void importCac(InputStream input) throws Exception;
void exportLatest(List<NSensor> result, OutputStream output) throws Exception;
void exportLatest(Map<Integer, List<NSensor>> map, OutputStream output) throws Exception;
}

@ -108,66 +108,61 @@ public class ReportServiceImpl implements ReportService {
}
@Override
public void exportLatest(List<NSensor> result, OutputStream output) throws Exception {
public void exportLatest(Map<Integer, List<NSensor>> map, OutputStream output) throws Exception {
// 导出Excel
ExcelWriter excelWriter = EasyExcel.write(output).inMemory(true)
.registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build();
Map<Integer, List<NSensor>> map = new HashMap<>();
for (NSensor nSensor : result) {
if (map.containsKey(nSensor.getTypeId())) {
map.get(nSensor.getTypeId()).add(nSensor);
} else {
List<NSensor> list = new ArrayList<>();
list.add(nSensor);
map.put(nSensor.getTypeId(), list);
}
}
int i = 0;
int idx = 0;
for (Integer key : map.keySet()) {
List<NSensor> nSensors = map.get(key);
// 表头
List<List<String>> heads = new ArrayList<>();
List<String> head = new ArrayList<>();
head.add("主设备名称");
heads.add(head);
this.writerSheetLatest(excelWriter, idx, nSensors);
idx++;
}
excelWriter.finish();
}
public void writerSheetLatest(ExcelWriter excelWriter, int idx, List<NSensor> nSensors) {
// 表头
List<List<String>> heads = new ArrayList<>();
List<String> 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<String>> list = new ArrayList<>();
for (NSensor nSensor : nSensors) {
List<String> line = new ArrayList<>();
line.add(nSensor.getZsbName());
HashMap<String, String> 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<String>> list = new ArrayList<>();
for (NSensor nSensor : nSensors) {
List<String> line = new ArrayList<>();
line.add(nSensor.getZsbName());
HashMap<String, String> 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);
}
}

Loading…
Cancel
Save