wangliang 4 年之前
父節點
當前提交
5a292c059f

+ 23 - 14
themis-exam/src/main/java/com/qmth/themis/exam/listener/service/impl/MqOeLogicServiceImpl.java

@@ -191,9 +191,7 @@ public class MqOeLogicServiceImpl implements MqOeLogicService {
             if (Objects.nonNull(clientWebsocketId) && Objects.nonNull(webSocketMap.get(clientWebsocketId))) {
                 WebSocketOeServer webSocketOeServer = webSocketMap.get(clientWebsocketId);
                 ExamRecordStatusEnum examRecordStatusEnum = ExamRecordCacheUtil.getStatus(recordId);
-                if ((Objects.nonNull(examRecordStatusEnum)
-                        && !Objects.equals(ExamRecordStatusEnum.PERSISTED, examRecordStatusEnum)
-                        && !Objects.equals(ExamRecordStatusEnum.FINISHED, examRecordStatusEnum))
+                if (Objects.nonNull(examRecordStatusEnum)
                         && Objects.nonNull(webSocketOeServer.getRecordId())
                         && webSocketOeServer.getRecordId().longValue() == recordId.longValue()) {
 //                    match.set(true);
@@ -206,7 +204,10 @@ public class MqOeLogicServiceImpl implements MqOeLogicService {
                             websocketDto = new WebsocketDto(WebsocketTypeEnum.MOBILE_ANSWER_UPLOAD.name(), prop);
                             break;
                         case "OE_WEBSOCKET_EXAM_STOP":
-                            websocketDto = new WebsocketDto(WebsocketTypeEnum.EXAM_STOP.name(), prop);
+                            if (Objects.equals(ExamRecordStatusEnum.PERSISTED, examRecordStatusEnum)
+                                    || Objects.equals(ExamRecordStatusEnum.FINISHED, examRecordStatusEnum)) {
+                                websocketDto = new WebsocketDto(WebsocketTypeEnum.EXAM_STOP.name(), prop);
+                            }
                             break;
                         case "MONITOR_START":
                             MonitorVideoSourceEnum source = MonitorVideoSourceEnum.valueOf((String) prop.get("source"));
@@ -266,19 +267,23 @@ public class MqOeLogicServiceImpl implements MqOeLogicService {
             if (Objects.nonNull(mobileWebsocketId) && Objects.nonNull(webSocketMap.get(mobileWebsocketId + "-" + MonitorVideoSourceEnum.MOBILE_FIRST.name()))) {
                 WebSocketMobileServer webSocketMobileServer = webSocketMap.get(mobileWebsocketId + "-" + MonitorVideoSourceEnum.MOBILE_FIRST.name());
                 ExamRecordStatusEnum examRecordStatusEnum = ExamRecordCacheUtil.getStatus(recordId);
-                if ((Objects.nonNull(examRecordStatusEnum)
-                        && !Objects.equals(ExamRecordStatusEnum.PERSISTED, examRecordStatusEnum)
-                        && !Objects.equals(ExamRecordStatusEnum.FINISHED, examRecordStatusEnum))
+                if (Objects.nonNull(examRecordStatusEnum)
                         && Objects.nonNull(webSocketMobileServer.getRecordId())
                         && webSocketMobileServer.getRecordId().longValue() == recordId.longValue()) {
 //                    match.set(true);
                     WebsocketDto websocketDto = null;
                     switch (tag.toUpperCase()) {
                         case "EXAM_STOP":
-                            websocketDto = new WebsocketDto(WebsocketTypeEnum.EXAM_STOP.name(), mqDto.getProperties());
+                            if (Objects.equals(ExamRecordStatusEnum.PERSISTED, examRecordStatusEnum)
+                                    || Objects.equals(ExamRecordStatusEnum.FINISHED, examRecordStatusEnum)) {
+                                websocketDto = new WebsocketDto(WebsocketTypeEnum.EXAM_STOP.name(), mqDto.getProperties());
+                            }
                             break;
                         case "EXAM_START":
-                            websocketDto = new WebsocketDto(WebsocketTypeEnum.EXAM_START.name(), mqDto.getProperties());
+                            if (!Objects.equals(ExamRecordStatusEnum.PERSISTED, examRecordStatusEnum)
+                                    && !Objects.equals(ExamRecordStatusEnum.FINISHED, examRecordStatusEnum)) {
+                                websocketDto = new WebsocketDto(WebsocketTypeEnum.EXAM_START.name(), mqDto.getProperties());
+                            }
                             break;
                         default:
                             break;
@@ -289,19 +294,23 @@ public class MqOeLogicServiceImpl implements MqOeLogicService {
             if (Objects.nonNull(mobileWebsocketId) && Objects.nonNull(webSocketMap.get(mobileWebsocketId + "-" + MonitorVideoSourceEnum.MOBILE_SECOND.name()))) {
                 WebSocketMobileServer webSocketMobileServer = webSocketMap.get(mobileWebsocketId + "-" + MonitorVideoSourceEnum.MOBILE_SECOND.name());
                 ExamRecordStatusEnum examRecordStatusEnum = ExamRecordCacheUtil.getStatus(recordId);
-                if ((Objects.nonNull(examRecordStatusEnum)
-                        && !Objects.equals(ExamRecordStatusEnum.PERSISTED, examRecordStatusEnum)
-                        && !Objects.equals(ExamRecordStatusEnum.FINISHED, examRecordStatusEnum))
+                if (Objects.nonNull(examRecordStatusEnum)
                         && Objects.nonNull(webSocketMobileServer.getRecordId())
                         && webSocketMobileServer.getRecordId().longValue() == recordId.longValue()) {
 //                    match.set(true);
                     WebsocketDto websocketDto = null;
                     switch (tag.toUpperCase()) {
                         case "EXAM_STOP":
-                            websocketDto = new WebsocketDto(WebsocketTypeEnum.EXAM_STOP.name(), mqDto.getProperties());
+                            if (Objects.equals(ExamRecordStatusEnum.PERSISTED, examRecordStatusEnum)
+                                    || Objects.equals(ExamRecordStatusEnum.FINISHED, examRecordStatusEnum)) {
+                                websocketDto = new WebsocketDto(WebsocketTypeEnum.EXAM_STOP.name(), mqDto.getProperties());
+                            }
                             break;
                         case "EXAM_START":
-                            websocketDto = new WebsocketDto(WebsocketTypeEnum.EXAM_START.name(), mqDto.getProperties());
+                            if (!Objects.equals(ExamRecordStatusEnum.PERSISTED, examRecordStatusEnum)
+                                    && !Objects.equals(ExamRecordStatusEnum.FINISHED, examRecordStatusEnum)) {
+                                websocketDto = new WebsocketDto(WebsocketTypeEnum.EXAM_START.name(), mqDto.getProperties());
+                            }
                             break;
                         default:
                             break;