Ver Fonte

考试状态junk和提交答案接口校验

wangliang há 2 anos atrás
pai
commit
ea06c2466b

+ 1 - 1
themis-admin/src/main/java/com/qmth/themis/admin/api/TIeInvigilateCallMobileController.java

@@ -253,7 +253,7 @@ public class TIeInvigilateCallMobileController {
         String liveUrl = SystemConstant.setStreamId(sysConfig.getConfigValue(), recordId, source);
         ExamRecordStatusEnum statusEnum = ExamRecordCacheUtil.getStatus(recordId);
         if (Objects.isNull(statusEnum) || Objects.equals(statusEnum, ExamRecordStatusEnum.FINISHED) || Objects
-                .equals(statusEnum, ExamRecordStatusEnum.PERSISTED)) {
+                .equals(statusEnum, ExamRecordStatusEnum.PERSISTED) || statusEnum == ExamRecordStatusEnum.JUNK) {
             return ResultUtil.ok(true);
         } else if (Objects.isNull(ExamRecordCacheUtil.getMonitorStatus(recordId, source))) {
             throw new BusinessException("推流状态为空");

+ 11 - 8
themis-business/src/main/java/com/qmth/themis/business/service/impl/TEExamServiceImpl.java

@@ -255,7 +255,7 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
                 .eq(TOeExamRecord::getExamActivityId, activityId).eq(TOeExamRecord::getExamStudentId, examStudentId)
                 .eq(TOeExamRecord::getStatus, ExamRecordStatusEnum.FIRST_PREPARE);
         TOeExamRecord tOeExamRecord = toeExamRecordService.getOne(tOeExamRecordQueryWrapper);
-        if (Objects.nonNull(tOeExamRecord) && Objects.nonNull(tOeExamRecord.getStatus()) && (ExamRecordStatusEnum.FINISHED == tOeExamRecord.getStatus() || ExamRecordStatusEnum.PERSISTED == tOeExamRecord.getStatus())) {
+        if (Objects.nonNull(tOeExamRecord) && Objects.nonNull(tOeExamRecord.getStatus()) && (ExamRecordStatusEnum.FINISHED == tOeExamRecord.getStatus() || ExamRecordStatusEnum.PERSISTED == tOeExamRecord.getStatus()) || tOeExamRecord.getStatus() == ExamRecordStatusEnum.JUNK) {
             throw new BusinessException(ExceptionResultEnum.EXAM_FINISH);
         }
         Long unFinishedRecordId = Objects.nonNull(tOeExamRecord) ? tOeExamRecord.getId() : null;
@@ -433,7 +433,7 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
             throw new BusinessException(ExceptionResultEnum.NOT_FOUND_EXAM_ACTIVITY);
         }
         ExamRecordStatusEnum sta = ExamRecordCacheUtil.getStatus(recordId);
-        if (ExamRecordStatusEnum.FINISHED.equals(sta) || ExamRecordStatusEnum.PERSISTED.equals(sta)) {
+        if (ExamRecordStatusEnum.FINISHED.equals(sta) || ExamRecordStatusEnum.PERSISTED.equals(sta) || sta == ExamRecordStatusEnum.JUNK) {
             throw new BusinessException(ExceptionResultEnum.EXAM_FINISH);
         }
         Date now = new Date();
@@ -617,7 +617,7 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
             throw new BusinessException(ExceptionResultEnum.EXAM_ID_NOT_EQUALY);
         }
         ExamRecordStatusEnum sta = ExamRecordCacheUtil.getStatus(recordId);
-        if (ExamRecordStatusEnum.FINISHED.equals(sta) || ExamRecordStatusEnum.PERSISTED.equals(sta)) {
+        if (ExamRecordStatusEnum.FINISHED.equals(sta) || ExamRecordStatusEnum.PERSISTED.equals(sta) || sta == ExamRecordStatusEnum.JUNK) {
             throw new BusinessException(ExceptionResultEnum.EXAM_FINISH);
         }
         ExamStudentPaperStructCacheBean struct = new ExamStudentPaperStructCacheBean();
@@ -650,8 +650,11 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
             throw new BusinessException(ExceptionResultEnum.EXAM_ID_NOT_EQUALY);
         }
         ExamRecordStatusEnum sta = ExamRecordCacheUtil.getStatus(recordId);
-        if (ExamRecordStatusEnum.FINISHED.equals(sta) || ExamRecordStatusEnum.PERSISTED.equals(sta)) {
+        WebsocketStatusEnum websocketStatusEnum = ExamRecordCacheUtil.getClientWebsocketStatus(recordId);
+        if (ExamRecordStatusEnum.FINISHED.equals(sta) || ExamRecordStatusEnum.PERSISTED.equals(sta) || sta == ExamRecordStatusEnum.JUNK) {
             throw new BusinessException(ExceptionResultEnum.EXAM_FINISH);
+        } else if (sta != ExamRecordStatusEnum.ANSWERING || (Objects.nonNull(websocketStatusEnum) && websocketStatusEnum == WebsocketStatusEnum.OFF_LINE)) {
+            throw new BusinessException(ExceptionResultEnum.EXAM_STATUS_ERROR);
         }
         ExamStudentAnswerCacheBean answerCache = (ExamStudentAnswerCacheBean) redisUtil
                 .get(RedisKeyHelper.examAnswerKey(recordId),
@@ -843,7 +846,7 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
             throw new BusinessException(ExceptionResultEnum.EXAM_ID_NOT_EQUALY);
         }
         ExamRecordStatusEnum sta = ExamRecordCacheUtil.getStatus(recordId);
-        if (ExamRecordStatusEnum.FINISHED.equals(sta) || ExamRecordStatusEnum.PERSISTED.equals(sta)) {
+        if (ExamRecordStatusEnum.FINISHED.equals(sta) || ExamRecordStatusEnum.PERSISTED.equals(sta) || sta == ExamRecordStatusEnum.JUNK) {
             throw new BusinessException(ExceptionResultEnum.EXAM_FINISH);
         }
         // 音频剩余播放次数缓存
@@ -872,7 +875,7 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
             throw new BusinessException(ExceptionResultEnum.EXAM_ID_NOT_EQUALY);
         }
         ExamRecordStatusEnum sta = ExamRecordCacheUtil.getStatus(recordId);
-        if (ExamRecordStatusEnum.FINISHED.equals(sta) || ExamRecordStatusEnum.PERSISTED.equals(sta)) {
+        if (ExamRecordStatusEnum.FINISHED.equals(sta) || ExamRecordStatusEnum.PERSISTED.equals(sta) || sta == ExamRecordStatusEnum.JUNK) {
             throw new BusinessException(ExceptionResultEnum.EXAM_FINISH);
         }
 
@@ -935,7 +938,7 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
             throw new BusinessException(ExceptionResultEnum.NOT_FOUND_EXAM_PAPER);
         }
         ExamRecordStatusEnum sta = ExamRecordCacheUtil.getStatus(recordId);
-        if (ExamRecordStatusEnum.FINISHED.equals(sta) || ExamRecordStatusEnum.PERSISTED.equals(sta)) {
+        if (ExamRecordStatusEnum.FINISHED.equals(sta) || ExamRecordStatusEnum.PERSISTED.equals(sta) || sta == ExamRecordStatusEnum.JUNK) {
             throw new BusinessException(ExceptionResultEnum.EXAM_FINISH);
         }
 
@@ -1134,7 +1137,7 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
         ExamCacheBean exam = getExamCacheBeanNative(es.getExamId());
         ret.setPostNotice(exam.getPostNotice());
         ExamRecordStatusEnum sta = ExamRecordCacheUtil.getStatus(recordId);
-        if (ExamRecordStatusEnum.FINISHED.equals(sta) || ExamRecordStatusEnum.PERSISTED.equals(sta)) {
+        if (ExamRecordStatusEnum.FINISHED.equals(sta) || ExamRecordStatusEnum.PERSISTED.equals(sta) || sta == ExamRecordStatusEnum.JUNK) {
             ret.setStatus(FinishExamResultEnum.NORMAL);
             return ret;
         }

+ 2 - 2
themis-business/src/main/java/com/qmth/themis/business/service/impl/TEMobileServiceImpl.java

@@ -92,7 +92,7 @@ public class TEMobileServiceImpl implements TEMobileService {
             throw new BusinessException(ExceptionResultEnum.NOT_FOUND_EXAM_STUDENT);
         }
         ExamRecordStatusEnum sta = ExamRecordCacheUtil.getStatus(ret.getRecordId());
-        if (ExamRecordStatusEnum.FINISHED.equals(sta) || ExamRecordStatusEnum.PERSISTED.equals(sta)) {
+        if (ExamRecordStatusEnum.FINISHED.equals(sta) || ExamRecordStatusEnum.PERSISTED.equals(sta) || sta == ExamRecordStatusEnum.JUNK) {
             throw new BusinessException(ExceptionResultEnum.EXAM_FINISH);
         }
         String deviceId = ServletUtil.getRequestDeviceId();
@@ -206,7 +206,7 @@ public class TEMobileServiceImpl implements TEMobileService {
             throw new BusinessException(ExceptionResultEnum.EXAM_ID_NOT_EQUALY);
         }
         ExamRecordStatusEnum sta = ExamRecordCacheUtil.getStatus(recordId);
-        if (ExamRecordStatusEnum.FINISHED.equals(sta) || ExamRecordStatusEnum.PERSISTED.equals(sta)) {
+        if (ExamRecordStatusEnum.FINISHED.equals(sta) || ExamRecordStatusEnum.PERSISTED.equals(sta) || sta == ExamRecordStatusEnum.JUNK) {
             throw new BusinessException(ExceptionResultEnum.EXAM_FINISH);
         }
         ExamStudentAnswerCacheBean answerCache = (ExamStudentAnswerCacheBean) redisUtil

+ 4 - 4
themis-exam/src/main/java/com/qmth/themis/exam/api/TEExamController.java

@@ -136,7 +136,7 @@ public class TEExamController {
         } else if (Objects.nonNull(examStatus) && Objects.equals(ExamRecordStatusEnum.FIRST_PREPARE, examStatus)) {
             ExamConstant.sendExamStopMsg(recordId, false, true);
         } else {
-            if (Objects.nonNull(examStatus) && (ExamRecordStatusEnum.FINISHED == examStatus || ExamRecordStatusEnum.PERSISTED == examStatus)) {
+            if (Objects.nonNull(examStatus) && (ExamRecordStatusEnum.FINISHED == examStatus || ExamRecordStatusEnum.PERSISTED == examStatus || ExamRecordStatusEnum.JUNK == examStatus)) {
                 throw new BusinessException(ExceptionResultEnum.EXAM_FINISH);
             } else {
                 throw new BusinessException(ExceptionResultEnum.EXAM_STATUS_ERROR);
@@ -372,7 +372,7 @@ public class TEExamController {
         }
 
         if (Objects.nonNull(examRecordStatusEnum) && (ExamRecordStatusEnum.FINISHED == examRecordStatusEnum ||
-                ExamRecordStatusEnum.PERSISTED == examRecordStatusEnum)) {
+                ExamRecordStatusEnum.PERSISTED == examRecordStatusEnum || ExamRecordStatusEnum.JUNK == examRecordStatusEnum)) {
             throw new BusinessException(ExceptionResultEnum.EXAM_FINISH);
         }
         if (Objects.nonNull(examRecordStatusEnum) && (
@@ -392,7 +392,7 @@ public class TEExamController {
         }
         ExamRecordStatusEnum examRecordStatusEnum = ExamRecordCacheUtil.getStatus(param.getRecordId());
         if (Objects.nonNull(examRecordStatusEnum) && (ExamRecordStatusEnum.FINISHED == examRecordStatusEnum ||
-                ExamRecordStatusEnum.PERSISTED == examRecordStatusEnum)) {
+                ExamRecordStatusEnum.PERSISTED == examRecordStatusEnum || ExamRecordStatusEnum.JUNK == examRecordStatusEnum)) {
             throw new BusinessException(ExceptionResultEnum.EXAM_FINISH);
         }
 
@@ -413,7 +413,7 @@ public class TEExamController {
         }
         ExamRecordStatusEnum examRecordStatusEnum = ExamRecordCacheUtil.getStatus(param.getRecordId());
         if (Objects.nonNull(examRecordStatusEnum) && (ExamRecordStatusEnum.FINISHED == examRecordStatusEnum ||
-                ExamRecordStatusEnum.PERSISTED == examRecordStatusEnum)) {
+                ExamRecordStatusEnum.PERSISTED == examRecordStatusEnum || ExamRecordStatusEnum.JUNK == examRecordStatusEnum)) {
             throw new BusinessException(ExceptionResultEnum.EXAM_FINISH);
         }
 

+ 1 - 1
themis-exam/src/main/java/com/qmth/themis/exam/api/TEMobileController.java

@@ -120,7 +120,7 @@ public class TEMobileController {
 //        if (ExamRecordStatusEnum.FIRST_PREPARE.equals(sta)) {
 //            throw new BusinessException("该考试未开始答题");
 //        }
-        if (ExamRecordStatusEnum.FINISHED.equals(sta) || ExamRecordStatusEnum.PERSISTED.equals(sta)) {
+        if (ExamRecordStatusEnum.FINISHED.equals(sta) || ExamRecordStatusEnum.PERSISTED.equals(sta) || sta == ExamRecordStatusEnum.JUNK) {
             throw new BusinessException(ExceptionResultEnum.NOT_FOUND_EXAM_STUDENT);
         }
 

+ 1 - 1
themis-exam/src/main/java/com/qmth/themis/exam/api/TIeInvigilateCallMobileController.java

@@ -263,7 +263,7 @@ public class TIeInvigilateCallMobileController {
         MonitorVideoSourceEnum source = MonitorVideoSourceEnum.valueOf(String.valueOf(mapParameter.get(Constants.HEADER_SOURCE)));
         //获取考试记录缓存
         ExamRecordStatusEnum statusEnum = ExamRecordCacheUtil.getStatus(recordId);
-        if (Objects.isNull(statusEnum) || Objects.equals(statusEnum, ExamRecordStatusEnum.FINISHED) || Objects.equals(statusEnum, ExamRecordStatusEnum.PERSISTED)) {
+        if (Objects.isNull(statusEnum) || Objects.equals(statusEnum, ExamRecordStatusEnum.FINISHED) || Objects.equals(statusEnum, ExamRecordStatusEnum.PERSISTED) || statusEnum == ExamRecordStatusEnum.JUNK) {
             return ResultUtil.ok(Collections.singletonMap(SystemConstant.UPDATE_TIME, System.currentTimeMillis()));
         } else if (Objects.isNull(ExamRecordCacheUtil.getMonitorStatus(recordId, source))) {
             throw new BusinessException("推流状态为空");

+ 1 - 1
themis-exam/src/main/java/com/qmth/themis/exam/api/TIeInvigilateCallOeController.java

@@ -266,7 +266,7 @@ public class TIeInvigilateCallOeController {
 
         String liveUrl = SystemConstant.setStreamId(sysConfig.getConfigValue(), recordId, source);
         ExamRecordStatusEnum statusEnum = ExamRecordCacheUtil.getStatus(recordId);
-        if (Objects.isNull(statusEnum) || Objects.equals(statusEnum, ExamRecordStatusEnum.FINISHED) || Objects.equals(statusEnum, ExamRecordStatusEnum.PERSISTED)) {
+        if (Objects.isNull(statusEnum) || Objects.equals(statusEnum, ExamRecordStatusEnum.FINISHED) || Objects.equals(statusEnum, ExamRecordStatusEnum.PERSISTED) || statusEnum == ExamRecordStatusEnum.JUNK) {
             return ResultUtil.ok(Collections.singletonMap(SystemConstant.UPDATE_TIME, System.currentTimeMillis()));
         } else if (Objects.isNull(ExamRecordCacheUtil.getMonitorStatus(recordId, source))) {
             throw new BusinessException("推流状态为空");

+ 12 - 6
themis-exam/src/main/java/com/qmth/themis/exam/listener/service/impl/MqOeLogicServiceImpl.java

@@ -82,7 +82,8 @@ public class MqOeLogicServiceImpl implements MqOeLogicService {
             ExamRecordStatusEnum examRecordStatusEnum = ExamRecordCacheUtil.getStatus(recordId);
             if ((Objects.nonNull(examRecordStatusEnum)
                     && !Objects.equals(ExamRecordStatusEnum.PERSISTED, examRecordStatusEnum)
-                    && !Objects.equals(ExamRecordStatusEnum.FINISHED, examRecordStatusEnum))
+                    && !Objects.equals(ExamRecordStatusEnum.FINISHED, examRecordStatusEnum)
+                    && !Objects.equals(ExamRecordStatusEnum.JUNK, examRecordStatusEnum))
                     && Objects.nonNull(webSocketOeServer.getRecordId())
                     && webSocketOeServer.getRecordId().longValue() == recordId.longValue()) {
                 map.put("form", mqDto.getObjName());
@@ -123,7 +124,8 @@ public class MqOeLogicServiceImpl implements MqOeLogicService {
             ExamRecordStatusEnum examRecordStatusEnum = ExamRecordCacheUtil.getStatus(recordId);
             if ((Objects.nonNull(examRecordStatusEnum)
                     && !Objects.equals(ExamRecordStatusEnum.PERSISTED, examRecordStatusEnum)
-                    && !Objects.equals(ExamRecordStatusEnum.FINISHED, examRecordStatusEnum))
+                    && !Objects.equals(ExamRecordStatusEnum.FINISHED, examRecordStatusEnum)
+                    && !Objects.equals(ExamRecordStatusEnum.JUNK, examRecordStatusEnum))
                     && Objects.nonNull(webSocketOeServer.getRecordId())
                     && webSocketOeServer.getRecordId().longValue() == recordId.longValue()) {
                 map.put(SystemConstant.WEB_SOCKET_OE_SERVER, webSocketOeServer);
@@ -162,7 +164,8 @@ public class MqOeLogicServiceImpl implements MqOeLogicService {
             ExamRecordStatusEnum examRecordStatusEnum = ExamRecordCacheUtil.getStatus(recordId);
             if ((Objects.nonNull(examRecordStatusEnum)
                     && !Objects.equals(ExamRecordStatusEnum.PERSISTED, examRecordStatusEnum)
-                    && !Objects.equals(ExamRecordStatusEnum.FINISHED, examRecordStatusEnum))
+                    && !Objects.equals(ExamRecordStatusEnum.FINISHED, examRecordStatusEnum)
+                    && !Objects.equals(ExamRecordStatusEnum.JUNK, examRecordStatusEnum))
                     && Objects.nonNull(webSocketOeServer.getRecordId())
                     && webSocketOeServer.getRecordId().longValue() == recordId.longValue()) {
                 Map<String, Object> prop = mqDto.getProperties();
@@ -203,7 +206,8 @@ public class MqOeLogicServiceImpl implements MqOeLogicService {
             ExamRecordStatusEnum examRecordStatusEnum = ExamRecordCacheUtil.getStatus(recordId);
             if ((Objects.nonNull(examRecordStatusEnum)
                     && !Objects.equals(ExamRecordStatusEnum.PERSISTED, examRecordStatusEnum)
-                    && !Objects.equals(ExamRecordStatusEnum.FINISHED, examRecordStatusEnum))
+                    && !Objects.equals(ExamRecordStatusEnum.FINISHED, examRecordStatusEnum)
+                    && !Objects.equals(ExamRecordStatusEnum.JUNK, examRecordStatusEnum))
                     && Objects.nonNull(webSocketOeServer.getRecordId())
                     && webSocketOeServer.getRecordId().longValue() == recordId.longValue()) {
                 map.put(SystemConstant.RECORD_ID, recordId);
@@ -452,7 +456,8 @@ public class MqOeLogicServiceImpl implements MqOeLogicService {
                         break;
                     case "EXAM_START":
                         if (!Objects.equals(ExamRecordStatusEnum.PERSISTED, examRecordStatusEnum)
-                                && !Objects.equals(ExamRecordStatusEnum.FINISHED, examRecordStatusEnum)) {
+                                && !Objects.equals(ExamRecordStatusEnum.FINISHED, examRecordStatusEnum)
+                                && !Objects.equals(ExamRecordStatusEnum.JUNK, examRecordStatusEnum)) {
                             websocketDto = new WebsocketDto(WebsocketTypeEnum.EXAM_START.name(), mqDto.getProperties());
                             webSocketFirstMobileServer.sendMessage(websocketDto);
                         }
@@ -498,7 +503,8 @@ public class MqOeLogicServiceImpl implements MqOeLogicService {
                         break;
                     case "EXAM_START":
                         if (!Objects.equals(ExamRecordStatusEnum.PERSISTED, examRecordStatusEnum)
-                                && !Objects.equals(ExamRecordStatusEnum.FINISHED, examRecordStatusEnum)) {
+                                && !Objects.equals(ExamRecordStatusEnum.FINISHED, examRecordStatusEnum)
+                                && !Objects.equals(ExamRecordStatusEnum.JUNK, examRecordStatusEnum)) {
                             websocketDto = new WebsocketDto(WebsocketTypeEnum.EXAM_START.name(), mqDto.getProperties());
                             webSocketSecondMobileServer.sendMessage(websocketDto);
                         }

+ 1 - 1
themis-exam/src/main/java/com/qmth/themis/exam/websocket/WebSocketMobileServer.java

@@ -183,7 +183,7 @@ public class WebSocketMobileServer implements Concurrently {
                         statusEnum = tOeExamRecord.getStatus();
                     }
                     if (Objects.nonNull(statusEnum) && (statusEnum == ExamRecordStatusEnum.FINISHED
-                            || statusEnum == ExamRecordStatusEnum.PERSISTED)) {
+                            || statusEnum == ExamRecordStatusEnum.PERSISTED || statusEnum == ExamRecordStatusEnum.JUNK)) {
                         Map<String, Object> properties = new HashMap<>();
                         properties.put(SystemConstant.REMOVE_WEBSOCKET, true);
                         MqDto mobileMqDto = new MqDto(mqUtil.getTopic(), MqTagEnum.EXAM_STOP.name(),

+ 4 - 2
themis-task/src/main/java/com/qmth/themis/task/quartz/MqActivityJob.java

@@ -86,7 +86,8 @@ public class MqActivityJob extends QuartzJobBean {
                                 //获取该考试批次下所有未交卷的考生的考试记录
                                 if (Objects.nonNull(examRecordStatusEnum)
                                         && !Objects.equals(ExamRecordStatusEnum.FINISHED, examRecordStatusEnum)
-                                        && !Objects.equals(ExamRecordStatusEnum.PERSISTED, examRecordStatusEnum)) {
+                                        && !Objects.equals(ExamRecordStatusEnum.PERSISTED, examRecordStatusEnum)
+                                        && !Objects.equals(ExamRecordStatusEnum.JUNK, examRecordStatusEnum)) {
                                     Integer durationSeconds = s.getDurationSeconds();
                                     Long examStudentId = s.getExamStudentId();
                                     ExamStudentCacheBean examStudentCacheBean = teExamStudentService.getExamStudentCacheBean(examStudentId);
@@ -119,7 +120,8 @@ public class MqActivityJob extends QuartzJobBean {
                                 if (Objects.nonNull(examRecordStatusEnum)
                                         && !Objects.equals(ExamRecordStatusEnum.FINISHED, examRecordStatusEnum)
                                         && !Objects.equals(ExamRecordStatusEnum.PERSISTED, examRecordStatusEnum)
-                                        && !Objects.equals(ExamRecordStatusEnum.ANSWERING, examRecordStatusEnum)) {
+                                        && !Objects.equals(ExamRecordStatusEnum.ANSWERING, examRecordStatusEnum)
+                                        && !Objects.equals(ExamRecordStatusEnum.JUNK, examRecordStatusEnum)) {
                                     Integer durationSeconds = s.getDurationSeconds();
                                     Long examStudentId = s.getExamStudentId();
                                     ExamStudentCacheBean examStudentCacheBean = teExamStudentService.getExamStudentCacheBean(examStudentId);

+ 6 - 3
themis-task/src/main/java/com/qmth/themis/task/quartz/service/impl/QuartzLogicServiceImpl.java

@@ -73,7 +73,8 @@ public class QuartzLogicServiceImpl implements QuartzLogicService {
                         //获取该考试批次下所有未交卷的考生的考试记录
                         if (Objects.nonNull(examRecordStatusEnum)
                                 && !Objects.equals(ExamRecordStatusEnum.FINISHED, examRecordStatusEnum)
-                                && !Objects.equals(ExamRecordStatusEnum.PERSISTED, examRecordStatusEnum)) {
+                                && !Objects.equals(ExamRecordStatusEnum.PERSISTED, examRecordStatusEnum)
+                                && !Objects.equals(ExamRecordStatusEnum.JUNK, examRecordStatusEnum)) {
                             Integer durationSeconds = s.getDurationSeconds();
                             Long examStudentId = s.getExamStudentId();
                             ExamStudentCacheBean examStudentCacheBean = teExamStudentService.getExamStudentCacheBean(examStudentId);
@@ -109,7 +110,8 @@ public class QuartzLogicServiceImpl implements QuartzLogicService {
                         if (Objects.nonNull(examRecordStatusEnum)
                                 && !Objects.equals(ExamRecordStatusEnum.FINISHED, examRecordStatusEnum)
                                 && !Objects.equals(ExamRecordStatusEnum.PERSISTED, examRecordStatusEnum)
-                                && !Objects.equals(ExamRecordStatusEnum.ANSWERING, examRecordStatusEnum)) {
+                                && !Objects.equals(ExamRecordStatusEnum.ANSWERING, examRecordStatusEnum)
+                                && !Objects.equals(ExamRecordStatusEnum.JUNK, examRecordStatusEnum)) {
                             Long recordEndTime = s.getEndTime();
                             if (Objects.nonNull(examActivityCacheBean.getFinishTime()) && Objects.nonNull(recordEndTime) && examActivityCacheBean.getFinishTime().longValue() == recordEndTime.longValue()) {
                                 Integer durationSeconds = s.getDurationSeconds();
@@ -158,7 +160,8 @@ public class QuartzLogicServiceImpl implements QuartzLogicService {
         if (Objects.nonNull(examRecordStatusEnum)
                 && !Objects.equals(ExamRecordStatusEnum.FINISHED, examRecordStatusEnum)
                 && !Objects.equals(ExamRecordStatusEnum.PERSISTED, examRecordStatusEnum)
-                && !Objects.equals(ExamRecordStatusEnum.ANSWERING, examRecordStatusEnum)) {
+                && !Objects.equals(ExamRecordStatusEnum.ANSWERING, examRecordStatusEnum)
+                && !Objects.equals(ExamRecordStatusEnum.JUNK, examRecordStatusEnum)) {
             Long firstStartTime = ExamRecordCacheUtil.getFirstStartTime(recordId);
             if (Objects.isNull(firstStartTime)) {
                 TOeExamRecord tOeExamRecord = SystemConstant.getExamRecord(recordId);