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