Bladeren bron

教研分析回调增加科目状态

wangliang 3 jaren geleden
bovenliggende
commit
d9a0c25451
14 gewijzigde bestanden met toevoegingen van 64 en 34 verwijderingen
  1. 5 4
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/CalculateNotifyResult.java
  2. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/analyze/GradeBatchPaperResult.java
  3. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/analyze/GradeBatchResult.java
  4. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/GradeBatch.java
  5. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/GradeBatchPaper.java
  6. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/DataSyncReportServiceImpl.java
  7. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/GradeBatchPaperServiceImpl.java
  8. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/GradeBatchServiceImpl.java
  9. 6 3
      distributed-print/src/main/java/com/qmth/distributed/print/api/NotifyApiController.java
  10. 5 5
      distributed-print/src/main/resources/application-dev.properties
  11. 3 3
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/GradeAnalyzePaperStatusEnum.java
  12. 13 0
      teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/bean/params/CalculateParams.java
  13. 20 2
      teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/templete/strategy/CalculateTaskTemplate.java
  14. 5 10
      teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/templete/strategy/CourseCodeSyncTaskService.java

+ 5 - 4
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/CalculateNotifyResult.java

@@ -2,11 +2,12 @@ package com.qmth.distributed.print.business.bean.result;
 
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.teachcloud.common.enums.GradeAnalyzePaperStatusEnum;
 import io.swagger.annotations.ApiModelProperty;
 
 import java.io.Serializable;
 import java.math.BigDecimal;
