From 1ad824cbc0b6e39166431f3b16611351820cfde0 Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期一, 01 七月 2024 11:39:35 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev --- src/main/java/com/ycl/jxkg/job/ExamJob.java | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 52 insertions(+), 0 deletions(-) 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); + } + } + + } + +} -- Gitblit v1.8.0