Forráskód Böngészése

断点代码优化

wangliang 4 éve
szülő
commit
7d83b2d97d

+ 5 - 0
themis-business/src/main/java/com/qmth/themis/business/service/TGErrorService.java

@@ -12,4 +12,9 @@ import com.qmth.themis.business.entity.TGError;
  */
 public interface TGErrorService extends IService<TGError> {
 
+    /**
+     * 保存考试错误信息
+     * @param s
+     */
+    void saveExamTgError(Object... s);
 }

+ 2 - 2
themis-business/src/main/java/com/qmth/themis/business/service/TOeExamRecordService.java

@@ -412,11 +412,11 @@ public interface TOeExamRecordService extends IService<TOeExamRecord> {
     Boolean setExamBreak(Long recordId);
 
     /**
-     * 发送断点信息
+     * 断点逻辑
      *
      * @param recordId
      * @param setBreak
      * @return
      */
-    Boolean sendExamBreakMsg(Long recordId, boolean setBreak);
+    Boolean examBreakLogic(Long recordId, boolean setBreak);
 }

+ 38 - 50
themis-business/src/main/java/com/qmth/themis/business/service/impl/TEExamServiceImpl.java

@@ -17,7 +17,10 @@ import com.qmth.themis.business.dto.cache.TEStudentCacheDto;
 import com.qmth.themis.business.dto.response.TEExamActivityDto;
 import com.qmth.themis.business.dto.response.TEExamDto;
 import com.qmth.themis.business.dto.response.TEExamQueryDto;
-import com.qmth.themis.business.entity.*;
+import com.qmth.themis.business.entity.TBSession;
+import com.qmth.themis.business.entity.TBTaskHistory;
+import com.qmth.themis.business.entity.TEExam;
+import com.qmth.themis.business.entity.TOeExamRecord;
 import com.qmth.themis.business.enums.*;
 import com.qmth.themis.business.service.*;
 import com.qmth.themis.business.util.*;
@@ -116,7 +119,7 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
      */
     @Override
     public IPage<TEExamQueryDto> examQuery(IPage<Map> iPage, Long userId, Long id, String code, String name,
-            String mode, Integer enable, Long orgId, String type) {
+                                           String mode, Integer enable, Long orgId, String type) {
         return teExamMapper.examQuery(iPage, userId, id, code, name, mode, enable, orgId, type);
     }
 
@@ -280,12 +283,12 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
                 ExamRecordCacheUtil.setMinDurationSeconds(recordId, examCache.getMinDurationSeconds(), false);
                 ExamRecordCacheUtil.setMaxDurationSeconds(recordId, ac.getMaxDurationSeconds(), false);
                 ExamRecordCacheUtil.setForceFinish(recordId, examCache.getForceFinish(), false);
-                String[] columns = new String[] { ExamRecordFieldEnum.start_time.name(),
+                String[] columns = new String[]{ExamRecordFieldEnum.start_time.name(),
                         ExamRecordFieldEnum.end_time.name(), ExamRecordFieldEnum.opening_seconds.name(),
                         ExamRecordFieldEnum.min_duration_seconds.name(),
-                        ExamRecordFieldEnum.max_duration_seconds.name(), ExamRecordFieldEnum.force_finish.name() };
-                Object[] values = new Object[] { ac.getStartTime(), ac.getFinishTime(), ac.getOpeningSeconds(),
-                        examCache.getMinDurationSeconds(), ac.getMaxDurationSeconds(), examCache.getForceFinish() };
+                        ExamRecordFieldEnum.max_duration_seconds.name(), ExamRecordFieldEnum.force_finish.name()};
+                Object[] values = new Object[]{ac.getStartTime(), ac.getFinishTime(), ac.getOpeningSeconds(),
+                        examCache.getMinDurationSeconds(), ac.getMaxDurationSeconds(), examCache.getForceFinish()};
                 toeExamRecordService.dataUpdatesMq(recordId, columns, values);
                 return prepare;
             }
@@ -426,7 +429,7 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
         if (es.getEnable().intValue() == 0) {
             throw new BusinessException(ExceptionResultEnum.EXAM_STUDENT_ENABLE);
         }
