乐于分享
好东西不私藏

easyexcel 导出复杂多表头分组排序数据

easyexcel 导出复杂多表头分组排序数据

List> exportData = dealWithTaskComData(examTaskSubjectVoList, examSubjectStuCount, examTaskSiteData, examTaskSiteStudyData, examTaskSiteSubData, examTaskSiteVoList, bodyData);

NoModelWriteData d =newNoModelWriteData();

d.setFileName("排考信息配置一览表");

d.setDataStrMap(bodyData.toArray(newString[0]));

d.setDataList(exportData);

/***处理考试基本信息**@paramexamTaskSubjectVoList所有考试科目*@paramexamSubjectStuCount科目考试学生*@paramexamTaskSiteData科目考试考场*@paramexamTaskSiteStudyData科目自修教室*@paramexamTaskSiteSubData考场科目学生*@paramexamTaskSiteVoList所有分配的考场*@parambodyData*@return*/privateList>dealWithTaskComData(List examTaskSubjectVoList, List examSubjectStuCount, List examTaskSiteData, List examTaskSiteStudyData, List examTaskSiteSubData, List examTaskSiteVoList, List bodyData) {
intcIndex =0;
List> exportData =newArrayList<>();
if(ObjectUtil.isNotNull(examTaskSubjectVoList) && examTaskSubjectVoList.size() >0) {
Map taskTime =newHashMap<>();
Map taskDateTime =newHashMap<>();
Map subDataMap =newHashMap<>();
Map subTimeDataMap =newHashMap<>();
Map subTimeTwoDataMap =newHashMap<>();
Map subStuDataMap =newHashMap<>();
Map lastSubSiteCount =newHashMap<>();
Map subTaskSiteMap =newHashMap<>();
Map subStudyDataMap =newHashMap<>();
taskTime.put("line","");
taskTime.put("title","日期");
taskDateTime.put("line","");
taskDateTime.put("title","日期");
subDataMap.put("line","");
subDataMap.put("title","考试科目");
subTimeDataMap.put("title","考试时间");
subTimeDataMap.put("line","");
subTimeTwoDataMap.put("title","考试时间");
subTimeTwoDataMap.put("line","");
subStuDataMap.put("title","人数");
subStuDataMap.put("line","");
lastSubSiteCount.put("title","尾数考场人数");
lastSubSiteCount.put("line","");
subTaskSiteMap.put("title","考场数");
subTaskSiteMap.put("line","");
subStudyDataMap.put("title","自修教室数");
subStudyDataMap.put("line","");
intcTimeCount =1;
String cTimePreMessage ="";
for(ExamTaskSubjectVo examTaskSubjectVo : examTaskSubjectVoList) {
bodyData.add(String.valueOf(cIndex) +"_key");
String cTimeDate = DateUtils.formatDate(examTaskSubjectVo.getStartDate(),"MM月dd日");
taskTime.put(String.valueOf(cIndex) +"_key", cTimeDate);
String cTimeMess = getTaskTimeByStartTime(examTaskSubjectVo.getStartTime());
if(!cTimePreMessage.equalsIgnoreCase(cTimeDate)) {
cTimeCount++;
cTimePreMessage = cTimeDate;
}
taskDateTime.put(String.valueOf(cIndex) +"_key", StringUtils.rightPad(StringUtils.leftPad(cTimeMess, cTimeCount), cTimeCount));
subDataMap.put(String.valueOf(cIndex) +"_key", examTaskSubjectVo.getSubName());
subTimeDataMap.put(String.valueOf(cIndex) +"_key", examTaskSubjectVo.getStartTime());
subTimeTwoDataMap.put(String.valueOf(cIndex) +"_key"," - "+ examTaskSubjectVo.getEndTime());
ExamTaskSubjectVo examTaskStuChild = examSubjectStuCount.stream().filter(item -> item.getSubId().equals(examTaskSubjectVo.getSubId())).findFirst().orElse(null);
subStuDataMap.put(String.valueOf(cIndex) +"_key",0);
if(ObjectUtil.isNotNull(examTaskStuChild)) {
subStuDataMap.put(String.valueOf(cIndex) +"_key", examTaskStuChild.getSubType());
}
examTaskStuChild = examTaskSiteData.stream().filter(item -> item.getSubId().equals(examTaskSubjectVo.getSubId())).findFirst().orElse(null);
subTaskSiteMap.put(String.valueOf(cIndex) +"_key",0);
if(ObjectUtil.isNotNull(examTaskStuChild)) {
subTaskSiteMap.put(String.valueOf(cIndex) +"_key", examTaskStuChild.getSubType());
}
examTaskStuChild = examTaskSiteStudyData.stream().filter(item -> item.getSubId().equals(examTaskSubjectVo.getSubId())).findFirst().orElse(null);
subStudyDataMap.put(String.valueOf(cIndex) +"_key",0);
if(ObjectUtil.isNotNull(examTaskStuChild)) {
subStudyDataMap.put(String.valueOf(cIndex) +"_key", examTaskStuChild.getSubType());
}
List examTaskStuChilds = examTaskSiteSubData.stream().filter(item -> item.getSubId().equals(examTaskSubjectVo.getSubId())).toList();
if(ObjectUtil.isNull(examTaskStuChilds)) examTaskStuChilds =newArrayList<>();
examTaskStuChilds = examTaskStuChilds.stream().sorted(Comparator.comparing(ExamTaskSubjectVo::getSubType)).toList();
lastSubSiteCount.put(String.valueOf(cIndex) +"_key",0);
if(ObjectUtil.isNotNull(examTaskStuChilds) && examTaskStuChilds.size() >=1) {
lastSubSiteCount.put(String.valueOf(cIndex) +"_key", examTaskStuChilds.get(0).getSubType());
}
cIndex++;
}
exportData.add(taskTime);//考试日期exportData.add(taskDateTime);//上午下午exportData.add(subDataMap);//考试科目exportData.add(subTimeDataMap);//考试时间exportData.add(subTimeTwoDataMap);//考试时间exportData.add(subStuDataMap);//考试人数exportData.add(lastSubSiteCount);//尾教室人数exportData.add(subTaskSiteMap);//考场数exportData.add(subStudyDataMap);//自修教室数introwIndex =0;
examTaskSiteVoList = examTaskSiteVoList.stream().sorted(Comparator.comparing(ExamTaskSubjectVo::getId)).toList();
for(ExamTaskSubjectVo examTaskSubjectVo : examTaskSiteVoList) {//循环分配的考场cIndex =0;
Map childData =newHashMap<>();
childData.put("line", String.valueOf(rowIndex +1));
childData.put("title", examTaskSubjectVo.getSubName());//考场名称for(ExamTaskSubjectVo examSubjectVo : examTaskSubjectVoList) {
ExamTaskSubjectVo examStuChild = examTaskSiteSubData.stream().filter(item -> item.getSubId().equals(examSubjectVo.getSubId()) && item.getId().equals(examTaskSubjectVo.getId())).findFirst().orElse(null);
childData.put(String.valueOf(cIndex) +"_key",0);
if(ObjectUtil.isNotNull(examStuChild)) {
childData.put(String.valueOf(cIndex) +"_key", examStuChild.getSubType());
}
cIndex++;
}
rowIndex++;
exportData.add(childData);
}
}
returnexportData;
}