caozixuan 4 years ago
parent
commit
c20f4fdb3f

+ 13 - 0
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/entity/TAPaperStruct.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableId;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import com.qmth.teachcloud.common.contant.SystemConstant;
+import com.qmth.teachcloud.report.business.enums.PaperStructJudgeEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
@@ -114,6 +115,10 @@ public class TAPaperStruct implements Serializable {
     @TableField(value = "validity")
     private BigDecimal validity;
 
+    @ApiModelProperty(value = "试卷结构每道题目正确(全对),错误枚举")
+    @TableField(value = "paper_struct_judge")
+    private PaperStructJudgeEnum paperStructJudge;
+
     public static long getSerialVersionUID() {
         return serialVersionUID;
     }
@@ -297,4 +302,12 @@ public class TAPaperStruct implements Serializable {
     public void setValidity(BigDecimal validity) {
         this.validity = validity;
     }
+
+    public PaperStructJudgeEnum getPaperStructJudge() {
+        return paperStructJudge;
+    }
+
+    public void setPaperStructJudge(PaperStructJudgeEnum paperStructJudge) {
+        this.paperStructJudge = paperStructJudge;
+    }
 }

+ 22 - 0
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/enums/PaperStructJudgeEnum.java

@@ -0,0 +1,22 @@
+package com.qmth.teachcloud.report.business.enums;
+
+/**
+ * @Description: 试卷结构每道题目正确(全对),错误枚举
+ * @Author: CaoZixuan
+ * @Date: 2021-07-19
+ */
+public enum PaperStructJudgeEnum {
+    ALL_CORRECT("全对"),
+    NOT_QUITE_RIGHT("不完全正确的"),
+    ;
+
+    PaperStructJudgeEnum(String title) {
+        this.title = title;
+    }
+
+    private final String title;
+
+    public String getTitle() {
+        return title;
+    }
+}

+ 9 - 2
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/impl/AnalyzeForReportServiceImpl.java

@@ -893,10 +893,17 @@ public class AnalyzeForReportServiceImpl implements AnalyzeForReportService {
                     if (oneQuestionAnswerDetailList.size() == 0){
                         System.out.println("异常");
                     }
+                    BigDecimal fullScore = paperStruct.getFullScore();
+                    PaperStructJudgeEnum paperStructJudgeEnum;
+                    if (oneQuestionAnswerDetailList.stream().anyMatch(e -> fullScore.compareTo(e.getScore()) != 0)){
+                        paperStructJudgeEnum = PaperStructJudgeEnum.NOT_QUITE_RIGHT;
+                    }else {
+                        paperStructJudgeEnum = PaperStructJudgeEnum.ALL_CORRECT;
+                    }
 
                     DoubleSummaryStatistics descriptiveStatistics = oneQuestionAnswerDetailList.stream()
                             .collect(Collectors.summarizingDouble(e -> e.getScore().doubleValue()));
-                    BigDecimal fullScore = paperStruct.getFullScore();
+
                     double scoreAvg = descriptiveStatistics.getAverage();
                     BigDecimal scoreRate = BigDecimal.valueOf(scoreAvg).divide(fullScore, 4, BigDecimal.ROUND_HALF_UP);
                     scoreRate = scoreRate.setScale(1, BigDecimal.ROUND_HALF_UP);
@@ -923,10 +930,10 @@ public class AnalyzeForReportServiceImpl implements AnalyzeForReportService {
                     taPaperStruct.setKnowledgeDimension(paperStruct.getKnowledgeDimension());
                     taPaperStruct.setAbilityDimension(paperStruct.getAbilityDimension());
                     taPaperStruct.setLiteracyDimension(paperStruct.getLiteracyDimension());
-
                     taPaperStruct.setScoreRate(scoreRate);
                     taPaperStruct.setDifficult(difficult);
                     taPaperStruct.setValidity(BigDecimal.valueOf(validity));
+                    taPaperStruct.setPaperStructJudge(paperStructJudgeEnum);
                     taPaperStructList.add(taPaperStruct);
                 }
             }

+ 2 - 1
teachcloud-report/src/main/java/com/qmth/teachcloud/report/api/BasicDatasourceController.java

@@ -563,6 +563,7 @@ public class BasicDatasourceController {
             String college = (String) map.get(ExamCloudDataEnum.COLLEGE.getName()); //学院
             String className = (String) map.get(ExamCloudDataEnum.CLASS_NAME.getName()); //班级名称
             String teacher = (String) map.get(ExamCloudDataEnum.TEACHER.getName()); //教师
+            // 缺考状态 2 -> 缺考 ; 3 -> 违纪
             int status = (int) map.get(ExamCloudDataEnum.STATUS.getName()); //学生考试状态
             String totalScore = (String) map.get(ExamCloudDataEnum.TOTAL_SCORE.getName()); //考生总分
             String objectiveScore = (String) map.get(ExamCloudDataEnum.OBJECTIVE_SCORE.getName()); //客观题总分
@@ -638,7 +639,7 @@ public class BasicDatasourceController {
                     tbExamStudent.setTeacherId(0L);
                 }
                 tbExamStudent.setTicketNumber(examNumber);
-                tbExamStudent.setAbsent(status == 2);
+                tbExamStudent.setAbsent(status == 2 || status == 3);
                 // 全部设置为本届
                 tbExamStudent.setStudentCurrent(true);
                 tbExamStudentList.add(tbExamStudent);

+ 2 - 2
teachcloud-report/src/test/java/com/qmth/teachcloud/report/AnalyzeForStudentServiceTest.java

@@ -64,8 +64,8 @@ public class AnalyzeForStudentServiceTest {
 
     @Test
     public void buildAnalyzePaperStruct() {
-        Long examId = 1L;
-        String courseCode = "1013";
+        Long examId = 2L;
+        String courseCode = null;
         System.out.println(analyzeForReportService.buildAnalyzePaperStruct(examId,courseCode));
     }