Explorar el Código

批次删除后新增bug

caozixuan hace 2 años
padre
commit
51ef59b709

+ 15 - 6
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/GradeBatchPaperService.java

@@ -56,18 +56,17 @@ public interface GradeBatchPaperService extends IService<GradeBatchPaper> {
     /**
      * 删除分析批次试卷
      *
-     * @param batchId
+     * @param batchId 批次id
      * @param idList  要删除的分析批次试卷id集合
-     * @return 结果
      */
-    boolean deleteGradeBatchPaper(Long batchId, List<Long> idList);
+    void deleteGradeBatchPaper(Long batchId, List<Long> idList);
 
     /**
      * 根据试卷编号和试卷类型判断分析课程是否有操作权限(批次分析试卷没有在计算中的才能操作)
      *
-     * @param schoolId     学校id
-     * @param paperNumber  试卷编号
-     * @param paperType    试卷类型
+     * @param schoolId    学校id
+     * @param paperNumber 试卷编号
+     * @param paperType   试卷类型
      */
     void checkOperateAuth(Long schoolId, String paperNumber, String paperType);
 
@@ -87,4 +86,14 @@ public interface GradeBatchPaperService extends IService<GradeBatchPaper> {
      * @param paperType   试卷类型
      */
     void updatePaperAndBatchStatus(Long schoolId, String paperNumber, String paperType);
+
+    /**
+     * 分析试卷数据准备状态(分析试卷 四个模块都准备好才算准备好)
+     *
+     * @param schoolId    学校id
+     * @param paperNumber 试卷编号
+     * @param paperType   试卷类型
+     * @return 分析数据准备完成?true 是|| false 否
+     */
+    boolean analyzeDataReady(Long schoolId, String paperNumber, String paperType);
 }

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

@@ -109,9 +109,13 @@ public class DataSyncReportServiceImpl implements DataSyncReportService {
                     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();
 
-                    // 更新批次课程状态
+                    // 更新批次课程状态(如果分析批次课程在其他批次有待计算状态或者该分析课程的分析数据已经全部准备完毕,状态直接变为待计算)
                     gradeBatchPaper.setGradeCourseCode(courseCode);
-                    gradeBatchPaper.setStatus(count > 0 ? GradeAnalyzePaperStatusEnum.READY_TO_CALCULATE : GradeAnalyzePaperStatusEnum.SETTING_GRADE_PAPER_PARAM);
+                    if (count > 0 || gradeBatchPaperService.analyzeDataReady(schoolId, gradeBatchPaper.getPaperNumber(), gradeBatchPaper.getPaperType())) {
+                        gradeBatchPaper.setStatus(GradeAnalyzePaperStatusEnum.READY_TO_CALCULATE);
+                    } else {
+                        gradeBatchPaper.setStatus(GradeAnalyzePaperStatusEnum.SETTING_GRADE_PAPER_PARAM);
+                    }
                     gradeBatchPaperService.updateById(gradeBatchPaper);
                 }
             }

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

@@ -183,7 +183,7 @@ public class GradeBatchPaperServiceImpl extends ServiceImpl<GradeBatchPaperMappe
 
     @Transactional(rollbackFor = Exception.class)
     @Override
