Browse Source

fix:教研分析-提交分析数据bug

caozixuan 10 months ago
parent
commit
109409c746

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

@@ -16,8 +16,8 @@ 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;
 import com.qmth.teachcloud.common.kit.TeachCloudReportTaskUtils;
+import com.qmth.teachcloud.common.service.BasicSemesterService;
 import com.qmth.teachcloud.common.util.Base64Util;
 import com.qmth.teachcloud.common.util.ShaUtils;
 import org.slf4j.Logger;
@@ -75,7 +75,8 @@ public class DataSyncReportServiceImpl implements DataSyncReportService {
             if (basicSemester == null) {
                 throw ExceptionResultEnum.ERROR.exception("学期不存在");
             }
-            thirdSemesterId = teachCloudReportTaskUtils.syncSemester(schoolId, thirdSemesterId, basicSemester.getName(), basicSemester.getStartTime(), basicSemester.getEndTime(), true);
+            thirdSemesterId = teachCloudReportTaskUtils.syncSemester(schoolId, thirdSemesterId, basicSemester.getName(),
+                    basicSemester.getStartTime(), basicSemester.getEndTime(), true);
             if (thirdSemesterId == null) {
                 throw ExceptionResultEnum.ERROR.exception("学期同步失败");
             }
@@ -83,7 +84,8 @@ public class DataSyncReportServiceImpl implements DataSyncReportService {
             gradeBatch.setThirdSemesterId(thirdSemesterId);
 
             // 同步考试(分析批次)
-            thirdExamId = teachCloudReportTaskUtils.syncExam(schoolId, thirdExamId, gradeBatch.getBatchName(), gradeBatch.getBatchTime(), String.valueOf(thirdSemesterId), true);
+            thirdExamId = teachCloudReportTaskUtils.syncExam(schoolId, thirdExamId, gradeBatch.getBatchName(),
+                    gradeBatch.getBatchTime(), String.valueOf(thirdSemesterId), true);
             if (thirdExamId == null) {
                 throw ExceptionResultEnum.ERROR.exception("考试同步失败");
             }
@@ -96,7 +98,8 @@ public class DataSyncReportServiceImpl implements DataSyncReportService {
             List<GradeBatchPaper> gradeBatchPaperList = gradeBatchPaperService.list(queryWrapper);
             for (GradeBatchPaper gradeBatchPaper : gradeBatchPaperList) {
                 String courseCode = gradeBatchPaper.getPaperNumber() + gradeBatchPaper.getPaperType();
-                boolean syncCourse = teachCloudReportTaskUtils.syncCourse(schoolId, String.valueOf(thirdExamId), 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) {
                     // 删除enable=false的课程
                     if (!gradeBatchPaper.getEnable()) {
@@ -104,9 +107,13 @@ public class DataSyncReportServiceImpl implements DataSyncReportService {
                     }
 
                     QueryWrapper<GradeBatchPaper> gradeBatchPaperQueryWrapper = new QueryWrapper<>();
-                    gradeBatchPaperQueryWrapper.lambda().eq(GradeBatchPaper::getSchoolId, schoolId).eq(GradeBatchPaper::getPaperNumber, gradeBatchPaper.getPaperNumber()).eq(GradeBatchPaper::getPaperType, gradeBatchPaper.getPaperType());
+                    gradeBatchPaperQueryWrapper.lambda().eq(GradeBatchPaper::getSchoolId, schoolId)
+                            .eq(GradeBatchPaper::getExamId, examId)
+                            .eq(GradeBatchPaper::getPaperNumber, gradeBatchPaper.getPaperNumber()).eq(GradeBatchPaper::getPaperType, gradeBatchPaper.getPaperType());
                     List<GradeBatchPaper> gradeBatchPapers = gradeBatchPaperService.list(gradeBatchPaperQueryWrapper);
-                    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();
+                    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);
@@ -121,11 +128,13 @@ public class DataSyncReportServiceImpl implements DataSyncReportService {
             if (gradeBatchPaperList.stream().noneMatch(GradeBatchPaper::getEnable)) {
                 gradeBatch.setStatus(GradeAnalyzePaperStatusEnum.SETTING_GRADE_PAPER);
             } else {
-                long batchCount = gradeBatchPaperList.stream().filter(m -> m.getEnable() && GradeAnalyzePaperStatusEnum.SETTING_GRADE_PAPER_PARAM.equals(m.getStatus())).count();
-                gradeBatch.setStatus(batchCount > 0 ? GradeAnalyzePaperStatusEnum.SETTING_GRADE_PAPER_PARAM : GradeAnalyzePaperStatusEnum.READY_TO_CALCULATE);
+                long batchCount = gradeBatchPaperList.stream()
+                        .filter(m -> m.getEnable() && GradeAnalyzePaperStatusEnum.SETTING_GRADE_PAPER_PARAM.equals(m.getStatus())).count();
+                gradeBatch.setStatus(batchCount > 0 ?
+                        GradeAnalyzePaperStatusEnum.SETTING_GRADE_PAPER_PARAM :
+                        GradeAnalyzePaperStatusEnum.READY_TO_CALCULATE);
             }
 
-
             // 任务结果
             result = TaskResultEnum.SUCCESS;
         } catch (Exception e) {
@@ -177,7 +186,8 @@ public class DataSyncReportServiceImpl implements DataSyncReportService {
             errorMessage = e.getMessage();
             if (e instanceof ApiException) {
                 // "...【试卷编号】(试卷类型)...[异常代码]"
-                if (SystemConstant.strNotNull(errorMessage) && errorMessage.contains("【") && errorMessage.contains("】") && errorMessage.contains("[") && errorMessage.contains("]")) {
+                if (SystemConstant.strNotNull(errorMessage) && errorMessage.contains("【") && errorMessage.contains("】")
+                        && errorMessage.contains("[") && errorMessage.contains("]")) {
                     String code = errorMessage.substring(errorMessage.indexOf("[") + 1, errorMessage.indexOf("]"));
 
                     if (String.valueOf(ExceptionResultEnum.PAPER_STRUCT_EXCEPTION.getCode()).equals(code)) {
@@ -186,14 +196,14 @@ public class DataSyncReportServiceImpl implements DataSyncReportService {
                         remark = paperNumber;
                         errorMessage = errorMessage.substring(0, errorMessage.indexOf("["));
                         // 更新状态(structureChange)
-//                        UpdateWrapper<ExamPaperStructure> updateWrapper = new UpdateWrapper<>();
-//                        updateWrapper.lambda().set(ExamPaperStructure::getStructureChange, true).eq(ExamPaperStructure::getSchoolId, schoolId).eq(ExamPaperStructure::getPaperNumber, paperNumber);
-//                        if (errorMessage.contains("(") && errorMessage.contains(")")) {
-//                            String paperType = errorMessage.substring(errorMessage.indexOf("(") + 1, errorMessage.indexOf(")"));
-//                            remark = paperNumber + "(" + paperType + ")";
-//                            updateWrapper.lambda().eq(ExamPaperStructure::getPaperType, paperType);
-//                        }
-//                        examPaperStructureService.update(updateWrapper);
+                        //                        UpdateWrapper<ExamPaperStructure> updateWrapper = new UpdateWrapper<>();
+                        //                        updateWrapper.lambda().set(ExamPaperStructure::getStructureChange, true).eq(ExamPaperStructure::getSchoolId, schoolId).eq(ExamPaperStructure::getPaperNumber, paperNumber);
+                        //                        if (errorMessage.contains("(") && errorMessage.contains(")")) {
+                        //                            String paperType = errorMessage.substring(errorMessage.indexOf("(") + 1, errorMessage.indexOf(")"));
+                        //                            remark = paperNumber + "(" + paperType + ")";
+                        //                            updateWrapper.lambda().eq(ExamPaperStructure::getPaperType, paperType);
+                        //                        }
+                        //                        examPaperStructureService.update(updateWrapper);
                     }
                 }
             }
@@ -259,21 +269,22 @@ public class DataSyncReportServiceImpl implements DataSyncReportService {
             Long thirdExamId = gradeBatch.getThirdExamId();
 
             // 要删除的批次试卷集合
-            List<GradeBatchPaper> gradeBatchPaperList = gradeBatchPaperService.list(new QueryWrapper<GradeBatchPaper>()
-                    .lambda()
-                    .eq(GradeBatchPaper::getSchoolId, schoolId)
-                    .eq(GradeBatchPaper::getBatchId, gradeBatch.getId()));
+            List<GradeBatchPaper> gradeBatchPaperList = gradeBatchPaperService.list(
+                    new QueryWrapper<GradeBatchPaper>().lambda().eq(GradeBatchPaper::getSchoolId, schoolId).eq(GradeBatchPaper::getBatchId, gradeBatch.getId()));
 
             if (gradeBatchPaperList != null && gradeBatchPaperList.size() > 0) {
                 List<GradeBatchPaper> enableGradeBatchPaperList = gradeBatchPaperList.stream().filter(GradeBatchPaper::getEnable).collect(Collectors.toList());
                 if (enableGradeBatchPaperList.size() > 0) {
                     List<String> cantDeleteBatchNameList = enableGradeBatchPaperList.stream().map(GradeBatchPaper::getPaperNumber).collect(Collectors.toList());
-                    throw ExceptionResultEnum.ERROR.exception("成绩分析批次存在分析课程【" + String.join(",", cantDeleteBatchNameList) + "】,不能删除,请先删除分析课程");
+                    throw ExceptionResultEnum.ERROR.exception(
+                            "成绩分析批次存在分析课程【" + String.join(",", cantDeleteBatchNameList) + "】,不能删除,请先删除分析课程");
                 } else {
                     // 该批次下均为被禁用的课程
                     for (GradeBatchPaper gradeBatchPaper : gradeBatchPaperList) {
                         String courseCode = gradeBatchPaper.getPaperNumber() + gradeBatchPaper.getPaperType();
-                        boolean syncCourse = teachCloudReportTaskUtils.syncCourse(schoolId, String.valueOf(thirdExamId), 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) {
                             // 被禁用的课程在教研分析被同步删除则删除知学知考的
                             gradeBatchPaperService.removeById(gradeBatchPaper.getId());