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) {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("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","");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)) {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());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());exportData.add(childData);