1
0
Pārlūkot izejas kodu

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

luoshi 4 gadi atpakaļ
vecāks
revīzija
fe76566469

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

@@ -84,9 +84,8 @@ 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);
@@ -193,6 +192,7 @@ public class ScoreController extends BaseExamController {
             }
         }
         String fileName = "成绩单.xlsx";
+        String paperType = null;
         try {
             List<ExamStudentDTO> list = new LinkedList<>();
             // 可导出科目不为空时,才能执行查询操作
@@ -203,15 +203,17 @@ public class ScoreController extends BaseExamController {
                 query.setPageSize(Integer.MAX_VALUE);
                 query = studentService.findByQuery(query);
                 for (ExamStudent student : query.getResult()) {
-                    if (!student.isUpload() || student.isBreach() || student.isAbsent()) {
+                    if (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());
+                List<String> headerList = getOptionHeader(exam.getId(), query.getSubjectCode(), paperType);
                 ExportStudentExcel excel = new ExportStudentExcel("成绩单", headerList, ExamStudentDTO.class);
                 excel.setDataList(list, true);
                 excel.write(response, fileName).dispose();
@@ -226,10 +228,10 @@ public class ScoreController extends BaseExamController {
         }
     }
 
-    private List<String> getOptionHeader(int examId, String subjectCode) {
+    private List<String> getOptionHeader(int examId, String subjectCode, String paperType) {
         List<String> headerList = new ArrayList<String>();
-        List<ExamQuestion> oQuestions = questionService
-                .findByExamAndSubjectAndObjectiveGroupByNumber(examId, subjectCode, true);
+        List<ExamQuestion> oQuestions = questionService.findByExamAndSubjectAndObjectiveAndPaperType(examId,
+                subjectCode, true, paperType);
         List<ExamQuestion> sQestions = questionService.findByExamAndSubjectAndObjective(examId, subjectCode, false);
         for (ExamQuestion examQuestion : oQuestions) {
             headerList.add(getTitle(examQuestion) + "选项");
@@ -263,9 +265,8 @@ 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) {
@@ -280,8 +281,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) {
@@ -304,8 +305,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) {
@@ -320,8 +321,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()));
@@ -334,8 +335,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 + "评卷未完成";
         }