Browse Source

最后开考时间优化

wangliang 1 year ago
parent
commit
12734f093a

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

@@ -423,14 +423,14 @@ public class TEExamActivityServiceImpl extends ServiceImpl<TEExamActivityMapper,
                 }
                 }
                 themisCacheService.updateOrgExamListCache(teExam.getOrgId().toString(), ac.getExamId().toString(), ac.getId());
                 themisCacheService.updateOrgExamListCache(teExam.getOrgId().toString(), ac.getExamId().toString(), ac.getId());
 
 
-                //最后开考时间发送定时任务
-                //删除再新增quartz任务,发送mq消息start
-                Map<String, Object> prop = new HashMap<>();
-                prop.put(SystemConstant.OPER, SystemConstant.INSERT);
-                prop.put(SystemConstant.EXAM, teExam);
-                MqDto mqDto = new MqDto(mqUtil.getTopic(), MqTagEnum.EXAM_ACTIVITY_FINAL_PREPARE_TIME.name(), JacksonUtil.parseJson(ac), MqTagEnum.EXAM_ACTIVITY_FINAL_PREPARE_TIME, String.valueOf(teExam.getId()), prop, tbUser.getName());
-                mqDtoService.assembleSendAsyncOrderMsg(mqDto);
-                //删除再新增quartz任务,发送mq消息end
+//                //最后开考时间发送定时任务
+//                //删除再新增quartz任务,发送mq消息start
+//                Map<String, Object> prop = new HashMap<>();
+//                prop.put(SystemConstant.OPER, SystemConstant.INSERT);
+//                prop.put(SystemConstant.EXAM, teExam);
+//                MqDto mqDto = new MqDto(mqUtil.getTopic(), MqTagEnum.EXAM_ACTIVITY_FINAL_PREPARE_TIME.name(), JacksonUtil.parseJson(ac), MqTagEnum.EXAM_ACTIVITY_FINAL_PREPARE_TIME, String.valueOf(teExam.getId()), prop, tbUser.getName());
+//                mqDtoService.assembleSendAsyncOrderMsg(mqDto);
+//                //删除再新增quartz任务,发送mq消息end
             }
             }
 
 
             if (!CollectionUtils.isEmpty(teAudioList)) {
             if (!CollectionUtils.isEmpty(teAudioList)) {

+ 12 - 0
themis-business/src/main/java/com/qmth/themis/business/service/impl/TEExamServiceImpl.java

@@ -109,6 +109,9 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
     @Resource
     @Resource
     ThemisCacheService themisCacheService;
     ThemisCacheService themisCacheService;
 
 
+    @Resource
+    TEExamService teExamService;
+
     /**
     /**
      * 查询考试批次
      * 查询考试批次
      *
      *
@@ -292,6 +295,15 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
                 } else {
                 } else {
                     cache = true;
                     cache = true;
                 }
                 }
+                //最后开考时间发送定时任务
+                //删除再新增quartz任务,发送mq消息start
+                Map<String, Object> prop = new HashMap<>();
+                prop.put(SystemConstant.OPER, SystemConstant.INSERT);
+                prop.put(SystemConstant.EXAM, teExamService.getById(es.getExamId()));
+                MqDto mqDto = new MqDto(mqUtil.getTopic(), MqTagEnum.EXAM_ACTIVITY_FINAL_PREPARE_TIME.name(), JacksonUtil.parseJson(tOeExamRecord), MqTagEnum.EXAM_ACTIVITY_FINAL_PREPARE_TIME, String.valueOf(tOeExamRecord.getId()), prop, examStudentCacheBean.getName());
+                mqDtoService.assembleSendAsyncOrderMsg(mqDto);
+                //删除再新增quartz任务,发送mq消息end
+
                 SysConfig sysConfig = themisCacheService.addSysConfigCache(SystemConstant.MONITOR_CONFIG_PREFIX);
                 SysConfig sysConfig = themisCacheService.addSysConfigCache(SystemConstant.MONITOR_CONFIG_PREFIX);
                 Optional.ofNullable(sysConfig).orElseThrow(() -> new BusinessException("未配置监控前缀"));
                 Optional.ofNullable(sysConfig).orElseThrow(() -> new BusinessException("未配置监控前缀"));
                 TEExamActivityDto teExamActivityDto = new TEExamActivityDto(examCache, ac, examStudentCacheBean,
                 TEExamActivityDto teExamActivityDto = new TEExamActivityDto(examCache, ac, examStudentCacheBean,

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

@@ -9,6 +9,7 @@ import com.qmth.themis.business.constant.SystemConstant;
 import com.qmth.themis.business.dto.MqDto;
 import com.qmth.themis.business.dto.MqDto;
 import com.qmth.themis.business.entity.TEExam;
 import com.qmth.themis.business.entity.TEExam;
 import com.qmth.themis.business.entity.TEExamActivity;
 import com.qmth.themis.business.entity.TEExamActivity;
+import com.qmth.themis.business.entity.TOeExamRecord;
 import com.qmth.themis.business.enums.MqTagEnum;
 import com.qmth.themis.business.enums.MqTagEnum;
 import com.qmth.themis.business.service.TMRocketMessageService;
 import com.qmth.themis.business.service.TMRocketMessageService;
 import com.qmth.themis.business.util.JacksonUtil;
 import com.qmth.themis.business.util.JacksonUtil;
@@ -94,17 +95,15 @@ public class MqTaskLogicServiceImpl implements MqTaskLogicService {
             }
             }
         } else if (Objects.equals(tag, MqTagEnum.EXAM_ACTIVITY_FINAL_PREPARE_TIME.name())) {//考场最后开考时间任务
         } else if (Objects.equals(tag, MqTagEnum.EXAM_ACTIVITY_FINAL_PREPARE_TIME.name())) {//考场最后开考时间任务
             JSONObject jsonObject = JSONObject.parseObject(String.valueOf(mqDto.getBody()));
             JSONObject jsonObject = JSONObject.parseObject(String.valueOf(mqDto.getBody()));
-            TEExamActivity teExamActivity = JSONObject.toJavaObject(jsonObject, TEExamActivity.class);
+            TOeExamRecord tOeExamRecord = JSONObject.toJavaObject(jsonObject, TOeExamRecord.class);
             if (Objects.equals(SystemConstant.DELETE, oper)) {
             if (Objects.equals(SystemConstant.DELETE, oper)) {
-                quartzService.deleteJob(teExamActivity.getId() + "-" + teExamActivity.getExamId(), QuartzTaskEnum.EXAM_ACTIVITY_FINAL_PREPARE_TIME_JOB_GROUP_NAME.name());
+                quartzService.deleteJob(String.valueOf(tOeExamRecord.getId()), QuartzTaskEnum.EXAM_ACTIVITY_FINAL_PREPARE_TIME_JOB_GROUP_NAME.name());
             } else if (Objects.equals(SystemConstant.INSERT, oper)) {
             } else if (Objects.equals(SystemConstant.INSERT, oper)) {
-                quartzService.deleteJob(teExamActivity.getId() + "-" + teExamActivity.getExamId(), QuartzTaskEnum.EXAM_ACTIVITY_FINAL_PREPARE_TIME_JOB_GROUP_NAME.name());
-                if (Objects.nonNull(teExamActivity.getEnable()) && teExamActivity.getEnable().intValue() == 1) {
-                    Integer openingSecondsTemp = teExamActivity.getOpeningSeconds();
-                    openingSecondsTemp = Objects.nonNull(openingSecondsTemp) && openingSecondsTemp.intValue() == 0 ? SystemConstant.DEFAULT_OPENING_SECONDS : openingSecondsTemp;
-                    Long finalPrepareTime = teExamActivity.getStartTime() + (openingSecondsTemp * 1000);
-                    this.setCron(finalPrepareTime, teExamActivity.getId() + "-" + teExamActivity.getExamId(), ExamActivityFinalPrepareTimeJob.class, QuartzTaskEnum.EXAM_ACTIVITY_FINAL_PREPARE_TIME_JOB_GROUP_NAME);
-                }
+                quartzService.deleteJob(String.valueOf(tOeExamRecord.getId()), QuartzTaskEnum.EXAM_ACTIVITY_FINAL_PREPARE_TIME_JOB_GROUP_NAME.name());
+                Integer openingSecondsTemp = tOeExamRecord.getOpeningSeconds();
+                openingSecondsTemp = Objects.nonNull(openingSecondsTemp) && openingSecondsTemp.intValue() == 0 ? SystemConstant.DEFAULT_OPENING_SECONDS : openingSecondsTemp;
+                Long finalPrepareTime = tOeExamRecord.getStartTime() + (openingSecondsTemp * 1000);
+                this.setCron(finalPrepareTime, String.valueOf(tOeExamRecord.getId()), ExamActivityFinalPrepareTimeJob.class, QuartzTaskEnum.EXAM_ACTIVITY_FINAL_PREPARE_TIME_JOB_GROUP_NAME);
             }
             }
         }
         }
 //        else if (Objects.equals(tag, MqTagEnum.EXAM_AUDIO.name())) {//考试语音
 //        else if (Objects.equals(tag, MqTagEnum.EXAM_AUDIO.name())) {//考试语音

+ 7 - 15
themis-task/src/main/java/com/qmth/themis/task/quartz/service/impl/QuartzLogicServiceImpl.java

@@ -217,21 +217,13 @@ public class QuartzLogicServiceImpl implements QuartzLogicService {
     @Override
     @Override
     public void execExamActivityFinalPrepareTimeJobLogic(String key) {
     public void execExamActivityFinalPrepareTimeJobLogic(String key) {
         String[] strings = key.split("\\.");
         String[] strings = key.split("\\.");
-        String[] exams = strings[1].split("-");
-        ExamActivityCacheBean examActivityCacheBean = teExamActivityService.getExamActivityCacheBean(Long.parseLong(exams[0]));
-        ExamCacheBean examCacheBean = teExamService.getExamCacheBean(Long.parseLong(exams[1]));
-        List<TOeExamRecord> tOeExamRecordList = tOeExamRecordService.list(new QueryWrapper<TOeExamRecord>().lambda()
-                .eq(TOeExamRecord::getExamId, examCacheBean.getId())
-                .eq(TOeExamRecord::getExamActivityId, examActivityCacheBean.getId())
-                .eq(TOeExamRecord::getStatus, ExamRecordStatusEnum.FIRST_PREPARE)
-                .eq(TOeExamRecord::getClientWebsocketStatus, WebsocketStatusEnum.ON_LINE));
-        if (!CollectionUtils.isEmpty(tOeExamRecordList)) {
-            for (TOeExamRecord t : tOeExamRecordList) {
-                Map<String, Object> properties = new HashMap<>();
-                properties.put(SystemConstant.RECORD_ID, t.getId());
-                MqDto clientMqDto = new MqDto(mqUtil.getTopic(), MqTagEnum.EXAM_EXIT.name(), t.getId(), MqTagEnum.EXAM_EXIT, String.valueOf(t.getId()), properties, String.valueOf(t.getId()));
-                mqDtoService.assembleSendAsyncOrderMsg(clientMqDto);
-            }
+        String[] examRecordIds = strings[1].split("-");
+        TOeExamRecord tOeExamRecord = tOeExamRecordService.getById(Long.parseLong(examRecordIds[0]));
+        if (Objects.nonNull(tOeExamRecord)) {
+            Map<String, Object> properties = new HashMap<>();
+            properties.put(SystemConstant.RECORD_ID, tOeExamRecord.getId());
+            MqDto clientMqDto = new MqDto(mqUtil.getTopic(), MqTagEnum.EXAM_EXIT.name(), tOeExamRecord.getId(), MqTagEnum.EXAM_EXIT, String.valueOf(tOeExamRecord.getId()), properties, String.valueOf(tOeExamRecord.getId()));
+            mqDtoService.assembleSendAsyncOrderMsg(clientMqDto);
         }
         }
     }
     }