|
@@ -1317,91 +1317,184 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
|
|
|
SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
|
|
|
//生成表头
|
|
|
String[] columnName = new String[]{"姓名", "学号", "学院", "教学班", "行政班", "课程代码", "课程名称", "任课老师", "状态", "违纪状态", "客观分", "主观分", "成绩"};
|
|
|
- List<MarkQuestion> oQuestionList = markQuestionService.listByExamIdAndPaperNumberAndObjective(query.getExamId(), query.getPaperNumber(), true);
|
|
|
- List<MarkQuestion> sQuestionList = markQuestionService.listByExamIdAndPaperNumberAndObjective(query.getExamId(), query.getPaperNumber(), false);
|
|
|
- List<String> columnNameList = new ArrayList<>(Arrays.asList(columnName));
|
|
|
- Set<Integer> mainNumberSet = new HashSet<>();
|
|
|
- for (MarkQuestion question : oQuestionList) {
|
|
|
- if (!mainNumberSet.contains(question.getMainNumber())) {
|
|
|
- columnNameList.add(question.getMainTitle() + " " + question.getMainNumber() + "总分");
|
|
|
- mainNumberSet.add(question.getMainNumber());
|
|
|
- }
|
|
|
- columnNameList.add(question.getMainTitle() + " " + question.getMainNumber() + "-" + question.getSubNumber() + "选项");
|
|
|
- columnNameList.add(question.getMainTitle() + " " + question.getMainNumber() + "-" + question.getSubNumber() + "得分");
|
|
|
- columnNameList.add(question.getMainTitle() + " " + question.getMainNumber() + "-" + question.getSubNumber() + "满分");
|
|
|
- }
|
|
|
- for (MarkQuestion question : sQuestionList) {
|
|
|
- if (!mainNumberSet.contains(question.getMainNumber())) {
|
|
|
- columnNameList.add(question.getMainTitle() + " " + question.getMainNumber() + "总分");
|
|
|
- mainNumberSet.add(question.getMainNumber());
|
|
|
- }
|
|
|
- columnNameList.add(question.getMainTitle() + " " + question.getMainNumber() + "-" + question.getSubNumber() + "选项");
|
|
|
- columnNameList.add(question.getMainTitle() + " " + question.getMainNumber() + "-" + question.getSubNumber() + "满分");
|
|
|
- }
|
|
|
- String[] columnNames = columnNameList.toArray(new String[0]);
|
|
|
- // 使用成绩管理列表请求的数据权限
|
|
|
- DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(sysUser.getSchoolId(), sysUser.getId(), "/api/admin/mark/archive/score/list");
|
|
|
- List<ArchiveStudentVo> ret = baseMapper.studentList(sysUser.getSchoolId(), query, dpr);
|
|
|
|
|
|
//生成动态内容
|
|
|
List<CellValue[]> columnValues = new ArrayList<>();
|
|
|
- for (ArchiveStudentVo s : ret) {
|
|
|
- List<CellValue> valueList = new ArrayList<>();
|
|
|
- valueList.add(CellValue.of(s.getStudentName()));
|
|
|
- valueList.add(CellValue.of(s.getStudentCode()));
|
|
|
- valueList.add(CellValue.of(s.getCollegeName()));
|
|
|
- valueList.add(CellValue.of(s.getTeachClassName()));
|
|
|
- valueList.add(CellValue.of(s.getClassName()));
|
|
|
- valueList.add(CellValue.of(s.getCourseCode()));
|
|
|
- valueList.add(CellValue.of(s.getCourseName()));
|
|
|
- valueList.add(CellValue.of(s.getTeacherName()));
|
|
|
- String studentStatusDisplay = "";
|
|
|
- // 扫描状态
|
|
|
- if (BasicExamStudentStatusEnum.M.equals(s.getStudentStatus()) || s.getAbsent() || s.getOmrAbsent() || s.getManualAbsent()) {
|
|
|
- studentStatusDisplay = "缺考";
|
|
|
- } else if (ScanStatus.UNEXIST.equals(s.getScanStatus())) {
|
|
|
- studentStatusDisplay = ScanStatus.UNEXIST.getName();
|
|
|
- } else {
|
|
|
- studentStatusDisplay = "正常";
|
|
|
- }
|
|
|
- s.setStudentStatusDisplay(studentStatusDisplay);
|
|
|
- valueList.add(CellValue.of(studentStatusDisplay));
|
|
|
+ String[] columnNames;
|
|
|
+ if (markPaper.getArchive()) {
|
|
|
+ List<StudentObjectiveAnswerDto> oQuestionList = markArchiveStudentService.listStudentObjectiveAnswerDtoByExamIdAndPaperNumber(markPaper.getExamId(), markPaper.getPaperNumber());
|
|
|
+ List<TaskQuestion> sQuestionList = markArchiveStudentService.listTaskQuestionByExamIdAndPaperNumber(markPaper.getExamId(), markPaper.getPaperNumber());
|
|
|
+ List<String> columnNameList = new ArrayList<>(Arrays.asList(columnName));
|
|
|
+ Set<Integer> mainNumberSet = new HashSet<>();
|
|
|
+ for (StudentObjectiveAnswerDto question : oQuestionList) {
|
|
|
+ if (!mainNumberSet.contains(question.getMainNumber())) {
|
|
|
+ columnNameList.add(question.getTitle() + " " + question.getMainNumber() + "总分");
|
|
|
+ mainNumberSet.add(question.getMainNumber());
|
|
|
+ }
|
|
|
+ columnNameList.add(question.getTitle() + " " + question.getMainNumber() + "-" + question.getSubNumber() + "选项");
|
|
|
+ columnNameList.add(question.getTitle() + " " + question.getMainNumber() + "-" + question.getSubNumber() + "得分");
|
|
|
+ columnNameList.add(question.getTitle() + " " + question.getMainNumber() + "-" + question.getSubNumber() + "满分");
|
|
|
+ }
|
|
|
+ for (TaskQuestion question : sQuestionList) {
|
|
|
+ if (!mainNumberSet.contains(question.getMainNumber())) {
|
|
|
+ columnNameList.add(question.getTitle() + " " + question.getMainNumber() + "总分");
|
|
|
+ mainNumberSet.add(question.getMainNumber());
|
|
|
+ }
|
|
|
+ columnNameList.add(question.getTitle() + " " + question.getMainNumber() + "-" + question.getSubNumber() + "选项");
|
|
|
+ columnNameList.add(question.getTitle() + " " + question.getMainNumber() + "-" + question.getSubNumber() + "满分");
|
|
|
+ }
|
|
|
+ columnNames = columnNameList.toArray(new String[0]);
|
|
|
+ // 使用成绩管理列表请求的数据权限
|
|
|
+ DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(sysUser.getSchoolId(), sysUser.getId(), "/api/admin/mark/archive/score/list");
|
|
|
+ List<ArchiveStudentVo> ret = baseMapper.studentList(sysUser.getSchoolId(), query, dpr);
|
|
|
+
|
|
|
+ for (ArchiveStudentVo s : ret) {
|
|
|
+ List<CellValue> valueList = new ArrayList<>();
|
|
|
+ valueList.add(CellValue.of(s.getStudentName()));
|
|
|
+ valueList.add(CellValue.of(s.getStudentCode()));
|
|
|
+ valueList.add(CellValue.of(s.getCollegeName()));
|
|
|
+ valueList.add(CellValue.of(s.getTeachClassName()));
|
|
|
+ valueList.add(CellValue.of(s.getClassName()));
|
|
|
+ valueList.add(CellValue.of(s.getCourseCode()));
|
|
|
+ valueList.add(CellValue.of(s.getCourseName()));
|
|
|
+ valueList.add(CellValue.of(s.getTeacherName()));
|
|
|
+ String studentStatusDisplay = "";
|
|
|
+ // 扫描状态
|
|
|
+ if (BasicExamStudentStatusEnum.M.equals(s.getStudentStatus()) || s.getAbsent() || s.getOmrAbsent() || s.getManualAbsent()) {
|
|
|
+ studentStatusDisplay = "缺考";
|
|
|
+ } else if (ScanStatus.UNEXIST.equals(s.getScanStatus())) {
|
|
|
+ studentStatusDisplay = ScanStatus.UNEXIST.getName();
|
|
|
+ } else {
|
|
|
+ studentStatusDisplay = "正常";
|
|
|
+ }
|
|
|
+ s.setStudentStatusDisplay(studentStatusDisplay);
|
|
|
+ valueList.add(CellValue.of(studentStatusDisplay));
|
|
|
|
|
|
- String breachDisplay = "-";
|
|
|
- // 违纪状态
|
|
|
- if (BasicExamStudentStatusEnum.B.equals(s.getStudentStatus()) || s.getBreach() || s.getOmrBreach() || s.getManualBreach()) {
|
|
|
- breachDisplay = "违纪";
|
|
|
+ String breachDisplay = "-";
|
|
|
+ // 违纪状态
|
|
|
+ if (BasicExamStudentStatusEnum.B.equals(s.getStudentStatus()) || s.getBreach() || s.getOmrBreach() || s.getManualBreach()) {
|
|
|
+ breachDisplay = "违纪";
|
|
|
+ }
|
|
|
+ s.setBreachDisplay(breachDisplay);
|
|
|
+ valueList.add(CellValue.of(breachDisplay));
|
|
|
+
|
|
|
+ valueList.add(s.getObjectiveScore() == null ? CellValue.of("") : CellValue.of(s.getObjectiveScore()));
|
|
|
+ valueList.add(s.getSubjectiveScore() == null ? CellValue.of("") : CellValue.of(s.getSubjectiveScore()));
|
|
|
+ valueList.add(s.getTotalScore() == null ? CellValue.of("") : CellValue.of(s.getTotalScore()));
|
|
|
+ mainNumberSet = new HashSet<>();
|
|
|
+
|
|
|
+ MarkArchiveStudent markArchiveStudent = markArchiveStudentService.getById(s.getStudentId());
|
|
|
+ List<StudentObjectiveAnswerDto> objectQuestionList = JSON.parseArray(markArchiveStudent.getObjectiveQuestions(), StudentObjectiveAnswerDto.class);
|
|
|
+ List<TaskQuestion> subjectQuestionList = JSON.parseArray(markArchiveStudent.getSubjectiveQuestions(), TaskQuestion.class);
|
|
|
+ Map<Integer, Double> mainScoreMap = objectQuestionList.stream().collect(Collectors.groupingBy(
|
|
|
+ StudentObjectiveAnswerDto::getMainNumber, Collectors.summingDouble(StudentObjectiveAnswerDto::getScore)));
|
|
|
+ for (StudentObjectiveAnswerDto item : objectQuestionList) {
|
|
|
+ if (!mainNumberSet.contains(item.getMainNumber())) {
|
|
|
+ valueList.add(CellValue.of(mainScoreMap.get(item.getMainNumber())));
|
|
|
+ mainNumberSet.add(item.getMainNumber());
|
|
|
+ }
|
|
|
+ valueList.add(CellValue.of(item.getAnswer()));
|
|
|
+ valueList.add(item.getScore() == null ? CellValue.of("") : CellValue.of(item.getScore()));
|
|
|
+ valueList.add(item.getTotalScore() == null ? CellValue.of("") : CellValue.of(item.getTotalScore()));
|
|
|
+ }
|
|
|
+ mainScoreMap = subjectQuestionList.stream().collect(Collectors.groupingBy(
|
|
|
+ TaskQuestion::getMainNumber, Collectors.summingDouble(TaskQuestion::getMarkerScore)));
|
|
|
+ for (TaskQuestion item : subjectQuestionList) {
|
|
|
+ if (!mainNumberSet.contains(item.getMainNumber())) {
|
|
|
+ valueList.add(CellValue.of(mainScoreMap.get(item.getMainNumber())));
|
|
|
+ mainNumberSet.add(item.getMainNumber());
|
|
|
+ }
|
|
|
+ valueList.add(CellValue.of(item.getMarkerScore()));
|
|
|
+ valueList.add(CellValue.of(item.getMaxScore()));
|
|
|
+ }
|
|
|
+ CellValue[] columnValue = valueList.toArray(new CellValue[0]);
|
|
|
+ columnValues.add(columnValue);
|
|
|
}
|
|
|
- s.setBreachDisplay(breachDisplay);
|
|
|
- valueList.add(CellValue.of(breachDisplay));
|
|
|
+ } else {
|
|
|
+ List<MarkQuestion> oQuestionList = markQuestionService.listByExamIdAndPaperNumberAndObjective(query.getExamId(), query.getPaperNumber(), true);
|
|
|
+ List<MarkQuestion> sQuestionList = markQuestionService.listByExamIdAndPaperNumberAndObjective(query.getExamId(), query.getPaperNumber(), false);
|
|
|
+ List<String> columnNameList = new ArrayList<>(Arrays.asList(columnName));
|
|
|
+ Set<Integer> mainNumberSet = new HashSet<>();
|
|
|
+ for (MarkQuestion question : oQuestionList) {
|
|
|
+ if (!mainNumberSet.contains(question.getMainNumber())) {
|
|
|
+ columnNameList.add(question.getMainTitle() + " " + question.getMainNumber() + "总分");
|
|
|
+ mainNumberSet.add(question.getMainNumber());
|
|
|
+ }
|
|
|
+ columnNameList.add(question.getMainTitle() + " " + question.getMainNumber() + "-" + question.getSubNumber() + "选项");
|
|
|
+ columnNameList.add(question.getMainTitle() + " " + question.getMainNumber() + "-" + question.getSubNumber() + "得分");
|
|
|
+ columnNameList.add(question.getMainTitle() + " " + question.getMainNumber() + "-" + question.getSubNumber() + "满分");
|
|
|
+ }
|
|
|
+ for (MarkQuestion question : sQuestionList) {
|
|
|
+ if (!mainNumberSet.contains(question.getMainNumber())) {
|
|
|
+ columnNameList.add(question.getMainTitle() + " " + question.getMainNumber() + "总分");
|
|
|
+ mainNumberSet.add(question.getMainNumber());
|
|
|
+ }
|
|
|
+ columnNameList.add(question.getMainTitle() + " " + question.getMainNumber() + "-" + question.getSubNumber() + "选项");
|
|
|
+ columnNameList.add(question.getMainTitle() + " " + question.getMainNumber() + "-" + question.getSubNumber() + "满分");
|
|
|
+ }
|
|
|
+ columnNames = columnNameList.toArray(new String[0]);
|
|
|
+ // 使用成绩管理列表请求的数据权限
|
|
|
+ DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(sysUser.getSchoolId(), sysUser.getId(), "/api/admin/mark/archive/score/list");
|
|
|
+ List<ArchiveStudentVo> ret = baseMapper.studentList(sysUser.getSchoolId(), query, dpr);
|
|
|
+
|
|
|
+ for (ArchiveStudentVo s : ret) {
|
|
|
+ List<CellValue> valueList = new ArrayList<>();
|
|
|
+ valueList.add(CellValue.of(s.getStudentName()));
|
|
|
+ valueList.add(CellValue.of(s.getStudentCode()));
|
|
|
+ valueList.add(CellValue.of(s.getCollegeName()));
|
|
|
+ valueList.add(CellValue.of(s.getTeachClassName()));
|
|
|
+ valueList.add(CellValue.of(s.getClassName()));
|
|
|
+ valueList.add(CellValue.of(s.getCourseCode()));
|
|
|
+ valueList.add(CellValue.of(s.getCourseName()));
|
|
|
+ valueList.add(CellValue.of(s.getTeacherName()));
|
|
|
+ String studentStatusDisplay = "";
|
|
|
+ // 扫描状态
|
|
|
+ if (BasicExamStudentStatusEnum.M.equals(s.getStudentStatus()) || s.getAbsent() || s.getOmrAbsent() || s.getManualAbsent()) {
|
|
|
+ studentStatusDisplay = "缺考";
|
|
|
+ } else if (ScanStatus.UNEXIST.equals(s.getScanStatus())) {
|
|
|
+ studentStatusDisplay = ScanStatus.UNEXIST.getName();
|
|
|
+ } else {
|
|
|
+ studentStatusDisplay = "正常";
|
|
|
+ }
|
|
|
+ s.setStudentStatusDisplay(studentStatusDisplay);
|
|
|
+ valueList.add(CellValue.of(studentStatusDisplay));
|
|
|
|
|
|
- valueList.add(s.getObjectiveScore() == null ? CellValue.of("") : CellValue.of(s.getObjectiveScore()));
|
|
|
- valueList.add(s.getSubjectiveScore() == null ? CellValue.of("") : CellValue.of(s.getSubjectiveScore()));
|
|
|
- valueList.add(s.getTotalScore() == null ? CellValue.of("") : CellValue.of(s.getTotalScore()));
|
|
|
- mainNumberSet = new HashSet<>();
|
|
|
- Map<Integer, Double> mainScoreMap = s.getScoreList(true, oQuestionList).stream().collect(Collectors.groupingBy(
|
|
|
- ScoreItem::getMainNumber, Collectors.summingDouble(ScoreItem::getScore)));
|
|
|
- for (ScoreItem item : s.getScoreList(true, oQuestionList)) {
|
|
|
- if (!mainNumberSet.contains(item.getMainNumber())) {
|
|
|
- valueList.add(CellValue.of(mainScoreMap.get(item.getMainNumber())));
|
|
|
- mainNumberSet.add(item.getMainNumber());
|
|
|
+ String breachDisplay = "-";
|
|
|
+ // 违纪状态
|
|
|
+ if (BasicExamStudentStatusEnum.B.equals(s.getStudentStatus()) || s.getBreach() || s.getOmrBreach() || s.getManualBreach()) {
|
|
|
+ breachDisplay = "违纪";
|
|
|
}
|
|
|
- valueList.add(CellValue.of(item.getAnswer()));
|
|
|
- valueList.add(item.getScore() == null ? CellValue.of("") : CellValue.of(item.getScore()));
|
|
|
- valueList.add(item.getTotalScore() == null ? CellValue.of("") : CellValue.of(item.getTotalScore()));
|
|
|
- }
|
|
|
- mainScoreMap = s.getScoreList(false, sQuestionList).stream().collect(Collectors.groupingBy(
|
|
|
- ScoreItem::getMainNumber, Collectors.summingDouble(ScoreItem::getScore)));
|
|
|
- for (ScoreItem item : s.getScoreList(false, sQuestionList)) {
|
|
|
- if (!mainNumberSet.contains(item.getMainNumber())) {
|
|
|
- valueList.add(CellValue.of(mainScoreMap.get(item.getMainNumber())));
|
|
|
- mainNumberSet.add(item.getMainNumber());
|
|
|
+ s.setBreachDisplay(breachDisplay);
|
|
|
+ valueList.add(CellValue.of(breachDisplay));
|
|
|
+
|
|
|
+ valueList.add(s.getObjectiveScore() == null ? CellValue.of("") : CellValue.of(s.getObjectiveScore()));
|
|
|
+ valueList.add(s.getSubjectiveScore() == null ? CellValue.of("") : CellValue.of(s.getSubjectiveScore()));
|
|
|
+ valueList.add(s.getTotalScore() == null ? CellValue.of("") : CellValue.of(s.getTotalScore()));
|
|
|
+ mainNumberSet = new HashSet<>();
|
|
|
+ Map<Integer, Double> mainScoreMap = s.getScoreList(true, oQuestionList).stream().collect(Collectors.groupingBy(
|
|
|
+ ScoreItem::getMainNumber, Collectors.summingDouble(ScoreItem::getScore)));
|
|
|
+ for (ScoreItem item : s.getScoreList(true, oQuestionList)) {
|
|
|
+ if (!mainNumberSet.contains(item.getMainNumber())) {
|
|
|
+ valueList.add(CellValue.of(mainScoreMap.get(item.getMainNumber())));
|
|
|
+ mainNumberSet.add(item.getMainNumber());
|
|
|
+ }
|
|
|
+ valueList.add(CellValue.of(item.getAnswer()));
|
|
|
+ valueList.add(item.getScore() == null ? CellValue.of("") : CellValue.of(item.getScore()));
|
|
|
+ valueList.add(item.getTotalScore() == null ? CellValue.of("") : CellValue.of(item.getTotalScore()));
|
|
|
}
|
|
|
- valueList.add(CellValue.of(item.getScore()));
|
|
|
- valueList.add(item.getTotalScore() == null ? CellValue.of("") : CellValue.of(item.getTotalScore()));
|
|
|
+ mainScoreMap = s.getScoreList(false, sQuestionList).stream().collect(Collectors.groupingBy(
|
|
|
+ ScoreItem::getMainNumber, Collectors.summingDouble(ScoreItem::getScore)));
|
|
|
+ for (ScoreItem item : s.getScoreList(false, sQuestionList)) {
|
|
|
+ if (!mainNumberSet.contains(item.getMainNumber())) {
|
|
|
+ valueList.add(CellValue.of(mainScoreMap.get(item.getMainNumber())));
|
|
|
+ mainNumberSet.add(item.getMainNumber());
|
|
|
+ }
|
|
|
+ valueList.add(CellValue.of(item.getScore()));
|
|
|
+ valueList.add(item.getTotalScore() == null ? CellValue.of("") : CellValue.of(item.getTotalScore()));
|
|
|
+ }
|
|
|
+ CellValue[] columnValue = valueList.toArray(new CellValue[0]);
|
|
|
+ columnValues.add(columnValue);
|
|
|
}
|
|
|
- CellValue[] columnValue = valueList.toArray(new CellValue[0]);
|
|
|
- columnValues.add(columnValue);
|
|
|
}
|
|
|
|
|
|
String rootPath = null;
|