Răsfoiți Sursa

3.4.4 update-20250211成绩检查导出的格式与归档管理导出的成绩格式保持一致

xiaofei 4 luni în urmă
părinte
comite
53f85149b5

+ 9 - 9
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/dto/mark/score/StudentScoreDetailDto.java

@@ -30,9 +30,9 @@ public class StudentScoreDetailDto {
     private String majorName;
     private String teachClassName;
     private String className;
-    private String objectiveScore;
-    private String subjectiveScore;
-    private String totalScore;
+    private Double objectiveScore;
+    private Double subjectiveScore;
+    private Double totalScore;
     private String objectiveScoreList;
     private String subjectiveScoreList;
     private String checkUserId;
@@ -175,27 +175,27 @@ public class StudentScoreDetailDto {
         this.className = className;
     }
 
-    public String getObjectiveScore() {
+    public Double getObjectiveScore() {
         return objectiveScore;
     }
 
-    public void setObjectiveScore(String objectiveScore) {
+    public void setObjectiveScore(Double objectiveScore) {
         this.objectiveScore = objectiveScore;
     }
 
-    public String getSubjectiveScore() {
+    public Double getSubjectiveScore() {
         return subjectiveScore;
     }
 
-    public void setSubjectiveScore(String subjectiveScore) {
+    public void setSubjectiveScore(Double subjectiveScore) {
         this.subjectiveScore = subjectiveScore;
     }
 
-    public String getTotalScore() {
+    public Double getTotalScore() {
         return totalScore;
     }
 
-    public void setTotalScore(String totalScore) {
+    public void setTotalScore(Double totalScore) {
         this.totalScore = totalScore;
     }
 

+ 31 - 25
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkStudentServiceImpl.java

@@ -282,12 +282,12 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
             // 主观题检查标记
             scoreDetailDto.setSubjectiveCheckFlag(
                     !scoreDetailDto.getAbsent() && !scoreDetailDto.getOmrAbsent() && scoreDetailDto.getUpload() && ScanStatus.SCANNED.equals(scoreDetailDto.getScanStatus())
-                            && SubjectiveStatus.MARKED.equals(scoreDetailDto.getSubjectiveStatus()) && StringUtils.isNotBlank(scoreDetailDto.getSubjectiveScore()) && StringUtils.isNotBlank(
+                            && SubjectiveStatus.MARKED.equals(scoreDetailDto.getSubjectiveStatus()) && scoreDetailDto.getSubjectiveScore() != null && StringUtils.isNotBlank(
                             scoreDetailDto.getSubjectiveScoreList()));
             // 客观题检查标记
             scoreDetailDto.setObjectiveCheckFlag(
-                    !scoreDetailDto.getAbsent() && !scoreDetailDto.getManualAbsent() && !scoreDetailDto.getOmrAbsent() && scoreDetailDto.getUpload() && ScanStatus.SCANNED.equals(scoreDetailDto.getScanStatus()) && StringUtils.isNotBlank(
-                            scoreDetailDto.getObjectiveScore()) && StringUtils.isNotBlank(scoreDetailDto.getObjectiveScoreList()));
+                    !scoreDetailDto.getAbsent() && !scoreDetailDto.getManualAbsent() && !scoreDetailDto.getOmrAbsent() && scoreDetailDto.getUpload() && ScanStatus.SCANNED.equals(scoreDetailDto.getScanStatus())
+                            && scoreDetailDto.getObjectiveScore() != null && StringUtils.isNotBlank(scoreDetailDto.getObjectiveScoreList()));
 
             // 格式化分数
             scoreDetailDto.setObjectiveScore(Calculator.round(scoreDetailDto.getObjectiveScore(), 1));
@@ -354,9 +354,11 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
             }
 
             // 违纪状态
+            String breachDisplay = "-";
             if (BasicExamStudentStatusEnum.B.equals(scoreDetailDto.getStudentStatus()) || scoreDetailDto.getBreach() || scoreDetailDto.getOmrBreach() || scoreDetailDto.getManualBreach()) {
-                scoreDetailDto.setBreachDisplay("违纪");
+                breachDisplay = "违纪";
             }
+            scoreDetailDto.setBreachDisplay(breachDisplay);
         }
 
         if (!CollectionUtils.isEmpty(studentScoreDetailExportDtoSet)) {
@@ -367,45 +369,49 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
 
         HttpServletResponse response = ServletUtil.getResponse();
         //生成表头
-        String[] columnName = new String[]{"姓名", "学号", "学院", "教学班", "行政班", "课程代码", "课程名称", "状态", "违纪状态", "客观分", "主观分", "成绩"};
+        String[] columnName = new String[]{"学生姓名", "学号", "学院", "教学班", "行政班", "课程代码", "课程名称", "状态", "违纪状态", "客观分", "主观分", "成绩"};
         List<MarkQuestion> oQuestionList = markQuestionService.listQuestionByExamIdAndPaperNumberAndGroupNumber(examId, paperNumber, null, true);
         List<MarkQuestion> sQuestionList = markQuestionService.listQuestionByExamIdAndPaperNumberAndGroupNumber(examId, paperNumber, null, false);
         List<String> columnNameList = new ArrayList<>(Arrays.asList(columnName));
         for (MarkQuestion question : oQuestionList) {
             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) {
             columnNameList.add(question.getMainTitle() + " " + question.getMainNumber() + "-" + question.getSubNumber());
+            columnNameList.add(question.getMainTitle() + " " + question.getMainNumber() + "-" + question.getSubNumber() + "满分");
         }
         String[] columnNames = columnNameList.toArray(new String[0]);
         //生成动态内容
-        List<String[]> columnValues = new ArrayList<>();
+        List<CellValue[]> columnValues = new ArrayList<>();
         for (StudentScoreDetailDto s : studentScoreDetailDtoList) {
-            List<String> valueList = new ArrayList<>();
-            valueList.add(s.getStudentName());
-            valueList.add(s.getStudentCode());
-            valueList.add(s.getCollegeName());
-            valueList.add(s.getTeachClassName());
-            valueList.add(s.getClassName());
-            valueList.add(s.getCourseCode());
-            valueList.add(s.getCourseName());
+            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(s.getStudentStatusDisplay());
+            valueList.add(CellValue.of(s.getStudentStatusDisplay()));
 
             // 违纪状态
-            valueList.add(s.getBreachDisplay());
-            valueList.add(s.getObjectiveScore() == null ? "" : s.getObjectiveScore().toString());
-            valueList.add(s.getSubjectiveScore() == null ? "" : s.getSubjectiveScore().toString());
-            valueList.add(s.getTotalScore() == null ? "" : s.getTotalScore().toString());
+            valueList.add(CellValue.of(s.getBreachDisplay()));
+            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()));
             for (ScoreItem item : s.getScoreList(true, oQuestionList)) {
-                valueList.add(item.getAnswer());
-                valueList.add(item.getScore() == null ? "" : item.getScore().toString());
+                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()));
             }
             for (ScoreItem item : s.getScoreList(false, sQuestionList)) {
-                valueList.add(item.getScore().toString());
+                valueList.add(CellValue.of(item.getScore()));
+                valueList.add(item.getTotalScore() == null ? CellValue.of("") : CellValue.of(item.getTotalScore()));
             }
-            String[] columnValue = valueList.toArray(new String[valueList.size()]);
+            CellValue[] columnValue = valueList.toArray(new CellValue[valueList.size()]);
             columnValues.add(columnValue);
         }
         try {
@@ -414,7 +420,7 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
             response.setContentType("application/vnd.ms-excel");
             ServletOutputStream outputStream = response.getOutputStream();
             ExcelWriter writer = ExcelWriter.create(ExcelType.XLSX);
-            writer.writeStringArrays("成绩导出", null, columnNames, columnValues.listIterator());
+            writer.writeDataArrays("成绩导出", null, columnNames, columnValues.listIterator());
             writer.output(outputStream);
             outputStream.flush();
             outputStream.close();
@@ -1318,7 +1324,7 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
             s.setStudentStatusDisplay(studentStatusDisplay);
             valueList.add(CellValue.of(studentStatusDisplay));
 
-            String breachDisplay = "";
+            String breachDisplay = "-";
             // 违纪状态
             if (BasicExamStudentStatusEnum.B.equals(s.getStudentStatus()) || s.getBreach() || s.getOmrBreach() || s.getManualBreach()) {
                 breachDisplay = "违纪";