-        Boolean finished = toeExamRecordService.sendExamBreakMsg(recordId, false);
+        Boolean finished = toeExamRecordService.examBreakLogic(recordId, false);
         if (finished) {
             return ret;
         }
@@ -492,14 +495,14 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
                 if (Objects.isNull(clientCameraStatus) || Objects
                         .equals(MonitorStatusSourceEnum.STOP, clientCameraStatus)) {
                     switch (strs[i]) {
-                    case "CLIENT_CAMERA":
-                        throw new BusinessException(ExceptionResultEnum.CLIENT_CAMERA_OFFLINE);
-                    case "CLIENT_SCREEN":
-                        throw new BusinessException(ExceptionResultEnum.CLIENT_SCREEN_OFFLINE);
-                    case "MOBILE_FIRST":
-                        throw new BusinessException(ExceptionResultEnum.MOBILE_FIRST_OFFLINE);
-                    default:
-                        throw new BusinessException(ExceptionResultEnum.MOBILE_SECOND_OFFLINE);
+                        case "CLIENT_CAMERA":
+                            throw new BusinessException(ExceptionResultEnum.CLIENT_CAMERA_OFFLINE);
+                        case "CLIENT_SCREEN":
+                            throw new BusinessException(ExceptionResultEnum.CLIENT_SCREEN_OFFLINE);
+                        case "MOBILE_FIRST":
+                            throw new BusinessException(ExceptionResultEnum.MOBILE_FIRST_OFFLINE);
+                        default:
+                            throw new BusinessException(ExceptionResultEnum.MOBILE_SECOND_OFFLINE);
                     }
                 }
             }
@@ -522,15 +525,15 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
                     if (Objects.isNull(firstStartTime)) {
                         firstStartTime = System.currentTimeMillis();
                         ExamRecordCacheUtil.setFirstStartTime(recordId, firstStartTime, false);
-                        columns = new String[] { ExamRecordFieldEnum.first_start_time.name(),
-                                ExamRecordFieldEnum.status.name() };
-                        values = new Object[] { firstStartTime, ExamRecordStatusEnum.ANSWERING };
+                        columns = new String[]{ExamRecordFieldEnum.first_start_time.name(),
+                                ExamRecordFieldEnum.status.name()};
+                        values = new Object[]{firstStartTime, ExamRecordStatusEnum.ANSWERING};
                     } else {
                         lastStartTime = System.currentTimeMillis();
                         ExamRecordCacheUtil.setLastStartTime(recordId, lastStartTime, false);
-                        columns = new String[] { ExamRecordFieldEnum.last_start_time.name(),
-                                ExamRecordFieldEnum.status.name() };
-                        values = new Object[] { lastStartTime, ExamRecordStatusEnum.ANSWERING };
+                        columns = new String[]{ExamRecordFieldEnum.last_start_time.name(),
+                                ExamRecordFieldEnum.status.name()};
+                        values = new Object[]{lastStartTime, ExamRecordStatusEnum.ANSWERING};
                     }
                     Long breakId = ExamRecordCacheUtil.getLastBreakId(recordId);
                     ExamRecordStatusEnum examRecordStatusEnum = ExamRecordCacheUtil.getStatus(recordId);
@@ -560,12 +563,7 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
             }
         }
         if (!lock) {
-            JSONObject jsonObject = new JSONObject();
-            jsonObject.put("recordId", recordId);
-            jsonObject.put("method", "start");
-            jsonObject.put("examStatus", ExamRecordCacheUtil.getStatus(recordId));
-            TGError tgError = new TGError(jsonObject.toJSONString(), System.currentTimeMillis());
-            tgErrorService.save(tgError);
+            tgErrorService.saveExamTgError(recordId, "start");
             throw new BusinessException(ExceptionResultEnum.EXAM_STATUS_UPDATE_ERROR);
         }
 
