瀏覽代碼

移动端结束考试不再给客户端发送弹码消息

wangliang 1 年之前
父節點
當前提交
ccee6d2cb9

+ 5 - 2
themis-exam/src/main/java/com/qmth/themis/exam/listener/service/impl/MqOeLogicServiceImpl.java

@@ -360,9 +360,12 @@ public class MqOeLogicServiceImpl implements MqOeLogicService {
                         case "MONITOR_STOP":
                             source = MonitorVideoSourceEnum.valueOf((String) prop.get(Constants.HEADER_SOURCE));
                             monitorStatusBean = ExamRecordCacheUtil.getMonitorStatusBean(recordId, source);
-                            if (Objects.nonNull(monitorStatusBean)
+                            if ((Objects.nonNull(monitorStatusBean)
                                     && Objects.nonNull(monitorStatusBean.getTimestamp())
-                                    && mqDto.getTimestamp().longValue() >= monitorStatusBean.getTimestamp().longValue()) {
+                                    && mqDto.getTimestamp().longValue() >= monitorStatusBean.getTimestamp().longValue()) &&
+                                    (!Objects.equals(ExamRecordStatusEnum.PERSISTED, examRecordStatusEnum)
+                                            && !Objects.equals(ExamRecordStatusEnum.FINISHED, examRecordStatusEnum)
+                                            && !Objects.equals(ExamRecordStatusEnum.JUNK, examRecordStatusEnum))) {
                                 websocketDto = new WebsocketDto(WebsocketTypeEnum.MOBILE_MONITOR_STOP.name(), prop);
                                 webSocketOeServer.sendMessage(websocketDto);
                                 //                                ConcurrentHashMap<String, WebSocketMobileServer> webSocketMobileMap = WebSocketMobileServer.getWebSocketMap();

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

@@ -138,11 +138,20 @@ public class WebSocketMobileServer implements Concurrently {
                     Map mqMap = new HashMap<>();
                     mqMap.put(SystemConstant.RECORD_ID, this.recordId);
                     mqMap.put(Constants.HEADER_SOURCE, this.source.name());
-                    //监控结束
-                    MqDto mqDtoStop = new MqDto(mqUtil.getTopic(), MqTagEnum.MONITOR_STOP.name(),
-                            recordId, MqTagEnum.MONITOR_STOP, String.valueOf(recordId), mqMap,
-                            String.valueOf(recordId));
-                    mqDtoService.assembleSendOneOrderMsg(mqDtoStop);
+
+                    ExamRecordStatusEnum statusEnum = ExamRecordCacheUtil.getStatus(this.recordId);
+                    if (Objects.isNull(statusEnum)) {
+                        TOeExamRecord tOeExamRecord = tOeExamRecordService.getById(this.recordId);
+                        statusEnum = tOeExamRecord.getStatus();
+                    }
+                    if (Objects.nonNull(statusEnum) && (statusEnum != ExamRecordStatusEnum.FINISHED
+                            && statusEnum != ExamRecordStatusEnum.PERSISTED && statusEnum != ExamRecordStatusEnum.JUNK)) {
+                        //监控结束
+                        MqDto mqDtoStop = new MqDto(mqUtil.getTopic(), MqTagEnum.MONITOR_STOP.name(),
+                                recordId, MqTagEnum.MONITOR_STOP, String.valueOf(recordId), mqMap,
+                                String.valueOf(recordId));
+                        mqDtoService.assembleSendOneOrderMsg(mqDtoStop);
+                    }
                 }
             } finally {
                 redisUtil.releaseLock(lockKey);