Răsfoiți Sursa

场次定时任务优化

wangliang 2 ani în urmă
părinte
comite
eeed1c7179

+ 3 - 13
themis-business/src/main/java/com/qmth/themis/business/service/impl/TEExamActivityServiceImpl.java

@@ -383,25 +383,15 @@ public class TEExamActivityServiceImpl extends ServiceImpl<TEExamActivityMapper,
                                     }
                                     if (Objects.nonNull(teExam.getForceFinish()) && teExam.getForceFinish().intValue() == 1
                                             && s.getFinishTime().longValue() != teExamActivityDb.getFinishTime().longValue()) {
-                                        //删除quartz任务,发送mq消息start
+                                        //删除再新增quartz任务,发送mq消息start
                                         Map<String, Object> prop = new HashMap<>();
-                                        prop.put(SystemConstant.OPER, SystemConstant.DELETE);
-                                        prop.put(SystemConstant.EXAM, teExam);
-                                        MqDto mqDto = new MqDto(mqUtil.getMqGroupDomain().getTopic(), MqTagEnum.EXAM_ACTIVITY.name(),
-                                                JacksonUtil.parseJson(Arrays.asList(s)), MqTagEnum.EXAM_ACTIVITY,
-                                                String.valueOf(teExam.getId()), prop, tbUser.getName());
-                                        mqDtoService.assembleSendOneOrderMsg(mqDto);
-                                        //删除quartz任务,发送mq消息end
-
-                                        //新增quartz任务,发送mq消息start
-                                        prop = new HashMap<>();
                                         prop.put(SystemConstant.OPER, SystemConstant.INSERT);
                                         prop.put(SystemConstant.EXAM, teExam);
-                                        mqDto = new MqDto(mqUtil.getMqGroupDomain().getTopic(), MqTagEnum.EXAM_ACTIVITY.name(),
+                                        MqDto mqDto = new MqDto(mqUtil.getMqGroupDomain().getTopic(), MqTagEnum.EXAM_ACTIVITY.name(),
                                                 JacksonUtil.parseJson(Arrays.asList(s)), MqTagEnum.EXAM_ACTIVITY,
                                                 String.valueOf(teExam.getId()), prop, tbUser.getName());
                                         mqDtoService.assembleSendOneOrderMsg(mqDto);
-                                        //新增quartz任务,发送mq消息end
+                                        //删除再新增quartz任务,发送mq消息end
                                     }
                                     tsLogService.save(new TSLog(LogEnum.EXAM_ACTIVITY, s.getCode(),
                                             JacksonUtil.parseJson(teExamActivityDb),

+ 9 - 5
themis-task/src/main/java/com/qmth/themis/task/listener/service/impl/MqTaskLogicServiceImpl.java

@@ -72,7 +72,8 @@ public class MqTaskLogicServiceImpl implements MqTaskLogicService {
                 TEExamActivity teExamActivity = JSONObject.toJavaObject((JSON) jsonArray.get(i), TEExamActivity.class);
                 if (Objects.equals(SystemConstant.DELETE, oper)) {
                     quartzService.deleteJob(String.valueOf(teExamActivity.getId()), QuartzTaskEnum.EXAM_ACTIVITY_JOB_GROUP_NAME.name());
-                } else {
+                } else if (Objects.equals(SystemConstant.INSERT, oper)) {
+                    quartzService.deleteJob(String.valueOf(teExamActivity.getId()), QuartzTaskEnum.EXAM_ACTIVITY_JOB_GROUP_NAME.name());
                     if (Objects.nonNull(teExam.getEnable()) && teExam.getEnable().intValue() == 1 && Objects.nonNull(teExamActivity.getEnable()) && teExamActivity.getEnable().intValue() == 1) {
                         this.setCron(teExamActivity.getFinishTime(), String.valueOf(teExamActivity.getId()), ExamActivityJob.class, QuartzTaskEnum.EXAM_ACTIVITY_JOB_GROUP_NAME);
                     }
@@ -84,8 +85,11 @@ public class MqTaskLogicServiceImpl implements MqTaskLogicService {
             Long recordId = Long.parseLong(String.valueOf(mqDto.getObjId()));
             if (Objects.equals(SystemConstant.DELETE, oper)) {
                 quartzService.deleteJob(examStudentCacheBean.getId() + "-" + recordId, QuartzTaskEnum.EXAM_STUDENT_JOB_GROUP_NAME.name());
-            } else {
-                this.setCron(ExamRecordCacheUtil.getExamFinalFinishTime(recordId), examStudentCacheBean.getId() + "-" + recordId, ExamStudentJob.class, QuartzTaskEnum.EXAM_STUDENT_JOB_GROUP_NAME);
+            } else if (Objects.equals(SystemConstant.INSERT, oper)) {
+                quartzService.deleteJob(examStudentCacheBean.getId() + "-" + recordId, QuartzTaskEnum.EXAM_STUDENT_JOB_GROUP_NAME.name());
+                if (Objects.nonNull(examStudentCacheBean.getEnable()) && examStudentCacheBean.getEnable().intValue() == 1) {
+                    this.setCron(ExamRecordCacheUtil.getExamFinalFinishTime(recordId), examStudentCacheBean.getId() + "-" + recordId, ExamStudentJob.class, QuartzTaskEnum.EXAM_STUDENT_JOB_GROUP_NAME);
+                }
             }
         }
 //        else if (Objects.equals(tag, MqTagEnum.EXAM_AUDIO.name())) {//考试语音
@@ -94,7 +98,8 @@ public class MqTaskLogicServiceImpl implements MqTaskLogicService {
 //            Long examId = Long.parseLong(String.valueOf(mqDto.getObjId()));
 //            if (Objects.equals(SystemConstant.DELETE, oper)) {
 //                quartzService.deleteJob(teAudio.getId() + "-" + teAudio.getActivityId() + "-" + examId, QuartzTaskEnum.EXAM_AUDIO_JOB_GROUP_NAME.name());
-//            } else {
+//            } else if (Objects.equals(SystemConstant.INSERT, oper)) {
+//                quartzService.deleteJob(teAudio.getId() + "-" + teAudio.getActivityId() + "-" + examId, QuartzTaskEnum.EXAM_AUDIO_JOB_GROUP_NAME.name());
 //                Long execTime = (Long) tranMap.get(SystemConstant.EXEC_TIME);
 //                Long realExecTime = (Long) tranMap.get(SystemConstant.REAL_EXEC_TIME);
 //                this.setCron(execTime, teAudio.getId() + "-" + teAudio.getActivityId() + "-" + examId + "-" + realExecTime, ExamAudioJob.class, QuartzTaskEnum.EXAM_AUDIO_JOB_GROUP_NAME);
@@ -127,7 +132,6 @@ public class MqTaskLogicServiceImpl implements MqTaskLogicService {
             //执行一次性延时任务
             Map mapJob = new HashMap();
             mapJob.put(SystemConstant.NAME, jobName);
-            quartzService.deleteJob(jobName, quartzTaskEnum.name());
             quartzService.addJob(cls, jobName, quartzTaskEnum.name(), cron, mapJob);
         }
     }