-import java.util.List;
+import java.util.Map;
 
 /**
  * @Description: 计算回调结果
@@ -22,7 +23,7 @@ public class CalculateNotifyResult implements Serializable {
     private Long examId;
 
     @ApiModelProperty(value = "课程编码,一个分析试卷的唯一标识")
-    private List<String> courseCode;
+    private Map<String, GradeAnalyzePaperStatusEnum> courseCode;
 
     @ApiModelProperty(value = "进度")
     private BigDecimal progress;
@@ -41,11 +42,11 @@ public class CalculateNotifyResult implements Serializable {
         this.examId = examId;
     }
 
-    public List<String> getCourseCode() {
+    public Map<String, GradeAnalyzePaperStatusEnum> getCourseCode() {
         return courseCode;
     }
 
-    public void setCourseCode(List<String> courseCode) {
+    public void setCourseCode(Map<String, GradeAnalyzePaperStatusEnum> courseCode) {
         this.courseCode = courseCode;
     }
 

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/analyze/GradeBatchPaperResult.java

@@ -2,7 +2,7 @@ package com.qmth.distributed.print.business.bean.result.analyze;
 
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
-import com.qmth.distributed.print.business.enums.GradeAnalyzePaperStatusEnum;
+import com.qmth.teachcloud.common.enums.GradeAnalyzePaperStatusEnum;
 import io.swagger.annotations.ApiModelProperty;
 
 /**

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/analyze/GradeBatchResult.java

@@ -2,7 +2,7 @@ package com.qmth.distributed.print.business.bean.result.analyze;
 
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
-import com.qmth.distributed.print.business.enums.GradeAnalyzePaperStatusEnum;
+import com.qmth.teachcloud.common.enums.GradeAnalyzePaperStatusEnum;
 import io.swagger.annotations.ApiModelProperty;
 
 /**

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/GradeBatch.java

@@ -2,8 +2,8 @@ package com.qmth.distributed.print.business.entity;
 
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
-import com.qmth.distributed.print.business.enums.GradeAnalyzePaperStatusEnum;
 import com.qmth.teachcloud.common.base.BaseEntity;
+import com.qmth.teachcloud.common.enums.GradeAnalyzePaperStatusEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/GradeBatchPaper.java

@@ -2,8 +2,8 @@ package com.qmth.distributed.print.business.entity;
 
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
-import com.qmth.distributed.print.business.enums.GradeAnalyzePaperStatusEnum;
 import com.qmth.teachcloud.common.base.BaseEntity;
+import com.qmth.teachcloud.common.enums.GradeAnalyzePaperStatusEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/DataSyncReportServiceImpl.java

@@ -5,13 +5,13 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.qmth.distributed.print.business.entity.GradeBatch;
 import com.qmth.distributed.print.business.entity.GradeBatchPaper;
 import com.qmth.distributed.print.business.entity.TBSyncTask;
-import com.qmth.distributed.print.business.enums.GradeAnalyzePaperStatusEnum;
 import com.qmth.distributed.print.business.service.DataSyncReportService;
 import com.qmth.distributed.print.business.service.GradeBatchPaperService;
 import com.qmth.distributed.print.business.service.GradeBatchService;
 import com.qmth.distributed.print.business.service.TBSyncTaskService;
 import com.qmth.teachcloud.common.entity.BasicSemester;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
+import com.qmth.teachcloud.common.enums.GradeAnalyzePaperStatusEnum;
 import com.qmth.teachcloud.common.enums.TaskResultEnum;
 import com.qmth.teachcloud.common.enums.TaskStatusEnum;
 import com.qmth.teachcloud.common.service.BasicSemesterService;

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/GradeBatchPaperServiceImpl.java

@@ -9,7 +9,6 @@ import com.qmth.distributed.print.business.bean.params.analyze.GradeBatchPaperPa
 import com.qmth.distributed.print.business.bean.result.analyze.GradeBatchPaperResult;
 import com.qmth.distributed.print.business.entity.GradeBatch;
 import com.qmth.distributed.print.business.entity.GradeBatchPaper;
-import com.qmth.distributed.print.business.enums.GradeAnalyzePaperStatusEnum;
 import com.qmth.distributed.print.business.mapper.GradeBatchPaperMapper;
 import com.qmth.distributed.print.business.service.GradeBatchPaperService;
 import com.qmth.distributed.print.business.service.GradeBatchService;
@@ -17,6 +16,7 @@ import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.SysOrg;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
+import com.qmth.teachcloud.common.enums.GradeAnalyzePaperStatusEnum;
 import com.qmth.teachcloud.common.enums.OrgTypeEnum;
 import com.qmth.teachcloud.common.service.SysOrgService;
 import com.qmth.teachcloud.common.service.TeachcloudCommonService;

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/GradeBatchServiceImpl.java

@@ -14,7 +14,6 @@ import com.qmth.distributed.print.business.bean.result.analyze.GradeBatchResult;
 import com.qmth.distributed.print.business.entity.GradeBatch;
 import com.qmth.distributed.print.business.entity.GradeBatchPaper;
 import com.qmth.distributed.print.business.entity.GradeBatchStudent;
-import com.qmth.distributed.print.business.enums.GradeAnalyzePaperStatusEnum;
 import com.qmth.distributed.print.business.mapper.ExamStudentMapper;
 import com.qmth.distributed.print.business.mapper.GradeBatchMapper;
 import com.qmth.distributed.print.business.service.GradeBatchPaperService;
@@ -23,6 +22,7 @@ import com.qmth.distributed.print.business.service.GradeBatchStudentService;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
+import com.qmth.teachcloud.common.enums.GradeAnalyzePaperStatusEnum;
 import com.qmth.teachcloud.common.util.ExcelUtil;
 import com.qmth.teachcloud.common.util.excel.ExcelError;
 import org.apache.commons.lang3.StringUtils;

+ 6 - 3
distributed-print/src/main/java/com/qmth/distributed/print/api/NotifyApiController.java

@@ -23,8 +23,7 @@ import javax.annotation.Resource;
 import java.io.UnsupportedEncodingException;
 import java.net.URLDecoder;
 import java.net.URLEncoder;
-import java.util.Objects;
-import java.util.Optional;
+import java.util.*;
 
 /**
  * <p>
@@ -68,7 +67,11 @@ public class NotifyApiController {
                 throw ExceptionResultEnum.ERROR.exception("签名不匹配");
             }
             CalculateNotifyResult calculateNotifyResult = JSONObject.toJavaObject(JSONObject.parseObject(decodeJson), CalculateNotifyResult.class);
-            String source = Base64Util.encode(ShaUtils.sha1(calculateNotifyResult.getExamId() + calculateNotifyResult.getCourseCode().toString()));
+            List<String> courseCodeList = new ArrayList<>();
+            courseCodeList.addAll(calculateNotifyResult.getCourseCode().keySet());
+            Collections.sort(courseCodeList);
+
+            String source = Base64Util.encode(ShaUtils.sha1(calculateNotifyResult.getExamId() + courseCodeList.toString()));
             log.info("source:{}", source);
             //TODO 更新grade_batch(状态和进度)和grade_batch_paper(状态)
         } catch (Exception e) {

+ 5 - 5
distributed-print/src/main/resources/application-dev.properties

@@ -61,7 +61,7 @@ com.qmth.fss.private.config=oss://key:secret@teachcloud-print-dev-private.oss-ap
 com.qmth.fss.private.server=https://oss-file.qmth.com.cn/teachcloud-print-dev-private
 
 #\u7CFB\u7EDF\u914D\u7F6E
-sys.config.oss=true
+sys.config.oss=false
 sys.config.attachmentType=.xlsx,.xls,.doc,.docx,.pdf,.jpg,.jpeg,.png,.html,.zip,.mp3,.wav,.dll,.exe,.ftl,.bpmn,.xml
 sys.config.attachmentLength=100
 sys.config.attachmentSize=200
@@ -73,8 +73,8 @@ sys.config.serverHost=localhost:7001
 sys.config.accessKey=274f823e5f59410f8b3bb6edcd8e2b6e
 sys.config.accessSecret=y7AO6W0TOdTF8HpWBwGHbp3wfIHsmUKr
 sys.config.adminLogoUrl=http://qmth-test.oss-cn-shenzhen.aliyuncs.com/frontend/wx_logo.png
-#sys.config.htmlToPdfUrl=/usr/local/bin/wkhtmltopdf
-sys.config.htmlToPdfUrl=E:/devUtils/wkhtmltopdf/bin/wkhtmltopdf.exe
+sys.config.htmlToPdfUrl=/usr/local/bin/wkhtmltopdf
+#sys.config.htmlToPdfUrl=E:/devUtils/wkhtmltopdf/bin/wkhtmltopdf.exe
 sys.config.autoCreatePdfResetMaxCount=5
 sys.config.threadPoolCoreSize=1
 sys.config.customThreadPoolCoreSize=true
@@ -158,8 +158,8 @@ sync.config.groupCountUrl=/api/exam/mark_group/count
 sync.config.groupDeleteUrl=/api/exam/mark_group/delete
 sync.config.markerSaveUrl=/api/exam/marker/save
 
-com.qmth.solar.access-key=274f823e5f59410f8b3bb6edcd8e2b6e
-com.qmth.solar.access-secret=y7AO6W0TOdTF8HpWBwGHbp3wfIHsmUKr
+#com.qmth.solar.access-key=274f823e5f59410f8b3bb6edcd8e2b6e
+#com.qmth.solar.access-secret=y7AO6W0TOdTF8HpWBwGHbp3wfIHsmUKr
 #com.qmth.solar.license=/Volumes/extend/\u542F\u660E/\u5206\u5E03\u5F0F\u5370\u5237/\u5206\u5E03\u5F0F\u5370\u5237&\u6559\u7814\u5206\u6790v3.1.0/tc-dev-wl.lic
 
 sms.config.smsNormalCode=qmth

+ 3 - 3
distributed-print-business/src/main/java/com/qmth/distributed/print/business/enums/GradeAnalyzePaperStatusEnum.java → teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/GradeAnalyzePaperStatusEnum.java

@@ -1,4 +1,4 @@
-package com.qmth.distributed.print.business.enums;
+package com.qmth.teachcloud.common.enums;
 
 /**
  * @Description: 教研分析试卷状态枚举类
@@ -11,8 +11,8 @@ public enum GradeAnalyzePaperStatusEnum {
     SETTING_GRADE_PAPER_PARAM("蓝图数据准备中","推送分析数据给教研分析并且返回成功则设置此状态,并给命题老师发待办提醒。(如果推送失败则在推送任务管理里重新发起推送)"),
     READY_TO_CALCULATE("待计算","批次下的所有科目都已上传蓝图数据则设置此状态"),
     CALCULATING("计算中","发起分析则设置此状态。(发起分析后针对批次返回任务状态和进度,科目只显示计算中状态不显示进度。如果计算失败则在批次界面可以重新开始分析[断点续传]和错误原因.txt)"),
-    FINISH_CALCULATE("已完成","分析完毕后则设置此状态"),
-    ;
+    FINISH_CALCULATE("已完成","分析完毕后则设置此状态");
+
     private final String desc;
     private final String interpret;
 

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

@@ -3,12 +3,14 @@ package com.qmth.teachcloud.report.business.bean.params;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
+import com.qmth.teachcloud.common.enums.GradeAnalyzePaperStatusEnum;
 import com.qmth.teachcloud.report.business.entity.TBSyncTask;
 import io.swagger.annotations.ApiModelProperty;
 import org.springframework.util.CollectionUtils;
 
 import java.io.Serializable;
 import java.util.List;
+import java.util.Map;
 import java.util.Optional;
 
 /**
@@ -37,6 +39,17 @@ public class CalculateParams implements Serializable {
     @ApiModelProperty(value = "需要重算的课程编号")
     private List<String> repeatCalculateCourseCodeList;
 
+    @ApiModelProperty(value = "课程编码状态")
+    private Map<String, GradeAnalyzePaperStatusEnum> courseCodeMap;
+
+    public Map<String, GradeAnalyzePaperStatusEnum> getCourseCodeMap() {
+        return courseCodeMap;
+    }
+
+    public void setCourseCodeMap(Map<String, GradeAnalyzePaperStatusEnum> courseCodeMap) {
+        this.courseCodeMap = courseCodeMap;
+    }
+
     /**
      * 参数校验
      */

