Jelajahi Sumber

fixbug网考数据丢失处理

xiatian 5 tahun lalu
induk
melakukan
f81b9b9ba5

+ 3 - 1
examcloud-core-oe-student-dao/src/main/java/cn/com/qmth/examcloud/core/oe/student/dao/ExamRecordDataRepo.java

@@ -18,7 +18,9 @@ import cn.com.qmth.examcloud.core.oe.student.dao.entity.ExamRecordDataEntity;
  */
 @Repository
 public interface ExamRecordDataRepo extends JpaRepository<ExamRecordDataEntity, Long>, JpaSpecificationExecutor<ExamRecordDataEntity> {
-    @Query(value = "select *  from ec_oes_exam_record_data where (batch_num is null or batch_num!=?1) and id>?2  order by id limit ?3",nativeQuery = true)
+    @Query(value = "select *  from ec_oes_exam_record_data where (batch_num is null or batch_num!=?1) and id>?2  "
+    		+ " and (sync_status is null or sync_status ='UNSYNC') and exam_record_status!='EXAM_ERROR' "
+    		+ " order by id limit ?3 ",nativeQuery = true)
     List<ExamRecordDataEntity> getLimitExamRecordDataList(Long batchNum, Long startId, Integer size);
     
     @Modifying

+ 5 - 16
examcloud-core-oe-student-service/src/main/java/cn/com/qmth/examcloud/core/oe/student/service/impl/ExamRecordDataServiceImpl.java

@@ -189,22 +189,11 @@ public class ExamRecordDataServiceImpl implements ExamRecordDataService {
             throw new StatusException("1004", "size 最大为200");
         }
         List<Long> ids=new ArrayList<Long>();
-        for(;;) {
-	        List<ExamRecordDataEntity> list = examRecordDataRepo.getLimitExamRecordDataList(batchNum, startId, size);
-	        if(list!=null&&list.size()!=0) {
-	        	for(ExamRecordDataEntity e:list) {
-	        		if((e.getSyncStatus()==null||e.getSyncStatus().equals(SyncStatus.UNSYNC))&&!ExamRecordStatus.EXAM_ERROR.equals(e.getExamRecordStatus())) {
-	        			ids.add(e.getId());
-	        		}
-	        	}
-	        	if(ids.size()==0) {
-	        		startId=list.get(list.size()-1).getId();
-	        	}else {
-	        		break;
-	        	}
-	        }else {
-	        	break;
-	        }
+        List<ExamRecordDataEntity> list = examRecordDataRepo.getLimitExamRecordDataList(batchNum, startId, size);
+        if(list!=null&&list.size()!=0) {
+        	for(ExamRecordDataEntity e:list) {
+    			ids.add(e.getId());
+        	}
         }
         return ids;
     }