Browse Source

修复网考后台考试成绩统计之离线考试是否缺考时的一个陈年老bug

lideyin 5 years ago
parent
commit
58799dfc04

+ 1 - 0
examcloud-core-oe-admin-service/src/main/java/cn/com/qmth/examcloud/core/oe/admin/service/bean/examscore/ExamScoreEntityConvert.java

@@ -35,6 +35,7 @@ public class ExamScoreEntityConvert {
         }
         studentQuery.setStartLimit(scoreQuery.getStartLimit());
         studentQuery.setEndLimit(scoreQuery.getEndLimit());
+        studentQuery.setIgnoreUploadOfflineAnswer(true);
         return studentQuery;
     }
 

+ 11 - 1
examcloud-core-oe-admin-service/src/main/java/cn/com/qmth/examcloud/core/oe/admin/service/bean/examstudent/ExamStudentQuery.java

@@ -57,6 +57,9 @@ public class ExamStudentQuery implements JsonSerializable {
      */
     private SelectType selectType;
 
+    //是否忽略是否上传离线考试的答案
+    private Boolean ignoreUploadOfflineAnswer;
+
     public Integer getPageNo() {
         return pageNo;
     }
@@ -168,5 +171,12 @@ public class ExamStudentQuery implements JsonSerializable {
 	public void setInfoCollector(String infoCollector) {
 		this.infoCollector = infoCollector;
 	}
-    
+
+    public Boolean getIgnoreUploadOfflineAnswer() {
+        return ignoreUploadOfflineAnswer;
+    }
+
+    public void setIgnoreUploadOfflineAnswer(Boolean ignoreUploadOfflineAnswer) {
+        this.ignoreUploadOfflineAnswer = ignoreUploadOfflineAnswer;
+    }
 }

+ 12 - 6
examcloud-core-oe-admin-service/src/main/java/cn/com/qmth/examcloud/core/oe/admin/service/impl/ExamStudentServiceImpl.java

@@ -272,13 +272,19 @@ public class ExamStudentServiceImpl implements ExamStudentService {
             if (ExamType.ONLINE.name().equals(examType)) {
                 sql.append(" and finished = " + query.getFinished());
             } else if (ExamType.OFFLINE.name().equals(examType)) {
-                if (query.getFinished() == 0) {                    //未抽题
-                    sql.append(" and finished = 0");
-                } else if (query.getFinished() == 1) {                //已抽题未上传
-                    sql.append(" and finished = 1  and not exists (select id from ec_oe_exam_record_4_marking t2 where t1.exam_student_id = t2.exam_student_id)");
-                } else if (query.getFinished() == 2) {                //已抽题已上传
-                    sql.append(" and finished = 1  and  exists (select id from ec_oe_exam_record_4_marking t2 where t1.exam_student_id = t2.exam_student_id)");
+                //如果忽略是否上传答案时,只要是已抽题则认为已参加考试
+                if (true==query.getIgnoreUploadOfflineAnswer()){
+                    sql.append(" and finished = " + query.getFinished());
+                }else {
+                    if (query.getFinished() == 0) {                    //未抽题
+                        sql.append(" and finished = 0");
+                    } else if (query.getFinished() == 1) {                //已抽题未上传
+                        sql.append(" and finished = 1  and not exists (select id from ec_oe_exam_record_4_marking t2 where t1.exam_student_id = t2.exam_student_id)");
+                    } else if (query.getFinished() == 2) {                //已抽题已上传
+                        sql.append(" and finished = 1  and  exists (select id from ec_oe_exam_record_4_marking t2 where t1.exam_student_id = t2.exam_student_id)");
+                    }
                 }
+
             }
         }
         return sql;