Bladeren bron

修复按科目导出成绩明细时,若首个考生未上传且科目启用了AB卷,构造excel标题时客观题按paperType=#条件读取为空的bug

luoshi 4 jaren geleden
bovenliggende
commit
3343805723
1 gewijzigde bestanden met toevoegingen van 19 en 20 verwijderingen
  1. 19 20
      stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/ScoreController.java

+ 19 - 20
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/ScoreController.java

@@ -84,8 +84,9 @@ public class ScoreController extends BaseExamController {
             buildPackageUrl(student);
             buildAnswerUrl(student);
         }
-        String exportMessage = StringUtils.isNotBlank(query.getSubjectCode()) ? enableExport(examId,
-                query.getSubjectCode()) : null;
+        String exportMessage = StringUtils.isNotBlank(query.getSubjectCode()) ?
+                enableExport(examId, query.getSubjectCode()) :
+                null;
         if (exportMessage != null) {
             view.addObject("exportMessage", exportMessage);
             view.addObject("enableExport", false);
@@ -192,7 +193,6 @@ public class ScoreController extends BaseExamController {
             }
         }
         String fileName = "成绩单.xlsx";
-        String paperType = null;
         try {
             List<ExamStudentDTO> list = new LinkedList<>();
             // 可导出科目不为空时,才能执行查询操作
@@ -203,17 +203,15 @@ public class ScoreController extends BaseExamController {
                 query.setPageSize(Integer.MAX_VALUE);
                 query = studentService.findByQuery(query);
                 for (ExamStudent student : query.getResult()) {
-                    if (student.isBreach() || student.isAbsent()) {
+                    if (!student.isUpload() || student.isBreach() || student.isAbsent()) {
                         student.setObjectiveScore(0d);
                         student.setSubjectiveScore(0d);
-                    } else if (paperType == null) {
-                        paperType = student.getPaperType();
                     }
                     list.add(new ExamStudentDTO(student));
                 }
             }
             if (StringUtils.isNotBlank(query.getSubjectCode())) {
-                List<String> headerList = getOptionHeader(exam.getId(), query.getSubjectCode(), paperType);
+                List<String> headerList = getOptionHeader(exam.getId(), query.getSubjectCode());
                 ExportStudentExcel excel = new ExportStudentExcel("成绩单", headerList, ExamStudentDTO.class);
                 excel.setDataList(list, true);
                 excel.write(response, fileName).dispose();
@@ -228,10 +226,10 @@ public class ScoreController extends BaseExamController {
         }
     }
 
-    private List<String> getOptionHeader(int examId, String subjectCode, String paperType) {
+    private List<String> getOptionHeader(int examId, String subjectCode) {
         List<String> headerList = new ArrayList<String>();
-        List<ExamQuestion> oQuestions = questionService.findByExamAndSubjectAndObjectiveAndPaperType(examId,
-                subjectCode, true, paperType);
+        List<ExamQuestion> oQuestions = questionService
+                .findByExamAndSubjectAndObjectiveGroupByNumber(examId, subjectCode, true);
         List<ExamQuestion> sQestions = questionService.findByExamAndSubjectAndObjective(examId, subjectCode, false);
         for (ExamQuestion examQuestion : oQuestions) {
             headerList.add(getTitle(examQuestion) + "选项");
@@ -265,8 +263,9 @@ public class ScoreController extends BaseExamController {
     private List<ScoreItem> buildScoreList(ExamStudent student) {
         List<ScoreItem> scoreList = new LinkedList<ScoreItem>();
 
-        List<ExamQuestion> oList = questionService.findByExamAndSubjectAndObjectiveAndPaperType(student.getExamId(),
-                student.getSubjectCode(), true, student.getPaperType());
+        List<ExamQuestion> oList = questionService
+                .findByExamAndSubjectAndObjectiveAndPaperType(student.getExamId(), student.getSubjectCode(), true,
+                        student.getPaperType());
         List<ScoreItem> list1 = student.getScoreList(true);
         int index = 0;
         for (ExamQuestion question : oList) {
@@ -281,8 +280,8 @@ public class ScoreController extends BaseExamController {
         }
         scoreList.addAll(list1);
 
-        List<ExamQuestion> sList = questionService.findByExamAndSubjectAndObjective(student.getExamId(),
-                student.getSubjectCode(), false);
+        List<ExamQuestion> sList = questionService
+                .findByExamAndSubjectAndObjective(student.getExamId(), student.getSubjectCode(), false);
         List<ScoreItem> list2 = student.getScoreList(false);
         index = 0;
         for (ExamQuestion question : sList) {
@@ -305,8 +304,8 @@ public class ScoreController extends BaseExamController {
         // student.setSheetUrls(PictureUrlBuilder
         // .getInnerSheetUrls(student.getExamId(), student.getExamNumber(),
         // student.getSheetCount()));
-        student.setSheetUrls(fileService.getSheetUris(student.getExamId(), student.getExamNumber(), 1,
-                student.getSheetCount()));
+        student.setSheetUrls(
+                fileService.getSheetUris(student.getExamId(), student.getExamNumber(), 1, student.getSheetCount()));
     }
 
     private void buildPackageUrl(ExamStudent student) {
@@ -321,8 +320,8 @@ public class ScoreController extends BaseExamController {
     private void buildAnswerUrl(ExamStudent student) {
         ExamSubject subject = subjectService.find(student.getExamId(), student.getSubjectCode());
         if (subject != null && subject.getAnswerFileType() != null) {
-            student.setAnswerUrl(fileService.getAnswerUri(subject.getExamId(), subject.getCode(),
-                    subject.getAnswerFileType()));
+            student.setAnswerUrl(
+                    fileService.getAnswerUri(subject.getExamId(), subject.getCode(), subject.getAnswerFileType()));
         }
         if (subject != null) {
             student.setSubjectRemark(StringUtils.trimToEmpty(subject.getRemark()));
@@ -335,8 +334,8 @@ public class ScoreController extends BaseExamController {
             return "该科目不存在";
         }
 
-        List<MarkGroup> groups = groupService.findByExamAndSubjectAndStatus(examId, subjectCode, MarkStatus.FORMAL,
-                MarkStatus.TRIAL);
+        List<MarkGroup> groups = groupService
+                .findByExamAndSubjectAndStatus(examId, subjectCode, MarkStatus.FORMAL, MarkStatus.TRIAL);
         if (groups != null && !groups.isEmpty()) {
             return subjectCode + "评卷未完成";
         }