xiaof 3 yıl önce
ebeveyn
işleme
fcb6917878

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

@@ -68,6 +68,10 @@ public class GradeBatch extends BaseEntity implements Serializable {
     @TableField(value = "result", updateStrategy = FieldStrategy.IGNORED)
     private TaskResultEnum result;
 
+    @ApiModelProperty(value = "教研分析学期id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long thirdSemesterId;
+
     public TaskResultEnum getResult() {
         return result;
     }
@@ -163,4 +167,12 @@ public class GradeBatch extends BaseEntity implements Serializable {
     public void setThirdExamId(Long thirdExamId) {
         this.thirdExamId = thirdExamId;
     }
+
+    public Long getThirdSemesterId() {
+        return thirdSemesterId;
+    }
+
+    public void setThirdSemesterId(Long thirdSemesterId) {
+        this.thirdSemesterId = thirdSemesterId;
+    }
 }

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

@@ -1,7 +1,6 @@
 package com.qmth.distributed.print.business.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-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;
@@ -56,6 +55,8 @@ public class DataSyncReportServiceImpl implements DataSyncReportService {
         TaskStatusEnum status;
         String errorMessage = null;
         Long schoolId = tbSyncTask.getSchoolId();
+        Long thirdSemesterId = gradeBatch.getThirdSemesterId();
+        Long thirdExamId = gradeBatch.getThirdExamId();
         Long semesterId = gradeBatch.getSemesterId();
         try {
             // 同步中
@@ -67,24 +68,28 @@ public class DataSyncReportServiceImpl implements DataSyncReportService {
             if (basicSemester == null) {
                 throw ExceptionResultEnum.ERROR.exception("学期不存在");
             }
-            Long syncSemesterId = teachCloudReportTaskUtils.syncSemester(schoolId, basicSemester.getName(), basicSemester.getStartTime(), basicSemester.getEndTime(), true);
-            if (syncSemesterId <= 0L) {
+            thirdSemesterId = teachCloudReportTaskUtils.syncSemester(schoolId, thirdSemesterId, basicSemester.getName(), basicSemester.getStartTime(), basicSemester.getEndTime(), true);
+            if (thirdSemesterId == null) {
                 throw ExceptionResultEnum.ERROR.exception("学期同步失败");
             }
+            // 更新批次表考试ID、状态
+            gradeBatch.setThirdSemesterId(thirdSemesterId);
 
             // 同步考试(分析批次)
-            Long examId = teachCloudReportTaskUtils.syncExam(schoolId, gradeBatch.getThirdExamId(), gradeBatch.getBatchName(), gradeBatch.getBatchTime(), String.valueOf(syncSemesterId), true);
-            if (examId <= 0L) {
+            thirdExamId = teachCloudReportTaskUtils.syncExam(schoolId, thirdExamId, gradeBatch.getBatchName(), gradeBatch.getBatchTime(), String.valueOf(thirdSemesterId), true);
+            if (thirdExamId == null) {
                 throw ExceptionResultEnum.ERROR.exception("考试同步失败");
             }
 
+            gradeBatch.setThirdExamId(thirdExamId);
+
             // 同步分析课程
             QueryWrapper<GradeBatchPaper> queryWrapper = new QueryWrapper<>();
             queryWrapper.lambda().eq(GradeBatchPaper::getBatchId, gradeBatch.getId());
             List<GradeBatchPaper> gradeBatchPaperList = gradeBatchPaperService.list(queryWrapper);
             for (GradeBatchPaper gradeBatchPaper : gradeBatchPaperList) {
                 String courseCode = gradeBatchPaper.getPaperNumber() + gradeBatchPaper.getPaperType();
-                boolean syncCourse = teachCloudReportTaskUtils.syncCourse(schoolId, String.valueOf(examId), courseCode, gradeBatchPaper.getPaperName(), gradeBatchPaper.getPaperType(), gradeBatchPaper.getTeachCollegeName(), gradeBatchPaper.getEnable());
+                boolean syncCourse = teachCloudReportTaskUtils.syncCourse(schoolId, String.valueOf(thirdExamId), courseCode, gradeBatchPaper.getPaperName(), gradeBatchPaper.getPaperType(), gradeBatchPaper.getTeachCollegeName(), gradeBatchPaper.getEnable());
                 if (syncCourse) {
                     //
                     QueryWrapper<GradeBatchPaper> gradeBatchPaperQueryWrapper = new QueryWrapper<>();
@@ -93,6 +98,7 @@ public class DataSyncReportServiceImpl implements DataSyncReportService {
                     long count = gradeBatchPapers.stream().filter(m -> GradeAnalyzePaperStatusEnum.READY_TO_CALCULATE.equals(m.getStatus()) || GradeAnalyzePaperStatusEnum.CALCULATING.equals(m.getStatus()) || GradeAnalyzePaperStatusEnum.FINISH_CALCULATE.equals(m.getStatus())).count();
 
                     // 更新批次课程状态
+                    gradeBatchPaper.setGradeCourseCode(courseCode);
                     gradeBatchPaper.setStatus(count > 0 ? GradeAnalyzePaperStatusEnum.READY_TO_CALCULATE : GradeAnalyzePaperStatusEnum.SETTING_GRADE_PAPER_PARAM);
                     gradeBatchPaperService.updateById(gradeBatchPaper);
                 }
@@ -100,12 +106,8 @@ public class DataSyncReportServiceImpl implements DataSyncReportService {
 
             long batchCount = gradeBatchPaperList.stream().filter(m -> GradeAnalyzePaperStatusEnum.SETTING_GRADE_PAPER_PARAM.equals(m.getStatus())).count();
 
-            // 更新批次表考试ID、状态
-            UpdateWrapper<GradeBatch> updateWrapper = new UpdateWrapper<>();
-            updateWrapper.lambda().set(GradeBatch::getThirdExamId, examId)
-                    .set(GradeBatch::getStatus, batchCount > 0 ? GradeAnalyzePaperStatusEnum.SETTING_GRADE_PAPER_PARAM : GradeAnalyzePaperStatusEnum.READY_TO_CALCULATE)
-                    .eq(GradeBatch::getId, gradeBatch.getId());
-            gradeBatchService.update(updateWrapper);
+            gradeBatch.setStatus(batchCount > 0 ? GradeAnalyzePaperStatusEnum.SETTING_GRADE_PAPER_PARAM : GradeAnalyzePaperStatusEnum.READY_TO_CALCULATE);
+
             // 任务结果
             result = TaskResultEnum.SUCCESS;
         } catch (Exception e) {
@@ -115,6 +117,9 @@ public class DataSyncReportServiceImpl implements DataSyncReportService {
             // 同步结束
             status = TaskStatusEnum.FINISH;
             tbSyncTaskService.updateStatusAndResultById(tbSyncTask.getId(), null, status, result, errorMessage);
+
+            // 更新批次表学期Id、考试ID、状态
+            gradeBatchService.updateById(gradeBatch);
         }
     }
 

+ 4 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TBSyncTaskServiceImpl.java

@@ -64,14 +64,16 @@ public class TBSyncTaskServiceImpl extends ServiceImpl<TBSyncTaskMapper, TBSyncT
                 .eq(TBSyncTask::getObjectId, objectId)
                 .eq(TBSyncTask::getType, type);
         TBSyncTask tbSyncTask = this.getOne(queryWrapper);
+        Long id = SystemConstant.getDbUuid();
         if (tbSyncTask != null) {
             if (!TaskStatusEnum.FINISH.equals(tbSyncTask.getStatus())) {
                 throw ExceptionResultEnum.ERROR.exception("有任务未结束");
             }
-            this.removeById(tbSyncTask.getId());
+            id = tbSyncTask.getId();
+            this.removeById(id);
         }
         tbSyncTask = new TBSyncTask();
-        tbSyncTask.setId(SystemConstant.getDbUuid());
+        tbSyncTask.setId(id);
         tbSyncTask.setSchoolId(schoolId);
         tbSyncTask.setObjectId(objectId);
         tbSyncTask.setType(type);

+ 50 - 20
teachcloud-common/src/main/java/com/qmth/teachcloud/common/sync/TeachCloudReportTaskUtils.java

@@ -20,6 +20,7 @@ import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Component;
 
 import javax.annotation.Resource;
+import java.io.IOException;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -46,30 +47,44 @@ public class TeachCloudReportTaskUtils {
     /**
      * 学期创建/更新接口
      *
-     * @param id           学期id
+     * @param thirdSemesterId
      * @param semesterName 学期名称
      * @param startTime    学期开始时间
      * @param endTime      学期结束时间
      * @param enable       启用/禁用,ture:启用,false:禁用,默认启用
      */
-    public Long syncSemester(Long schoolId, String semesterName, Long startTime, Long endTime, Boolean enable) {
+    public Long syncSemester(Long schoolId, Long thirdSemesterId, String semesterName, Long startTime, Long endTime, Boolean enable) {
         String hostUrl = dictionaryConfig.reportOpenDomain().getHostUrl();
         String saveUrl = dictionaryConfig.reportOpenDomain().getSemesterApi();
         validUrl(hostUrl, saveUrl);
         String postUrl = hostUrl.concat(saveUrl);
+        long timestamp = System.currentTimeMillis();
         //参数
-        Map<String, Object> map = new HashMap<>();
-        map.put("semesterName", validParam(semesterName, null, true, "学期名称"));
-        map.put("startTime", validParam(startTime, null, true, "学期开始时间"));
-        map.put("endTime", validParam(endTime, null, true, "学期结束时间"));
-        map.put("enable", validParam(enable, true, true, "是否启用标记"));
+        try {
+            Map<String, Object> map = new HashMap<>();
+            map.put("id", validParam(thirdSemesterId, null, false, "学期ID"));
+            map.put("semesterName", validParam(semesterName, null, true, "学期名称"));
+            map.put("startTime", validParam(startTime, null, true, "学期开始时间"));
+            map.put("endTime", validParam(endTime, null, true, "学期结束时间"));
+            map.put("enable", validParam(enable, true, true, "是否启用标记"));
+
+            String accessToken = createSign(schoolId, timestamp, saveUrl);
+            String result = HttpUtil.postJson(postUrl, JacksonUtil.parseJson(map), accessToken, timestamp);
 
-        String result = HttpKit.sendPost(postUrl, getHeaders(schoolId, saveUrl), map, null, null, null);
-        JSONObject jsonObject = JSONObject.parseObject(result);
-        if (jsonObject.containsKey("id")) {
-            return Long.valueOf(jsonObject.get("id").toString());
-        } else {
-            throw ExceptionResultEnum.ERROR.exception("学期同步失败");
+            JSONObject jsonObject = JSONObject.parseObject(result);
+            if (jsonObject.containsKey("code")) {
+                String code = jsonObject.getString("code");
+                if("200".equals(code)) {
+                    return jsonObject.getLong("data");
+                } else {
+                    throw ExceptionResultEnum.ERROR.exception(jsonObject.getString("error"));
+                }
+            } else {
+                throw ExceptionResultEnum.ERROR.exception("学期同步失败");
+            }
+        } catch (IOException e) {
+            log.error(SystemConstant.LOG_ERROR, e);
+            throw ExceptionResultEnum.ERROR.exception(e.getMessage());
         }
     }
 
@@ -88,19 +103,26 @@ public class TeachCloudReportTaskUtils {
         String saveUrl = dictionaryConfig.reportOpenDomain().getExamApi();
         validUrl(hostUrl, saveUrl);
         String postUrl = hostUrl.concat(saveUrl);
+        long timestamp = System.currentTimeMillis();
         try {
             //参数
             Map<String, Object> map = new HashMap<>();
-            map.put("id", validParam(id, null, true, "考试ID"));
+            map.put("id", validParam(id, null, false, "考试ID"));
             map.put("examName", validParam(examName, null, true, "考试名称"));
             map.put("examTime", validParam(examTime, null, true, "考试时间"));
             map.put("semesterId", validParam(semesterId, null, true, "学期ID"));
             map.put("enable", validParam(enable, null, true, "是否启用标记"));
 
-            String result = HttpKit.sendPost(postUrl, getHeaders(schoolId, saveUrl), map, null, null, null);
+            String accessToken = createSign(schoolId, timestamp, saveUrl);
+            String result = HttpUtil.postJson(postUrl, JacksonUtil.parseJson(map), accessToken, timestamp);
             JSONObject jsonObject = JSONObject.parseObject(result);
-            if (jsonObject.containsKey("id")) {
-                return Long.valueOf(jsonObject.get("id").toString());
+            if (jsonObject.containsKey("code")) {
+                String code = jsonObject.getString("code");
+                if("200".equals(code)) {
+                    return jsonObject.getLong("data");
+                } else {
+                    throw ExceptionResultEnum.ERROR.exception(jsonObject.getString("error"));
+                }
             } else {
                 throw ExceptionResultEnum.ERROR.exception("考试同步失败");
             }
@@ -124,6 +146,7 @@ public class TeachCloudReportTaskUtils {
         String saveUrl = dictionaryConfig.reportOpenDomain().getCourseEditApi();
         validUrl(hostUrl, saveUrl);
         String postUrl = hostUrl.concat(saveUrl);
+        long timestamp = System.currentTimeMillis();
         try {
             //参数
             Map<String, Object> map = new HashMap<>();
@@ -134,10 +157,17 @@ public class TeachCloudReportTaskUtils {
             map.put("teachCollegeName", validParam(teachCollegeName, null, true, "开课机构名称"));
             map.put("enable", validParam(enable, true, true, "是否启用标记"));
 
-            String result = HttpKit.sendPost(postUrl, getHeaders(schoolId, saveUrl), map, null, null, null);
+            String accessToken = createSign(schoolId, timestamp, saveUrl);
+            String result = HttpUtil.postJson(postUrl, JacksonUtil.parseJson(map), accessToken, timestamp);
             JSONObject jsonObject = JSONObject.parseObject(result);
-            if (jsonObject.containsKey("success")) {
-                return Boolean.valueOf(jsonObject.get("success").toString());
+            if (jsonObject.containsKey("code")) {
+                String code = jsonObject.getString("code");
+                if("200".equals(code)) {
+                    JSONObject successJson = JSONObject.parseObject(jsonObject.getString("data"));
+                    return successJson.getBoolean("success");
+                } else {
+                    throw ExceptionResultEnum.ERROR.exception(jsonObject.getString("error"));
+                }
             } else {
                 throw ExceptionResultEnum.ERROR.exception("分析课程同步失败");
             }

+ 1 - 2
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/impl/CallPrintOpenApiServiceImpl.java

@@ -41,8 +41,7 @@ public class CallPrintOpenApiServiceImpl implements CallPrintOpenApiService {
 
     @Override
     public PaperConfig callPaperConfig(Long thirdExamId, String gradeCourseCode) throws IOException {
-//        Long schoolId = SystemConstant.getHeadOrUserSchoolId();
-        Long schoolId = 2L;
+        Long schoolId = SystemConstant.getHeadOrUserSchoolId();
         BasicSchool basicSchool = commonCacheService.schoolCache(schoolId);
         log.info("请求分布式印刷试卷配置");
         JSONObject printOpenParams = new JSONObject();