wangliang 1 rok pred
rodič
commit
de4be28da0

+ 2 - 2
themis-business/src/main/java/com/qmth/themis/business/enums/WarningLevelEnum.java

@@ -21,9 +21,9 @@ public enum WarningLevelEnum {
 
     D13("1分钟内进行连续人脸抓拍检测不到闭眼动作", "【疑似采用照片】系统检测到考生疑似在镜头前采用照片", "违纪预警"),
 
-    D16("1.取检测失败时的3张抓拍照片(开始1张,结束1张,过程1张);2.时间轴上的事件按产生人工干预预警时间显示。", "【疑似替考】过程中随机活体检测不通过", "违纪预警"),
+    D16("1.取检测失败时的3张抓拍照片(开始1张,结束1张,过程1张);2.时间轴上的事件按产生人工干预预警时间显示。", "【疑似替考】过程中随机活体检测不通过", "违纪预警");
 
-    D17("IP变动", "【IP变动】检测到考生IP地址变化", "违纪预警");
+//    D17("IP变动", "【IP变动】检测到考生IP地址变化", "违纪预警");
 
     private String desc;
 

+ 15 - 0
themis-business/src/main/java/com/qmth/themis/business/service/impl/TEExamServiceImpl.java

@@ -302,6 +302,21 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
                         examStudentId, ec, recordId, sysConfig.getConfigValue(), cache);
                 prepare.setTeExamActivityDto(teExamActivityDto);
                 ExamingDataCacheUtil.setExamingRecordId(studentId, recordId);
+
+                String clientWebSocketId = ExamRecordCacheUtil.getClientWebsocketId(recordId);
+                if (Objects.isNull(clientWebSocketId)) {
+                    ExamRecordCacheUtil.setClientWebsocketId(recordId, SystemConstant.getNanoId());
+                }
+                Long timestamp = System.currentTimeMillis();
+                ExamRecordCacheUtil.setClientWebsocketStatus(recordId, WebsocketStatusEnum.ON_LINE, timestamp);
+                ExamCacheBean exam = teExamService.getExamCacheBean(examId);
+                if (Objects.nonNull(exam.getMonitorVideoSource())) {
+                    String[] strs = exam.getMonitorVideoSource().split(",");
+                    for (int i = 0; i < strs.length; i++) {
+                        ExamRecordCacheUtil.setMonitorStatus(recordId, MonitorVideoSourceEnum.valueOf(strs[i]), MonitorStatusSourceEnum.START, System.currentTimeMillis());
+                    }
+                }
+                toeExamRecordService.sendExamRecordDataSaveMq(recordId, timestamp);
                 return prepare;
             }
         }

+ 8 - 0
themis-business/src/main/java/com/qmth/themis/business/service/impl/TOeExamRecordServiceImpl.java

@@ -163,12 +163,20 @@ public class TOeExamRecordServiceImpl extends ServiceImpl<TOeExamRecordMapper, T
         } else {
             er.setHasAnswerFile(1);
         }
+        er.setClientWebsocketId(SystemConstant.getNanoId());
         Map<String, Object> map = SimpleBeanUtil.objectToMap(er);
         ExamStatusBean examStatusBean = new ExamStatusBean(ExamRecordStatusEnum.FIRST_PREPARE, System.currentTimeMillis());
         map.put(SystemConstant.STATUS, examStatusBean);
         redisUtil.setForHash(RedisKeyHelper.examRecordCacheKey(er.getId()), map);
         sendExamRecordDataSaveMq(er.getId(), System.currentTimeMillis());
 
+        ExamRecordCacheUtil.setClientWebsocketStatus(er.getId(), WebsocketStatusEnum.ON_LINE, System.currentTimeMillis());
+        if (Objects.nonNull(exam.getMonitorVideoSource())) {
+            String[] strs = exam.getMonitorVideoSource().split(",");
+            for (int i = 0; i < strs.length; i++) {
+                ExamRecordCacheUtil.setMonitorStatus(er.getId(), MonitorVideoSourceEnum.valueOf(strs[i]), MonitorStatusSourceEnum.START, System.currentTimeMillis());
+            }
+        }
         //2022-04-15新增
         ExamingDataCacheUtil.setExamingRecordId(studentId, er.getId());
         return er;