|
@@ -155,6 +155,35 @@ public class TEExamController {
|
|
|
if (teExam.getEndTime().longValue() < oldTeExam.getEndTime().longValue()) {
|
|
|
throw new BusinessException("修改的批次结束时间只能大于未修改前的批次结束时间");
|
|
|
}
|
|
|
+ if (Objects.nonNull(oldTeExam) && Objects.nonNull(teExam)
|
|
|
+ && oldTeExam.getForceFinish().intValue() != teExam.getForceFinish().intValue()
|
|
|
+ && teExam.getMode() == oldTeExam.getMode()) {
|
|
|
+ QueryWrapper<TEExamActivity> teExamActivityQueryWrapper = new QueryWrapper<>();
|
|
|
+ teExamActivityQueryWrapper.lambda().eq(TEExamActivity::getExamId, oldId);
|
|
|
+ List<TEExamActivity> teExamActivityList = teExamActivityService.list(teExamActivityQueryWrapper);
|
|
|
+ if (!CollectionUtils.isEmpty(teExamActivityList)) {
|
|
|
+ if (teExam.getForceFinish().intValue() == 1) {//从非强制交卷改成强制交卷,这时需生成场次定时任务
|
|
|
+ //新增quartz任务,发送mq消息start
|
|
|
+ Map<String, Object> prop = new HashMap<>();
|
|
|
+ prop.put("oper", "insert");
|
|
|
+ prop.put("exam", teExam);
|
|
|
+ MqDto mqDto = new MqDto(mqUtil.getMqGroupDomain().getTopic(), MqTagEnum.EXAM_ACTIVITY.name(),
|
|
|
+ JacksonUtil.parseJson(teExamActivityList), MqTagEnum.EXAM_ACTIVITY,
|
|
|
+ String.valueOf(teExam.getId()), prop, tbUser.getName());
|
|
|
+ mqDtoService.assembleSendOneOrderMsg(mqDto);
|
|
|
+ //新增quartz任务,发送mq消息end
|
|
|
+ } else {//否则删除场次定时任务
|
|
|
+ //删除quartz任务,发送mq消息start
|
|
|
+ Map<String, Object> prop = new HashMap<>();
|
|
|
+ prop.put("oper", "delete");
|
|
|
+ MqDto mqDto = new MqDto(mqUtil.getMqGroupDomain().getTopic(), MqTagEnum.EXAM_ACTIVITY.name(),
|
|
|
+ JacksonUtil.parseJson(teExamActivityList), MqTagEnum.EXAM_ACTIVITY,
|
|
|
+ String.valueOf(teExam.getId()), prop, tbUser.getName());
|
|
|
+ mqDtoService.assembleSendOneOrderMsg(mqDto);
|
|
|
+ //删除quartz任务,发送mq消息end
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
tsLogService.save(new TSLog(LogEnum.EXAM, teExam.getName(),
|
|
|
JacksonUtil.parseJson(oldTeExam),
|
|
|
JacksonUtil.parseJson(teExam),
|
|
@@ -167,59 +196,14 @@ public class TEExamController {
|
|
|
}
|
|
|
}
|
|
|
teExamService.saveOrUpdate(teExam);
|
|
|
- if (Objects.nonNull(oldTeExam) && !Objects
|
|
|
- .equals(oldTeExam.getMode().name(), teExamDto.getMode().name())) {//如果模式改变,则删除之前模式的全部quartz
|
|
|
- QueryWrapper<TEExamActivity> teExamActivityQueryWrapper = new QueryWrapper<>();
|
|
|
- teExamActivityQueryWrapper.lambda().eq(TEExamActivity::getExamId, oldId);
|
|
|
- List<TEExamActivity> teExamActivityList = teExamActivityService.list(teExamActivityQueryWrapper);
|
|
|
- if (Objects.nonNull(teExamActivityList) && teExamActivityList.size() > 0) {
|
|
|
- //删除quartz任务,发送mq消息start
|
|
|
- Map<String, Object> prop = new HashMap<>();
|
|
|
- prop.put("oper", "delete");
|
|
|
- if (Objects.nonNull(teExamActivityList.get(0)) && teExamActivityList.get(0).getEnable() == 1) {
|
|
|
- MqDto mqDto = new MqDto(mqUtil.getMqGroupDomain().getTopic(), MqTagEnum.EXAM_ACTIVITY.name(),
|
|
|
- JacksonUtil.parseJson(teExamActivityList), MqTagEnum.EXAM_ACTIVITY,
|
|
|
- String.valueOf(teExam.getId()), prop, tbUser.getName());
|
|
|
- mqDtoService.assembleSendOneOrderMsg(mqDto);
|
|
|
- }
|
|
|
- //删除quartz任务,发送mq消息end
|
|
|
- //删除数据
|
|
|
- teExamActivityService.remove(teExamActivityQueryWrapper);
|
|
|
- }
|
|
|
- }
|
|
|
+ //只有集中统一模式,并且强制交卷才会生成场次定时任务。否则等待每天凌晨的定时任务交卷
|
|
|
//如果是随到随考,则默认插入一条场次信息
|
|
|
- if (Objects.equals(teExam.getMode().name(), ExamModeEnum.ANYTIME.name())) {//随到随考模式
|
|
|
+ if (teExam.getMode() == ExamModeEnum.ANYTIME) {//随到随考模式
|
|
|
QueryWrapper<TEExamActivity> teExamActivityQueryWrapper = new QueryWrapper<>();
|
|
|
- teExamActivityQueryWrapper.lambda().eq(TEExamActivity::getExamId, oldId);
|
|
|
- List<TEExamActivity> teExamActivityList = teExamActivityService.list(teExamActivityQueryWrapper);
|
|
|
- if (Objects.nonNull(teExamActivityList) && teExamActivityList.size() > 0) {
|
|
|
- //修改数据
|
|
|
- TEExam finalTeExam = teExam;
|
|
|
- teExamActivityList.forEach(s -> {
|
|
|
- s.setPrepareSeconds(finalTeExam.getPrepareSeconds());
|
|
|
- s.setMaxDurationSeconds(finalTeExam.getMaxDurationSeconds());
|
|
|
- s.setOpeningSeconds((int) ((finalTeExam.getEndTime() - finalTeExam.getStartTime()) / 1000));
|
|
|
- s.setStartTime(finalTeExam.getStartTime());
|
|
|
- s.setFinishTime(finalTeExam.getEndTime());
|
|
|
- s.setUpdateId(tbUser.getId());
|
|
|
- teExamActivityService.saveOrUpdate(s);
|
|
|
- });
|
|
|
- for (TEExamActivity ac : teExamActivityList) {
|
|
|
- teExamActivityService.updateExamActivityCacheBean(ac.getId());
|
|
|
- }
|
|
|
- if (Objects.nonNull(teExam.getForceFinish()) && teExam.getForceFinish().intValue() == 1) {
|
|
|
- //新增quartz任务,发送mq消息start
|
|
|
- Map<String, Object> prop = new HashMap<>();
|
|
|
- prop.put("oper", "insert");
|
|
|
- prop.put("exam", teExam);
|
|
|
- MqDto mqDto = new MqDto(mqUtil.getMqGroupDomain().getTopic(), MqTagEnum.EXAM_ACTIVITY.name(),
|
|
|
- JacksonUtil.parseJson(teExamActivityList), MqTagEnum.EXAM_ACTIVITY,
|
|
|
- String.valueOf(teExam.getId()), prop, tbUser.getName());
|
|
|
- mqDtoService.assembleSendOneOrderMsg(mqDto);
|
|
|
- //新增quartz任务,发送mq消息end
|
|
|
- }
|
|
|
- } else {
|
|
|
- TEExamActivity teExamActivity = new TEExamActivity(teExam.getId(), teExam.getPrepareSeconds(),
|
|
|
+ teExamActivityQueryWrapper.lambda().eq(TEExamActivity::getExamId, teExam.getId());
|
|
|
+ TEExamActivity teExamActivity = teExamActivityService.getOne(teExamActivityQueryWrapper);
|
|
|
+ if (Objects.isNull(teExamActivity)) {
|
|
|
+ teExamActivity = new TEExamActivity(teExam.getId(), teExam.getPrepareSeconds(),
|
|
|
teExam.getMaxDurationSeconds(),
|
|
|
(int) ((teExam.getEndTime() - teExam.getStartTime()) / 1000), teExam.getStartTime(),
|
|
|
teExam.getEndTime(), tbUser.getId());
|
|
@@ -227,17 +211,6 @@ public class TEExamController {
|
|
|
teExamActivity.setEnable(1);
|
|
|
teExamActivityService.saveOrUpdate(teExamActivity);
|
|
|
teExamActivityService.updateExamActivityCacheBean(teExamActivity.getId());
|
|
|
- if (Objects.nonNull(teExam.getForceFinish()) && teExam.getForceFinish().intValue() == 1 && Objects
|
|
|
- .nonNull(teExamActivity) && teExamActivity.getEnable().intValue() == 1) {
|
|
|
- //新增quartz任务,发送mq消息start
|
|
|
- Map<String, Object> prop = new HashMap<>();
|
|
|
- prop.put("oper", "insert");
|
|
|
- prop.put("exam", teExam);
|
|
|
- MqDto mqDto = new MqDto(mqUtil.getMqGroupDomain().getTopic(), MqTagEnum.EXAM_ACTIVITY.name(),
|
|
|
- JacksonUtil.parseJson(Arrays.asList(teExamActivity)), MqTagEnum.EXAM_ACTIVITY,
|
|
|
- String.valueOf(teExam.getId()), prop, tbUser.getName());
|
|
|
- mqDtoService.assembleSendOneOrderMsg(mqDto);
|
|
|
- }
|
|
|
}
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
@@ -398,7 +371,7 @@ public class TEExamController {
|
|
|
QueryWrapper<TEExamActivity> teExamActivityQueryWrapper = new QueryWrapper<>();
|
|
|
teExamActivityQueryWrapper.lambda().eq(TEExamActivity::getExamId, examId);
|
|
|
teExamActivityList = teExamActivityService.list(teExamActivityQueryWrapper);
|
|
|
- if (Objects.nonNull(teExamActivityList)) {
|
|
|
+ if (!CollectionUtils.isEmpty(teExamActivityList)) {
|
|
|
teExamActivityList.forEach(s -> {
|
|
|
s.setId(uidUtil.getId());
|
|
|
s.setExamId(teExam.getId());
|
|
@@ -407,8 +380,17 @@ public class TEExamController {
|
|
|
s.setUpdateTime(null);
|
|
|
s.setCode(String.valueOf(redisUtil.getRedisActivityCodeSequence(teExam.getId())));
|
|
|
});
|
|
|
- for (TEExamActivity ac : teExamActivityList) {
|
|
|
- teExamActivityService.saveOrUpdate(ac);
|
|
|
+ teExamActivityService.saveOrUpdateBatch(teExamActivityList);
|
|
|
+ if (Objects.nonNull(teExam.getForceFinish()) && teExam.getForceFinish().intValue() == 1) {
|
|
|
+ //新增quartz任务,发送mq消息start
|
|
|
+ Map<String, Object> prop = new HashMap<>();
|
|
|
+ prop.put("oper", "insert");
|
|
|
+ prop.put("exam", teExam);
|
|
|
+ MqDto mqDto = new MqDto(mqUtil.getMqGroupDomain().getTopic(), MqTagEnum.EXAM_ACTIVITY.name(),
|
|
|
+ JacksonUtil.parseJson(teExamActivityList), MqTagEnum.EXAM_ACTIVITY,
|
|
|
+ String.valueOf(teExam.getId()), prop, tbUser.getName());
|
|
|
+ mqDtoService.assembleSendOneOrderMsg(mqDto);
|
|
|
+ //新增quartz任务,发送mq消息end
|
|
|
}
|
|
|
}
|
|
|
} catch (Exception e) {
|