@@ -656,7 +654,7 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
      */
     @Override
     public AnswerSubmitBean answerSubmit(Long studentId, Long recordId, Integer mainNumber, Integer subNumber,
-            Integer subIndex, String answer, Long version, Integer durationSeconds) {
+                                         Integer subIndex, String answer, Long version, Integer durationSeconds) {
 
         // 校验当前登录用户和参数一致性
         if (ExamRecordCacheUtil.getId(recordId) == null) {
@@ -752,7 +750,7 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
      */
     @Override
     public AudioLeftPlayCountSubmitBean audioLeftPlayCountSubmit(Long studentId, Long recordId, String key,
-            Integer count) {
+                                                                 Integer count) {
 
         // 校验当前登录用户和参数一致性
         if (ExamRecordCacheUtil.getId(recordId) == null) {
@@ -867,7 +865,7 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
         }
 
         ExamResumeBean ret = null;
-        Boolean finished = toeExamRecordService.sendExamBreakMsg(recordId, false);
+        Boolean finished = toeExamRecordService.examBreakLogic(recordId, false);
         if (finished) {
             return ret;
         }
@@ -907,9 +905,9 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
                     Long lastPrepareTime = System.currentTimeMillis();
                     ExamRecordCacheUtil.setLastPrepareTime(recordId, lastPrepareTime, false);
                     ExamRecordCacheUtil.setStatus(recordId, ExamRecordStatusEnum.RESUME_PREPARE, false);
-                    String[] columns = new String[] { ExamRecordFieldEnum.last_prepare_time.name(),
-                            ExamRecordFieldEnum.status.name() };
-                    Object[] values = new Object[] { lastPrepareTime, ExamRecordStatusEnum.RESUME_PREPARE };
+                    String[] columns = new String[]{ExamRecordFieldEnum.last_prepare_time.name(),
+                            ExamRecordFieldEnum.status.name()};
+                    Object[] values = new Object[]{lastPrepareTime, ExamRecordStatusEnum.RESUME_PREPARE};
                     ExamRecordStatusEnum examRecordStatusEnum = ExamRecordCacheUtil.getStatus(recordId);
                     Long breakId = ExamRecordCacheUtil.getLastBreakId(recordId);
                     if (Objects.nonNull(examRecordStatusEnum)
@@ -938,12 +936,7 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
             }
         }
         if (!lock) {
-            JSONObject jsonObject = new JSONObject();
-            jsonObject.put("recordId", recordId);
-            jsonObject.put("method", "resume");
-            jsonObject.put("examStatus", ExamRecordCacheUtil.getStatus(recordId));
-            TGError tgError = new TGError(jsonObject.toJSONString(), System.currentTimeMillis());
-            tgErrorService.save(tgError);
+            tgErrorService.saveExamTgError(recordId, "resume");
             throw new BusinessException(ExceptionResultEnum.EXAM_STATUS_UPDATE_ERROR);
         }
         return ret;
@@ -1096,11 +1089,11 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
                     ExamRecordCacheUtil.setDurationSeconds(recordId, durationSeconds, false);
                     ExamRecordCacheUtil.setFinishType(recordId, FinishTypeEnum.valueOf(type), false);
                     ExamRecordCacheUtil.setStatus(recordId, ExamRecordStatusEnum.FINISHED, false);
-                    String[] columns = new String[] { ExamRecordFieldEnum.finish_time.name(),
+                    String[] columns = new String[]{ExamRecordFieldEnum.finish_time.name(),
                             ExamRecordFieldEnum.duration_seconds.name(), ExamRecordFieldEnum.finish_type.name(),
-                            ExamRecordFieldEnum.status.name() };
-                    Object[] values = new Object[] { finishTime, durationSeconds, FinishTypeEnum.valueOf(type),
-                            ExamRecordStatusEnum.FINISHED };
+                            ExamRecordFieldEnum.status.name()};
+                    Object[] values = new Object[]{finishTime, durationSeconds, FinishTypeEnum.valueOf(type),
+                            ExamRecordStatusEnum.FINISHED};
                     ExamRecordStatusEnum examRecordStatusEnum = ExamRecordCacheUtil.getStatus(recordId);
                     if (Objects.nonNull(examRecordStatusEnum)
                             && examRecordStatusEnum == ExamRecordStatusEnum.FINISHED) {
@@ -1125,12 +1118,7 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
             }
         }
         if (!lock) {
-            JSONObject jsonObject = new JSONObject();
-            jsonObject.put("recordId", recordId);
-            jsonObject.put("method", "diposeFinish");
-            jsonObject.put("examStatus", ExamRecordCacheUtil.getStatus(recordId));
-            TGError tgError = new TGError(jsonObject.toJSONString(), System.currentTimeMillis());
-            tgErrorService.save(tgError);
+            tgErrorService.saveExamTgError(recordId, "diposeFinish");
             throw new BusinessException(ExceptionResultEnum.EXAM_STATUS_UPDATE_ERROR);
         }
         //更新未完成考试记录id
@@ -1302,7 +1290,7 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
      */
     @Override
     public void sendOeLogMessage(SystemOperationEnum systemOperationEnum, Long examStudentId, Long recordId,
-            MqDto mqDto) {
+                                 MqDto mqDto) {
         //mq发送消息start
         Map<String, Object> properties = new HashMap<>();
         properties.put("remark", systemOperationEnum.getCode());

+ 16 - 0
themis-business/src/main/java/com/qmth/themis/business/service/impl/TGErrorServiceImpl.java

@@ -1,6 +1,8 @@
 package com.qmth.themis.business.service.impl;
 
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.themis.business.cache.ExamRecordCacheUtil;
 import com.qmth.themis.business.dao.TGErrorMapper;
 import com.qmth.themis.business.entity.TGError;
 import com.qmth.themis.business.service.TGErrorService;
@@ -16,4 +18,18 @@ import org.springframework.stereotype.Service;
 @Service
 public class TGErrorServiceImpl extends ServiceImpl<TGErrorMapper, TGError> implements TGErrorService {
 
+    /**
+     * 保存考试错误信息
+     *
+     * @param s
+     */
+    @Override
+    public void saveExamTgError(Object... s) {
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("recordId", (Long) s[0]);
+        jsonObject.put("method", s[1]);
+        jsonObject.put("examStatus", ExamRecordCacheUtil.getStatus((Long) s[0]));
+        TGError tgError = new TGError(jsonObject.toJSONString(), System.currentTimeMillis());
+        this.save(tgError);
+    }
 }

+ 50 - 48
themis-business/src/main/java/com/qmth/themis/business/service/impl/TOeExamRecordServiceImpl.java

@@ -1,13 +1,11 @@
 package com.qmth.themis.business.service.impl;
 
 import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmth.themis.business.bean.admin.*;
 import com.qmth.themis.business.cache.ExamActivityRecordCacheUtil;
-import com.qmth.themis.business.cache.ExamBreakCacheUtil;
 import com.qmth.themis.business.cache.ExamRecordCacheUtil;
 import com.qmth.themis.business.cache.RedisKeyHelper;
 import com.qmth.themis.business.cache.bean.*;
@@ -16,7 +14,6 @@ import com.qmth.themis.business.dao.TOeExamRecordMapper;
 import com.qmth.themis.business.dto.MqDto;
 import com.qmth.themis.business.dto.response.MarkResultDto;
 import com.qmth.themis.business.dto.response.TEExamUnFinishDto;
-import com.qmth.themis.business.entity.TGError;
 import com.qmth.themis.business.entity.TOeExamAnswer;
 import com.qmth.themis.business.entity.TOeExamRecord;
 import com.qmth.themis.business.enums.*;
@@ -1057,43 +1054,7 @@ public class TOeExamRecordServiceImpl extends ServiceImpl<TOeExamRecordMapper, T
                         Integer breakExpireSeconds = Objects.isNull(ec.getBreakExpireSeconds()) ?
                                 0 :
                                 ec.getBreakExpireSeconds();
-                        if (breakExpireSeconds.intValue() > 0) {
-                            List<String> list = SystemConstant.mqDelayLevelList.subList(5, 15);
-                            String level = null;
-                            if (breakExpireSeconds.intValue() <= 60) {
-                                level = "1m";
-                            } else {
-                                Integer time = breakExpireSeconds.intValue() / 60;
-                                if (time.intValue() >= 30) {
-                                    level = "30m";
-                                } else {
-                                    for (String s : list) {
-                                        Integer value = Integer.parseInt(s.substring(0, s.length() - 1));
-                                        if (time.intValue() <= value.intValue()) {
-                                            level = value + "m";
-                                            break;
-                                        }
-                                    }
-                                }
-                            }
-                            Map<String, Object> tranMap = new HashMap<>();
-                            Integer time = SystemConstant.mqDelayLevel.get(level);
-                            LocalDateTime dt = LocalDateTime.now();
-                            if (level.contains("m")) {
-                                dt = dt.plusMinutes(Long.parseLong(level.replace("m", "")));
-                            } else {
-                                dt = dt.plusSeconds(Long.parseLong(level.replace("s", "")));
-                            }
-                            tranMap.put("recordId", recordId);
-                            tranMap.put("timeOut", time);
-                            tranMap.put("mqExecTime", dt.toInstant(ZoneOffset.of("+8")).toEpochMilli());
-                            //考试断点延时消息 发送mq start
-                            MqDto mqDtoBreakDelay = new MqDto(mqUtil.getMqGroupDomain().getTopic(),
-                                    MqTagEnum.EXAM_BREAK_DELAY.name(), MqTagEnum.EXAM_BREAK_DELAY, MqTagEnum.EXAM_BREAK_DELAY,
-                                    String.valueOf(recordId), tranMap, String.valueOf(recordId));
-                            mqDtoService.assembleSendAsyncDelayMsg(mqDtoBreakDelay);
-                            //考试断点延时消息 发送mq end
-                        }
+                        sendExamBreakMqDelayMsg(breakExpireSeconds, recordId);
                         //更新场次-考试记录缓存
                         ExamActivityRecordCacheUtil.setExamRecordStatus(examActivityId, recordId,
                                 new ExamActivityRecordCacheBean(ExamRecordCacheUtil.getExamStudentId(recordId),
@@ -1121,24 +1082,19 @@ public class TOeExamRecordServiceImpl extends ServiceImpl<TOeExamRecordMapper, T
             }
         }
         if (!lock) {
-            JSONObject jsonObject = new JSONObject();
-            jsonObject.put("recordId", recordId);
-            jsonObject.put("method", "setExamBreak");
-            jsonObject.put("examStatus", ExamRecordCacheUtil.getStatus(recordId));
-            TGError tgError = new TGError(jsonObject.toJSONString(), System.currentTimeMillis());
-            tgErrorService.save(tgError);
+            tgErrorService.saveExamTgError(recordId, "setExamBreak");
         }
         return lock;
     }
 
     /**
-     * 发送断点信息
+     * 断点逻辑
      *
      * @param recordId
      * @return
      */
     @Override
-    public Boolean sendExamBreakMsg(Long recordId, boolean setBreak) {
+    public Boolean examBreakLogic(Long recordId, boolean setBreak) {
         Boolean finished = false;
         try {
             if (setBreak) {
@@ -1212,4 +1168,50 @@ public class TOeExamRecordServiceImpl extends ServiceImpl<TOeExamRecordMapper, T
         }
         return tOeExamRecord;
     }
+
+    /**
+     * 发送断点延时mq消息
+     *
+     * @param breakExpireSeconds
+     * @param recordId
+     */
+    private void sendExamBreakMqDelayMsg(Integer breakExpireSeconds, Long recordId) {
+        if (breakExpireSeconds.intValue() > 0) {
+            List<String> list = SystemConstant.mqDelayLevelList.subList(5, 15);
+            String level = null;
+            if (breakExpireSeconds.intValue() <= 60) {
+                level = "1m";
+            } else {
+                Integer time = breakExpireSeconds.intValue() / 60;
+                if (time.intValue() >= 30) {
+                    level = "30m";
+                } else {
+                    for (String s : list) {
+                        Integer value = Integer.parseInt(s.substring(0, s.length() - 1));
+                        if (time.intValue() <= value.intValue()) {
+                            level = value + "m";
+                            break;
+                        }
+                    }
+                }
+            }
+            Map<String, Object> tranMap = new HashMap<>();
+            Integer time = SystemConstant.mqDelayLevel.get(level);
+            LocalDateTime dt = LocalDateTime.now();
+            if (level.contains("m")) {
+                dt = dt.plusMinutes(Long.parseLong(level.replace("m", "")));
+            } else {
+                dt = dt.plusSeconds(Long.parseLong(level.replace("s", "")));
+            }
+            tranMap.put("recordId", recordId);
+            tranMap.put("timeOut", time);
+            tranMap.put("mqExecTime", dt.toInstant(ZoneOffset.of("+8")).toEpochMilli());
+            //考试断点延时消息 发送mq start
+            MqDto mqDtoBreakDelay = new MqDto(mqUtil.getMqGroupDomain().getTopic(),
+                    MqTagEnum.EXAM_BREAK_DELAY.name(), MqTagEnum.EXAM_BREAK_DELAY, MqTagEnum.EXAM_BREAK_DELAY,
+                    String.valueOf(recordId), tranMap, String.valueOf(recordId));
+            mqDtoService.assembleSendAsyncDelayMsg(mqDtoBreakDelay);
+            //考试断点延时消息 发送mq end
+        }
+    }
 }

+ 1 - 1
themis-exam/src/main/java/com/qmth/themis/exam/api/TEExamController.java

@@ -125,7 +125,7 @@ public class TEExamController {
         ExamRecordStatusEnum status = ExamRecordCacheUtil.getStatus(Long.valueOf(recordId));
         if (Objects.nonNull(status) && Objects.equals(ExamRecordStatusEnum.ANSWERING, status)) {//答题状态,强制断点
             ExamConstant.sendExamStopMsg(Long.valueOf(recordId), true);
-            tOeExamRecordService.sendExamBreakMsg(Long.valueOf(recordId), true);
+            tOeExamRecordService.examBreakLogic(Long.valueOf(recordId), true);
         } else if (Objects.nonNull(status) && Objects.equals(ExamRecordStatusEnum.FIRST_PREPARE, status)) {
             ExamConstant.sendExamStopMsg(Long.valueOf(recordId), false);
         } else {

+ 1 - 1
themis-exam/src/main/java/com/qmth/themis/exam/api/TEStudentController.java

@@ -268,7 +268,7 @@ public class TEStudentController {
                     ExamConstant.sendExamStopMsg(recordId, true);
                     tOeExamRecordService.setExamBreak(recordId);
                 }
-                Boolean finished = tOeExamRecordService.sendExamBreakMsg(recordId, false);
+                Boolean finished = tOeExamRecordService.examBreakLogic(recordId, false);
                 if (finished) {
                     map = this.getWaitList(teStudent.getId(), examId, orgId, map);
                 } else {

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

@@ -146,7 +146,7 @@ public class WebSocketOeServer implements Concurrently {
                     log.info("正常退出");
                     ExamConstant.sendExamStopMsg(this.recordId, true);
                     TOeExamRecordService tOeExamRecordService = SpringContextHolder.getBean(TOeExamRecordService.class);
-                    tOeExamRecordService.sendExamBreakMsg(this.recordId, true);
+                    tOeExamRecordService.examBreakLogic(this.recordId, true);
                 }
             }
         }

+ 1 - 1
themis-mq/src/main/java/com/qmth/themis/mq/service/impl/MqLogicServiceImpl.java

@@ -267,7 +267,7 @@ public class MqLogicServiceImpl implements MqLogicService {
         WebsocketStatusEnum websocketStatusEnum = ExamRecordCacheUtil.getClientWebsocketStatus(recordId);
         if (Objects.nonNull(websocketStatusEnum) && (Objects.equals(websocketStatusEnum, WebsocketStatusEnum.OFF_LINE)
                 && Objects.equals(status, ExamRecordStatusEnum.ANSWERING))) {
-            examRecordService.sendExamBreakMsg(recordId, true);
+            examRecordService.examBreakLogic(recordId, true);
             //更新客户端摄像头推流状态为stop
             MonitorStatusSourceEnum cameraStatusSourceEnum = ExamRecordCacheUtil
                     .getMonitorStatus(recordId, MonitorVideoSourceEnum.CLIENT_CAMERA);