-    public boolean deleteGradeBatchPaper(Long batchId, List<Long> idList) {
+    public void deleteGradeBatchPaper(Long batchId, List<Long> idList) {
         for (Long id : idList) {
             GradeBatchPaper gradeBatchPaper = this.getById(id);
             if (GradeAnalyzePaperStatusEnum.CALCULATING.equals(gradeBatchPaper.getStatus())) {
@@ -203,7 +203,7 @@ public class GradeBatchPaperServiceImpl extends ServiceImpl<GradeBatchPaperMappe
         // 更新enale=false
         UpdateWrapper<GradeBatchPaper> updateWrapper = new UpdateWrapper<>();
         updateWrapper.lambda().set(GradeBatchPaper::getEnable, false).in(GradeBatchPaper::getId, idList);
-        return this.update(updateWrapper);
+        this.update(updateWrapper);
     }
 
     @Override
@@ -254,6 +254,46 @@ public class GradeBatchPaperServiceImpl extends ServiceImpl<GradeBatchPaperMappe
     @Transactional(rollbackFor = Exception.class)
     @Override
     public void updatePaperAndBatchStatus(Long schoolId, String paperNumber, String paperType) {
+        if (this.analyzeDataReady(schoolId, paperNumber, paperType)) {
+            List<GradeBatchPaper> gradeBatchPaperList = this.list(new QueryWrapper<GradeBatchPaper>().lambda()
+                    .eq(GradeBatchPaper::getSchoolId, schoolId)
+                    .eq(GradeBatchPaper::getPaperNumber, paperNumber)
+                    .eq(GradeBatchPaper::getPaperType, paperType));
+            // 如果所有数据都有,则更新状态
+            // 更新批次科目状态
+            for (GradeBatchPaper gradeBatchPaper : gradeBatchPaperList) {
+                gradeBatchPaper.setStatus(GradeAnalyzePaperStatusEnum.READY_TO_CALCULATE);
+                this.updateById(gradeBatchPaper);
+
+                // 更新批次状态
+                GradeBatch gradeBatch = gradeBatchService.getById(gradeBatchPaper.getBatchId());
+                // 批次未推送成功,不更新状态
+                if (GradeAnalyzePaperStatusEnum.PUSH_GRADE_BATCH.equals(gradeBatch.getStatus())) {
+                    continue;
+                }
+                if (GradeAnalyzePaperStatusEnum.FINISH_CALCULATE.equals(gradeBatch.getStatus())) {
+                    gradeBatch.setStatus(GradeAnalyzePaperStatusEnum.READY_TO_CALCULATE);
+                    gradeBatchService.updateById(gradeBatch);
+                } else {
+                    QueryWrapper<GradeBatchPaper> queryWrapperList = new QueryWrapper<>();
+                    queryWrapperList.lambda().eq(GradeBatchPaper::getBatchId, gradeBatchPaper.getBatchId());
+                    List<GradeBatchPaper> gradeBatchPaperAll = this.list(queryWrapperList);
+                    if (!gradeBatchPaperAll.isEmpty()) {
+                        long count = gradeBatchPaperAll.stream().filter(m -> !GradeAnalyzePaperStatusEnum.READY_TO_CALCULATE.equals(m.getStatus())).count();
+                        if (count == 0) {
+                            // 更新批次状态
+                            UpdateWrapper<GradeBatch> updateWrapper = new UpdateWrapper<>();
+                            updateWrapper.lambda().set(GradeBatch::getStatus, GradeAnalyzePaperStatusEnum.READY_TO_CALCULATE).eq(GradeBatch::getId, gradeBatchPaper.getBatchId());
+                            gradeBatchService.update(updateWrapper);
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    @Override
+    public boolean analyzeDataReady(Long schoolId, String paperNumber, String paperType) {
         // 检验维度数据存在
         boolean dimensionExist = gradePaperDimensionService.list(new QueryWrapper<GradePaperDimension>().lambda()
                         .eq(GradePaperDimension::getSchoolId, schoolId)
@@ -261,7 +301,7 @@ public class GradeBatchPaperServiceImpl extends ServiceImpl<GradeBatchPaperMappe
                         .eq(GradePaperDimension::getPaperType, paperType))
                 .size() > 0;
         if (!dimensionExist) {
-            return;
+            return false;
         }
         // 检验结构数据存在
         boolean structExist = gradePaperStructService.list(new QueryWrapper<GradePaperStruct>().lambda()
@@ -270,7 +310,7 @@ public class GradeBatchPaperServiceImpl extends ServiceImpl<GradeBatchPaperMappe
                         .eq(GradePaperStruct::getPaperType, paperType))
                 .size() > 0;
         if (!structExist) {
-            return;
+            return false;
         }
         // 检验试卷基础分析数据存在
         boolean paperExist = gradePaperService.list(new QueryWrapper<GradePaper>()
@@ -280,7 +320,7 @@ public class GradeBatchPaperServiceImpl extends ServiceImpl<GradeBatchPaperMappe
                         .eq(GradePaper::getPaperType, paperType))
                 .size() > 0;
         if (!paperExist) {
-            return;
+            return false;
         }
         // 精熟度定义数据存在
         boolean moduleDefineExist = gradeModuleDefineService.list(new QueryWrapper<GradeModuleDefine>()
@@ -290,53 +330,15 @@ public class GradeBatchPaperServiceImpl extends ServiceImpl<GradeBatchPaperMappe
                         .eq(GradeModuleDefine::getPaperType, paperType))
                 .size() > 0;
         if (!moduleDefineExist) {
-            return;
+            return false;
         }
+
         // 模块评价数据存在
-        boolean moduleEvaluationExist = gradeModuleEvaluationService.list(new QueryWrapper<GradeModuleEvaluation>()
+        return gradeModuleEvaluationService.list(new QueryWrapper<GradeModuleEvaluation>()
                         .lambda()
                         .eq(GradeModuleEvaluation::getSchoolId, schoolId)
                         .eq(GradeModuleEvaluation::getPaperNumber, paperNumber)
                         .eq(GradeModuleEvaluation::getPaperType, paperType))
                 .size() > 0;
-
-        if (!moduleEvaluationExist) {
-            return;
-        }
-
-        List<GradeBatchPaper> gradeBatchPaperList = this.list(new QueryWrapper<GradeBatchPaper>().lambda()
-                .eq(GradeBatchPaper::getSchoolId, schoolId)
-                .eq(GradeBatchPaper::getPaperNumber, paperNumber)
-                .eq(GradeBatchPaper::getPaperType, paperType));
-        // 如果所有数据都有,则更新状态
-        // 更新批次科目状态
-        for (GradeBatchPaper gradeBatchPaper : gradeBatchPaperList) {
-            gradeBatchPaper.setStatus(GradeAnalyzePaperStatusEnum.READY_TO_CALCULATE);
-            this.updateById(gradeBatchPaper);
-
-            // 更新批次状态
-            GradeBatch gradeBatch = gradeBatchService.getById(gradeBatchPaper.getBatchId());
-            // 批次未推送成功,不更新状态
-            if (GradeAnalyzePaperStatusEnum.PUSH_GRADE_BATCH.equals(gradeBatch.getStatus())) {
-                continue;
-            }
-            if (GradeAnalyzePaperStatusEnum.FINISH_CALCULATE.equals(gradeBatch.getStatus())) {
-                gradeBatch.setStatus(GradeAnalyzePaperStatusEnum.READY_TO_CALCULATE);
-                gradeBatchService.updateById(gradeBatch);
-            } else {
-                QueryWrapper<GradeBatchPaper> queryWrapperList = new QueryWrapper<>();
-                queryWrapperList.lambda().eq(GradeBatchPaper::getBatchId, gradeBatchPaper.getBatchId());
-                List<GradeBatchPaper> gradeBatchPaperAll = this.list(queryWrapperList);
-                if (!gradeBatchPaperAll.isEmpty()) {
-                    long count = gradeBatchPaperAll.stream().filter(m -> !GradeAnalyzePaperStatusEnum.READY_TO_CALCULATE.equals(m.getStatus())).count();
-                    if (count == 0) {
-                        // 更新批次状态
-                        UpdateWrapper<GradeBatch> updateWrapper = new UpdateWrapper<>();
-                        updateWrapper.lambda().set(GradeBatch::getStatus, GradeAnalyzePaperStatusEnum.READY_TO_CALCULATE).eq(GradeBatch::getId, gradeBatchPaper.getBatchId());
-                        gradeBatchService.update(updateWrapper);
-                    }
-                }
-            }
-        }
     }
 }

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

@@ -333,8 +333,9 @@ public class TBExamCourseDeleteServiceImpl implements TBExamCourseDeleteService
                     if (tbExamCourseService.verifyExamCourseCantDelete(schoolId, examId, courseCode)) {
                         throw ExceptionResultEnum.ERROR.exception("考试id为【" + examId + "】,课程编号为【" + courseCode + "】的分析课程当前不能被删除");
                     }
-                    this.deleteBasicTableData(schoolId, examId, courseCode);
+                    // 先删分析表
                     this.deleteAnalyzeTableData(schoolId, examId, courseCode);
+                    this.deleteBasicTableData(schoolId, examId, courseCode);
                     this.repeatCalculateTotalTableData(schoolId, examId, courseCode);
                 }
             }