|
@@ -33,12 +33,10 @@ import cn.com.qmth.examcloud.core.oe.student.base.utils.CommonUtil;
|
|
|
import cn.com.qmth.examcloud.core.oe.student.base.utils.QuestionTypeUtil;
|
|
|
import cn.com.qmth.examcloud.core.oe.student.bean.*;
|
|
|
import cn.com.qmth.examcloud.core.oe.student.dao.ExamContinuedRecordRepo;
|
|
|
+import cn.com.qmth.examcloud.core.oe.student.dao.ExamRecordDataRepo;
|
|
|
import cn.com.qmth.examcloud.core.oe.student.dao.entity.ExamContinuedRecordEntity;
|
|
|
import cn.com.qmth.examcloud.core.oe.student.report.ExamProcessRecordReport;
|
|
|
import cn.com.qmth.examcloud.core.oe.student.service.*;
|
|
|
-import cn.com.qmth.examcloud.core.oe.task.api.ExamCaptureCloudService;
|
|
|
-import cn.com.qmth.examcloud.core.oe.task.api.request.SaveExamCaptureSyncCompareResultReq;
|
|
|
-import cn.com.qmth.examcloud.core.oe.task.api.request.UpdateExamCaptureQueuePriorityReq;
|
|
|
import cn.com.qmth.examcloud.examwork.api.ExamCloudService;
|
|
|
import cn.com.qmth.examcloud.examwork.api.request.GetExamPropertyReq;
|
|
|
import cn.com.qmth.examcloud.examwork.api.response.GetExamPropertyResp;
|
|
@@ -120,7 +118,10 @@ public class ExamControlServiceImpl implements ExamControlService {
|
|
|
private ExamRecordQuestionsService examRecordQuestionsService;
|
|
|
|
|
|
@Autowired
|
|
|
- private ExamCaptureCloudService examCaptureCloudService;
|
|
|
+ private ExamCaptureService examCaptureService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ExamSyncCaptureService examSyncCaptureService;
|
|
|
|
|
|
@Autowired
|
|
|
private ExamCloudService examCloudService;
|
|
@@ -155,6 +156,9 @@ public class ExamControlServiceImpl implements ExamControlService {
|
|
|
@Autowired
|
|
|
private CryptoConfigCloudService cryptoConfigCloudService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private ExamRecordDataRepo examRecordDataRepo;
|
|
|
+
|
|
|
@Autowired
|
|
|
private CryptoFactory cryptoFactory;
|
|
|
|
|
@@ -234,10 +238,7 @@ public class ExamControlServiceImpl implements ExamControlService {
|
|
|
Long rootOrgId = examRecordData.getRootOrgId();
|
|
|
Long examId = examRecordData.getExamId();
|
|
|
if (FaceBiopsyHelper.isFaceEnable(rootOrgId, examId, studentId)) {
|
|
|
- SaveExamCaptureSyncCompareResultReq req = new SaveExamCaptureSyncCompareResultReq();
|
|
|
- req.setExamRecordDataId(examRecordData.getId());
|
|
|
- req.setStudentId(userId);
|
|
|
- examCaptureCloudService.saveExamCaptureSyncCompareResult(req);
|
|
|
+ examSyncCaptureService.saveExamCaptureSyncCompareResult(userId, examRecordData.getId());
|
|
|
}
|
|
|
|
|
|
// 小题乱序,选项乱序
|
|
@@ -260,6 +261,9 @@ public class ExamControlServiceImpl implements ExamControlService {
|
|
|
// 初始化考试会话
|
|
|
initializeExamRecordSession(examingSession, examRecordData, examBean);
|
|
|
|
|
|
+ //设置并保存上次活动时间
|
|
|
+ setAndSaveActiveTime(examRecordData.getId(), ip);
|
|
|
+
|
|
|
// 保存考试次数控制信息
|
|
|
ExamBoss eb = examBossService.getExamBoss(examingSession.getExamStudentId());
|
|
|
if (eb == null) {
|
|
@@ -272,9 +276,6 @@ public class ExamControlServiceImpl implements ExamControlService {
|
|
|
eb.setStartCount(eb.getStartCount() + 1);
|
|
|
examBossService.saveExamBoss(examStudentId, eb);
|
|
|
|
|
|
- //设置并保存上次活动时间
|
|
|
- setAndSaveActiveTime(examRecordData.getId(), ip);
|
|
|
-
|
|
|
// 在线考生开考打点
|
|
|
ReportsUtil.report(new OnlineExamStudentReport(rootOrgId, userId, examBean.getId(), examStudentId));
|
|
|
|
|
@@ -826,10 +827,7 @@ public class ExamControlServiceImpl implements ExamControlService {
|
|
|
//更新照片处理的优先级不影响交卷业务
|
|
|
try {
|
|
|
// 更新照片抓拍队列优先级为高优先级
|
|
|
- UpdateExamCaptureQueuePriorityReq req = new UpdateExamCaptureQueuePriorityReq();
|
|
|
- req.setExamRecordDataId(examRecordDataId);
|
|
|
- req.setPriority(Constants.PROCESS_CAPTURE_HIGH_PRIORITY);
|
|
|
- examCaptureCloudService.updateExamCaptureQueuePriority(req);
|
|
|
+ examCaptureService.updateExamCaptureQueuePriority(examRecordDataId, Constants.PROCESS_CAPTURE_HIGH_PRIORITY);
|
|
|
} catch (Exception e) {
|
|
|
log.error("updateExamCaptureQueuePriority examRecordDataId:{}, error: db deadlock {}", examRecordDataId, e.getMessage());
|
|
|
}
|
|
@@ -842,8 +840,15 @@ public class ExamControlServiceImpl implements ExamControlService {
|
|
|
}
|
|
|
|
|
|
//交卷时,落地最近的上次活动时间字段
|
|
|
- examRecordData.setLastActiveTime(new Date(getExamingActivityTime(examRecordDataId).getActiveTime()));
|
|
|
+ ExamingActivityTime examingActiveTime = getExamingActivityTime(examRecordDataId);
|
|
|
+ if (examingActiveTime.getActiveTime() != null) {
|
|
|
+ examRecordData.setLastActiveTime(new Date(examingActiveTime.getActiveTime()));
|
|
|
+ } else {
|
|
|
+ // activeTime is null ? todo
|
|
|
+ examRecordData.setLastActiveTime(new Date());
|
|
|
+ }
|
|
|
|
|
|
+ //设置并保存上次活动时间
|
|
|
setAndSaveActiveTime(examRecordDataId, ip);
|
|
|
|
|
|
//特殊处理:如果考试类型为 在线练习,则需要将部分数据提前入库,并更新相关状态
|
|
@@ -872,7 +877,7 @@ public class ExamControlServiceImpl implements ExamControlService {
|
|
|
syncExamDataCloudService.syncExamData(syncExamDataReq);
|
|
|
|
|
|
// 同步成功后,更新同步状态
|
|
|
- // examRecordData.setSyncStatus(SyncStatus.SYNCED);
|
|
|
+ examRecordData.setSyncStatus(SyncStatus.SYNCED);
|
|
|
}
|
|
|
|
|
|
// 保存考试记录
|
|
@@ -881,6 +886,9 @@ public class ExamControlServiceImpl implements ExamControlService {
|
|
|
// 删除redis会话
|
|
|
examingSessionService.deleteExamingSession(studentId);
|
|
|
|
|
|
+ // 更新考试记录状态
|
|
|
+ examRecordDataRepo.updateExamRecordStatusById(examRecordData.getExamRecordStatus(), new Date(), examRecordDataId);
|
|
|
+
|
|
|
log.warn("handInExam success! studentId:{}, examRecordDataId:{}, handInExamType:{}, ip:{}", studentId, examRecordDataId, handInExamType.name(), ip);
|
|
|
|
|
|
//考试过程记录(交卷)打点
|
|
@@ -1660,6 +1668,7 @@ public class ExamControlServiceImpl implements ExamControlService {
|
|
|
throw new StatusException("6002", ExamProperties.FREEZE_TIME.getDesc() + "未设置");
|
|
|
}
|
|
|
examSessionInfo.setFreezeTime(Integer.valueOf(freezeTimeStr));
|
|
|
+
|
|
|
examSessionInfo.setExamingStatus(ExamingStatus.FORMAL);
|
|
|
examingSessionService.saveExamingSession(examSessionInfo.getStudentId(), examSessionInfo);
|
|
|
log.warn("initExamingSession success! studentId:{}, examRecordDataId:{}", examRecordData.getStudentId(), examRecordData.getId());
|
|
@@ -1699,85 +1708,85 @@ public class ExamControlServiceImpl implements ExamControlService {
|
|
|
ExamRecordData examingRecord = checkExamSession(examSessionInfo);
|
|
|
if (examingRecord == null) {
|
|
|
return null;
|
|
|
- } else {
|
|
|
- Date now = new Date();
|
|
|
- Integer maxInterruptNum = getMaxInterruptNum(examSessionInfo.getExamId(), examSessionInfo.getRootOrgId(),
|
|
|
- examSessionInfo.getOrgId());
|
|
|
- CheckExamInProgressInfo checkExamInProgressInfo = new CheckExamInProgressInfo();
|
|
|
-
|
|
|
- String examingHeartbeatKey = RedisKeyHelper.getBuilder()
|
|
|
- .examingHeartbeatKey(examSessionInfo.getExamRecordDataId());
|
|
|
- ExamingHeartbeat examingHeartbeat = redisClient.get(examingHeartbeatKey,
|
|
|
- ExamingHeartbeat.class);
|
|
|
- //考试已用时间(秒)
|
|
|
- long usedTime = null == examingHeartbeat ? 0 : examingHeartbeat.getCost();
|
|
|
-
|
|
|
- Long examRecordDataId = examingRecord.getId();
|
|
|
- if ((examingRecord.getIsExceed() == null || !examingRecord.getIsExceed())
|
|
|
- && examingRecord.getContinuedCount().intValue() < maxInterruptNum.intValue()) {// 未达到最大断点次数,可继续断点一次
|
|
|
- // 断点续考次数自增
|
|
|
- int continutedCount = examingRecord.getContinuedCount() == null ? 0
|
|
|
- : examingRecord.getContinuedCount().intValue();
|
|
|
- examingRecord.setContinuedCount(continutedCount + 1);
|
|
|
- examingRecord.setIsContinued(true);
|
|
|
- examingRecord.setIsExceed(false);
|
|
|
- examingRecord.setLastActiveTime(now);
|
|
|
- examingRecord.setContinuedTime(now);
|
|
|
- checkExamInProgressInfo.setIsExceed(false);
|
|
|
-
|
|
|
- //添加断点记录
|
|
|
- addExamContinuedRecord(examRecordDataId, usedTime * 1000, now);
|
|
|
- } else {
|
|
|
- examingRecord.setIsExceed(true);
|
|
|
- checkExamInProgressInfo.setIsExceed(true);
|
|
|
- }
|
|
|
+ }
|
|
|
+
|
|
|
+ Date now = new Date();
|
|
|
+ Integer maxInterruptNum = getMaxInterruptNum(examSessionInfo.getExamId(), examSessionInfo.getRootOrgId(),
|
|
|
+ examSessionInfo.getOrgId());
|
|
|
+ CheckExamInProgressInfo checkExamInProgressInfo = new CheckExamInProgressInfo();
|
|
|
+
|
|
|
+ String examingHeartbeatKey = RedisKeyHelper.getBuilder()
|
|
|
+ .examingHeartbeatKey(examSessionInfo.getExamRecordDataId());
|
|
|
+ ExamingHeartbeat examingHeartbeat = redisClient.get(examingHeartbeatKey,
|
|
|
+ ExamingHeartbeat.class);
|
|
|
+ //考试已用时间(秒)
|
|
|
+ long usedTime = null == examingHeartbeat ? 0 : examingHeartbeat.getCost();
|
|
|
+
|
|
|
+ Long examRecordDataId = examingRecord.getId();
|
|
|
+ if ((examingRecord.getIsExceed() == null || !examingRecord.getIsExceed())
|
|
|
+ && examingRecord.getContinuedCount().intValue() < maxInterruptNum.intValue()) {// 未达到最大断点次数,可继续断点一次
|
|
|
+ // 断点续考次数自增
|
|
|
+ int continutedCount = examingRecord.getContinuedCount() == null ? 0
|
|
|
+ : examingRecord.getContinuedCount().intValue();
|
|
|
+ examingRecord.setContinuedCount(continutedCount + 1);
|
|
|
+ examingRecord.setIsContinued(true);
|
|
|
+ examingRecord.setIsExceed(false);
|
|
|
examingRecord.setLastActiveTime(now);
|
|
|
- // 更新考试中的断点续考属性
|
|
|
- examRecordDataService.saveExamRecordDataCache(examRecordDataId, examingRecord);
|
|
|
-
|
|
|
-
|
|
|
- checkExamInProgressInfo.setExamRecordDataId(examRecordDataId);
|
|
|
- checkExamInProgressInfo.setExamId(examSessionInfo.getExamId());
|
|
|
- checkExamInProgressInfo.setUsedTime(usedTime);
|
|
|
- checkExamInProgressInfo.setMaxInterruptNum(maxInterruptNum);
|
|
|
- checkExamInProgressInfo.setInterruptNum(examingRecord.getContinuedCount());
|
|
|
- checkExamInProgressInfo.setExamType(examingRecord.getExamType());
|
|
|
-
|
|
|
- // 断点续考时重新计算活体检测的分钟数
|
|
|
- Integer faceVerifyMinute;
|
|
|
- FaceBiopsyScheme faceBiopsyScheme = FaceBiopsyHelper.getFaceBiopsyScheme(examSessionInfo.getRootOrgId());
|
|
|
- if (FaceBiopsyScheme.FACE_CLIENT == faceBiopsyScheme) {
|
|
|
- // C端活体检测方案
|
|
|
- faceVerifyMinute = examFaceLiveVerifyService.calculateStartFaceVerifyMinute(examRecordDataId);
|
|
|
- } else if (faceBiopsyScheme == FaceBiopsyScheme.FACE_MOTION) {
|
|
|
- // Electron Client 自研活体检测方案
|
|
|
- faceVerifyMinute = faceBiopsyService.calculateFaceBiopsyStartMinute(examRecordDataId);
|
|
|
- } else {
|
|
|
- // FaceID活体检测方案
|
|
|
- faceVerifyMinute = examFaceLivenessVerifyService.getFaceLivenessVerifyMinute(
|
|
|
- examSessionInfo.getRootOrgId(), examSessionInfo.getOrgId(), examSessionInfo.getExamId(),
|
|
|
- studentId, examSessionInfo.getExamRecordDataId(), (int) usedTime / 60);
|
|
|
- }
|
|
|
- checkExamInProgressInfo.setFaceVerifyMinute(faceVerifyMinute);
|
|
|
-
|
|
|
- //考试过程记录(断点)打点
|
|
|
- ExamingActivityTime lastExamingActivityTime = getExamingActivityTime(examRecordDataId);
|
|
|
- ReportsUtil.report(
|
|
|
- new ExamProcessRecordReport(examRecordDataId,
|
|
|
- ExamProcess.BREAK_OFF,
|
|
|
- lastExamingActivityTime.getActiveTime() == null ? new Date() : new Date(lastExamingActivityTime.getActiveTime()))
|
|
|
- );
|
|
|
- //考试过程记录(断点续考)打点
|
|
|
- ReportsUtil.report(new ExamProcessRecordReport(examRecordDataId, ExamProcess.CONTINUE, new Date()));
|
|
|
-
|
|
|
- setAndSaveActiveTime(examRecordDataId, ip);
|
|
|
-
|
|
|
- checkExamInProgressInfo.setExceedMaxSwitchScreenCount(examingRecord.getExceedMaxSwitchScreenCount());
|
|
|
- checkExamInProgressInfo.setSwitchScreenCount(examingRecord.getSwitchScreenCount());
|
|
|
- checkExamInProgressInfo.setMaxSwitchScreenCount(examSessionInfo.getMaxSwitchScreenCount());
|
|
|
- log.warn("checkExamInProgress success! studentId:{}, examRecordDataId:{}, ip:{}", studentId, examRecordDataId, ip);
|
|
|
- return checkExamInProgressInfo;
|
|
|
+ examingRecord.setContinuedTime(now);
|
|
|
+ checkExamInProgressInfo.setIsExceed(false);
|
|
|
+
|
|
|
+ //添加断点记录
|
|
|
+ addExamContinuedRecord(examRecordDataId, usedTime * 1000, now);
|
|
|
+ } else {
|
|
|
+ examingRecord.setIsExceed(true);
|
|
|
+ checkExamInProgressInfo.setIsExceed(true);
|
|
|
+ }
|
|
|
+ examingRecord.setLastActiveTime(now);
|
|
|
+
|
|
|
+ // 更新考试中的断点续考属性
|
|
|
+ examRecordDataService.saveExamRecordDataCache(examRecordDataId, examingRecord);
|
|
|
+
|
|
|
+ checkExamInProgressInfo.setExamRecordDataId(examRecordDataId);
|
|
|
+ checkExamInProgressInfo.setExamId(examSessionInfo.getExamId());
|
|
|
+ checkExamInProgressInfo.setUsedTime(usedTime);
|
|
|
+ checkExamInProgressInfo.setMaxInterruptNum(maxInterruptNum);
|
|
|
+ checkExamInProgressInfo.setInterruptNum(examingRecord.getContinuedCount());
|
|
|
+ checkExamInProgressInfo.setExamType(examingRecord.getExamType());
|
|
|
+
|
|
|
+ // 断点续考时重新计算活体检测的分钟数
|
|
|
+ Integer faceVerifyMinute;
|
|
|
+ FaceBiopsyScheme faceBiopsyScheme = FaceBiopsyHelper.getFaceBiopsyScheme(examSessionInfo.getRootOrgId());
|
|
|
+ if (FaceBiopsyScheme.FACE_CLIENT == faceBiopsyScheme) {
|
|
|
+ // C端活体检测方案
|
|
|
+ faceVerifyMinute = examFaceLiveVerifyService.calculateStartFaceVerifyMinute(examRecordDataId);
|
|
|
+ } else if (faceBiopsyScheme == FaceBiopsyScheme.FACE_MOTION) {
|
|
|
+ // Electron Client 自研活体检测方案
|
|
|
+ faceVerifyMinute = faceBiopsyService.calculateFaceBiopsyStartMinute(examRecordDataId);
|
|
|
+ } else {
|
|
|
+ // FaceID活体检测方案
|
|
|
+ faceVerifyMinute = examFaceLivenessVerifyService.getFaceLivenessVerifyMinute(
|
|
|
+ examSessionInfo.getRootOrgId(), examSessionInfo.getOrgId(), examSessionInfo.getExamId(),
|
|
|
+ studentId, examSessionInfo.getExamRecordDataId(), (int) usedTime / 60);
|
|
|
}
|
|
|
+ checkExamInProgressInfo.setFaceVerifyMinute(faceVerifyMinute);
|
|
|
+
|
|
|
+ //设置并保存上次活动时间
|
|
|
+ setAndSaveActiveTime(examRecordDataId, ip);
|
|
|
+
|
|
|
+ //考试过程记录(断点)打点
|
|
|
+ ExamingActivityTime lastExamingActivityTime = getExamingActivityTime(examRecordDataId);
|
|
|
+ ReportsUtil.report(
|
|
|
+ new ExamProcessRecordReport(examRecordDataId, ExamProcess.BREAK_OFF,
|
|
|
+ lastExamingActivityTime.getActiveTime() == null ? new Date() : new Date(lastExamingActivityTime.getActiveTime()))
|
|
|
+ );
|
|
|
+ //考试过程记录(断点续考)打点
|
|
|
+ ReportsUtil.report(new ExamProcessRecordReport(examRecordDataId, ExamProcess.CONTINUE, new Date()));
|
|
|
+
|
|
|
+ checkExamInProgressInfo.setExceedMaxSwitchScreenCount(examingRecord.getExceedMaxSwitchScreenCount());
|
|
|
+ checkExamInProgressInfo.setSwitchScreenCount(examingRecord.getSwitchScreenCount());
|
|
|
+ checkExamInProgressInfo.setMaxSwitchScreenCount(examSessionInfo.getMaxSwitchScreenCount());
|
|
|
+ log.warn("checkExamInProgress success! studentId:{}, examRecordDataId:{}, ip:{}", studentId, examRecordDataId, ip);
|
|
|
+ return checkExamInProgressInfo;
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -1938,6 +1947,7 @@ public class ExamControlServiceImpl implements ExamControlService {
|
|
|
examingHeartbeat.setCost(calcUsedExamSeconds(studentId));
|
|
|
redisClient.set(examingHeartbeatKey, examingHeartbeat);//更新心跳缓存
|
|
|
|
|
|
+ //设置并保存上次活动时间
|
|
|
setAndSaveActiveTime(examSessionInfo.getExamRecordDataId(), ip);
|
|
|
|
|
|
// 在线考生心跳打点
|
|
@@ -1963,21 +1973,16 @@ public class ExamControlServiceImpl implements ExamControlService {
|
|
|
private void setAndSaveActiveTime(Long examRecordDataId, String ip) {
|
|
|
String examingActiveTimeKey = RedisKeyHelper.getBuilder()
|
|
|
.examingActiveTimeKey(examRecordDataId);
|
|
|
- ExamingActivityTime examingActiveTime = redisClient.get(examingActiveTimeKey,
|
|
|
- ExamingActivityTime.class);
|
|
|
+ ExamingActivityTime examingActiveTime = redisClient.get(examingActiveTimeKey, ExamingActivityTime.class);
|
|
|
if (null == examingActiveTime) {
|
|
|
examingActiveTime = new ExamingActivityTime();
|
|
|
examingActiveTime.setExamRecordDataId(examRecordDataId);
|
|
|
}
|
|
|
|
|
|
- Long now = System.currentTimeMillis();
|
|
|
-
|
|
|
//ip如果发生变更,则记录ip变更记录
|
|
|
String lastIp = examingActiveTime.getRealIp();
|
|
|
if (StringUtils.isNotEmpty(ip) && StringUtils.isNotEmpty(lastIp) && !ip.equals(lastIp)) {
|
|
|
- ReportsUtil.report(
|
|
|
- new ExamProcessRecordReport(examRecordDataId, ExamProcess.IP_CHANGE, new Date(now))
|
|
|
- );
|
|
|
+ ReportsUtil.report(new ExamProcessRecordReport(examRecordDataId, ExamProcess.IP_CHANGE, new Date()));
|
|
|
}
|
|
|
|
|
|
examingActiveTime.setActiveTime(System.currentTimeMillis());
|
|
@@ -2147,34 +2152,46 @@ public class ExamControlServiceImpl implements ExamControlService {
|
|
|
|
|
|
private ExamRecordDataBean copyExamRecordDataFrom(ExamRecordData examRecordData) {
|
|
|
ExamRecordDataBean data = new ExamRecordDataBean();
|
|
|
+
|
|
|
data.setId(examRecordData.getId());
|
|
|
- data.setExamId(examRecordData.getExamId());
|
|
|
- data.setExamType(examRecordData.getExamType() == null ? null : examRecordData.getExamType().toString());
|
|
|
- data.setExamStudentId(examRecordData.getExamStudentId());
|
|
|
- data.setStudentId(examRecordData.getStudentId());
|
|
|
- data.setCourseId(examRecordData.getCourseId());
|
|
|
- data.setOrgId(examRecordData.getOrgId());
|
|
|
data.setRootOrgId(examRecordData.getRootOrgId());
|
|
|
+ data.setOrgId(examRecordData.getOrgId());
|
|
|
+ data.setCourseId(examRecordData.getCourseId());
|
|
|
+ data.setStudentId(examRecordData.getStudentId());
|
|
|
+ data.setExamStudentId(examRecordData.getExamStudentId());
|
|
|
+
|
|
|
+ data.setExamId(examRecordData.getExamId());
|
|
|
+ data.setExamType(examRecordData.getExamType() != null ? examRecordData.getExamType().toString() : null);
|
|
|
+ data.setExamStageId(examRecordData.getExamStageId());
|
|
|
+ data.setExamStageOrder(examRecordData.getExamStageOrder());
|
|
|
data.setBasePaperId(examRecordData.getBasePaperId());
|
|
|
data.setPaperType(examRecordData.getPaperType());
|
|
|
- data.setExamRecordStatus(examRecordData.getExamRecordStatus() == null ? null : examRecordData.getExamRecordStatus().toString());
|
|
|
+
|
|
|
data.setStartTime(examRecordData.getStartTime());
|
|
|
data.setEndTime(examRecordData.getEndTime());
|
|
|
+ data.setEnterExamTime(examRecordData.getEnterExamTime());
|
|
|
data.setCleanTime(examRecordData.getCleanTime());
|
|
|
- data.setWarn(examRecordData.getIsWarn() == null ? false : examRecordData.getIsWarn());
|
|
|
- data.setAudit(examRecordData.getIsAudit() == null ? false : examRecordData.getIsAudit());
|
|
|
- data.setIllegality(examRecordData.getIsIllegality() == null ? false : examRecordData.getIsIllegality());
|
|
|
+ data.setLastActiveTime(examRecordData.getLastActiveTime());
|
|
|
data.setUsedExamTime(examRecordData.getUsedExamTime());
|
|
|
- data.setContinued(examRecordData.getIsContinued() == null ? false : examRecordData.getIsContinued());
|
|
|
+
|
|
|
data.setContinuedCount(examRecordData.getContinuedCount());
|
|
|
- data.setExceed(examRecordData.getIsExceed() == null ? false : examRecordData.getIsExceed());
|
|
|
+ data.setContinuedTime(examRecordData.getContinuedTime());
|
|
|
+ data.setContinued(examRecordData.getIsContinued() != null ? examRecordData.getIsContinued() : false);
|
|
|
+ data.setExceed(examRecordData.getIsExceed() != null ? examRecordData.getIsExceed() : false);
|
|
|
+
|
|
|
+ data.setExamRecordStatus(examRecordData.getExamRecordStatus() != null ? examRecordData.getExamRecordStatus().toString() : null);
|
|
|
+ data.setWarn(examRecordData.getIsWarn() != null ? examRecordData.getIsWarn() : false);
|
|
|
+ data.setAudit(examRecordData.getIsAudit() != null ? examRecordData.getIsAudit() : false);
|
|
|
+ data.setIllegality(examRecordData.getIsIllegality() != null ? examRecordData.getIsIllegality() : false);
|
|
|
+
|
|
|
+ data.setFaceVerifyResult(examRecordData.getFaceVerifyResult() != null ? examRecordData.getFaceVerifyResult().toString() : null);
|
|
|
+ data.setBaiduFaceLivenessSuccessPercent(examRecordData.getBaiduFaceLivenessSuccessPercent());
|
|
|
+ data.setFaceTotalCount(examRecordData.getFaceTotalCount());
|
|
|
data.setFaceSuccessCount(examRecordData.getFaceSuccessCount());
|
|
|
data.setFaceFailedCount(examRecordData.getFaceFailedCount());
|
|
|
data.setFaceStrangerCount(examRecordData.getFaceStrangerCount());
|
|
|
- data.setFaceTotalCount(examRecordData.getFaceTotalCount());
|
|
|
data.setFaceSuccessPercent(examRecordData.getFaceSuccessPercent());
|
|
|
- data.setFaceVerifyResult(examRecordData.getFaceVerifyResult() == null ? null : examRecordData.getFaceVerifyResult().toString());
|
|
|
- data.setBaiduFaceLivenessSuccessPercent(examRecordData.getBaiduFaceLivenessSuccessPercent());
|
|
|
+
|
|
|
data.setTotalScore(examRecordData.getTotalScore());
|
|
|
data.setObjectiveScore(examRecordData.getObjectiveScore());
|
|
|
data.setObjectiveAccuracy(examRecordData.getObjectiveAccuracy());
|
|
@@ -2182,6 +2199,8 @@ public class ExamControlServiceImpl implements ExamControlService {
|
|
|
data.setSuccPercent(examRecordData.getSuccPercent());
|
|
|
data.setAllObjectivePaper(examRecordData.getIsAllObjectivePaper());
|
|
|
|
|
|
+ data.setSwitchScreenCount(examRecordData.getSwitchScreenCount());
|
|
|
+ data.setExceedMaxSwitchScreenCount(examRecordData.getExceedMaxSwitchScreenCount());
|
|
|
return data;
|
|
|
}
|
|
|
|