xiatian 5 лет назад
Родитель
Сommit
fda7467c5f

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

@@ -224,7 +224,7 @@ public class ExamStudentServiceImpl implements ExamStudentService {
         StringBuffer sql = new StringBuffer();
         sql.append("select id,exam_student_id,exam_id,course_id,course_code,course_level");
         if ((ExamType.ONLINE.name().equals(examBean.getExamType()) || ExamType.ONLINE_HOMEWORK.name().equals(examBean.getExamType()))&&query.getFinished() == null) {
-            sql.append(",case when finished = 1 OR EXISTS ( SELECT 1 FROM ec_oes_exam_record_data t2 WHERE t2.exam_student_id = t1.exam_student_id ) then 1 else 0 end finished");
+            sql.append(",case when finished = 1 OR t1.exam_student_id in ( SELECT t2.exam_student_id FROM ec_oes_exam_record_data t2 WHERE t2.exam_id="+query.getExamId()+"  ) then 1 else 0 end finished");
         }else {
             sql.append(",finished");
         }
@@ -286,7 +286,7 @@ public class ExamStudentServiceImpl implements ExamStudentService {
         StringBuffer sql = new StringBuffer();
         sql.append("select id,exam_student_id,exam_id,course_id,course_code,course_level");
         if ((ExamType.ONLINE.name().equals(examBean.getExamType()) || ExamType.ONLINE_HOMEWORK.name().equals(examBean.getExamType()))&&query.getFinished() == null) {
-            sql.append(",case when finished = 1 OR EXISTS ( SELECT 1 FROM ec_oes_exam_record_data t2 WHERE t2.exam_student_id = t1.exam_student_id ) then 1 else 0 end finished");
+            sql.append(",case when finished = 1 OR t1.exam_student_id in ( SELECT t2.exam_student_id FROM ec_oes_exam_record_data t2 WHERE t2.exam_id="+query.getExamId()+"  ) then 1 else 0 end finished");
         }else {
             sql.append(",finished");
         }
@@ -357,10 +357,10 @@ public class ExamStudentServiceImpl implements ExamStudentService {
             if (ExamType.ONLINE.name().equals(examType) || ExamType.ONLINE_HOMEWORK.name().equals(examType)) {
 //                sql.append(" and finished = " + query.getFinished());
                 if(query.getFinished().intValue()==1) {
-                    sql.append(" AND ( finished = 1 OR EXISTS ( SELECT 1 FROM ec_oes_exam_record_data t2 WHERE t2.exam_student_id = t1.exam_student_id ) )");
+                    sql.append(" AND ( finished = 1 OR t1.exam_student_id in ( SELECT t2.exam_student_id FROM ec_oes_exam_record_data t2 WHERE t2.exam_id="+query.getExamId()+"  )  )");
                 }
                 if(query.getFinished().intValue()==0) {
-                    sql.append(" AND ( finished = 0 and NOT EXISTS ( SELECT 1 FROM ec_oes_exam_record_data t2 WHERE t2.exam_student_id = t1.exam_student_id ) )");
+                    sql.append(" AND ( finished = 0 and t1.exam_student_id not in ( SELECT t2.exam_student_id FROM ec_oes_exam_record_data t2 WHERE t2.exam_id="+query.getExamId()+"  )  )");
                 }
             } else if (ExamType.OFFLINE.name().equals(examType)) {
                 //如果忽略是否上传答案时,只要是已抽题则认为已参加考试
@@ -595,7 +595,7 @@ public class ExamStudentServiceImpl implements ExamStudentService {
             StringBuffer finishsql = new StringBuffer();
             finishsql.append("select count(t1.id) from ec_oe_exam_student t1 where 1=1 ");
             finishsql.append(" and exam_id = " + examId);
-            finishsql.append(" AND ( finished = 1 OR EXISTS ( SELECT 1 FROM ec_oes_exam_record_data t2 WHERE t2.exam_student_id = t1.exam_student_id ) )");
+            finishsql.append(" AND ( finished = 1 OR t1.exam_student_id in ( SELECT t2.exam_student_id FROM ec_oes_exam_record_data t2 WHERE t2.exam_id="+examId+"  )  )");
             Integer finish=jdbcTemplate.queryForObject(finishsql.toString(), Integer.class);
             statistic.setFinished(finish);
             statistic.setUnFinished(total-finish);
@@ -644,7 +644,7 @@ public class ExamStudentServiceImpl implements ExamStudentService {
             if (orgId != null) {
                 finishsql.append(" and org_id = " + orgId);
             }
-            finishsql.append(" AND ( finished = 1 OR EXISTS ( SELECT 1 FROM ec_oes_exam_record_data t2 WHERE t2.exam_student_id = t1.exam_student_id ) )");
+            finishsql.append(" AND ( finished = 1 OR t1.exam_student_id in ( SELECT t2.exam_student_id FROM ec_oes_exam_record_data t2 WHERE t2.exam_id="+examId+"  ) )");
             finishsql.append(" group by t1.org_id ");
             
             List<ExamStudentOrgStatistic> finishList=jdbcTemplate.query(finishsql.toString(), new BeanPropertyRowMapper<ExamStudentOrgStatistic>(ExamStudentOrgStatistic.class));
@@ -760,7 +760,7 @@ public class ExamStudentServiceImpl implements ExamStudentService {
             if (courseId != null) {
                 finishsql.append(" and course_id = " + courseId);
             }
-            finishsql.append(" AND ( finished = 1 OR EXISTS ( SELECT 1 FROM ec_oes_exam_record_data t2 WHERE t2.exam_student_id = t1.exam_student_id ) )");
+            finishsql.append(" AND ( finished = 1 OR t1.exam_student_id in ( SELECT t2.exam_student_id FROM ec_oes_exam_record_data t2 WHERE t2.exam_id="+examId+"  ))");
             finishsql.append(" group by t1.course_id ");
             
             List<CourseProgressInfo> finishList=jdbcTemplate.query(finishsql.toString(), new BeanPropertyRowMapper<CourseProgressInfo>(CourseProgressInfo.class));