Parcourir la source

交卷或作废后强制改成离线状态

wangliang il y a 2 ans
Parent
commit
37ba9a6e36

+ 3 - 0
themis-business/src/main/java/com/qmth/themis/business/service/impl/TOeExamRecordServiceImpl.java

@@ -392,6 +392,9 @@ public class TOeExamRecordServiceImpl extends ServiceImpl<TOeExamRecordMapper, T
                 er.setPaperStructPath(structFilePath);
             }
             er.setPaperStructUpload(1);
+            if (Objects.nonNull(er.getClientWebsocketStatus()) && er.getClientWebsocketStatus() == WebsocketStatusEnum.ON_LINE) {
+                er.setClientWebsocketStatus(WebsocketStatusEnum.OFF_LINE);
+            }
             saveOrUpdate(er);
 
             //保存作答

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

@@ -9,6 +9,7 @@ import com.qmth.themis.business.entity.TEExamActivity;
 import com.qmth.themis.business.entity.TOeExamRecord;
 import com.qmth.themis.business.enums.ExamRecordStatusEnum;
 import com.qmth.themis.business.enums.FinishTypeEnum;
+import com.qmth.themis.business.enums.WebsocketStatusEnum;
 import com.qmth.themis.business.service.*;
 import org.quartz.JobExecutionContext;
 import org.slf4j.Logger;
@@ -97,6 +98,9 @@ public class MqActivityJob extends QuartzJobBean {
                                             commonService.deleteExamStudentCache(s.getId(), examStudentCacheBean.getStudentId());
                                             s.setStatus(ExamRecordStatusEnum.JUNK);
                                             s.setUpdateTime(System.currentTimeMillis());
+                                            if (Objects.nonNull(s.getClientWebsocketStatus()) && s.getClientWebsocketStatus() == WebsocketStatusEnum.ON_LINE) {
+                                                s.setClientWebsocketStatus(WebsocketStatusEnum.OFF_LINE);
+                                            }
                                             updateExamRecordList.add(s);
                                             commonService.DismissRoomByStrRoomId(s.getId());
                                         } else {//交卷
@@ -131,6 +135,9 @@ public class MqActivityJob extends QuartzJobBean {
                                             commonService.deleteExamStudentCache(s.getId(), examStudentCacheBean.getStudentId());
                                             s.setStatus(ExamRecordStatusEnum.JUNK);
                                             s.setUpdateTime(System.currentTimeMillis());
+                                            if (Objects.nonNull(s.getClientWebsocketStatus()) && s.getClientWebsocketStatus() == WebsocketStatusEnum.ON_LINE) {
+                                                s.setClientWebsocketStatus(WebsocketStatusEnum.OFF_LINE);
+                                            }
                                             updateExamRecordList.add(s);
                                             commonService.DismissRoomByStrRoomId(s.getId());
                                         } else {//交卷

+ 10 - 0
themis-task/src/main/java/com/qmth/themis/task/quartz/service/impl/QuartzLogicServiceImpl.java

@@ -9,6 +9,7 @@ import com.qmth.themis.business.constant.SystemConstant;
 import com.qmth.themis.business.entity.TOeExamRecord;
 import com.qmth.themis.business.enums.ExamRecordStatusEnum;
 import com.qmth.themis.business.enums.FinishTypeEnum;
+import com.qmth.themis.business.enums.WebsocketStatusEnum;
 import com.qmth.themis.business.service.*;
 import com.qmth.themis.task.quartz.service.QuartzLogicService;
 import org.slf4j.Logger;
@@ -84,6 +85,9 @@ public class QuartzLogicServiceImpl implements QuartzLogicService {
                                     commonService.deleteExamStudentCache(s.getId(), examStudentCacheBean.getStudentId());
                                     s.setStatus(ExamRecordStatusEnum.JUNK);
                                     s.setUpdateTime(System.currentTimeMillis());
+                                    if (Objects.nonNull(s.getClientWebsocketStatus()) && s.getClientWebsocketStatus() == WebsocketStatusEnum.ON_LINE) {
+                                        s.setClientWebsocketStatus(WebsocketStatusEnum.OFF_LINE);
+                                    }
                                     updateExamRecordList.add(s);
                                     commonService.DismissRoomByStrRoomId(s.getId());
                                 } else {//交卷
@@ -123,6 +127,9 @@ public class QuartzLogicServiceImpl implements QuartzLogicService {
                                         commonService.deleteExamStudentCache(s.getId(), examStudentCacheBean.getStudentId());
                                         s.setStatus(ExamRecordStatusEnum.JUNK);
                                         s.setUpdateTime(System.currentTimeMillis());
+                                        if (Objects.nonNull(s.getClientWebsocketStatus()) && s.getClientWebsocketStatus() == WebsocketStatusEnum.ON_LINE) {
+                                            s.setClientWebsocketStatus(WebsocketStatusEnum.OFF_LINE);
+                                        }
                                         updateExamRecordList.add(s);
                                         commonService.DismissRoomByStrRoomId(s.getId());
                                     } else {//交卷
@@ -175,6 +182,9 @@ public class QuartzLogicServiceImpl implements QuartzLogicService {
                     commonService.deleteExamStudentCache(recordId, examStudentCacheBean.getStudentId());
                     tOeExamRecord.setStatus(ExamRecordStatusEnum.JUNK);
                     tOeExamRecord.setUpdateTime(System.currentTimeMillis());
+                    if (Objects.nonNull(tOeExamRecord.getClientWebsocketStatus()) && tOeExamRecord.getClientWebsocketStatus() == WebsocketStatusEnum.ON_LINE) {
+                        tOeExamRecord.setClientWebsocketStatus(WebsocketStatusEnum.OFF_LINE);
+                    }
                     commonService.DismissRoomByStrRoomId(recordId);
                 } else {//交卷
                     Long recordEndTime = ExamRecordCacheUtil.getEndTime(recordId);