|
@@ -9,7 +9,6 @@ import com.qmth.themis.business.enums.ExamRecordStatusEnum;
|
|
|
import com.qmth.themis.business.enums.FinishTypeEnum;
|
|
|
import com.qmth.themis.business.service.*;
|
|
|
import org.quartz.JobExecutionContext;
|
|
|
-import org.quartz.Trigger;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.scheduling.quartz.QuartzJobBean;
|
|
@@ -71,25 +70,47 @@ public class MqActivityJob extends QuartzJobBean {
|
|
|
QueryWrapper<TOeExamRecord> tOeExamRecordQueryWrapper = new QueryWrapper<>();
|
|
|
tOeExamRecordQueryWrapper.lambda().in(TOeExamRecord::getExamActivityId, examActivityIdSet);
|
|
|
List<TOeExamRecord> examRecordList = tOeExamRecordService.list(tOeExamRecordQueryWrapper);
|
|
|
- examRecordList.forEach(s -> {
|
|
|
- ExamRecordStatusEnum examRecordStatusEnum = s.getStatus();
|
|
|
- //获取该考试批次下所有未交卷的考生的考试记录
|
|
|
- if (Objects.nonNull(examRecordStatusEnum)
|
|
|
- && !Objects.equals(ExamRecordStatusEnum.FINISHED, examRecordStatusEnum)
|
|
|
- && !Objects.equals(ExamRecordStatusEnum.PERSISTED, examRecordStatusEnum)
|
|
|
- && !Objects.equals(ExamRecordStatusEnum.ANSWERING, examRecordStatusEnum)) {
|
|
|
- Integer durationSeconds = s.getDurationSeconds();
|
|
|
- Long examStudentId = s.getExamStudentId();
|
|
|
- ExamStudentCacheBean examStudentCacheBean = teExamStudentService.getExamStudentCacheBean(examStudentId);
|
|
|
- //候考阶段且没有进入考试则不交卷
|
|
|
- if (examRecordStatusEnum == ExamRecordStatusEnum.FIRST_PREPARE && Objects.isNull(s.getFirstStartTime())) {
|
|
|
- commonService.deleteExamStudentCache(s.getId(), examStudentCacheBean.getStudentId());
|
|
|
- commonService.DismissRoomByStrRoomId(s.getId());
|
|
|
- } else {//交卷
|
|
|
- teExamService.finish(examStudentCacheBean.getStudentId(), s.getId(), FinishTypeEnum.AUTO.name(), durationSeconds);
|
|
|
+ Integer forceFinish = exam.getForceFinish();
|
|
|
+ if (Objects.nonNull(forceFinish) && forceFinish.intValue() == 1) {//强制收卷
|
|
|
+ examRecordList.forEach(s -> {
|
|
|
+ ExamRecordStatusEnum examRecordStatusEnum = s.getStatus();
|
|
|
+ //获取该考试批次下所有未交卷的考生的考试记录
|
|
|
+ if (Objects.nonNull(examRecordStatusEnum)
|
|
|
+ && !Objects.equals(ExamRecordStatusEnum.FINISHED, examRecordStatusEnum)
|
|
|
+ && !Objects.equals(ExamRecordStatusEnum.PERSISTED, examRecordStatusEnum)) {
|
|
|
+ Integer durationSeconds = s.getDurationSeconds();
|
|
|
+ Long examStudentId = s.getExamStudentId();
|
|
|
+ ExamStudentCacheBean examStudentCacheBean = teExamStudentService.getExamStudentCacheBean(examStudentId);
|
|
|
+ //候考阶段且没有进入考试则不交卷
|
|
|
+ if (examRecordStatusEnum == ExamRecordStatusEnum.FIRST_PREPARE && Objects.isNull(s.getFirstStartTime())) {
|
|
|
+ commonService.deleteExamStudentCache(s.getId(), examStudentCacheBean.getStudentId());
|
|
|
+ commonService.DismissRoomByStrRoomId(s.getId());
|
|
|
+ } else {//交卷
|
|
|
+ teExamService.finish(examStudentCacheBean.getStudentId(), s.getId(), FinishTypeEnum.AUTO.name(), durationSeconds);
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
- });
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ examRecordList.forEach(s -> {
|
|
|
+ ExamRecordStatusEnum examRecordStatusEnum = s.getStatus();
|
|
|
+ //获取该考试批次下所有未交卷的考生的考试记录
|
|
|
+ if (Objects.nonNull(examRecordStatusEnum)
|
|
|
+ && !Objects.equals(ExamRecordStatusEnum.FINISHED, examRecordStatusEnum)
|
|
|
+ && !Objects.equals(ExamRecordStatusEnum.PERSISTED, examRecordStatusEnum)
|
|
|
+ && !Objects.equals(ExamRecordStatusEnum.ANSWERING, examRecordStatusEnum)) {
|
|
|
+ Integer durationSeconds = s.getDurationSeconds();
|
|
|
+ Long examStudentId = s.getExamStudentId();
|
|
|
+ ExamStudentCacheBean examStudentCacheBean = teExamStudentService.getExamStudentCacheBean(examStudentId);
|
|
|
+ //候考阶段且没有进入考试则不交卷
|
|
|
+ if (examRecordStatusEnum == ExamRecordStatusEnum.FIRST_PREPARE && Objects.isNull(s.getFirstStartTime())) {
|
|
|
+ commonService.deleteExamStudentCache(s.getId(), examStudentCacheBean.getStudentId());
|
|
|
+ commonService.DismissRoomByStrRoomId(s.getId());
|
|
|
+ } else {//交卷
|
|
|
+ teExamService.finish(examStudentCacheBean.getStudentId(), s.getId(), FinishTypeEnum.AUTO.name(), durationSeconds);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
}
|
|
|
exam.setScanTime(finishTime);
|
|
|
}
|