From e0614cb9fa53719a3ccdaab4a0cbf6768af5baa2 Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期一, 01 七月 2024 13:13:50 +0800 Subject: [PATCH] 考试定时任务、考试修改调整 --- src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java | 4 ++++ src/main/java/com/ycl/jxkg/job/ExamJob.java | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/ycl/jxkg/JxkgApplication.java | 2 ++ 3 files changed, 58 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/ycl/jxkg/JxkgApplication.java b/src/main/java/com/ycl/jxkg/JxkgApplication.java index 3df1b54..0c95d80 100644 --- a/src/main/java/com/ycl/jxkg/JxkgApplication.java +++ b/src/main/java/com/ycl/jxkg/JxkgApplication.java @@ -4,6 +4,7 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.transaction.annotation.EnableTransactionManagement; /** @@ -12,6 +13,7 @@ * Copyright (C), 2020-2024, 姝︽眽鎬濈淮璺宠穬绉戞妧鏈夐檺鍏徃 * @date 2021/12/25 9:45 */ +@EnableScheduling @SpringBootApplication @EnableTransactionManagement @EnableConfigurationProperties(value = { SystemConfig.class}) diff --git a/src/main/java/com/ycl/jxkg/job/ExamJob.java b/src/main/java/com/ycl/jxkg/job/ExamJob.java new file mode 100644 index 0000000..2f97502 --- /dev/null +++ b/src/main/java/com/ycl/jxkg/job/ExamJob.java @@ -0,0 +1,52 @@ +package com.ycl.jxkg.job; + +import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; +import com.ycl.jxkg.domain.entity.Exam; +import com.ycl.jxkg.enums.general.ExamStatusEnum; +import com.ycl.jxkg.mapper.ExamMapper; +import lombok.RequiredArgsConstructor; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +/** + * @author锛歺p + * @date锛�2024/7/1 11:06 + */ +@Component +@RequiredArgsConstructor +public class ExamJob { + + private final ExamMapper examMapper; + + + @Scheduled(fixedRate = 120000) // 涓ゅ垎閽熸墽琛屼竴娆★紝瀹氭椂浠诲姟浣滀负mq娑堣垂澶辫触鐨勪繚搴� + private void updateExamStatus() { + List<Exam> notFinishedExams = new LambdaQueryChainWrapper<>(examMapper) + .select(Exam::getId, Exam::getStatus, Exam::getStartTime, Exam::getEndTime) + .ne(Exam::getStatus, ExamStatusEnum.FINISHED) + .list(); + List<Exam> notStartExams = notFinishedExams.stream().filter(item -> ExamStatusEnum.NOT_START.equals(item.getStatus())).collect(Collectors.toList()); + List<Exam> ingExams = notFinishedExams.stream().filter(item -> ExamStatusEnum.ING.equals(item.getStatus())).collect(Collectors.toList()); + Date now = new Date(); + // 鏈紑濮嬬殑鐘舵�� 鍒� 杩涜涓� + for (Exam exam : notStartExams) { + if (now.after(exam.getStartTime()) && now.before(exam.getEndTime())) { + exam.setStatus(ExamStatusEnum.ING); + examMapper.updateById(exam); + } + } + // 浠庤繘琛屼腑鐘舵�� 鍒� 缁撴潫 + for (Exam ingExam : ingExams) { + if (now.after(ingExam.getEndTime())) { + ingExam.setStatus(ExamStatusEnum.FINISHED); + examMapper.updateById(ingExam); + } + } + + } + +} diff --git a/src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java b/src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java index 70dc960..e4f46d6 100644 --- a/src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java +++ b/src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java @@ -94,6 +94,10 @@ Exam entity = baseMapper.selectById(form.getId()); // 涓虹┖鎶汭llegalArgumentException锛屽仛鍏ㄥ眬寮傚父澶勭悊 Assert.notNull(entity, "璁板綍涓嶅瓨鍦�"); + // 鍒ゆ柇鑰冭瘯鐘舵�� + if (! ExamStatusEnum.NOT_START.equals(entity.getStatus())) { + throw new RuntimeException("鍙兘淇敼杩樻湭寮�濮嬬殑鑰冭瘯"); + } BeanUtils.copyProperties(form, entity); entity.setStatus(ExamStatusEnum.getStatusByTime(form.getStartTime(), form.getEndTime(), null)); baseMapper.updateById(entity); -- Gitblit v1.8.0