浏览代码

新增考试作废状态JUNK

wangliang 2 年之前
父节点
当前提交
8768ecd58d

+ 3 - 1
themis-business/src/main/java/com/qmth/themis/business/enums/ExamRecordStatusEnum.java

@@ -19,7 +19,9 @@ public enum ExamRecordStatusEnum {
 
 
     FINISHED("已结束考试", "交卷"),
     FINISHED("已结束考试", "交卷"),
 
 
-    PERSISTED("数据已保存", "数据已保存");
+    PERSISTED("数据已保存", "数据已保存"),
+
+    JUNK("作废", "侯考状态后考试结束");
 
 
     private String code;
     private String code;
 
 

+ 15 - 0
themis-task/src/main/java/com/qmth/themis/task/quartz/MqActivityJob.java

@@ -17,6 +17,7 @@ import org.springframework.scheduling.quartz.QuartzJobBean;
 import org.springframework.util.CollectionUtils;
 import org.springframework.util.CollectionUtils;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.List;
 import java.util.Objects;
 import java.util.Objects;
 import java.util.Set;
 import java.util.Set;
@@ -79,6 +80,7 @@ public class MqActivityJob extends QuartzJobBean {
                     Integer forceFinish = exam.getForceFinish();
                     Integer forceFinish = exam.getForceFinish();
                     if (Objects.nonNull(forceFinish) && forceFinish.intValue() == 1) {//强制收卷
                     if (Objects.nonNull(forceFinish) && forceFinish.intValue() == 1) {//强制收卷
                         if (!CollectionUtils.isEmpty(examRecordList)) {
                         if (!CollectionUtils.isEmpty(examRecordList)) {
+                            List<TOeExamRecord> updateExamRecordList = new ArrayList<>(examRecordList.size() / 2);
                             examRecordList.forEach(s -> {
                             examRecordList.forEach(s -> {
                                 ExamRecordStatusEnum examRecordStatusEnum = s.getStatus();
                                 ExamRecordStatusEnum examRecordStatusEnum = s.getStatus();
                                 //获取该考试批次下所有未交卷的考生的考试记录
                                 //获取该考试批次下所有未交卷的考生的考试记录
@@ -92,6 +94,9 @@ public class MqActivityJob extends QuartzJobBean {
                                     try {
                                     try {
                                         if (examRecordStatusEnum == ExamRecordStatusEnum.FIRST_PREPARE && Objects.isNull(s.getFirstStartTime())) {
                                         if (examRecordStatusEnum == ExamRecordStatusEnum.FIRST_PREPARE && Objects.isNull(s.getFirstStartTime())) {
                                             commonService.deleteExamStudentCache(s.getId(), examStudentCacheBean.getStudentId());
                                             commonService.deleteExamStudentCache(s.getId(), examStudentCacheBean.getStudentId());
+                                            s.setStatus(ExamRecordStatusEnum.JUNK);
+                                            s.setUpdateTime(System.currentTimeMillis());
+                                            updateExamRecordList.add(s);
                                             commonService.DismissRoomByStrRoomId(s.getId());
                                             commonService.DismissRoomByStrRoomId(s.getId());
                                         } else {//交卷
                                         } else {//交卷
                                             teExamService.finish(examStudentCacheBean.getStudentId(), s.getId(), FinishTypeEnum.AUTO.name(), durationSeconds);
                                             teExamService.finish(examStudentCacheBean.getStudentId(), s.getId(), FinishTypeEnum.AUTO.name(), durationSeconds);
@@ -101,9 +106,13 @@ public class MqActivityJob extends QuartzJobBean {
                                     }
                                     }
                                 }
                                 }
                             });
                             });
+                            if (!CollectionUtils.isEmpty(updateExamRecordList)) {
+                                tOeExamRecordService.updateBatchById(updateExamRecordList);
+                            }
                         }
                         }
                     } else {
                     } else {
                         if (!CollectionUtils.isEmpty(examRecordList)) {
                         if (!CollectionUtils.isEmpty(examRecordList)) {
+                            List<TOeExamRecord> updateExamRecordList = new ArrayList<>(examRecordList.size() / 2);
                             examRecordList.forEach(s -> {
                             examRecordList.forEach(s -> {
                                 ExamRecordStatusEnum examRecordStatusEnum = s.getStatus();
                                 ExamRecordStatusEnum examRecordStatusEnum = s.getStatus();
                                 //获取该考试批次下所有未交卷的考生的考试记录
                                 //获取该考试批次下所有未交卷的考生的考试记录
@@ -118,6 +127,9 @@ public class MqActivityJob extends QuartzJobBean {
                                     try {
                                     try {
                                         if (examRecordStatusEnum == ExamRecordStatusEnum.FIRST_PREPARE && Objects.isNull(s.getFirstStartTime())) {
                                         if (examRecordStatusEnum == ExamRecordStatusEnum.FIRST_PREPARE && Objects.isNull(s.getFirstStartTime())) {
                                             commonService.deleteExamStudentCache(s.getId(), examStudentCacheBean.getStudentId());
                                             commonService.deleteExamStudentCache(s.getId(), examStudentCacheBean.getStudentId());
+                                            s.setStatus(ExamRecordStatusEnum.JUNK);
+                                            s.setUpdateTime(System.currentTimeMillis());
+                                            updateExamRecordList.add(s);
                                             commonService.DismissRoomByStrRoomId(s.getId());
                                             commonService.DismissRoomByStrRoomId(s.getId());
                                         } else {//交卷
                                         } else {//交卷
                                             teExamService.finish(examStudentCacheBean.getStudentId(), s.getId(), FinishTypeEnum.AUTO.name(), durationSeconds);
                                             teExamService.finish(examStudentCacheBean.getStudentId(), s.getId(), FinishTypeEnum.AUTO.name(), durationSeconds);
@@ -127,6 +139,9 @@ public class MqActivityJob extends QuartzJobBean {
                                     }
                                     }
                                 }
                                 }
                             });
                             });
+                            if (!CollectionUtils.isEmpty(updateExamRecordList)) {
+                                tOeExamRecordService.updateBatchById(updateExamRecordList);
+                            }
                         }
                         }
                     }
                     }
                 }
                 }

+ 22 - 14
themis-task/src/main/java/com/qmth/themis/task/quartz/service/impl/QuartzLogicServiceImpl.java

@@ -10,8 +10,6 @@ import com.qmth.themis.business.entity.TOeExamRecord;
 import com.qmth.themis.business.enums.ExamRecordStatusEnum;
 import com.qmth.themis.business.enums.ExamRecordStatusEnum;
 import com.qmth.themis.business.enums.FinishTypeEnum;
 import com.qmth.themis.business.enums.FinishTypeEnum;
 import com.qmth.themis.business.service.*;
 import com.qmth.themis.business.service.*;
-import com.qmth.themis.business.util.MqUtil;
-import com.qmth.themis.business.util.OssUtil;
 import com.qmth.themis.task.quartz.service.QuartzLogicService;
 import com.qmth.themis.task.quartz.service.QuartzLogicService;
 import org.slf4j.Logger;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.slf4j.LoggerFactory;
@@ -20,6 +18,7 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 import org.springframework.util.CollectionUtils;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.List;
 import java.util.Objects;
 import java.util.Objects;
 
 
@@ -49,18 +48,6 @@ public class QuartzLogicServiceImpl implements QuartzLogicService {
     @Resource
     @Resource
     CommonService commonService;
     CommonService commonService;
 
 
-    @Resource
-    MqUtil mqUtil;
-
-    @Resource
-    MqDtoService mqDtoService;
-
-    @Resource
-    ThemisCacheService themisCacheService;
-
-    @Resource
-    OssUtil ossUtil;
-
     /**
     /**
      * 考试场次quartz逻辑
      * 考试场次quartz逻辑
      *
      *
@@ -80,6 +67,7 @@ public class QuartzLogicServiceImpl implements QuartzLogicService {
             List<TOeExamRecord> examRecordList = tOeExamRecordService.list(tOeExamRecordQueryWrapper);
             List<TOeExamRecord> examRecordList = tOeExamRecordService.list(tOeExamRecordQueryWrapper);
             if (Objects.nonNull(forceFinish) && forceFinish.intValue() == 1) {//强制收卷
             if (Objects.nonNull(forceFinish) && forceFinish.intValue() == 1) {//强制收卷
                 if (!CollectionUtils.isEmpty(examRecordList)) {
                 if (!CollectionUtils.isEmpty(examRecordList)) {
+                    List<TOeExamRecord> updateExamRecordList = new ArrayList<>(examRecordList.size() / 2);
                     examRecordList.forEach(s -> {
                     examRecordList.forEach(s -> {
                         ExamRecordStatusEnum examRecordStatusEnum = s.getStatus();
                         ExamRecordStatusEnum examRecordStatusEnum = s.getStatus();
                         //获取该考试批次下所有未交卷的考生的考试记录
                         //获取该考试批次下所有未交卷的考生的考试记录
@@ -93,6 +81,9 @@ public class QuartzLogicServiceImpl implements QuartzLogicService {
                             try {
                             try {
                                 if (examRecordStatusEnum == ExamRecordStatusEnum.FIRST_PREPARE && Objects.isNull(s.getFirstStartTime())) {
                                 if (examRecordStatusEnum == ExamRecordStatusEnum.FIRST_PREPARE && Objects.isNull(s.getFirstStartTime())) {
                                     commonService.deleteExamStudentCache(s.getId(), examStudentCacheBean.getStudentId());
                                     commonService.deleteExamStudentCache(s.getId(), examStudentCacheBean.getStudentId());
+                                    s.setStatus(ExamRecordStatusEnum.JUNK);
+                                    s.setUpdateTime(System.currentTimeMillis());
+                                    updateExamRecordList.add(s);
                                     commonService.DismissRoomByStrRoomId(s.getId());
                                     commonService.DismissRoomByStrRoomId(s.getId());
                                 } else {//交卷
                                 } else {//交卷
                                     Long recordEndTime = s.getEndTime();
                                     Long recordEndTime = s.getEndTime();
@@ -105,9 +96,13 @@ public class QuartzLogicServiceImpl implements QuartzLogicService {
                             }
                             }
                         }
                         }
                     });
                     });
+                    if (!CollectionUtils.isEmpty(updateExamRecordList)) {
+                        tOeExamRecordService.updateBatchById(updateExamRecordList);
+                    }
                 }
                 }
             } else {
             } else {
                 if (!CollectionUtils.isEmpty(examRecordList)) {
                 if (!CollectionUtils.isEmpty(examRecordList)) {
+                    List<TOeExamRecord> updateExamRecordList = new ArrayList<>(examRecordList.size() / 2);
                     examRecordList.forEach(s -> {
                     examRecordList.forEach(s -> {
                         ExamRecordStatusEnum examRecordStatusEnum = s.getStatus();
                         ExamRecordStatusEnum examRecordStatusEnum = s.getStatus();
                         //获取该考试批次下所有未交卷的考生的考试记录
                         //获取该考试批次下所有未交卷的考生的考试记录
@@ -124,6 +119,9 @@ public class QuartzLogicServiceImpl implements QuartzLogicService {
                                 try {
                                 try {
                                     if (examRecordStatusEnum == ExamRecordStatusEnum.FIRST_PREPARE && Objects.isNull(s.getFirstStartTime())) {
                                     if (examRecordStatusEnum == ExamRecordStatusEnum.FIRST_PREPARE && Objects.isNull(s.getFirstStartTime())) {
                                         commonService.deleteExamStudentCache(s.getId(), examStudentCacheBean.getStudentId());
                                         commonService.deleteExamStudentCache(s.getId(), examStudentCacheBean.getStudentId());
+                                        s.setStatus(ExamRecordStatusEnum.JUNK);
+                                        s.setUpdateTime(System.currentTimeMillis());
+                                        updateExamRecordList.add(s);
                                         commonService.DismissRoomByStrRoomId(s.getId());
                                         commonService.DismissRoomByStrRoomId(s.getId());
                                     } else {//交卷
                                     } else {//交卷
                                         teExamService.finish(examStudentCacheBean.getStudentId(), s.getId(), FinishTypeEnum.AUTO.name(), durationSeconds);
                                         teExamService.finish(examStudentCacheBean.getStudentId(), s.getId(), FinishTypeEnum.AUTO.name(), durationSeconds);
@@ -134,6 +132,9 @@ public class QuartzLogicServiceImpl implements QuartzLogicService {
                             }
                             }
                         }
                         }
                     });
                     });
+                    if (!CollectionUtils.isEmpty(updateExamRecordList)) {
+                        tOeExamRecordService.updateBatchById(updateExamRecordList);
+                    }
                 }
                 }
             }
             }
         }
         }
@@ -164,9 +165,13 @@ public class QuartzLogicServiceImpl implements QuartzLogicService {
                 firstStartTime = tOeExamRecord.getFirstStartTime();
                 firstStartTime = tOeExamRecord.getFirstStartTime();
             }
             }
             //候考阶段且没有进入考试则不交卷
             //候考阶段且没有进入考试则不交卷
+            TOeExamRecord tOeExamRecord = null;
             try {
             try {
                 if (examRecordStatusEnum == ExamRecordStatusEnum.FIRST_PREPARE && Objects.isNull(firstStartTime)) {
                 if (examRecordStatusEnum == ExamRecordStatusEnum.FIRST_PREPARE && Objects.isNull(firstStartTime)) {
+                    tOeExamRecord = SystemConstant.getExamRecord(recordId);
                     commonService.deleteExamStudentCache(recordId, examStudentCacheBean.getStudentId());
                     commonService.deleteExamStudentCache(recordId, examStudentCacheBean.getStudentId());
+                    tOeExamRecord.setStatus(ExamRecordStatusEnum.JUNK);
+                    tOeExamRecord.setUpdateTime(System.currentTimeMillis());
                     commonService.DismissRoomByStrRoomId(recordId);
                     commonService.DismissRoomByStrRoomId(recordId);
                 } else {//交卷
                 } else {//交卷
                     Long recordEndTime = ExamRecordCacheUtil.getEndTime(recordId);
                     Long recordEndTime = ExamRecordCacheUtil.getEndTime(recordId);
@@ -178,6 +183,9 @@ public class QuartzLogicServiceImpl implements QuartzLogicService {
             } catch (Exception e) {
             } catch (Exception e) {
                 log.error(SystemConstant.LOG_ERROR, e);
                 log.error(SystemConstant.LOG_ERROR, e);
             }
             }
+            if (Objects.nonNull(tOeExamRecord)) {
+                tOeExamRecordService.updateById(tOeExamRecord);
+            }
         }
         }
     }
     }