소스 검색

3.2.5 新需求bug

xiaofei 2 년 전
부모
커밋
cb871c0a86

+ 3 - 4
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/params/PrintPlanParams.java

@@ -63,8 +63,7 @@ public class PrintPlanParams {
 
     @ApiModelProperty(value = "备份数量",required = true)
     @NotNull(message = "请输入备份数量")
-    @Range(min = 0,message = "请输入正数")
-    private Integer backupCount;
+    private Double backupCount;
 
     @ApiModelProperty(value = "抽卷规则:ONE-只抽一次,CIRCLE-可循环抽取",required = true)
     @NotNull(message = "请设置抽卷规则")
@@ -150,11 +149,11 @@ public class PrintPlanParams {
         this.backupMethod = backupMethod;
     }
 
-    public Integer getBackupCount() {
+    public Double getBackupCount() {
         return backupCount;
     }
 
-    public void setBackupCount(Integer backupCount) {
+    public void setBackupCount(Double backupCount) {
         this.backupCount = backupCount;
     }
 

+ 3 - 3
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/PrintPlanResult.java

@@ -58,7 +58,7 @@ public class PrintPlanResult {
     private BackupMethodEnum backupMethod;
 
     @ApiModelProperty(value = "试卷备份数量")
-    private int backupCount;
+    private Double backupCount;
 
     @ApiModelProperty(value = "抽卷规则")
     private DrawRuleEnum drawRule;
@@ -211,11 +211,11 @@ public class PrintPlanResult {
         this.backupMethod = backupMethod;
     }
 
-    public int getBackupCount() {
+    public Double getBackupCount() {
         return backupCount;
     }
 
-    public void setBackupCount(int backupCount) {
+    public void setBackupCount(Double backupCount) {
         this.backupCount = backupCount;
     }
 

+ 5 - 1
teachcloud-task/src/main/java/com/qmth/teachcloud/task/enums/JobEnum.java

@@ -29,7 +29,11 @@ public enum JobEnum {
 
     REDIS_MQ_JOB("学校信息同步定时任务"),
 
-    REDIS_MQ_JOB_GROUP("学校信息同步定时任务组"),;
+    REDIS_MQ_JOB_GROUP("学校信息同步定时任务组"),
+
+    PRINT_PLAN_END_JOB_GROUP("学校信息同步定时任务组"),
+
+    PRINT_PLAN_END_JOB("学校信息同步定时任务");
 
     private String title;
 

+ 30 - 0
teachcloud-task/src/main/java/com/qmth/teachcloud/task/job/PrintPlanEndJob.java

@@ -0,0 +1,30 @@
+package com.qmth.teachcloud.task.job;
+
+import com.qmth.teachcloud.common.contant.SystemConstant;
+import com.qmth.teachcloud.task.job.service.JobService;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.scheduling.quartz.QuartzJobBean;
+
+import javax.annotation.Resource;
+
+/**
+ *  考试结束后印刷计划状态个性为END(每天0点)
+ */
+public class PrintPlanEndJob extends QuartzJobBean {
+    private final static Logger log = LoggerFactory.getLogger(PrintPlanEndJob.class);
+
+    @Resource
+    JobService jobService;
+
+    @Override
+    protected void executeInternal(JobExecutionContext jobExecutionContext) {
+        try {
+            jobService.updatePrintPlanStatus();
+        } catch (Exception e) {
+            log.error(SystemConstant.LOG_ERROR, e);
+        }
+    }
+}

+ 2 - 0
teachcloud-task/src/main/java/com/qmth/teachcloud/task/job/service/JobService.java

@@ -44,4 +44,6 @@ public interface JobService {
      * 机器心跳
      */
     void machineHeart();
+
+    void updatePrintPlanStatus();
 }

+ 34 - 0
teachcloud-task/src/main/java/com/qmth/teachcloud/task/job/service/impl/JobServiceImpl.java

@@ -1,11 +1,18 @@
 package com.qmth.teachcloud.task.job.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.qmth.boot.redis.uid.RedisMachineService;
+import com.qmth.distributed.print.business.entity.ExamPrintPlan;
+import com.qmth.distributed.print.business.enums.PrintPlanStatusEnum;
 import com.qmth.distributed.print.business.service.BasicMessageService;
+import com.qmth.distributed.print.business.service.ExamPrintPlanService;
 import com.qmth.distributed.print.business.service.ExamTaskService;
 import com.qmth.distributed.print.business.service.PrintCommonService;
 import com.qmth.teachcloud.common.bean.dto.MqDto;
+import com.qmth.teachcloud.common.bean.dto.SchoolDto;
 import com.qmth.teachcloud.common.contant.SystemConstant;
+import com.qmth.teachcloud.common.service.BasicSchoolService;
 import com.qmth.teachcloud.common.util.RedisUtil;
 import com.qmth.teachcloud.task.job.service.JobService;
 import org.slf4j.Logger;
@@ -14,9 +21,11 @@ import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 import java.io.IOException;
+import java.util.List;
 import java.util.Map;
 import java.util.Objects;
 import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
 
 /**
  * @Description: job service impl
@@ -38,6 +47,12 @@ public class JobServiceImpl implements JobService {
     @Resource
     BasicMessageService basicMessageService;
 
+    @Resource
+    BasicSchoolService basicSchoolService;
+
+    @Resource
+    ExamPrintPlanService examPrintPlanService;
+
     @Resource
     RedisUtil redisUtil;
 
@@ -74,6 +89,25 @@ public class JobServiceImpl implements JobService {
         redisUtil.set(SystemConstant.TASK_MACHINE_ID + redisMachineService.getMachineId(), redisMachineService.getMachineId(), 30, TimeUnit.SECONDS);
     }
 
+    @Override
+    public void updatePrintPlanStatus() {
+        List<SchoolDto> schoolDtos = basicSchoolService.listSchool();
+        for (SchoolDto schoolDto : schoolDtos) {
+            QueryWrapper<ExamPrintPlan> queryWrapper = new QueryWrapper<>();
+            queryWrapper.lambda().eq(ExamPrintPlan::getSchoolId, schoolDto.getId())
+                    .ne(ExamPrintPlan::getStatus, PrintPlanStatusEnum.END)
+                    .le(ExamPrintPlan::getExamEndTime, System.currentTimeMillis());
+            List<ExamPrintPlan> examPrintPlanList = examPrintPlanService.list(queryWrapper);
+
+            List<Long> ids = examPrintPlanList.stream().map(ExamPrintPlan::getId).collect(Collectors.toList());
+
+            UpdateWrapper<ExamPrintPlan> updateWrapper = new UpdateWrapper<>();
+            updateWrapper.lambda().set(ExamPrintPlan::getStatus, PrintPlanStatusEnum.END)
+                    .in(ExamPrintPlan::getId, ids);
+            examPrintPlanService.update(updateWrapper);
+        }
+    }
+
     /**
      * 组装job
      *

+ 9 - 4
teachcloud-task/src/main/java/com/qmth/teachcloud/task/start/StartRunning.java

@@ -2,10 +2,7 @@ package com.qmth.teachcloud.task.start;
 
 import com.qmth.distributed.print.business.service.PrintCommonService;
 import com.qmth.teachcloud.task.enums.JobEnum;
-import com.qmth.teachcloud.task.job.RedisMqSyncJob;
-import com.qmth.teachcloud.task.job.ResendSmsJob;
-import com.qmth.teachcloud.task.job.SendSmsExpireJob;
-import com.qmth.teachcloud.task.job.SendSmsOverdueJob;
+import com.qmth.teachcloud.task.job.*;
 import com.qmth.teachcloud.task.job.service.JobService;
 import com.qmth.teachcloud.task.service.QuartzService;
 import org.slf4j.Logger;
@@ -43,6 +40,14 @@ public class StartRunning implements CommandLineRunner {
         jobService.machineHeart();
         printCommonService.updateStatus();
 
+        log.info("增加考试结束后印刷计划状态个性为END定时任务 start");
+        Map printPlanEndJobMap = new HashMap();
+        printPlanEndJobMap.computeIfAbsent("name", v -> PrintPlanEndJob.class.getName());
+        quartzService.deleteJob(JobEnum.PRINT_PLAN_END_JOB.name(), JobEnum.PRINT_PLAN_END_JOB_GROUP.name());
+        // 每天0点定时任务
+        quartzService.addJob(PrintPlanEndJob.class, JobEnum.PRINT_PLAN_END_JOB.name(), JobEnum.PRINT_PLAN_END_JOB_GROUP.name(), "0 0 0 * * ?", printPlanEndJobMap);
+        log.info("增加考试结束后印刷计划状态个性为END定时任务 end");
+
 //        log.info("增加重新生成pdf定时任务 start");
 //        Map taskJobMap = new HashMap();
 //        schoolJobMap.computeIfAbsent("name", v -> ResetCreatePdfJob.class.getName());