wangliang 2 лет назад
Родитель
Сommit
cce0ceaa6a

+ 20 - 0
themis-exam/src/main/java/com/qmth/themis/exam/websocket/WebSocketOeServer.java

@@ -6,6 +6,7 @@ import com.qmth.themis.business.constant.SpringContextHolder;
 import com.qmth.themis.business.constant.SystemConstant;
 import com.qmth.themis.business.dto.MqDto;
 import com.qmth.themis.business.dto.WebsocketDto;
+import com.qmth.themis.business.entity.TOeExamRecord;
 import com.qmth.themis.business.enums.ExamRecordStatusEnum;
 import com.qmth.themis.business.enums.MqTagEnum;
 import com.qmth.themis.business.enums.WebsocketStatusEnum;
@@ -179,9 +180,28 @@ public class WebSocketOeServer implements Concurrently {
                 if (Objects.nonNull(jsonObject)) {
                     WebSocketOeMessageTemplete webSocketOeMessageTemplete = SpringContextHolder
                             .getBean(WebSocketOeMessageTemplete.class);
+                    TOeExamRecordService tOeExamRecordService = SpringContextHolder.getBean(TOeExamRecordService.class);
+                    MqUtil mqUtil = SpringContextHolder.getBean(MqUtil.class);
+                    MqDtoService mqDtoService = SpringContextHolder.getBean(MqDtoService.class);
+
                     WebsocketDto websocketDto = GsonUtil.fromJson(GsonUtil.toJson(jsonObject), WebsocketDto.class);
                     jsonObject.getJSONObject(SystemConstant.BODY).put(SystemConstant.RECORD_ID, this.recordId);
                     websocketDto.setBody(jsonObject.getJSONObject(SystemConstant.BODY));
+                    //2022.04.13 补发OE_WEBSOCKET_EXAM_STOP消息
+                    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)) {
+                        Map<String, Object> properties = new HashMap<>();
+                        properties.put(SystemConstant.REMOVE_WEBSOCKET, true);
+                        MqDto clientMqDto = new MqDto(mqUtil.getTopic(), MqTagEnum.OE_WEBSOCKET_EXAM_STOP.name(),
+                                recordId, MqTagEnum.OE_WEBSOCKET_EXAM_STOP, String.valueOf(recordId), properties,
+                                String.valueOf(recordId));
+                        mqDtoService.assembleSendOneOrderMsg(clientMqDto);
+                    }
                     WebsocketTypeEnum websocketTypeEnum = WebsocketTypeEnum
                             .valueOf(websocketDto.getType().toUpperCase());
                     if (Objects.nonNull(websocketTypeEnum) && (websocketTypeEnum == WebsocketTypeEnum.SYNC_STATUS