Sfoglia il codice sorgente

考试相关代码提交

pans 6 mesi fa
parent
commit
f70533f4ab

+ 1 - 1
snowy-plugin/snowy-plugin-dev/snowy-plugin-dev-func/src/main/java/vip/xiaonuo/dev/core/listener/DevJobListener.java

@@ -40,7 +40,7 @@ public class DevJobListener implements ApplicationListener<ApplicationStartedEve
     @Override
     public void onApplicationEvent(@NonNull ApplicationStartedEvent applicationStartedEvent) {
         SpringUtil.getBean(DevJobService.class).list(new LambdaQueryWrapper<DevJob>()
-                        .eq(DevJob::getJobStatus, DevJobStatusEnum.RUNNING.getValue()).orderByAsc(DevJob::getSortCode))
+                        .eq(DevJob::getJobStatus, DevJobStatusEnum.RUNNING.getValue()).orderByAsc(DevJob::getCreateTime))
                 .forEach(devJob -> CronUtil.schedule(devJob.getId(), devJob.getCronExpression(), () -> {
                     try {
                         // 运行定时任务

+ 2 - 9
snowy-plugin/snowy-plugin-dev/snowy-plugin-dev-func/src/main/java/vip/xiaonuo/dev/modular/job/service/impl/DevJobServiceImpl.java

@@ -30,7 +30,6 @@ import org.springframework.aop.support.AopUtils;
 import org.springframework.scheduling.support.CronExpression;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
-import vip.xiaonuo.common.enums.CommonSortOrderEnum;
 import vip.xiaonuo.common.exception.CommonException;
 import vip.xiaonuo.common.page.CommonPageRequest;
 import vip.xiaonuo.common.timer.CommonTimerTaskRunner;
@@ -70,13 +69,7 @@ public class DevJobServiceImpl extends ServiceImpl<DevJobMapper, DevJob> impleme
         if(ObjectUtil.isNotEmpty(devJobPageParam.getJobStatus())) {
             queryWrapper.lambda().like(DevJob::getJobStatus, devJobPageParam.getJobStatus());
         }
-        if(ObjectUtil.isAllNotEmpty(devJobPageParam.getSortField(), devJobPageParam.getSortOrder())) {
-            CommonSortOrderEnum.validate(devJobPageParam.getSortOrder());
-            queryWrapper.orderBy(true, devJobPageParam.getSortOrder().equals(CommonSortOrderEnum.ASC.getValue()),
-                    StrUtil.toUnderlineCase(devJobPageParam.getSortField()));
-        } else {
-            queryWrapper.lambda().orderByAsc(DevJob::getSortCode);
-        }
+        queryWrapper.lambda().orderByDesc(DevJob::getCreateTime);
         return this.page(CommonPageRequest.defaultPage(), queryWrapper);
     }
 
@@ -138,7 +131,7 @@ public class DevJobServiceImpl extends ServiceImpl<DevJobMapper, DevJob> impleme
     public void edit(DevJobEditParam devJobEditParam) {
         DevJob devJob = this.queryEntity(devJobEditParam.getId());
         if(devJob.getJobStatus().equals(DevJobStatusEnum.RUNNING.getValue())) {
-            throw new CommonException("运行中的定时任务不可编辑,id值为:{}", devJob.getId());
+            throw new CommonException("运行中的定时任务不可编辑!!!");
         }
         checkParam(devJobEditParam);
         BeanUtil.copyProperties(devJobEditParam, devJob);

+ 2 - 2
snowy-plugin/snowy-plugin-exam/snowy-plugin-exam-func/src/main/java/vip/xiaonuo/exam/domain/TExam.java

@@ -102,8 +102,8 @@ public class TExam {
     private String hourId;
     /** 班级集合  */
     private String gradesids;
-
-
+    @TableField(exist = false)
+    private String type;
 
 
 }

+ 10 - 10
snowy-plugin/snowy-plugin-exam/snowy-plugin-exam-func/src/main/java/vip/xiaonuo/exam/job/task/ExamJobTimerTaskRunner.java

@@ -31,7 +31,7 @@ public class ExamJobTimerTaskRunner implements CommonTimerTaskRunner {
     private DevJobApi devJobApi;
 
     @Resource
-    private TExamMapper texamMapper;
+    private TExamMapper tExamMapper;
 
 
     @Resource
@@ -52,14 +52,14 @@ public class ExamJobTimerTaskRunner implements CommonTimerTaskRunner {
             if(jobId != null && !jobId.isEmpty()){
                 JSONObject jb = devJobApi.queryEntity(jobId);
                 if(jb != null && jb.getIntValue("code") == 200){
-                    String category = jb.getString("category");
-                    JSONObject extJson = jb.getJSONObject("extJson");
-                    log.info("ExamJobTimerTaskRunner jobId:{} category:{} extJson:{}",jobId,category,extJson);
-                    TExam taskExam = texamMapper.selectById(extJson.getString("id"));
-
-                    if(category.contains("start")){
+                    JSONObject data = jb.getJSONObject("data");
+                    JSONObject extJson = JSONObject.parseObject(data.getString("extJson"));
+                    log.info("ExamJobTimerTaskRunner jobId:{}  extJson:{}",jobId,extJson);
+                    TExam taskExam = tExamMapper.selectById(extJson.getInteger("id"));
+                     String type=extJson.getString("type");
+                    if(type.contains("start")){
                         taskExam.setExamStatus(1);
-                        texamMapper.updateById(taskExam);
+                        tExamMapper.updateById(taskExam);
                         List<String> accoutIds=Arrays.asList(taskExam.getStudentIds().split(","));
                         List<String> userIds=courseOpenMapper.selectUserIds(accoutIds);
                         //给课程下关联的学生发送站内信消息
@@ -70,9 +70,9 @@ public class ExamJobTimerTaskRunner implements CommonTimerTaskRunner {
                         devMessageSendParam.setContent(taskExam.getExamName()+"已开始!!!");
                         devMessageService.send(devMessageSendParam);
                     }
-                    if(category.contains("end")){
+                    if(type.contains("end")){
                         taskExam.setExamStatus(2);
-                        texamMapper.updateById(taskExam);
+                        tExamMapper.updateById(taskExam);
                     }
                 }else{
                     log.error("ExamJobTimerTaskRunner jobId:{} Query Error", jobId);

+ 17 - 3
snowy-plugin/snowy-plugin-exam/snowy-plugin-exam-func/src/main/java/vip/xiaonuo/exam/service/impl/TExamServiceImpl.java

@@ -29,6 +29,8 @@ import vip.xiaonuo.common.exception.CommonException;
 import vip.xiaonuo.common.page.CommonPageRequest;
 import vip.xiaonuo.common.pojo.CommonResult;
 import vip.xiaonuo.dev.api.DevJobApi;
+import vip.xiaonuo.dev.modular.job.param.DevJobIdParam;
+import vip.xiaonuo.dev.modular.job.service.DevJobService;
 import vip.xiaonuo.dev.modular.message.enums.DevMessageCategoryEnum;
 import vip.xiaonuo.dev.modular.message.param.DevMessageSendParam;
 import vip.xiaonuo.dev.modular.message.service.DevMessageService;
@@ -91,8 +93,8 @@ public class TExamServiceImpl extends ServiceImpl<TExamMapper, TExam> implements
 
 
 
-
-
+    @Resource
+    private DevJobService devJobService;
 
 
 
@@ -257,6 +259,8 @@ public class TExamServiceImpl extends ServiceImpl<TExamMapper, TExam> implements
                 jobIds.add(tExam.getEndJobId());
                 JSONObject deleteJobResult = devJobApi.deleteJob(jobIds);
                 if(deleteJobResult != null && deleteJobResult.getInteger("code") == 200){
+                    tExam.setStartTime(tExamEditParam.getStartTime());
+                    tExam.setEndTime(tExamEditParam.getEndTime());
                     tExam = this.addJob(tExam, "start");
                     tExam = this.addJob(tExam, "end");
                 }else{
@@ -265,6 +269,8 @@ public class TExamServiceImpl extends ServiceImpl<TExamMapper, TExam> implements
                 }
             }else{
                 // 任务不存在,创建任务
+                tExam.setStartTime(tExamEditParam.getStartTime());
+                tExam.setEndTime(tExamEditParam.getEndTime());
                 tExam = this.addJob(tExam, "start");
                 tExam = this.addJob(tExam, "end");
             }
@@ -352,25 +358,33 @@ public class TExamServiceImpl extends ServiceImpl<TExamMapper, TExam> implements
     public TExam addJob(TExam tExam, String startOnEnd){
         JSONObject jobParam = new JSONObject();
         jobParam.put("name", tExam.getId()+"-"+tExam.getExamName()+"-"+tExam.getPaperId());
-        jobParam.put("category", "exam-"+startOnEnd);
+        jobParam.put("category", DevMessageCategoryEnum.BIZ.getValue());
         jobParam.put("actionClass", "vip.xiaonuo.exam.job.task.ExamJobTimerTaskRunner");
         String cronExpression = "";
         if("start".equals(startOnEnd)){
             cronExpression = DateTimeUtil.generateCronExpression(tExam.getStartTime());
+            tExam.setType("start");
         }
         if("end".equals(startOnEnd)){
             cronExpression = DateTimeUtil.generateCronExpression(tExam.getEndTime());
+            tExam.setType("end");
         }
         jobParam.put("cronExpression", cronExpression);
         jobParam.put("sortCode", 99);
         jobParam.put("extJson", JSONUtil.parseObj(tExam));
         JSONObject addJobResult = devJobApi.addJob(jobParam);
         if(addJobResult != null && addJobResult.getInteger("code") != null && addJobResult.getIntValue("code") == 200){
+            DevJobIdParam devJobIdParam = new DevJobIdParam();
+
             if("start".equals(startOnEnd)){
                 tExam.setStartJobId(addJobResult.getJSONObject("data").getString("id"));
+                devJobIdParam.setId(addJobResult.getJSONObject("data").getString("id"));
+                devJobService.runJob(devJobIdParam);
             }
             if("end".equals(startOnEnd)){
                 tExam.setEndJobId(addJobResult.getJSONObject("data").getString("id"));
+                devJobIdParam.setId(addJobResult.getJSONObject("data").getString("id"));
+                devJobService.runJob(devJobIdParam);
             }
             this.updateById(tExam);
             return tExam;