wangliang 4 лет назад
Родитель
Сommit
1b85c03d95

+ 8 - 2
themis-task/src/main/java/com/qmth/themis/task/listener/service/impl/MqTaskLogicServiceImpl.java

@@ -4,11 +4,13 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.google.gson.Gson;
+import com.qmth.themis.business.cache.bean.ExamCacheBean;
 import com.qmth.themis.business.constant.SystemConstant;
 import com.qmth.themis.business.dto.MqDto;
 import com.qmth.themis.business.entity.TEExam;
 import com.qmth.themis.business.entity.TEExamActivity;
 import com.qmth.themis.business.entity.TMRocketMessage;
+import com.qmth.themis.business.service.TEExamService;
 import com.qmth.themis.business.service.TMRocketMessageService;
 import com.qmth.themis.business.util.JacksonUtil;
 import com.qmth.themis.business.util.RedisUtil;
@@ -45,6 +47,9 @@ public class MqTaskLogicServiceImpl implements MqTaskLogicService {
     @Resource
     QuartzService quartzService;
 
+    @Resource
+    TEExamService teExamService;
+
     /**
      * mq最大重试次数逻辑
      *
@@ -75,6 +80,7 @@ public class MqTaskLogicServiceImpl implements MqTaskLogicService {
         JSONArray jsonArray = (JSONArray) JSONArray.parse(String.valueOf(mqDto.getBody()));
         for (int i = 0; i < jsonArray.size(); i++) {
             TEExamActivity teExamActivity = JSONObject.toJavaObject((JSON) jsonArray.get(i), TEExamActivity.class);
+            ExamCacheBean examCacheBean = teExamService.getExamCacheBean(teExamActivity.getExamId());
             if (Objects.equals("delete", oper)) {
                 quartzService.deleteJob(teExamActivity.getCode(), QuartzTaskEnum.EXAM_ACTIVITY_JOB_GROUP_NAME.name());
             } else {
@@ -95,9 +101,9 @@ public class MqTaskLogicServiceImpl implements MqTaskLogicService {
                         String activityCode = teExamActivity.getCode();
                         //执行一次性延时任务
                         Map mapJob = new HashMap();
-                        mapJob.put("name", activityCode);
+                        mapJob.put("name", examCacheBean.getId() + "-" + activityCode);
                         quartzService.deleteJob(activityCode, QuartzTaskEnum.EXAM_ACTIVITY_JOB_GROUP_NAME.name());
-                        quartzService.addJob(ExamActivityJob.class, activityCode, QuartzTaskEnum.EXAM_ACTIVITY_JOB_GROUP_NAME.name(), cron, mapJob);
+                        quartzService.addJob(ExamActivityJob.class, examCacheBean.getId() + "-" + activityCode, QuartzTaskEnum.EXAM_ACTIVITY_JOB_GROUP_NAME.name(), cron, mapJob);
                     }
                 }
             }

+ 3 - 1
themis-task/src/main/java/com/qmth/themis/task/quartz/service/impl/QuartzLogicServiceImpl.java

@@ -55,8 +55,10 @@ public class QuartzLogicServiceImpl implements QuartzLogicService {
     public void execExamActivityJobLogic(String key) {
         log.info("key:{}", key);
         String[] strings = key.split("\\.");
+        String[] exams = strings[1].split("-");
         QueryWrapper<TEExamActivity> teExamActivityQueryWrapper = new QueryWrapper<>();
-        teExamActivityQueryWrapper.lambda().eq(TEExamActivity::getCode, strings[1]);
+        teExamActivityQueryWrapper.lambda().eq(TEExamActivity::getCode, exams[1])
+                .eq(TEExamActivity::getExamId, Long.parseLong(exams[0]));
         TEExamActivity teExamActivity = teExamActivityService.getOne(teExamActivityQueryWrapper);
         ExamCacheBean examCacheBean = teExamService.getExamCacheBean(teExamActivity.getExamId());
         if (Objects.nonNull(examCacheBean) && examCacheBean.getEnable() == 1 && Objects.nonNull(teExamActivity) && teExamActivity.getEnable() == 1) {