wangliang 4 years ago
parent
commit
98d02b7c8f

+ 9 - 1
themis-business/src/main/java/com/qmth/themis/business/enums/ExamRecordFieldEnum.java

@@ -121,7 +121,15 @@ public enum ExamRecordFieldEnum {
 
     mobile_second_websocket_status("mobileSecondWebsocketStatus"),
 
-    mobile_second_websocket_id("mobileSecondWebsocketId");
+    mobile_second_websocket_id("mobileSecondWebsocketId"),
+
+    camera_monitor_status("cameraMonitorStatus"),
+
+    screen_monitor_status("screenMonitorStatus"),
+
+    mobile_first_monitor_status("mobileFirstMonitorStatus"),
+
+    mobile_second_monitor_status("mobileSecondMonitorStatus");
 
     private String code;
 

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

@@ -45,9 +45,6 @@ public class CommonServiceImpl implements CommonService {
     @Resource
     TOeExamBreakHistoryService tOeExamBreakHistoryService;
 
-    @Resource
-    TEExamStudentService teExamStudentService;
-
     @Override
     public void persisted(Long recordId) {
         String lockKey = SystemConstant.REDIS_LOCK_EXAM_RECORD_PERSISTED_PREFIX + recordId;

+ 28 - 2
themis-business/src/main/java/com/qmth/themis/business/service/impl/TOeExamRecordServiceImpl.java

@@ -8,6 +8,8 @@ import com.google.gson.Gson;
 import com.qmth.themis.business.bean.admin.*;
 import com.qmth.themis.business.bean.status.ClientWebsocketStatusBean;
 import com.qmth.themis.business.bean.status.ExamStatusBean;
+import com.qmth.themis.business.bean.status.MobileWebsocketStatusBean;
+import com.qmth.themis.business.bean.status.MonitorStatusBean;
 import com.qmth.themis.business.cache.ExamRecordCacheUtil;
 import com.qmth.themis.business.cache.RedisKeyHelper;
 import com.qmth.themis.business.cache.bean.*;
@@ -414,13 +416,37 @@ public class TOeExamRecordServiceImpl extends ServiceImpl<TOeExamRecordMapper, T
             //保存考试记录
             Map<String, Object> record = redisUtil.getHashEntries(RedisKeyHelper.examRecordCacheKey(recordId));
             Object o = redisUtil.get(RedisKeyHelper.examRecordCacheKey(recordId), ExamRecordFieldEnum.status.getCode());
-            if (o instanceof ExamStatusBean) {
+            if (Objects.nonNull(o) && o instanceof ExamStatusBean) {
                 record.put(ExamRecordFieldEnum.status.getCode(), ((ExamStatusBean) o).getExamRecordStatusEnum());
             }
             o = redisUtil.get(RedisKeyHelper.examRecordCacheKey(recordId), ExamRecordFieldEnum.client_websocket_status.getCode());
-            if (o instanceof ClientWebsocketStatusBean) {
+            if (Objects.nonNull(o) && o instanceof ClientWebsocketStatusBean) {
                 record.put(ExamRecordFieldEnum.client_websocket_status.getCode(), ((ClientWebsocketStatusBean) o).getWebsocketStatusEnum());
             }
+            o = redisUtil.get(RedisKeyHelper.examRecordCacheKey(recordId), ExamRecordFieldEnum.mobile_first_websocket_status.getCode());
+            if (Objects.nonNull(o) && o instanceof MobileWebsocketStatusBean) {
+                record.put(ExamRecordFieldEnum.mobile_first_websocket_status.getCode(), ((MobileWebsocketStatusBean) o).getWebsocketStatusEnum());
+            }
+            o = redisUtil.get(RedisKeyHelper.examRecordCacheKey(recordId), ExamRecordFieldEnum.mobile_second_websocket_status.getCode());
+            if (Objects.nonNull(o) && o instanceof MobileWebsocketStatusBean) {
+                record.put(ExamRecordFieldEnum.mobile_second_websocket_status.getCode(), ((MobileWebsocketStatusBean) o).getWebsocketStatusEnum());
+            }
+            o = redisUtil.get(RedisKeyHelper.examRecordCacheKey(recordId), ExamRecordFieldEnum.camera_monitor_status.getCode());
+            if (Objects.nonNull(o) && o instanceof MonitorStatusBean) {
+                record.put(ExamRecordFieldEnum.camera_monitor_status.getCode(), ((MonitorStatusBean) o).getMonitorStatusSourceEnum());
+            }
+            o = redisUtil.get(RedisKeyHelper.examRecordCacheKey(recordId), ExamRecordFieldEnum.screen_monitor_status.getCode());
+            if (Objects.nonNull(o) && o instanceof MonitorStatusBean) {
+                record.put(ExamRecordFieldEnum.screen_monitor_status.getCode(), ((MonitorStatusBean) o).getMonitorStatusSourceEnum());
+            }
+            o = redisUtil.get(RedisKeyHelper.examRecordCacheKey(recordId), ExamRecordFieldEnum.mobile_first_monitor_status.getCode());
+            if (Objects.nonNull(o) && o instanceof MonitorStatusBean) {
+                record.put(ExamRecordFieldEnum.mobile_first_monitor_status.getCode(), ((MonitorStatusBean) o).getMonitorStatusSourceEnum());
+            }
+            o = redisUtil.get(RedisKeyHelper.examRecordCacheKey(recordId), ExamRecordFieldEnum.mobile_second_monitor_status.getCode());
+            if (Objects.nonNull(o) && o instanceof MonitorStatusBean) {
+                record.put(ExamRecordFieldEnum.mobile_second_monitor_status.getCode(), ((MonitorStatusBean) o).getMonitorStatusSourceEnum());
+            }
             Gson gson = new Gson();
             TOeExamRecord er = gson.fromJson(gson.toJson(record), TOeExamRecord.class);
             er.setStatus(ExamRecordStatusEnum.PERSISTED);