Bläddra i källkod

3.4.4 20250607 bug修复

xiaofei 2 veckor sedan
förälder
incheckning
5d0de0389c

+ 2 - 1
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/enums/LockType.java

@@ -22,7 +22,8 @@ public enum LockType {
     CREATE_PDF("create_pdf"),
     EXAM_TASK_WHOLE("exam_task_whole"),
     CUSTOM_CARD_SAVE("custom_card_save"),
-    CUSTOM_MODEL_FOUR_CARD_SAVE("custom_model_four_card_save");
+    CUSTOM_MODEL_FOUR_CARD_SAVE("custom_model_four_card_save"),
+    BUILD_MARK_TASK("build_mark_task");
 
 	private String name;
 

+ 18 - 5
teachcloud-task/src/main/java/com/qmth/teachcloud/task/job/BuildMarkTaskJob.java

@@ -1,11 +1,14 @@
 package com.qmth.teachcloud.task.job;
 
+import com.qmth.boot.core.concurrent.service.ConcurrentService;
 import com.qmth.teachcloud.common.contant.SystemConstant;
+import com.qmth.teachcloud.mark.enums.LockType;
 import com.qmth.teachcloud.task.job.service.JobService;
 import org.quartz.DisallowConcurrentExecution;
 import org.quartz.JobExecutionContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.quartz.QuartzJobBean;
 
 import javax.annotation.Resource;
@@ -13,19 +16,29 @@ import javax.annotation.Resource;
 /**
  * 生成评卷任务
  */
-@DisallowConcurrentExecution//串行执行
+//@DisallowConcurrentExecution//串行执行
 public class BuildMarkTaskJob extends QuartzJobBean {
     private final static Logger log = LoggerFactory.getLogger(BuildMarkTaskJob.class);
 
+    @Autowired
+    private ConcurrentService concurrentService;
+
     @Resource
     JobService jobService;
 
     @Override
     protected void executeInternal(JobExecutionContext jobExecutionContext) {
-        try {
-            jobService.updateBuildMarkTask();
-        } catch (Exception e) {
-            log.error(SystemConstant.LOG_ERROR, e);
+        if (concurrentService.getReadWriteLock(LockType.BUILD_MARK_TASK.name()).writeLock().tryLock()) {
+            try {
+                jobService.updateBuildMarkTask();
+            } catch (Exception e) {
+                log.info("build-mark-task error");
+                e.printStackTrace();
+            } finally {
+                concurrentService.getReadWriteLock(LockType.BUILD_MARK_TASK.name()).writeLock().unlock();
+            }
+        } else {
+            log.info("build-mark-task is running");
         }
     }
 }