|
|
|
@ -1,12 +1,19 @@
|
|
|
|
|
package com.shxy.xymanager_common.util;
|
|
|
|
|
|
|
|
|
|
import com.alibaba.excel.EasyExcel;
|
|
|
|
|
import com.alibaba.excel.ExcelWriter;
|
|
|
|
|
import com.alibaba.excel.write.builder.ExcelWriterSheetBuilder;
|
|
|
|
|
import com.alibaba.excel.write.handler.RowWriteHandler;
|
|
|
|
|
import com.alibaba.excel.write.metadata.WriteSheet;
|
|
|
|
|
import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
|
|
|
|
|
import com.alibaba.excel.write.metadata.holder.WriteTableHolder;
|
|
|
|
|
import com.alibaba.excel.write.metadata.style.WriteCellStyle;
|
|
|
|
|
import com.alibaba.excel.write.style.HorizontalCellStyleStrategy;
|
|
|
|
|
import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy;
|
|
|
|
|
import com.shxy.xymanager_common.model.StatChannel;
|
|
|
|
|
import com.shxy.xymanager_common.model.StatHour;
|
|
|
|
|
import com.shxy.xymanager_common.model.StatPreset;
|
|
|
|
|
import com.shxy.xymanager_common.model.StatTerm;
|
|
|
|
|
import lombok.AllArgsConstructor;
|
|
|
|
|
import lombok.Data;
|
|
|
|
|
import lombok.NoArgsConstructor;
|
|
|
|
@ -15,9 +22,9 @@ import org.apache.poi.ss.util.CellRangeAddress;
|
|
|
|
|
|
|
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
|
|
import java.io.IOException;
|
|
|
|
|
import java.io.OutputStream;
|
|
|
|
|
import java.net.URLEncoder;
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.*;
|
|
|
|
|
|
|
|
|
|
public class EasyExcelUtil implements RowWriteHandler {
|
|
|
|
|
|
|
|
|
@ -217,4 +224,59 @@ public class EasyExcelUtil implements RowWriteHandler {
|
|
|
|
|
cellMerge.setMergeRuleColumIndex(mergeRuleColumIndex);
|
|
|
|
|
return cellMerge;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static void exportPhotoStat(List<StatTerm> dataList, OutputStream output) {
|
|
|
|
|
// 导出Excel
|
|
|
|
|
ExcelWriter excelWriter = EasyExcel.write(output).inMemory(true)
|
|
|
|
|
.registerWriteHandler(new SimpleColumnWidthStyleStrategy(24)).build();
|
|
|
|
|
|
|
|
|
|
writerSheet(excelWriter, 0, dataList);
|
|
|
|
|
|
|
|
|
|
excelWriter.finish();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static void writerSheet(ExcelWriter excelWriter, int idx, List<StatTerm> dataList) {
|
|
|
|
|
// 表头
|
|
|
|
|
List<List<String>> heads = new ArrayList<>();
|
|
|
|
|
List<String> head = new ArrayList<>();
|
|
|
|
|
head.add("时间(小时)");
|
|
|
|
|
heads.add(head);
|
|
|
|
|
|
|
|
|
|
LinkedHashMap<String, List<String>> lineMap = new LinkedHashMap<>();
|
|
|
|
|
// 内容
|
|
|
|
|
List<List<String>> list = new ArrayList<>();
|
|
|
|
|
for (StatTerm term : dataList) {
|
|
|
|
|
for (StatChannel channel : term.getChannels()) {
|
|
|
|
|
for (StatPreset preset : channel.getPresets()) {
|
|
|
|
|
head = new ArrayList<>();
|
|
|
|
|
String name = term.getCmdid() + "-" + channel.getChannelId() + "-" + preset.getPresetId();
|
|
|
|
|
head.add(name);
|
|
|
|
|
heads.add(head);
|
|
|
|
|
for (StatHour hour : preset.getHours()) {
|
|
|
|
|
List<String> line = lineMap.get(hour.getHour());
|
|
|
|
|
if (line == null) {
|
|
|
|
|
line = new ArrayList<>();
|
|
|
|
|
lineMap.put(hour.getHour(), line);
|
|
|
|
|
line.add(String.valueOf(hour.getHour()));
|
|
|
|
|
}
|
|
|
|
|
if (hour.isWrong()) {
|
|
|
|
|
List<String> dateList = new ArrayList<>();
|
|
|
|
|
for (Date date : hour.getTimeList()) {
|
|
|
|
|
dateList.add(DateUtil.format(date));
|
|
|
|
|
}
|
|
|
|
|
line.add(String.join(System.lineSeparator(), dateList));
|
|
|
|
|
} else {
|
|
|
|
|
line.add(hour.getTotal() + "张");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
list.addAll(lineMap.values());
|
|
|
|
|
|
|
|
|
|
WriteSheet writeSheet = EasyExcel.writerSheet(idx, "照片统计")
|
|
|
|
|
.head(heads)
|
|
|
|
|
.build();
|
|
|
|
|
excelWriter.write(list, writeSheet);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|