Răsfoiți Sursa

新增教研分析回调

wangliang 3 ani în urmă
părinte
comite
2a50dd2345

+ 0 - 8
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/bean/params/CalculateParams.java

@@ -75,12 +75,4 @@ public class CalculateParams implements Serializable {
     public void setCourseCode(List<String> courseCode) {
         this.courseCode = courseCode;
     }
-
-    @Override
-    public String toString() {
-        return "CalculateParams{" +
-                "examId=" + examId +
-                ", courseCode=" + courseCode +
-                '}';
-    }
 }

+ 13 - 1
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/entity/TBSyncTask.java

@@ -68,16 +68,28 @@ public class TBSyncTask extends BaseEntity implements Serializable {
     @ApiModelProperty(value = "报告路径")
     private String reportFilePath;
 
+    @ApiModelProperty(value = "原始数据")
+    private String source;
+
     public TBSyncTask() {
 
     }
 
-    public TBSyncTask(Long schoolId, Long thirdRelateId) {
+    public TBSyncTask(Long schoolId, Long thirdRelateId, String source) {
         setId(SystemConstant.getDbUuid());
         this.schoolId = schoolId;
         this.thirdRelateId = thirdRelateId;
         this.type = PushTypeEnum.CALCULATE;
         this.status = TaskStatusEnum.INIT;
+        this.source = source;
+    }
+
+    public String getSource() {
+        return source;
+    }
+
+    public void setSource(String source) {
+        this.source = source;
     }
 
     public Long getSchoolId() {

+ 12 - 4
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/templete/strategy/CalculateTaskTemplate.java

@@ -39,11 +39,13 @@ public abstract class CalculateTaskTemplate {
     protected void createSyncTask(CalculateParams calculateParams) throws IOException {
         log.info("createSyncTask come in");
         TBSyncTaskService tbSyncTaskService = SpringContextHolder.getBean(TBSyncTaskService.class);
+        String source = Base64Util.encode(ShaUtils.sha1(calculateParams.getExamId() + calculateParams.getCourseCode().toString()));
         QueryWrapper<TBSyncTask> tbSyncTaskQueryWrapper = new QueryWrapper<>();
-        tbSyncTaskQueryWrapper.lambda().eq(TBSyncTask::getThirdRelateId, calculateParams.getExamId());
+        tbSyncTaskQueryWrapper.lambda().eq(TBSyncTask::getThirdRelateId, calculateParams.getExamId())
+                .eq(TBSyncTask::getSource, source);
         TBSyncTask tbSyncTask = tbSyncTaskService.getOne(tbSyncTaskQueryWrapper);
         if (Objects.isNull(tbSyncTask)) {
-            tbSyncTask = new TBSyncTask(calculateParams.getSchoolId(), calculateParams.getExamId());
+            tbSyncTask = new TBSyncTask(calculateParams.getSchoolId(), calculateParams.getExamId(), source);
             tbSyncTaskService.save(tbSyncTask);
         }
         calculateParams.setTbSyncTask(tbSyncTask);
@@ -141,7 +143,13 @@ public abstract class CalculateTaskTemplate {
      */
     public void start(CalculateParams calculateParams) throws IOException {
         RedisUtil redisUtil = SpringContextHolder.getBean(RedisUtil.class);
-        boolean lock = redisUtil.lock(SystemConstant.REDIS_LOCK_CALCULATE_PREFIX + calculateParams.toString(), SystemConstant.REDIS_LOCK_CALCULATE_TIME_OUT);
+        String source = null;
+        if (Objects.nonNull(calculateParams.getTbSyncTask())) {
+            source = calculateParams.getTbSyncTask().getSource();
+        } else {
+            source = Base64Util.encode(ShaUtils.sha1(calculateParams.getExamId() + calculateParams.getCourseCode().toString()));
+        }
+        boolean lock = redisUtil.lock(SystemConstant.REDIS_LOCK_CALCULATE_PREFIX + source, SystemConstant.REDIS_LOCK_CALCULATE_TIME_OUT);
         if (!lock) {
             throw ExceptionResultEnum.ERROR.exception("正在计算中,请稍候再试!");
         }
@@ -162,7 +170,7 @@ public abstract class CalculateTaskTemplate {
                 ResultUtil.error(e.getMessage());
             }
         } finally {
-            redisUtil.releaseLock(SystemConstant.REDIS_LOCK_CALCULATE_PREFIX + calculateParams.toString());
+            redisUtil.releaseLock(SystemConstant.REDIS_LOCK_CALCULATE_PREFIX + source);
         }
     }
 }