|
@@ -6,14 +6,8 @@ import cn.com.qmth.stmms.ms.admin.dto.ScoreDTO;
|
|
|
import cn.com.qmth.stmms.ms.commons.config.ImageConfig;
|
|
|
import cn.com.qmth.stmms.ms.commons.utils.SqlUtil;
|
|
|
import cn.com.qmth.stmms.ms.commons.utils.excel.ExportUtils;
|
|
|
-import cn.com.qmth.stmms.ms.core.domain.MarkSubject;
|
|
|
-import cn.com.qmth.stmms.ms.core.domain.Paper;
|
|
|
-import cn.com.qmth.stmms.ms.core.domain.Student;
|
|
|
-import cn.com.qmth.stmms.ms.core.domain.enums.TrialEnum;
|
|
|
-import cn.com.qmth.stmms.ms.core.repository.ExamQuestionRepo;
|
|
|
-import cn.com.qmth.stmms.ms.core.repository.MarkSubjectRepo;
|
|
|
-import cn.com.qmth.stmms.ms.core.repository.PaperRepo;
|
|
|
-import cn.com.qmth.stmms.ms.core.repository.StudentRepo;
|
|
|
+import cn.com.qmth.stmms.ms.core.domain.*;
|
|
|
+import cn.com.qmth.stmms.ms.core.repository.*;
|
|
|
import cn.com.qmth.stmms.ms.core.vo.Subject;
|
|
|
import com.google.gson.Gson;
|
|
|
import org.apache.commons.lang.math.NumberUtils;
|
|
@@ -26,13 +20,11 @@ import org.apache.poi.ss.util.CellRangeAddress;
|
|
|
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
-import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
-import org.springframework.web.bind.annotation.RequestMethod;
|
|
|
-import org.springframework.web.bind.annotation.RequestParam;
|
|
|
-import org.springframework.web.bind.annotation.RestController;
|
|
|
+import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
+import java.awt.image.Kernel;
|
|
|
import java.util.*;
|
|
|
import java.util.concurrent.atomic.AtomicInteger;
|
|
|
import java.util.stream.Collectors;
|
|
@@ -45,18 +37,6 @@ import java.util.stream.Collectors;
|
|
|
public class ScoreExporter {
|
|
|
private static final org.slf4j.Logger LOGGER = LoggerFactory.getLogger(ScoreExporter.class);
|
|
|
|
|
|
- @Autowired
|
|
|
- private PaperRepo paperRepo;
|
|
|
-
|
|
|
- @Autowired
|
|
|
- private ExamQuestionRepo examQuestionRepo;
|
|
|
-
|
|
|
- @Autowired
|
|
|
- private StudentRepo studentRepo;
|
|
|
-
|
|
|
- @Autowired
|
|
|
- SqlUtil sqlUtil;
|
|
|
-
|
|
|
private int level = 4,//动态报表开始列固定从4开始
|
|
|
score = 6,//打分报表固定从6开始
|
|
|
levelInterval = 2,//分档列固定从2开始
|
|
@@ -80,9 +60,24 @@ public class ScoreExporter {
|
|
|
SC_NAME = "色彩",
|
|
|
SM_NAME = "素描",
|
|
|
SX_NAME = "速写",
|
|
|
+ ROUGH_LEVEL_FILE_NAME = "粗档位成绩表",
|
|
|
LEVEL_FILE_NAME = "档位成绩表",
|
|
|
SCORE_FILE_NAME = "分数成绩表";
|
|
|
|
|
|
+ private static final String[] roughLevels = {"一", "二", "三", "四", "五", "六", "七", "八", "九"};
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private PaperRepo paperRepo;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ExamQuestionRepo examQuestionRepo;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private StudentRepo studentRepo;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ SqlUtil sqlUtil;
|
|
|
+
|
|
|
@Resource
|
|
|
MarkSubjectRepo markSubjectRepo;
|
|
|
|
|
@@ -244,7 +239,7 @@ public class ScoreExporter {
|
|
|
if (Objects.nonNull(subjectMap.get(Subject.SC.toString()))) {
|
|
|
size = subjectMap.get(Subject.SC.toString()).size();
|
|
|
}
|
|
|
- int scSumCount = level + size + 5;
|
|
|
+ int scSumCount = level + size + 5;
|
|
|
Cell cell4 = row.createCell(level);
|
|
|
cell4.setCellValue(markSubjectMap.get(Subject.SC.toString()));
|
|
|
cell4.setCellStyle(style);
|
|
@@ -452,14 +447,191 @@ public class ScoreExporter {
|
|
|
* @param workId
|
|
|
* @param response
|
|
|
*/
|
|
|
- @RequestMapping(value = "exportLevelResult", method = RequestMethod.GET)
|
|
|
+ @GetMapping("exportRoughLevelResult")
|
|
|
+ public void exportRoughLevelResult(@RequestParam Long workId, HttpServletResponse response) {
|
|
|
+ //测试-导出档位成绩表
|
|
|
+ StringBuilder sbAll = null;
|
|
|
+ if (!imageConfig.isCustomSubject()) {
|
|
|
+ String scSql = "select temp.*, mt.`result`, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, p.mark_by_leader as markByLeader, p.`rough_level` level, p.id upload, p.is_missing isMissing, p.is_rough_sample isSample,p.is_one_click isOneClick, cl.id isShift from student t left join paper p on t.work_id = p.work_id and t.exam_number = p.exam_number and p.subject = 'SC' left join mark_task_rough_level AS mt on p.work_id = mt.work_id and p.id = mt.paper_id left join (SELECT mu.id, mu.name AS teacherName, mu.`role`, mu.subject, mu.work_id AS workId FROM mark_user AS mu WHERE mu.work_id = ? AND mu.`role` = 'MARKER' AND (mu.mark_right = 0 OR mu.mark_right = 2) AND mu.subject = 'SC' AND mu.enabled = 1) temp on mt.work_id = temp.workId and mt.marker_id = temp.id left join (SELECT id, work_id, paper_id FROM change_level WHERE work_id = ? AND subject = 'SC') cl ON p.work_id = cl.work_id and p.id = cl.paper_id WHERE mt.work_id = ? AND mt.stage = " + MarkStage.ROUGH_LEVEL + " AND p.is_missing = FALSE UNION ALL select temp.*, null as result, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, p.mark_by_leader as markByLeader, p.`rough_level` level, p.id upload, p.is_missing missing, p.is_rough_sample isSample,p.is_one_click isOneClick, cl.id isShift from student t LEFT JOIN paper p ON t.work_id = p.work_id AND t.exam_number = p.exam_number LEFT JOIN (SELECT id, work_id, paper_id FROM change_level WHERE work_id = ? AND subject = 'SC') cl ON p.work_id = cl.work_id AND p.id = cl.paper_id LEFT JOIN (SELECT mu.id,mu.name AS teacherName,mu.`role`,mu.subject, mu.work_id AS workId FROM mark_user AS mu WHERE mu.work_id = ? AND mu.`role` = 'MARKER' AND (mu.mark_right = 0 OR mu.mark_right = 2) AND mu.subject = 'SC' AND mu.enabled = 1) temp ON 1 = 1 WHERE p.is_missing = TRUE AND p.work_id = ? AND p.subject = 'SC' ";
|
|
|
+ String smSql = "select temp.*, mt.`result`, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, p.mark_by_leader as markByLeader, p.`rough_level` level, p.id upload, p.is_missing isMissing, p.is_rough_sample isSample,p.is_one_click isOneClick, cl.id isShift from student t left join paper p on t.work_id = p.work_id and t.exam_number = p.exam_number and p.subject = 'SM' left join mark_task_rough_level AS mt on p.work_id = mt.work_id and p.id = mt.paper_id left join (SELECT mu.id, mu.name AS teacherName, mu.`role`, mu.subject, mu.work_id AS workId FROM mark_user AS mu WHERE mu.work_id = ? AND mu.`role` = 'MARKER' AND (mu.mark_right = 0 OR mu.mark_right = 2) AND mu.subject = 'SM' AND mu.enabled = 1) temp on mt.work_id = temp.workId and mt.marker_id = temp.id left join (SELECT id, work_id, paper_id FROM change_level WHERE work_id = ? AND subject = 'SM') cl ON p.work_id = cl.work_id and p.id = cl.paper_id WHERE mt.work_id = ? AND mt.stage = " + MarkStage.ROUGH_LEVEL + " AND p.is_missing = FALSE UNION ALL select temp.*, null as result, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, p.mark_by_leader as markByLeader, p.`rough_level` level, p.id upload, p.is_missing missing, p.is_rough_sample isSample,p.is_one_click isOneClick, cl.id isShift from student t LEFT JOIN paper p ON t.work_id = p.work_id AND t.exam_number = p.exam_number LEFT JOIN (SELECT id, work_id, paper_id FROM change_level WHERE work_id = ? AND subject = 'SM') cl ON p.work_id = cl.work_id AND p.id = cl.paper_id LEFT JOIN (SELECT mu.id,mu.name AS teacherName,mu.`role`,mu.subject, mu.work_id AS workId FROM mark_user AS mu WHERE mu.work_id = ? AND mu.`role` = 'MARKER' AND (mu.mark_right = 0 OR mu.mark_right = 2) AND mu.subject = 'SM' AND mu.enabled = 1) temp ON 1 = 1 WHERE p.is_missing = TRUE AND p.work_id = ? AND p.subject = 'SM' ";
|
|
|
+ String sxSql = "select temp.*, mt.`result`, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, p.mark_by_leader as markByLeader, p.`rough_level` level, p.id upload, p.is_missing isMissing, p.is_rough_sample isSample,p.is_one_click isOneClick, cl.id isShift from student t left join paper p on t.work_id = p.work_id and t.exam_number = p.exam_number and p.subject = 'SX' left join mark_task_rough_level AS mt on p.work_id = mt.work_id and p.id = mt.paper_id left join (SELECT mu.id, mu.name AS teacherName, mu.`role`, mu.subject, mu.work_id AS workId FROM mark_user AS mu WHERE mu.work_id = ? AND mu.`role` = 'MARKER' AND (mu.mark_right = 0 OR mu.mark_right = 2) AND mu.subject = 'SX' AND mu.enabled = 1) temp on mt.work_id = temp.workId and mt.marker_id = temp.id left join (SELECT id, work_id, paper_id FROM change_level WHERE work_id = ? AND subject = 'SX') cl ON p.work_id = cl.work_id and p.id = cl.paper_id WHERE mt.work_id = ? AND mt.stage = " + MarkStage.ROUGH_LEVEL + " AND p.is_missing = FALSE UNION ALL select temp.*, null as result, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, p.mark_by_leader as markByLeader, p.`rough_level` level, p.id upload, p.is_missing missing, p.is_rough_sample isSample,p.is_one_click isOneClick, cl.id isShift from student t LEFT JOIN paper p ON t.work_id = p.work_id AND t.exam_number = p.exam_number LEFT JOIN (SELECT id, work_id, paper_id FROM change_level WHERE work_id = ? AND subject = 'SX') cl ON p.work_id = cl.work_id AND p.id = cl.paper_id LEFT JOIN (SELECT mu.id,mu.name AS teacherName,mu.`role`,mu.subject, mu.work_id AS workId FROM mark_user AS mu WHERE mu.work_id = ? AND mu.`role` = 'MARKER' AND (mu.mark_right = 0 OR mu.mark_right = 2) AND mu.subject = 'SX' AND mu.enabled = 1) temp ON 1 = 1 WHERE p.is_missing = TRUE AND p.work_id = ? AND p.subject = 'SX' ";
|
|
|
+ //拼装问号
|
|
|
+ scSql = sqlUtil.sqlPrint(scSql, workId, workId, workId, workId, workId, workId);
|
|
|
+ smSql = sqlUtil.sqlPrint(smSql, workId, workId, workId, workId, workId, workId);
|
|
|
+ sxSql = sqlUtil.sqlPrint(sxSql, workId, workId, workId, workId, workId, workId);
|
|
|
+ sbAll = new StringBuilder(sqlUtil.sqlUnionAll(scSql));//union all
|
|
|
+ sbAll = sbAll.append(smSql);
|
|
|
+ sbAll = new StringBuilder(sqlUtil.sqlUnionAll(sbAll.toString()));//union all
|
|
|
+ sbAll = sbAll.append(sxSql);
|
|
|
+ } else {
|
|
|
+ String customSql = "select temp.*, mt.`result`, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, p.mark_by_leader as markByLeader, p.`level` from mark_task as mt , (select mu.id, mu.name as teacherName, mu.`role`, mu.subject, mu.work_id as workId from mark_user as mu where mu.work_id = ? and mu.`role` = 'MARKER'and (mu.mark_right = 0 or mu.mark_right = 2) and mu.subject = 'CUSTOM' and mu.enabled = 1) temp, paper p, student t where mt.marker_id = temp.id and mt.paper_id = p.id and t.exam_number = p.exam_number and mt.work_id = ? and mt.stage = 1 and p.is_missing = false UNION ALL select temp.*, null as result, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, p.mark_by_leader as markByLeader, p.`level` from paper p, (select mu.id, mu.name as teacherName, mu.`role`, mu.subject, mu.work_id as workId from mark_user as mu where mu.work_id = ? and mu.`role` = 'MARKER' and (mu.mark_right = 0 or mu.mark_right = 2) and mu.subject = 'CUSTOM' and mu.enabled = 1) temp, student t where (p.is_missing = true or p.is_test = 3) and p.work_id = ? and p.subject = 'CUSTOM' and t.exam_number = p.exam_number ";
|
|
|
+ customSql = sqlUtil.sqlPrint(customSql, workId, workId, workId, workId);
|
|
|
+ sbAll = new StringBuilder(customSql);
|
|
|
+ }
|
|
|
+ List list = sqlUtil.execSqlForMap(sbAll.toString());
|
|
|
+ if (Objects.nonNull(list)) {
|
|
|
+ Map<String, Map<String, ExportLevelResultDTO>> subjectMap = new HashMap<>();//课程老师批改集合
|
|
|
+ Map<String, Map<String, ExportLevelResultDTO>> studentAnswerMap = new HashMap<>();//学生答题集合
|
|
|
+ Map<String, ExportLevelResultDTO> exportLevelResultDTOs = new HashMap();//学生集合
|
|
|
+ assembleData(list, subjectMap, studentAnswerMap, exportLevelResultDTOs);
|
|
|
+
|
|
|
+ //创建excel
|
|
|
+ SXSSFWorkbook wb = new SXSSFWorkbook();
|
|
|
+ Sheet sheet = wb.createSheet(ROUGH_LEVEL_FILE_NAME);
|
|
|
+ CellStyle style = wb.createCellStyle();
|
|
|
+ style.setAlignment(CellStyle.ALIGN_CENTER); // 水平居中格式
|
|
|
+ style.setVerticalAlignment(CellStyle.VERTICAL_CENTER); //垂直居中
|
|
|
+ Row row = sheet.createRow(0);
|
|
|
+
|
|
|
+ // 科目名称
|
|
|
+ List<MarkSubject> markSubjectList = markSubjectRepo.findAllByWorkId(workId);
|
|
|
+ Map<String, String> markSubjectMap = markSubjectList.stream().collect(Collectors.toMap(m -> m.getSubject().name(), MarkSubject::getName));
|
|
|
+
|
|
|
+ //绘制固定表头
|
|
|
+ sheet = drawExcelFixedHeadLevel(levelInterval, sheet, style, row, subjectMap, workId, markSubjectMap);
|
|
|
+ //绘制动态表头
|
|
|
+ Row dynamicHeadRow = sheet.createRow(1);
|
|
|
+ if (!imageConfig.isCustomSubject()) {
|
|
|
+ //SC表头
|
|
|
+ Map<String, ExportLevelResultDTO> scMap = subjectMap.get(Subject.SC.toString());
|
|
|
+ int size = 0;
|
|
|
+// if (Objects.nonNull(scMap) && scMap.size() > 0) {
|
|
|
+ drawExcelTeacher(levelInterval, scMap, sheet, style, dynamicHeadRow, new AtomicInteger(level));
|
|
|
+ size = Objects.nonNull(scMap) && scMap.size() > 0 ? scMap.size() : 0;
|
|
|
+// }
|
|
|
+ //SM表头
|
|
|
+ Map<String, ExportLevelResultDTO> smMap = subjectMap.get(Subject.SM.toString());
|
|
|
+// if (Objects.nonNull(smMap) && smMap.size() > 0) {
|
|
|
+ drawExcelTeacher(levelInterval, smMap, sheet, style, dynamicHeadRow, new AtomicInteger(level + size + 6));
|
|
|
+ size = size + (Objects.nonNull(smMap) && smMap.size() > 0 ? smMap.size() : 0);
|
|
|
+// }
|
|
|
+ //SX表头
|
|
|
+ Map<String, ExportLevelResultDTO> sxMap = subjectMap.get(Subject.SX.toString());
|
|
|
+// if (Objects.nonNull(sxMap) && sxMap.size() > 0) {
|
|
|
+ drawExcelTeacher(levelInterval, sxMap, sheet, style, dynamicHeadRow, new AtomicInteger(level + size + 6 * 2));
|
|
|
+// }
|
|
|
+ //加载excel数据
|
|
|
+ AtomicInteger cellIndex = new AtomicInteger(0);
|
|
|
+ Sheet finalSheet = sheet;
|
|
|
+ AtomicInteger i = new AtomicInteger(0);
|
|
|
+ AtomicInteger r = new AtomicInteger(2);
|
|
|
+ exportLevelResultDTOs.forEach((listk, listv) -> {
|
|
|
+ int firstRow = i.get() + r.get();
|
|
|
+ cellIndex.set(0);
|
|
|
+ Row hssfRow = finalSheet.createRow(firstRow);
|
|
|
+ drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(listv.getExamNumber(), firstRow, firstRow, cellIndex.get(), cellIndex.get()));
|
|
|
+ cellIndex.getAndIncrement();
|
|
|
+ drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(listv.getStudentName(), firstRow, firstRow, cellIndex.get(), cellIndex.get()));
|
|
|
+ cellIndex.getAndIncrement();
|
|
|
+ drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(listv.getAreaName(), firstRow, firstRow, cellIndex.get(), cellIndex.get()));
|
|
|
+ cellIndex.getAndIncrement();
|
|
|
+ drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(listv.getSourceName(), firstRow, firstRow, cellIndex.get(), cellIndex.get()));
|
|
|
+ cellIndex.getAndIncrement();
|
|
|
+ Map<String, ExportLevelResultDTO> map = studentAnswerMap.get(listv.getExamNumber());
|
|
|
+ if (Objects.nonNull(map) && map.size() > 0) {
|
|
|
+ map.forEach((k, v) -> {
|
|
|
+ if (k.contains(Subject.SC.toString())) {
|
|
|
+ ExportLevelResultDTO exportLevelResultDTO = scMap.get(v.getTeacherName());
|
|
|
+ drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(v.getResult(), firstRow, firstRow, exportLevelResultDTO.getFirstCol(), exportLevelResultDTO.getFirstCol()));
|
|
|
+ if (Objects.nonNull(v.getLevel())) {
|
|
|
+ drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(roughLevels[Integer.parseInt(v.getLevel())], firstRow, firstRow, level + (scMap == null ? 0 : scMap.size()), level + (scMap == null ? 0 : scMap.size())));
|
|
|
+ }
|
|
|
+ //上传
|
|
|
+ drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(Objects.nonNull(v.getUpload()) ? "是" : "否", firstRow, firstRow, level + (scMap == null ? 0 : scMap.size()) + 1, level + (scMap == null ? 0 : scMap.size()) + 1));
|
|
|
+ //缺考
|
|
|
+ drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(Objects.nonNull(v.getMissing()) && v.getMissing() ? "是" : "否", firstRow, firstRow, level + (scMap == null ? 0 : scMap.size()) + 2, level + (scMap == null ? 0 : scMap.size()) + 2));
|
|
|
+ //标准卷
|
|
|
+ drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(Objects.nonNull(v.getSample()) && v.getSample() ? "是" : "否", firstRow, firstRow, level + (scMap == null ? 0 : scMap.size()) + 3, level + (scMap == null ? 0 : scMap.size()) + 3));
|
|
|
+ //一键定档
|
|
|
+ drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(Objects.nonNull(v.getOneClick()) && v.getOneClick() ? "是" : "否", firstRow, firstRow, level + (scMap == null ? 0 : scMap.size()) + 4, level + (scMap == null ? 0 : scMap.size()) + 4));
|
|
|
+ //改档
|
|
|
+ drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(Objects.nonNull(v.getIsShift()) ? "是" : "否", firstRow, firstRow, level + (scMap == null ? 0 : scMap.size()) + 5, level + (scMap == null ? 0 : scMap.size()) + 5));
|
|
|
+ } else if (k.contains(Subject.SM.toString())) {
|
|
|
+ ExportLevelResultDTO exportLevelResultDTO = smMap.get(v.getTeacherName());
|
|
|
+ drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(v.getResult(), firstRow, firstRow, exportLevelResultDTO.getFirstCol(), exportLevelResultDTO.getFirstCol()));
|
|
|
+ if (Objects.nonNull(v.getLevel())) {
|
|
|
+ drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(roughLevels[Integer.parseInt(v.getLevel())], firstRow, firstRow, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + 5 + 1, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + 5 + 1));
|
|
|
+ }
|
|
|
+ drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(Objects.nonNull(v.getUpload()) ? "是" : "否", firstRow, firstRow, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + 5 + 2, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + 5 + 2));
|
|
|
+ drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(Objects.nonNull(v.getMissing()) && v.getMissing() ? "是" : "否", firstRow, firstRow, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + 5 + 3, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + 5 + 3));
|
|
|
+ drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(Objects.nonNull(v.getSample()) && v.getSample() ? "是" : "否", firstRow, firstRow, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + 5 + 4, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + 5 + 4));
|
|
|
+ drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(Objects.nonNull(v.getOneClick()) && v.getOneClick() ? "是" : "否", firstRow, firstRow, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + 5 + 5, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + 5 + 5));
|
|
|
+ drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(Objects.nonNull(v.getIsShift()) ? "是" : "否", firstRow, firstRow, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + 5 + 6, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + 5 + 6));
|
|
|
+ } else if (k.contains(Subject.SX.toString())) {
|
|
|
+ ExportLevelResultDTO exportLevelResultDTO = sxMap.get(v.getTeacherName());
|
|
|
+ drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(v.getResult(), firstRow, firstRow, exportLevelResultDTO.getFirstCol(), exportLevelResultDTO.getFirstCol()));
|
|
|
+ if (Objects.nonNull(v.getLevel())) {
|
|
|
+ drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(roughLevels[Integer.parseInt(v.getLevel())], firstRow, firstRow, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + (sxMap == null ? 0 : sxMap.size()) + 6 * 2, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + (sxMap == null ? 0 : sxMap.size()) + 6 * 2));
|
|
|
+ }
|
|
|
+ drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(Objects.nonNull(v.getUpload()) ? "是" : "否", firstRow, firstRow, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + (sxMap == null ? 0 : sxMap.size()) + 6 * 2 + 1, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + (sxMap == null ? 0 : sxMap.size()) + 6 * 2 + 1));
|
|
|
+ drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(Objects.nonNull(v.getMissing()) && v.getMissing() ? "是" : "否", firstRow, firstRow, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + (sxMap == null ? 0 : sxMap.size()) + 6 * 2 + 2, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + (sxMap == null ? 0 : sxMap.size()) + 6 * 2 + 2));
|
|
|
+ drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(Objects.nonNull(v.getSample()) && v.getSample() ? "是" : "否", firstRow, firstRow, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + (sxMap == null ? 0 : sxMap.size()) + 6 * 2 + 3, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + (sxMap == null ? 0 : sxMap.size()) + 6 * 2 + 3));
|
|
|
+ drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(Objects.nonNull(v.getOneClick()) && v.getOneClick() ? "是" : "否", firstRow, firstRow, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + (sxMap == null ? 0 : sxMap.size()) + 6 * 2 + 4, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + (sxMap == null ? 0 : sxMap.size()) + 6 * 2 + 4));
|
|
|
+ drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(Objects.nonNull(v.getIsShift()) ? "是" : "否", firstRow, firstRow, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + (sxMap == null ? 0 : sxMap.size()) + 6 * 2 + 5, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + (sxMap == null ? 0 : sxMap.size()) + 6 * 2 + 5));
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ i.getAndIncrement();
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ //SC表头
|
|
|
+ Map<String, ExportLevelResultDTO> customMap = subjectMap.get(Subject.CUSTOM.toString());
|
|
|
+ int size = 0;
|
|
|
+ if (Objects.nonNull(customMap) && customMap.size() > 0) {
|
|
|
+ drawExcelTeacher(levelInterval, customMap, sheet, style, dynamicHeadRow, new AtomicInteger(level));
|
|
|
+ size = customMap.size();
|
|
|
+ }
|
|
|
+ //加载excel数据
|
|
|
+ AtomicInteger cellIndex = new AtomicInteger(0);
|
|
|
+ Sheet finalSheet = sheet;
|
|
|
+ AtomicInteger i = new AtomicInteger(0);
|
|
|
+ AtomicInteger r = new AtomicInteger(2);
|
|
|
+ exportLevelResultDTOs.forEach((listk, listv) -> {
|
|
|
+ int firstRow = i.get() + r.get();
|
|
|
+ cellIndex.set(0);
|
|
|
+ Row hssfRow = finalSheet.createRow(firstRow);
|
|
|
+ drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(listv.getExamNumber(), firstRow, firstRow, cellIndex.get(), cellIndex.get()));
|
|
|
+ cellIndex.getAndIncrement();
|
|
|
+ drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(listv.getStudentName(), firstRow, firstRow, cellIndex.get(), cellIndex.get()));
|
|
|
+ cellIndex.getAndIncrement();
|
|
|
+ drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(listv.getAreaName(), firstRow, firstRow, cellIndex.get(), cellIndex.get()));
|
|
|
+ cellIndex.getAndIncrement();
|
|
|
+ drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(listv.getSourceName(), firstRow, firstRow, cellIndex.get(), cellIndex.get()));
|
|
|
+ cellIndex.getAndIncrement();
|
|
|
+ Map<String, ExportLevelResultDTO> map = studentAnswerMap.get(listv.getExamNumber());
|
|
|
+ if (Objects.nonNull(map) && map.size() > 0) {
|
|
|
+ map.forEach((k, v) -> {
|
|
|
+ ExportLevelResultDTO exportLevelResultDTO = customMap.get(v.getTeacherName());
|
|
|
+ drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(v.getResult(), firstRow, firstRow, exportLevelResultDTO.getFirstCol(), exportLevelResultDTO.getFirstCol()));
|
|
|
+ if (v.getMarkByLeader()) {
|
|
|
+ drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(v.getLevel(), firstRow, firstRow, level + (customMap == null ? 0 : customMap.size()), level + (customMap == null ? 0 : customMap.size())));
|
|
|
+ }
|
|
|
+ if (Objects.nonNull(v.getLevel())) {
|
|
|
+ drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(v.getLevel(), firstRow, firstRow, level + (customMap == null ? 0 : customMap.size()) + 1, level + (customMap == null ? 0 : customMap.size()) + 1));
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ i.getAndIncrement();
|
|
|
+ });
|
|
|
+ }
|
|
|
+ ExportUtils.exportEXCEL(LEVEL_FILE_NAME, wb, response);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 导出档位成绩
|
|
|
+ *
|
|
|
+ * @param workId
|
|
|
+ * @param response
|
|
|
+ */
|
|
|
+ @GetMapping("exportLevelResult")
|
|
|
public void exportLevelResult(@RequestParam Long workId, HttpServletResponse response) {
|
|
|
//测试-导出档位成绩表
|
|
|
StringBuilder sbAll = null;
|
|
|
if (!imageConfig.isCustomSubject()) {
|
|
|
- String scSql = "select temp.*, mt.`result`, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, p.mark_by_leader as markByLeader, p.`level`, p.id upload, p.is_missing isMissing, p.is_sample isSample,p.is_one_click isOneClick, cl.id isShift from student t left join paper p on t.work_id = p.work_id and t.exam_number = p.exam_number left join mark_task AS mt on p.work_id = mt.work_id and p.id = mt.paper_id left join (SELECT mu.id, mu.name AS teacherName, mu.`role`, mu.subject, mu.work_id AS workId FROM mark_user AS mu WHERE mu.work_id = ? AND mu.`role` = 'MARKER' AND (mu.mark_right = 0 OR mu.mark_right = 2) AND mu.subject = 'SC' AND mu.enabled = 1) temp on mt.work_id = temp.workId and mt.marker_id = temp.id left join (SELECT id, work_id, paper_id FROM change_level WHERE work_id = ? AND subject = 'SC') cl ON p.work_id = cl.work_id and p.id = cl.paper_id WHERE mt.work_id = ? AND mt.stage = 1 AND p.is_missing = FALSE UNION ALL select temp.*, null as result, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, p.mark_by_leader as markByLeader, p.`level`, p.id upload, p.is_missing missing, p.is_sample isSample,p.is_one_click isOneClick, cl.id isShift from student t LEFT JOIN paper p ON t.work_id = p.work_id AND t.exam_number = p.exam_number LEFT JOIN (SELECT id, work_id, paper_id FROM change_level WHERE work_id = ? AND subject = 'SC') cl ON p.work_id = cl.work_id AND p.id = cl.paper_id LEFT JOIN (SELECT mu.id,mu.name AS teacherName,mu.`role`,mu.subject, mu.work_id AS workId FROM mark_user AS mu WHERE mu.work_id = ? AND mu.`role` = 'MARKER' AND (mu.mark_right = 0 OR mu.mark_right = 2) AND mu.subject = 'SC' AND mu.enabled = 1) temp ON 1 = 1 WHERE (p.is_missing = TRUE OR p.is_test = 3) AND p.work_id = ? AND p.subject = 'SC' ";
|
|
|
- String smSql = "select temp.*, mt.`result`, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, p.mark_by_leader as markByLeader, p.`level`, p.id upload, p.is_missing isMissing, p.is_sample isSample,p.is_one_click isOneClick, cl.id isShift from student t left join paper p on t.work_id = p.work_id and t.exam_number = p.exam_number left join mark_task AS mt on p.work_id = mt.work_id and p.id = mt.paper_id left join (SELECT mu.id, mu.name AS teacherName, mu.`role`, mu.subject, mu.work_id AS workId FROM mark_user AS mu WHERE mu.work_id = ? AND mu.`role` = 'MARKER' AND (mu.mark_right = 0 OR mu.mark_right = 2) AND mu.subject = 'SM' AND mu.enabled = 1) temp on mt.work_id = temp.workId and mt.marker_id = temp.id left join (SELECT id, work_id, paper_id FROM change_level WHERE work_id = ? AND subject = 'SM') cl ON p.work_id = cl.work_id and p.id = cl.paper_id WHERE mt.work_id = ? AND mt.stage = 1 AND p.is_missing = FALSE UNION ALL select temp.*, null as result, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, p.mark_by_leader as markByLeader, p.`level`, p.id upload, p.is_missing missing, p.is_sample isSample,p.is_one_click isOneClick, cl.id isShift from student t LEFT JOIN paper p ON t.work_id = p.work_id AND t.exam_number = p.exam_number LEFT JOIN (SELECT id, work_id, paper_id FROM change_level WHERE work_id = ? AND subject = 'SC') cl ON p.work_id = cl.work_id AND p.id = cl.paper_id LEFT JOIN (SELECT mu.id,mu.name AS teacherName,mu.`role`,mu.subject, mu.work_id AS workId FROM mark_user AS mu WHERE mu.work_id = ? AND mu.`role` = 'MARKER' AND (mu.mark_right = 0 OR mu.mark_right = 2) AND mu.subject = 'SM' AND mu.enabled = 1) temp ON 1 = 1 WHERE (p.is_missing = TRUE OR p.is_test = 3) AND p.work_id = ? AND p.subject = 'SM' ";
|
|
|
- String sxSql = "select temp.*, mt.`result`, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, p.mark_by_leader as markByLeader, p.`level`, p.id upload, p.is_missing isMissing, p.is_sample isSample,p.is_one_click isOneClick, cl.id isShift from student t left join paper p on t.work_id = p.work_id and t.exam_number = p.exam_number left join mark_task AS mt on p.work_id = mt.work_id and p.id = mt.paper_id left join (SELECT mu.id, mu.name AS teacherName, mu.`role`, mu.subject, mu.work_id AS workId FROM mark_user AS mu WHERE mu.work_id = ? AND mu.`role` = 'MARKER' AND (mu.mark_right = 0 OR mu.mark_right = 2) AND mu.subject = 'SX' AND mu.enabled = 1) temp on mt.work_id = temp.workId and mt.marker_id = temp.id left join (SELECT id, work_id, paper_id FROM change_level WHERE work_id = ? AND subject = 'SX') cl ON p.work_id = cl.work_id and p.id = cl.paper_id WHERE mt.work_id = ? AND mt.stage = 1 AND p.is_missing = FALSE UNION ALL select temp.*, null as result, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, p.mark_by_leader as markByLeader, p.`level`, p.id upload, p.is_missing missing, p.is_sample isSample,p.is_one_click isOneClick, cl.id isShift from student t LEFT JOIN paper p ON t.work_id = p.work_id AND t.exam_number = p.exam_number LEFT JOIN (SELECT id, work_id, paper_id FROM change_level WHERE work_id = ? AND subject = 'SC') cl ON p.work_id = cl.work_id AND p.id = cl.paper_id LEFT JOIN (SELECT mu.id,mu.name AS teacherName,mu.`role`,mu.subject, mu.work_id AS workId FROM mark_user AS mu WHERE mu.work_id = ? AND mu.`role` = 'MARKER' AND (mu.mark_right = 0 OR mu.mark_right = 2) AND mu.subject = 'SX' AND mu.enabled = 1) temp ON 1 = 1 WHERE (p.is_missing = TRUE OR p.is_test = 3) AND p.work_id = ? AND p.subject = 'SX' ";
|
|
|
+ String scSql = "select temp.*, mt.`result`, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, p.mark_by_leader as markByLeader, p.`level`, p.id upload, p.is_missing isMissing, p.is_sample isSample,p.is_one_click isOneClick, cl.id isShift from student t left join paper p on t.work_id = p.work_id and t.exam_number = p.exam_number and p.subject = 'SC' left join mark_task_level AS mt on p.work_id = mt.work_id and p.id = mt.paper_id left join (SELECT mu.id, mu.name AS teacherName, mu.`role`, mu.subject, mu.work_id AS workId FROM mark_user AS mu WHERE mu.work_id = ? AND mu.`role` = 'MARKER' AND (mu.mark_right = 0 OR mu.mark_right = 2) AND mu.subject = 'SC' AND mu.enabled = 1) temp on mt.work_id = temp.workId and mt.marker_id = temp.id left join (SELECT id, work_id, paper_id FROM change_level WHERE work_id = ? AND subject = 'SC') cl ON p.work_id = cl.work_id and p.id = cl.paper_id WHERE mt.work_id = ? AND mt.stage = " + MarkStage.LEVEL.ordinal() + " AND p.is_missing = FALSE UNION ALL select temp.*, null as result, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, p.mark_by_leader as markByLeader, p.`level`, p.id upload, p.is_missing missing, p.is_sample isSample,p.is_one_click isOneClick, cl.id isShift from student t LEFT JOIN paper p ON t.work_id = p.work_id AND t.exam_number = p.exam_number LEFT JOIN (SELECT id, work_id, paper_id FROM change_level WHERE work_id = ? AND subject = 'SC') cl ON p.work_id = cl.work_id AND p.id = cl.paper_id LEFT JOIN (SELECT mu.id,mu.name AS teacherName,mu.`role`,mu.subject, mu.work_id AS workId FROM mark_user AS mu WHERE mu.work_id = ? AND mu.`role` = 'MARKER' AND (mu.mark_right = 0 OR mu.mark_right = 2) AND mu.subject = 'SC' AND mu.enabled = 1) temp ON 1 = 1 WHERE p.is_missing = TRUE AND p.work_id = ? AND p.subject = 'SC' ";
|
|
|
+ String smSql = "select temp.*, mt.`result`, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, p.mark_by_leader as markByLeader, p.`level`, p.id upload, p.is_missing isMissing, p.is_sample isSample,p.is_one_click isOneClick, cl.id isShift from student t left join paper p on t.work_id = p.work_id and t.exam_number = p.exam_number and p.subject = 'SM' left join mark_task_level AS mt on p.work_id = mt.work_id and p.id = mt.paper_id left join (SELECT mu.id, mu.name AS teacherName, mu.`role`, mu.subject, mu.work_id AS workId FROM mark_user AS mu WHERE mu.work_id = ? AND mu.`role` = 'MARKER' AND (mu.mark_right = 0 OR mu.mark_right = 2) AND mu.subject = 'SM' AND mu.enabled = 1) temp on mt.work_id = temp.workId and mt.marker_id = temp.id left join (SELECT id, work_id, paper_id FROM change_level WHERE work_id = ? AND subject = 'SM') cl ON p.work_id = cl.work_id and p.id = cl.paper_id WHERE mt.work_id = ? AND mt.stage = " + MarkStage.LEVEL.ordinal() + " AND p.is_missing = FALSE UNION ALL select temp.*, null as result, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, p.mark_by_leader as markByLeader, p.`level`, p.id upload, p.is_missing missing, p.is_sample isSample,p.is_one_click isOneClick, cl.id isShift from student t LEFT JOIN paper p ON t.work_id = p.work_id AND t.exam_number = p.exam_number LEFT JOIN (SELECT id, work_id, paper_id FROM change_level WHERE work_id = ? AND subject = 'SM') cl ON p.work_id = cl.work_id AND p.id = cl.paper_id LEFT JOIN (SELECT mu.id,mu.name AS teacherName,mu.`role`,mu.subject, mu.work_id AS workId FROM mark_user AS mu WHERE mu.work_id = ? AND mu.`role` = 'MARKER' AND (mu.mark_right = 0 OR mu.mark_right = 2) AND mu.subject = 'SM' AND mu.enabled = 1) temp ON 1 = 1 WHERE p.is_missing = TRUE AND p.work_id = ? AND p.subject = 'SM' ";
|
|
|
+ String sxSql = "select temp.*, mt.`result`, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, p.mark_by_leader as markByLeader, p.`level`, p.id upload, p.is_missing isMissing, p.is_sample isSample,p.is_one_click isOneClick, cl.id isShift from student t left join paper p on t.work_id = p.work_id and t.exam_number = p.exam_number and p.subject = 'SX' left join mark_task_level AS mt on p.work_id = mt.work_id and p.id = mt.paper_id left join (SELECT mu.id, mu.name AS teacherName, mu.`role`, mu.subject, mu.work_id AS workId FROM mark_user AS mu WHERE mu.work_id = ? AND mu.`role` = 'MARKER' AND (mu.mark_right = 0 OR mu.mark_right = 2) AND mu.subject = 'SX' AND mu.enabled = 1) temp on mt.work_id = temp.workId and mt.marker_id = temp.id left join (SELECT id, work_id, paper_id FROM change_level WHERE work_id = ? AND subject = 'SX') cl ON p.work_id = cl.work_id and p.id = cl.paper_id WHERE mt.work_id = ? AND mt.stage = " + MarkStage.LEVEL.ordinal() + " AND p.is_missing = FALSE UNION ALL select temp.*, null as result, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, p.mark_by_leader as markByLeader, p.`level`, p.id upload, p.is_missing missing, p.is_sample isSample,p.is_one_click isOneClick, cl.id isShift from student t LEFT JOIN paper p ON t.work_id = p.work_id AND t.exam_number = p.exam_number LEFT JOIN (SELECT id, work_id, paper_id FROM change_level WHERE work_id = ? AND subject = 'SX') cl ON p.work_id = cl.work_id AND p.id = cl.paper_id LEFT JOIN (SELECT mu.id,mu.name AS teacherName,mu.`role`,mu.subject, mu.work_id AS workId FROM mark_user AS mu WHERE mu.work_id = ? AND mu.`role` = 'MARKER' AND (mu.mark_right = 0 OR mu.mark_right = 2) AND mu.subject = 'SX' AND mu.enabled = 1) temp ON 1 = 1 WHERE p.is_missing = TRUE AND p.work_id = ? AND p.subject = 'SX' ";
|
|
|
//拼装问号
|
|
|
scSql = sqlUtil.sqlPrint(scSql, workId, workId, workId, workId, workId, workId);
|
|
|
smSql = sqlUtil.sqlPrint(smSql, workId, workId, workId, workId, workId, workId);
|
|
@@ -484,15 +656,13 @@ public class ScoreExporter {
|
|
|
SXSSFWorkbook wb = new SXSSFWorkbook();
|
|
|
Sheet sheet = wb.createSheet(LEVEL_FILE_NAME);
|
|
|
CellStyle style = wb.createCellStyle();
|
|
|
-// style.setAlignment(HorizontalAlignment.CENTER);// 左右居中
|
|
|
-// style.setVerticalAlignment(VerticalAlignment.CENTER);
|
|
|
- style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 水平居中格式
|
|
|
- style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); //垂直居中
|
|
|
+ style.setAlignment(CellStyle.ALIGN_CENTER); // 水平居中格式
|
|
|
+ style.setVerticalAlignment(CellStyle.VERTICAL_CENTER); //垂直居中
|
|
|
Row row = sheet.createRow(0);
|
|
|
|
|
|
// 科目名称
|
|
|
List<MarkSubject> markSubjectList = markSubjectRepo.findAllByWorkId(workId);
|
|
|
- Map<String, String> markSubjectMap = markSubjectList.stream().collect(Collectors.toMap(m->m.getSubject().name(), MarkSubject::getName));
|
|
|
+ Map<String, String> markSubjectMap = markSubjectList.stream().collect(Collectors.toMap(m -> m.getSubject().name(), MarkSubject::getName));
|
|
|
|
|
|
//绘制固定表头
|
|
|
sheet = drawExcelFixedHeadLevel(levelInterval, sheet, style, row, subjectMap, workId, markSubjectMap);
|
|
@@ -504,19 +674,19 @@ public class ScoreExporter {
|
|
|
Map<String, ExportLevelResultDTO> scMap = subjectMap.get(Subject.SC.toString());
|
|
|
int size = 0;
|
|
|
// if (Objects.nonNull(scMap) && scMap.size() > 0) {
|
|
|
- drawExcelTeacher(levelInterval, scMap, sheet, style, dynamicHeadRow, new AtomicInteger(level));
|
|
|
- size = Objects.nonNull(scMap) && scMap.size() > 0 ? scMap.size() : 0;
|
|
|
+ drawExcelTeacher(levelInterval, scMap, sheet, style, dynamicHeadRow, new AtomicInteger(level));
|
|
|
+ size = Objects.nonNull(scMap) && scMap.size() > 0 ? scMap.size() : 0;
|
|
|
// }
|
|
|
//SM表头
|
|
|
Map<String, ExportLevelResultDTO> smMap = subjectMap.get(Subject.SM.toString());
|
|
|
// if (Objects.nonNull(smMap) && smMap.size() > 0) {
|
|
|
- drawExcelTeacher(levelInterval, smMap, sheet, style, dynamicHeadRow, new AtomicInteger(level + size + 6));
|
|
|
- size = size + (Objects.nonNull(smMap) && smMap.size() > 0 ? smMap.size() : 0);
|
|
|
+ drawExcelTeacher(levelInterval, smMap, sheet, style, dynamicHeadRow, new AtomicInteger(level + size + 6));
|
|
|
+ size = size + (Objects.nonNull(smMap) && smMap.size() > 0 ? smMap.size() : 0);
|
|
|
// }
|
|
|
//SX表头
|
|
|
Map<String, ExportLevelResultDTO> sxMap = subjectMap.get(Subject.SX.toString());
|
|
|
// if (Objects.nonNull(sxMap) && sxMap.size() > 0) {
|
|
|
- drawExcelTeacher(levelInterval, sxMap, sheet, style, dynamicHeadRow, new AtomicInteger(level + size + 6*2));
|
|
|
+ drawExcelTeacher(levelInterval, sxMap, sheet, style, dynamicHeadRow, new AtomicInteger(level + size + 6 * 2));
|
|
|
// }
|
|
|
//加载excel数据
|
|
|
AtomicInteger cellIndex = new AtomicInteger(0);
|
|
@@ -560,7 +730,7 @@ public class ScoreExporter {
|
|
|
if (Objects.nonNull(v.getLevel())) {
|
|
|
drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(v.getLevel(), firstRow, firstRow, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + 5 + 1, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + 5 + 1));
|
|
|
}
|
|
|
- drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(Objects.nonNull(v.getUpload()) ? "是" : "否", firstRow, firstRow, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + 5 + 2, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + 5 + 2));
|
|
|
+ drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(Objects.nonNull(v.getUpload()) ? "是" : "否", firstRow, firstRow, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + 5 + 2, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + 5 + 2));
|
|
|
drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(Objects.nonNull(v.getMissing()) && v.getMissing() ? "是" : "否", firstRow, firstRow, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + 5 + 3, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + 5 + 3));
|
|
|
drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(Objects.nonNull(v.getSample()) && v.getSample() ? "是" : "否", firstRow, firstRow, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + 5 + 4, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + 5 + 4));
|
|
|
drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(Objects.nonNull(v.getOneClick()) && v.getOneClick() ? "是" : "否", firstRow, firstRow, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + 5 + 5, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + 5 + 5));
|
|
@@ -637,9 +807,9 @@ public class ScoreExporter {
|
|
|
//测试-导出分数成绩表
|
|
|
StringBuilder sbAll = null;
|
|
|
if (!imageConfig.isCustomSubject()) {
|
|
|
- String scSql = "select temp.*, IFNULL(mt.`result`,0) as result, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, t.school, t.exam_room examRoom, IFNULL(p.score,0) as level,p.mark_by_leader as markByLeader from mark_task as mt , (select mu.id, mu.name as teacherName, mu.`role`, mu.subject, mu.work_id as workId from mark_user as mu where mu.work_id = ? and mu.`role` = 'MARKER'and (mu.mark_right = 1 or mu.mark_right = 2) and mu.subject = 'SC'and mu.enabled = 1) temp, paper p, student t where mt.marker_id = temp.id and mt.paper_id = p.id and t.exam_number = p.exam_number and mt.work_id = ? and mt.stage = 2 and p.is_missing = false UNION ALL select temp.*, 0 as result, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, t.school, t.exam_room examRoom, IFNULL(p.score,0) as level, p.mark_by_leader as markByLeader from paper p, (select mu.id, mu.name as teacherName, mu.`role`, mu.subject, mu.work_id as workId from mark_user as mu where mu.work_id = ? and mu.`role` = 'MARKER' and (mu.mark_right = 1 or mu.mark_right = 2) and mu.subject = 'SC' and mu.enabled = 1) temp, student t where p.is_missing = true and p.work_id = ? and p.subject = 'SC' and t.exam_number = p.exam_number ";
|
|
|
- String smSql = "select temp.*, IFNULL(mt.`result`,0) as result, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, t.school, t.exam_room examRoom, IFNULL(p.score,0) as level,p.mark_by_leader as markByLeader from mark_task as mt , (select mu.id, mu.name as teacherName, mu.`role`, mu.subject, mu.work_id as workId from mark_user as mu where mu.work_id = ? and mu.`role` = 'MARKER'and (mu.mark_right = 1 or mu.mark_right = 2) and mu.subject = 'SM'and mu.enabled = 1) temp, paper p, student t where mt.marker_id = temp.id and mt.paper_id = p.id and t.exam_number = p.exam_number and mt.work_id = ? and mt.stage = 2 and p.is_missing = false UNION ALL select temp.*, 0 as result, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, t.school, t.exam_room examRoom, IFNULL(p.score,0) as level, p.mark_by_leader as markByLeader from paper p, (select mu.id, mu.name as teacherName, mu.`role`, mu.subject, mu.work_id as workId from mark_user as mu where mu.work_id = ? and mu.`role` = 'MARKER' and (mu.mark_right = 1 or mu.mark_right = 2) and mu.subject = 'SM' and mu.enabled = 1) temp, student t where p.is_missing = true and p.work_id = ? and p.subject = 'SM' and t.exam_number = p.exam_number ";
|
|
|
- String sxSql = "select temp.*, IFNULL(mt.`result`,0) as result, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, t.school, t.exam_room examRoom, IFNULL(p.score,0) as level,p.mark_by_leader as markByLeader from mark_task as mt , (select mu.id, mu.name as teacherName, mu.`role`, mu.subject, mu.work_id as workId from mark_user as mu where mu.work_id = ? and mu.`role` = 'MARKER'and (mu.mark_right = 1 or mu.mark_right = 2) and mu.subject = 'SX'and mu.enabled = 1) temp, paper p, student t where mt.marker_id = temp.id and mt.paper_id = p.id and t.exam_number = p.exam_number and mt.work_id = ? and mt.stage = 2 and p.is_missing = false UNION ALL select temp.*, 0 as result, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, t.school, t.exam_room examRoom, IFNULL(p.score,0) as level, p.mark_by_leader as markByLeader from paper p, (select mu.id, mu.name as teacherName, mu.`role`, mu.subject, mu.work_id as workId from mark_user as mu where mu.work_id = ? and mu.`role` = 'MARKER' and (mu.mark_right = 1 or mu.mark_right = 2) and mu.subject = 'SX' and mu.enabled = 1) temp, student t where p.is_missing = true and p.work_id = ? and p.subject = 'SX' and t.exam_number = p.exam_number ";
|
|
|
+ String scSql = "select temp.*, IFNULL(mt.`result`,0) as result, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, t.school, t.exam_room examRoom, IFNULL(p.score,0) as level,p.mark_by_leader as markByLeader from mark_task_score as mt , (select mu.id, mu.name as teacherName, mu.`role`, mu.subject, mu.work_id as workId from mark_user as mu where mu.work_id = ? and mu.`role` = 'MARKER'and (mu.mark_right = 1 or mu.mark_right = 2) and mu.subject = 'SC' and mu.enabled = 1) temp, paper p, student t where mt.marker_id = temp.id and mt.paper_id = p.id and t.exam_number = p.exam_number and mt.work_id = ? and mt.stage = " + MarkStage.SCORE + " and p.is_missing = false UNION ALL select temp.*, 0 as result, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, t.school, t.exam_room examRoom, IFNULL(p.score,0) as level, p.mark_by_leader as markByLeader from paper p, (select mu.id, mu.name as teacherName, mu.`role`, mu.subject, mu.work_id as workId from mark_user as mu where mu.work_id = ? and mu.`role` = 'MARKER' and (mu.mark_right = 1 or mu.mark_right = 2) and mu.subject = 'SC' and mu.enabled = 1) temp, student t where p.is_missing = true and p.work_id = ? and p.subject = 'SC' and t.exam_number = p.exam_number ";
|
|
|
+ String smSql = "select temp.*, IFNULL(mt.`result`,0) as result, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, t.school, t.exam_room examRoom, IFNULL(p.score,0) as level,p.mark_by_leader as markByLeader from mark_task_score as mt , (select mu.id, mu.name as teacherName, mu.`role`, mu.subject, mu.work_id as workId from mark_user as mu where mu.work_id = ? and mu.`role` = 'MARKER'and (mu.mark_right = 1 or mu.mark_right = 2) and mu.subject = 'SM' and mu.enabled = 1) temp, paper p, student t where mt.marker_id = temp.id and mt.paper_id = p.id and t.exam_number = p.exam_number and mt.work_id = ? and mt.stage = " + MarkStage.SCORE + " and p.is_missing = false UNION ALL select temp.*, 0 as result, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, t.school, t.exam_room examRoom, IFNULL(p.score,0) as level, p.mark_by_leader as markByLeader from paper p, (select mu.id, mu.name as teacherName, mu.`role`, mu.subject, mu.work_id as workId from mark_user as mu where mu.work_id = ? and mu.`role` = 'MARKER' and (mu.mark_right = 1 or mu.mark_right = 2) and mu.subject = 'SM' and mu.enabled = 1) temp, student t where p.is_missing = true and p.work_id = ? and p.subject = 'SM' and t.exam_number = p.exam_number ";
|
|
|
+ String sxSql = "select temp.*, IFNULL(mt.`result`,0) as result, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, t.school, t.exam_room examRoom, IFNULL(p.score,0) as level,p.mark_by_leader as markByLeader from mark_task_score as mt , (select mu.id, mu.name as teacherName, mu.`role`, mu.subject, mu.work_id as workId from mark_user as mu where mu.work_id = ? and mu.`role` = 'MARKER'and (mu.mark_right = 1 or mu.mark_right = 2) and mu.subject = 'SX' and mu.enabled = 1) temp, paper p, student t where mt.marker_id = temp.id and mt.paper_id = p.id and t.exam_number = p.exam_number and mt.work_id = ? and mt.stage = " + MarkStage.SCORE + " and p.is_missing = false UNION ALL select temp.*, 0 as result, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, t.school, t.exam_room examRoom, IFNULL(p.score,0) as level, p.mark_by_leader as markByLeader from paper p, (select mu.id, mu.name as teacherName, mu.`role`, mu.subject, mu.work_id as workId from mark_user as mu where mu.work_id = ? and mu.`role` = 'MARKER' and (mu.mark_right = 1 or mu.mark_right = 2) and mu.subject = 'SX' and mu.enabled = 1) temp, student t where p.is_missing = true and p.work_id = ? and p.subject = 'SX' and t.exam_number = p.exam_number ";
|
|
|
//拼装问号
|
|
|
scSql = sqlUtil.sqlPrint(scSql, workId, workId, workId, workId);
|
|
|
smSql = sqlUtil.sqlPrint(smSql, workId, workId, workId, workId);
|