|
@@ -976,6 +976,45 @@ public class TOeExamRecordServiceImpl extends ServiceImpl<TOeExamRecordMapper, T
|
|
MqDtoService mqDtoService = SpringContextHolder.getBean(MqDtoService.class);
|
|
MqDtoService mqDtoService = SpringContextHolder.getBean(MqDtoService.class);
|
|
mqDtoService.assembleSendOneWayMsg(mqDtoBreak);
|
|
mqDtoService.assembleSendOneWayMsg(mqDtoBreak);
|
|
//考试断点异常原因 发送mq end
|
|
//考试断点异常原因 发送mq end
|
|
|
|
+
|
|
|
|
+ Long examId = ExamRecordCacheUtil.getExamId(recordId);
|
|
|
|
+ ExamCacheBean ec = examService.getExamCacheBean(examId);//考试缓存
|
|
|
|
+ Integer breakExpireSeconds = Objects.isNull(ec.getBreakExpireSeconds()) ? 0 : ec.getBreakExpireSeconds();
|
|
|
|
+ if (breakExpireSeconds > 0) {
|
|
|
|
+ List<String> list = SystemConstant.mqDelayLevelList.subList(5, 15);
|
|
|
|
+ String level = null;
|
|
|
|
+ if (breakExpireSeconds <= 60) {
|
|
|
|
+ level = "1m";
|
|
|
|
+ } else {
|
|
|
|
+ Integer time = breakExpireSeconds.intValue() / 60;
|
|
|
|
+ if (time >= 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(MqTopicEnum.THEMIS_TOPIC.getCode(), 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
|
|
|
|
+ }
|
|
//更新场次-考试记录缓存
|
|
//更新场次-考试记录缓存
|
|
ExamActivityRecordCacheUtil.setExamRecordStatus(examActivityId, recordId, new ExamActivityRecordCacheBean(ExamRecordCacheUtil.getExamStudentId(recordId), ExamRecordCacheUtil.getStatus(recordId)));
|
|
ExamActivityRecordCacheUtil.setExamRecordStatus(examActivityId, recordId, new ExamActivityRecordCacheBean(ExamRecordCacheUtil.getExamStudentId(recordId), ExamRecordCacheUtil.getStatus(recordId)));
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|