+ 20 - 2
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/templete/strategy/CalculateTaskTemplate.java

@@ -8,6 +8,7 @@ import com.qmth.teachcloud.common.contant.SpringContextHolder;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.BasicSchool;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
+import com.qmth.teachcloud.common.enums.GradeAnalyzePaperStatusEnum;
 import com.qmth.teachcloud.common.enums.TaskResultEnum;
 import com.qmth.teachcloud.common.enums.TaskStatusEnum;
 import com.qmth.teachcloud.common.service.CommonCacheService;
@@ -21,6 +22,9 @@ import org.slf4j.LoggerFactory;
 import java.io.IOException;
 import java.lang.reflect.InvocationTargetException;
 import java.net.URLEncoder;
+import java.util.Collections;
+import java.util.LinkedHashMap;
+import java.util.Map;
 import java.util.Objects;
 
 /**
@@ -42,18 +46,25 @@ public abstract class CalculateTaskTemplate {
     protected void createSyncTask(CalculateParams calculateParams) throws IOException {
         log.info("createSyncTask come in");
         TBSyncTaskService tbSyncTaskService = SpringContextHolder.getBean(TBSyncTaskService.class);
+        Collections.sort(calculateParams.getCourseCode());
+
         String source = Base64Util.encode(ShaUtils.sha1(calculateParams.getExamId() + calculateParams.getCourseCode().toString()));
         QueryWrapper<TBSyncTask> tbSyncTaskQueryWrapper = new QueryWrapper<>();
         tbSyncTaskQueryWrapper.lambda().eq(TBSyncTask::getThirdRelateId, calculateParams.getExamId())
                 .eq(TBSyncTask::getSource, source);
         TBSyncTask tbSyncTask = tbSyncTaskService.getOne(tbSyncTaskQueryWrapper);
-        calculateParams.setTbSyncTask(tbSyncTask);
         if (Objects.isNull(tbSyncTask)) {
             tbSyncTask = new TBSyncTask(calculateParams.getSchoolId(), calculateParams.getExamId(), source);
             tbSyncTaskService.save(tbSyncTask);
         } else if (tbSyncTask.getStatus() == TaskStatusEnum.FINISH && tbSyncTask.getResult() == TaskResultEnum.SUCCESS) {
             throw ExceptionResultEnum.ERROR.exception("该批次已完成计算");
         }
+        calculateParams.setTbSyncTask(tbSyncTask);
+        Map<String, GradeAnalyzePaperStatusEnum> map = new LinkedHashMap<>();
+        for (String s : calculateParams.getCourseCode()) {
+            map.put(s, GradeAnalyzePaperStatusEnum.READY_TO_CALCULATE);
+        }
+        calculateParams.setCourseCodeMap(map);
     }
 
     /**
@@ -83,6 +94,13 @@ public abstract class CalculateTaskTemplate {
         TBSyncTaskService tbSyncTaskService = SpringContextHolder.getBean(TBSyncTaskService.class);
         TBSyncTask tbSyncTask = calculateParams.getTbSyncTask();
         tbSyncTaskService.updateById(tbSyncTask);
+
+        if (Objects.nonNull(tbSyncTask.getObj())) {
+            JSONObject jsonObject = JSONObject.parseObject(tbSyncTask.getObj());
+            for (Map.Entry<String, Object> entry : jsonObject.entrySet()) {
+                calculateParams.getCourseCodeMap().put(entry.getKey(), GradeAnalyzePaperStatusEnum.valueOf((String) entry.getValue()));
+            }
+        }
         callback(calculateParams);
     }
 
@@ -129,7 +147,7 @@ public abstract class CalculateTaskTemplate {
         Long time = System.currentTimeMillis();
         JSONObject jsonObject = new JSONObject();
         jsonObject.put("examId", tbSyncTask.getThirdRelateId());
-        jsonObject.put("courseCode", calculateParams.getCourseCode());
+        jsonObject.put("courseCode", calculateParams.getCourseCodeMap());
         jsonObject.put("progress", tbSyncTask.getProgress());
         jsonObject.put("status", tbSyncTask.getStatus());
         jsonObject.put("time", time);

+ 5 - 10
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/templete/strategy/CourseCodeSyncTaskService.java

@@ -1,17 +1,12 @@
 package com.qmth.teachcloud.report.business.templete.strategy;
 
 import com.qmth.teachcloud.common.contant.SpringContextHolder;
-import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.enums.TaskStatusEnum;
 import com.qmth.teachcloud.report.business.bean.params.CalculateParams;
-import com.qmth.teachcloud.report.business.entity.TBExamCourse;
 import com.qmth.teachcloud.report.business.entity.TBSyncTask;
-import com.qmth.teachcloud.report.business.enums.DataCalculateSequenceEnum;
-import com.qmth.teachcloud.report.business.enums.PublishStatusEnum;
 import com.qmth.teachcloud.report.business.service.AnalyzeDataCalculateService;
 import com.qmth.teachcloud.report.business.service.AnalyzeDataCheckService;
 import com.qmth.teachcloud.report.business.service.AnalyzeForReportService;
-import com.qmth.teachcloud.report.business.service.TBExamCourseService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
@@ -19,11 +14,6 @@ import org.springframework.stereotype.Service;
 import javax.annotation.Resource;
 import java.io.IOException;
 import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.math.BigDecimal;
-import java.math.RoundingMode;
-import java.util.List;
-import java.util.concurrent.atomic.AtomicInteger;
 
 /**
  * @Description: 科目(试卷)计算service
@@ -72,6 +62,11 @@ public class CourseCodeSyncTaskService extends CalculateTaskTemplate {
         tbSyncTask.setStatus(TaskStatusEnum.RUNNING);
         updateProgress(calculateParams);
 
+//        JSONObject jsonObject = new JSONObject();
+//        jsonObject.put(calculateParams.getCourseCode().get(0), GradeAnalyzePaperStatusEnum.CALCULATING);
+//        tbSyncTask.setObj(jsonObject.toJSONString());
+//        updateProgress(calculateParams);
+
         //TODO 此处加计算数据具体逻辑方法,推荐service方法然后加@Transactional注解
         analyzeDataCalculateService.dataCalculateStart(calculateParams);
     }