|
@@ -234,8 +234,8 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
|
|
|
}
|
|
|
Date now = new Date();
|
|
|
if (ExamModeEnum.ANYTIME.equals(exam.getMode())) {
|
|
|
- Long start = ac.getStartTime().getTime() - (ac.getPrepareSeconds() * 1000);
|
|
|
- Long end = ac.getFinishTime().getTime();
|
|
|
+ Long start = ac.getStartTime() - (ac.getPrepareSeconds() * 1000);
|
|
|
+ Long end = ac.getFinishTime();
|
|
|
if (now.getTime() < start) {
|
|
|
throw new BusinessException("没有到允许开考的时间");
|
|
|
}
|
|
@@ -243,8 +243,8 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
|
|
|
throw new BusinessException("允许开考的时间已结束");
|
|
|
}
|
|
|
} else {
|
|
|
- Long start = ac.getStartTime().getTime() - (ac.getPrepareSeconds() * 1000);
|
|
|
- Long end = ac.getStartTime().getTime() + (ac.getOpeningSeconds() * 1000);
|
|
|
+ Long start = ac.getStartTime() - (ac.getPrepareSeconds() * 1000);
|
|
|
+ Long end = ac.getStartTime() + (ac.getOpeningSeconds() * 1000);
|
|
|
if (now.getTime() < start) {
|
|
|
throw new BusinessException("没有到允许开考的时间");
|
|
|
}
|
|
@@ -367,8 +367,8 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
|
|
|
}
|
|
|
Date now = new Date();
|
|
|
if (ExamModeEnum.ANYTIME.equals(exam.getMode())) {
|
|
|
- Long start = ac.getStartTime().getTime();
|
|
|
- Long end = ac.getFinishTime().getTime();
|
|
|
+ Long start = ac.getStartTime();
|
|
|
+ Long end = ac.getFinishTime();
|
|
|
if (now.getTime() < start) {
|
|
|
throw new BusinessException("没有到允许开考的时间");
|
|
|
}
|
|
@@ -376,8 +376,8 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
|
|
|
throw new BusinessException("允许开考的时间已结束");
|
|
|
}
|
|
|
} else {
|
|
|
- Long start = ac.getStartTime().getTime();
|
|
|
- Long end = ac.getStartTime().getTime() + (ac.getOpeningSeconds() * 1000);
|
|
|
+ Long start = ac.getStartTime();
|
|
|
+ Long end = ac.getStartTime() + (ac.getOpeningSeconds() * 1000);
|
|
|
if (now.getTime() < start) {
|
|
|
throw new BusinessException("没有到允许开考的时间");
|
|
|
}
|
|
@@ -425,13 +425,13 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
|
|
|
ExamStudentCacheBean examStudentCacheBean = teExamStudentService.getExamStudentCacheBean(examStudentId);
|
|
|
Integer durationSeconds = Objects.isNull(ExamRecordCacheUtil.getDurationSeconds(recordId)) ? 0 : ExamRecordCacheUtil.getDurationSeconds(recordId);
|
|
|
//获取断点时间
|
|
|
- Date lastBreakTime = ExamRecordCacheUtil.getLastBreakTime(recordId);
|
|
|
+ Long lastBreakTime = ExamRecordCacheUtil.getLastBreakTime(recordId);
|
|
|
//获取剩余断点次数
|
|
|
Integer alreadyBreakCount = Objects.isNull(ExamRecordCacheUtil.getAlreadyBreakCount(recordId)) ? 0 : ExamRecordCacheUtil.getAlreadyBreakCount(recordId);
|
|
|
Integer leftBreakResumeCount = ec.getBreakResumeCount() - alreadyBreakCount;
|
|
|
Integer breakExpireSeconds = Objects.isNull(ec.getBreakExpireSeconds()) ? 0 : ec.getBreakExpireSeconds();
|
|
|
//如果断点时间大于整体断点时间,则强制交卷
|
|
|
- if (Objects.nonNull(lastBreakTime) && (System.currentTimeMillis() - lastBreakTime.getTime()) / 1000 > breakExpireSeconds) {
|
|
|
+ if (Objects.nonNull(lastBreakTime) && (System.currentTimeMillis() - lastBreakTime) / 1000 > breakExpireSeconds) {
|
|
|
teExamService.finish(examStudentCacheBean.getStudentId(), recordId, FinishTypeEnum.AUTO.name(), durationSeconds);
|
|
|
} else {
|
|
|
//如果断点次数小于0,也强制交卷
|
|
@@ -444,10 +444,10 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
|
|
|
ret.setPaperDecryptVector(ep.getDecryptVector());
|
|
|
|
|
|
// 更新考试记录缓存
|
|
|
- Date firstStartTime = new Date();
|
|
|
+ Long firstStartTime = System.currentTimeMillis();
|
|
|
ExamRecordCacheUtil.setFirstStartTime(recordId, firstStartTime, false);
|
|
|
ExamRecordCacheUtil.setStatus(recordId, ExamRecordStatusEnum.ANSWERING, false);
|
|
|
- Date lastStartTime = new Date();
|
|
|
+ Long lastStartTime = System.currentTimeMillis();
|
|
|
ExamRecordCacheUtil.setLastStartTime(recordId, lastStartTime, false);
|
|
|
String[] columns = new String[]{ExamRecordFieldEnum.first_start_time.name(), ExamRecordFieldEnum.status.name(), ExamRecordFieldEnum.last_start_time.name()};
|
|
|
Object[] values = new Object[]{firstStartTime, ExamRecordStatusEnum.ANSWERING, lastStartTime};
|
|
@@ -457,20 +457,19 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
|
|
|
|
|
|
//非强制交卷,换算最终交卷时间并生成一次性延时任务
|
|
|
if (Objects.nonNull(exam.getForceFinish()) && exam.getForceFinish().intValue() == 0) {
|
|
|
- Date date = ExamRecordCacheUtil.getExamFinalFinishTime(recordId);
|
|
|
+ Long date = ExamRecordCacheUtil.getExamFinalFinishTime(recordId);
|
|
|
if (Objects.isNull(date)) {
|
|
|
- Date startTime = ExamRecordCacheUtil.getStartTime(recordId);
|
|
|
+ Long startTime = ExamRecordCacheUtil.getStartTime(recordId);
|
|
|
Integer activityMaxDurationSeconds = Objects.nonNull(ac.getMaxDurationSeconds()) ? ac.getMaxDurationSeconds() : null;
|
|
|
Integer maxDurationSeconds = Objects.nonNull(exam.getMaxDurationSeconds()) ? exam.getMaxDurationSeconds() : null;
|
|
|
Integer finalMaxDurationSeconds = Objects.nonNull(activityMaxDurationSeconds) ? activityMaxDurationSeconds : maxDurationSeconds;
|
|
|
Calendar calendar = Calendar.getInstance();
|
|
|
if (Objects.nonNull(finalMaxDurationSeconds)) {
|
|
|
- calendar.setTime(startTime);
|
|
|
+ calendar.setTimeInMillis(startTime);
|
|
|
calendar.add(Calendar.SECOND, finalMaxDurationSeconds.intValue());
|
|
|
}
|
|
|
Integer breakResumeCount = exam.getBreakResumeCount();
|
|
|
- Long l = (calendar.getTime().getTime() / 1000 + (breakResumeCount * breakExpireSeconds) + (breakResumeCount * 180)) * 1000;
|
|
|
- Date finalFinishTime = new Date(l);
|
|
|
+ Long finalFinishTime = (calendar.getTime().getTime() / 1000 + (breakResumeCount * breakExpireSeconds) + (breakResumeCount * 180)) * 1000;
|
|
|
ExamRecordCacheUtil.setExamFinalFinishTime(recordId, finalFinishTime);
|
|
|
//新增quartz任务,发送mq消息start
|
|
|
Map<String, Object> prop = new HashMap<>();
|
|
@@ -723,13 +722,13 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
|
|
|
ExamStudentCacheBean examStudentCacheBean = teExamStudentService.getExamStudentCacheBean(examStudentId);
|
|
|
Integer durationSeconds = Objects.isNull(ExamRecordCacheUtil.getDurationSeconds(recordId)) ? 0 : ExamRecordCacheUtil.getDurationSeconds(recordId);
|
|
|
//获取断点时间
|
|
|
- Date lastBreakTime = ExamRecordCacheUtil.getLastBreakTime(recordId);
|
|
|
+ Long lastBreakTime = ExamRecordCacheUtil.getLastBreakTime(recordId);
|
|
|
//获取剩余断点次数
|
|
|
Integer alreadyBreakCount = Objects.isNull(ExamRecordCacheUtil.getAlreadyBreakCount(recordId)) ? 0 : ExamRecordCacheUtil.getAlreadyBreakCount(recordId);
|
|
|
Integer leftBreakResumeCount = ec.getBreakResumeCount() - alreadyBreakCount;
|
|
|
Integer breakExpireSeconds = Objects.isNull(ec.getBreakExpireSeconds()) ? 0 : ec.getBreakExpireSeconds();
|
|
|
//如果断点时间大于整体断点时间,则强制交卷
|
|
|
- if (Objects.nonNull(lastBreakTime) && (System.currentTimeMillis() - lastBreakTime.getTime()) / 1000 > breakExpireSeconds) {
|
|
|
+ if (Objects.nonNull(lastBreakTime) && (System.currentTimeMillis() - lastBreakTime) / 1000 > breakExpireSeconds) {
|
|
|
teExamService.finish(examStudentCacheBean.getStudentId(), recordId, FinishTypeEnum.AUTO.name(), durationSeconds);
|
|
|
} else {
|
|
|
//如果断点次数小于0,也强制交卷
|
|
@@ -764,8 +763,8 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
|
|
|
ret.setAudioLeftPlayCount(audioLeftPlayCounts);
|
|
|
}
|
|
|
|
|
|
- Date lastPrepareTime = new Date();
|
|
|
- ExamRecordCacheUtil.setLastPrepareTime(recordId, new Date(), false);
|
|
|
+ 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};
|
|
@@ -881,7 +880,7 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
|
|
|
} else {//非实时出分
|
|
|
ret.setStatus(FinishExamResultEnum.NORMAL);
|
|
|
}
|
|
|
- Date finishTime = new Date();
|
|
|
+ Long finishTime = System.currentTimeMillis();
|
|
|
ExamRecordCacheUtil.setFinishTime(recordId, finishTime, false);
|
|
|
ExamRecordCacheUtil.setDurationSeconds(recordId, durationSeconds, false);
|
|
|
ExamRecordCacheUtil.setFinishType(recordId, FinishTypeEnum.valueOf(type), false);
|
|
@@ -972,14 +971,12 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
|
|
|
throw new BusinessException("未找到考试记录");
|
|
|
}
|
|
|
ret.setDurationSeconds(er.getDurationSeconds());
|
|
|
- ret.setFinishTime(er.getFinishTime().getTime());
|
|
|
+ ret.setFinishTime(er.getFinishTime());
|
|
|
ret.setFinishType(er.getFinishType());
|
|
|
ret.setObjectiveScore(er.getObjectiveScore());
|
|
|
} else {
|
|
|
ret.setDurationSeconds(ExamRecordCacheUtil.getDurationSeconds(recordId));
|
|
|
- Date finishTime = ExamRecordCacheUtil.getFinishTime(recordId);
|
|
|
-
|
|
|
- ret.setFinishTime(finishTime == null ? null : finishTime.getTime());
|
|
|
+ ret.setFinishTime(ExamRecordCacheUtil.getFinishTime(recordId));
|
|
|
ret.setFinishType(ExamRecordCacheUtil.getFinishType(recordId));
|
|
|
ret.setObjectiveScore(ExamRecordCacheUtil.getObjectiveScore(recordId));
|
|
|
}
|
|
@@ -1130,12 +1127,12 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
|
|
|
task.setSummary("处理成功");
|
|
|
task.setProgress(100.0);
|
|
|
task.setStatus(TaskStatusEnum.FINISH);
|
|
|
- task.setFinishTime(new Date());
|
|
|
+ task.setFinishTime(System.currentTimeMillis());
|
|
|
} catch (Exception e) {
|
|
|
log.error("重新算分出错 recordId:" + (recordId == null ? "" : recordId), e);
|
|
|
task.setSummary("处理出错");
|
|
|
task.setStatus(TaskStatusEnum.FINISH);
|
|
|
- task.setFinishTime(new Date());
|
|
|
+ task.setFinishTime(System.currentTimeMillis());
|
|
|
} finally {
|
|
|
redisUtil.releaseLock(lockKey);
|
|
|
}
|