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