Explorar o código

3.4.4 20250526 数据同步bug修复

xiaofei hai 3 semanas
pai
achega
73bc6c032d

+ 13 - 0
distributed-print/src/main/java/com/qmth/distributed/print/api/admin/DataController.java

@@ -88,6 +88,19 @@ public class DataController {
         } else if (tSyncData.getStatus()) {
             throw ExceptionResultEnum.ERROR.exception("正在同步中,请稍后再试");
         }
+        long currentTime = System.currentTimeMillis();
+        Long startTime = tSyncData.getStartTime();
+        Long endTime = tSyncData.getEndTime();
+        BasicExam basicExam = basicExamService.getById(examId);
+        if (!basicExam.getEnable()) {
+            throw ExceptionResultEnum.ERROR.exception("考试已禁用,无法同步");
+        }
+        if (!tSyncData.getEnable()) {
+            throw ExceptionResultEnum.ERROR.exception("任务已禁用,无法同步");
+        }
+        if (currentTime < startTime || currentTime > endTime) {
+            throw ExceptionResultEnum.ERROR.exception("不在任务同步时间内,无法同步");
+        }
         quartzService.runAJobNow(JobEnum.DATA_SYNC.name() + "-" + schoolId + "-" + examId, JobEnum.DATA_SYNC.getGroupName());
         return ResultUtil.ok(true);
     }

+ 14 - 0
teachcloud-data/src/main/java/com/qmth/teachcloud/data/service/impl/TSyncDataServiceImpl.java

@@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
 import com.qmth.boot.core.concurrent.service.ConcurrentService;
+import com.qmth.distributed.print.business.service.BasicExamService;
+import com.qmth.teachcloud.common.entity.BasicExam;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.data.entity.TSyncData;
 import com.qmth.teachcloud.data.entity.TSyncDataLog;
@@ -13,6 +15,7 @@ import com.qmth.teachcloud.data.mapper.TSyncDataMapper;
 import com.qmth.teachcloud.data.service.DataService;
 import com.qmth.teachcloud.data.service.TSyncDataLogService;
 import com.qmth.teachcloud.data.service.TSyncDataService;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -33,6 +36,8 @@ public class TSyncDataServiceImpl extends MppServiceImpl<TSyncDataMapper, TSyncD
     @Resource
     private TSyncDataLogService tSyncDataLogService;
     @Resource
+    private BasicExamService basicExamService;
+    @Resource
     private ConcurrentService concurrentService;
 
     @Override
@@ -70,6 +75,15 @@ public class TSyncDataServiceImpl extends MppServiceImpl<TSyncDataMapper, TSyncD
             } else if (syncData.getStatus()) {
                 throw ExceptionResultEnum.ERROR.exception("数据正在同步中");
             }
+
+            long currentTime = System.currentTimeMillis();
+            Long startTime = syncData.getStartTime();
+            Long endTime = syncData.getEndTime();
+            BasicExam basicExam = basicExamService.getById(examId);
+            if (!basicExam.getEnable() || !syncData.getEnable() || currentTime < startTime || currentTime > endTime || StringUtils.isBlank(syncData.getCron())) {
+                return true;
+            }
+
             // 更新状态
             syncData.setStatus(true);
             this.updateByMultiId(syncData);