caozixuan 2 gadi atpakaļ
vecāks
revīzija
3e3eda3c75

+ 7 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/DataSyncReportService.java

@@ -14,4 +14,11 @@ public interface DataSyncReportService {
     void startCalc(GradeBatch gradeBatch, TBSyncTask tbSyncTask);
 
     void publish(GradeBatch gradeBatch, GradeBatchPaper gradeBatchPaper, TBSyncTask tbSyncTask);
+
+    /**
+     * 删除批次
+     * @param gradeBatch 批次
+     * @param tbSyncTask 任务
+     */
+    void deleteGradeBatch(GradeBatch gradeBatch,TBSyncTask tbSyncTask);
 }

+ 1 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/GradeBatchService.java

@@ -48,6 +48,7 @@ public interface GradeBatchService extends IService<GradeBatch> {
      * @param id          批次id
      * @param requestUser 请求的用户
      */
+    @Deprecated
     void deleteGradeBatch(Long id, SysUser requestUser);
 
     void downloadFile(Long batchId, HttpServletResponse response) throws IOException;

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

@@ -26,6 +26,7 @@ import org.springframework.stereotype.Service;
 import javax.annotation.Resource;
 import java.util.Collections;
 import java.util.List;
+import java.util.Objects;
 import java.util.stream.Collectors;
 
 /**
@@ -231,4 +232,67 @@ public class DataSyncReportServiceImpl implements DataSyncReportService {
             }
         }
     }
+
+    @Async
+    @Override
+    public void deleteGradeBatch(GradeBatch gradeBatch, TBSyncTask tbSyncTask) {
+        // 同步初始参数
+        TaskResultEnum result = null;
+        TaskStatusEnum status;
+        String errorMessage = null;
+        Long schoolId = tbSyncTask.getSchoolId();
+        try {
+            // 同步中
+            status = TaskStatusEnum.RUNNING;
+            tbSyncTaskService.updateStatusAndResultById(tbSyncTask.getId(), null, status, null, null);
+
+            if (Objects.isNull(gradeBatch)) {
+                throw ExceptionResultEnum.ERROR.exception("要删除的批次不存在");
+            }
+            Long thirdExamId = gradeBatch.getThirdExamId();
+
+            // 要删除的批次试卷集合
+            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) + "】,不能删除,请先删除分析课程");
+                } 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());
+                        if (syncCourse) {
+                            // 被禁用的课程在教研分析被同步删除则删除知学知考的
+                            gradeBatchPaperService.removeById(gradeBatchPaper.getId());
+                        }
+                    }
+                    // 删除批次
+                    boolean batchDeleteResult = true;
+                    batchDeleteResult = teachCloudReportTaskUtils.syncDeleteExam(schoolId, thirdExamId);
+                    if (batchDeleteResult) {
+                        gradeBatchService.removeById(gradeBatch.getId());
+                    }
+
+                }
+            } else {
+                // 该批次下并无分析课程直接删除就行
+                gradeBatchService.removeById(gradeBatch.getId());
+            }
+            // 任务结果
+            result = TaskResultEnum.SUCCESS;
+        } catch (Exception e) {
+            result = TaskResultEnum.ERROR;
+            errorMessage = e.getMessage();
+        } finally {
+            // 同步结束
+            status = TaskStatusEnum.FINISH;
+            tbSyncTaskService.updateStatusAndResultById(tbSyncTask.getId(), null, status, result, errorMessage);
+        }
+    }
 }

+ 9 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/execute/AsyncTeachCloudReportService.java

@@ -60,4 +60,13 @@ public class AsyncTeachCloudReportService {
         TBSyncTask tbSyncTask = tbSyncTaskService.saveTask(gradeBatchPaper.getSchoolId(), gradeBatchPaper.getId(), PushTypeEnum.PUBLISH);
         dataSyncReportService.publish(gradeBatch, gradeBatchPaper, tbSyncTask);
     }
+
+    /**
+     * 删除批次
+     * @param gradeBatch 批次
+     */
+    public void deleteGradeBatch(GradeBatch gradeBatch){
+        TBSyncTask tbSyncTask = tbSyncTaskService.saveTask(gradeBatch.getSchoolId(), gradeBatch.getId(), PushTypeEnum.GRADE_BATCH_DELETE);
+        dataSyncReportService.deleteGradeBatch(gradeBatch,tbSyncTask);
+    }
 }

+ 5 - 4
distributed-print/src/main/java/com/qmth/distributed/print/api/GradeBatchController.java

@@ -24,8 +24,6 @@ import javax.validation.Valid;
 import javax.validation.constraints.Max;
 import javax.validation.constraints.Min;
 import java.io.IOException;
-import java.util.List;
-import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -73,8 +71,11 @@ public class GradeBatchController {
     @RequestMapping(value = "/delete", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "删除成功", response = EditResult.class)})
     public Result deleteGradeBatch(@ApiParam(value = "选择的要删除的成绩分析批次id", required = true) @RequestParam String id) {
-        SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
-        gradeBatchService.deleteGradeBatch(SystemConstant.convertIdToLong(id), requestUser);
+        GradeBatch gradeBatch = gradeBatchService.getById(SystemConstant.convertIdToLong(id));
+        if(gradeBatch == null){
+            throw ExceptionResultEnum.ERROR.exception("没有批次信息");
+        }
+        asyncTeachCloudReportService.deleteGradeBatch(gradeBatch);
         return ResultUtil.ok();
     }
 

+ 2 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/PushTypeEnum.java

@@ -26,6 +26,8 @@ public enum PushTypeEnum {
 
     GRADE_BATCH_PUSH("分析批次推送"),
 
+    GRADE_BATCH_DELETE("分析批次删除"),
+
     CALCULATE("分析计算"),
 
     PUBLISH("发布");

+ 12 - 6
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/impl/TBExamCourseDeleteServiceImpl.java

@@ -297,13 +297,19 @@ public class TBExamCourseDeleteServiceImpl implements TBExamCourseDeleteService
             Long schoolId = tbExamCourseDeleteParams.getSchoolId();
             Long examId = tbExamCourseDeleteParams.getExamId();
             String courseCode = tbExamCourseDeleteParams.getCourseCode();
-
-            if (tbExamCourseService.verifyExamCourseCantDelete(schoolId, examId, courseCode)) {
-                throw ExceptionResultEnum.ERROR.exception("考试id为【" + examId + "】,课程编号为【" + courseCode + "】的分析课程当前不能被删除");
+            if (tbExamCourseService.list(new QueryWrapper<TBExamCourse>()
+                    .lambda()
+                    .eq(TBExamCourse::getSchoolId,schoolId)
+                    .eq(TBExamCourse::getExamId,examId)
+                    .eq(TBExamCourse::getCourseCode,courseCode)).size() > 0){
+                // 教研分析有这个课程再删除,没有不删直接返回
+                if (tbExamCourseService.verifyExamCourseCantDelete(schoolId, examId, courseCode)) {
+                    throw ExceptionResultEnum.ERROR.exception("考试id为【" + examId + "】,课程编号为【" + courseCode + "】的分析课程当前不能被删除");
+                }
+                this.deleteBasicTableData(schoolId, examId, courseCode);
+                this.deleteAnalyzeTableData(schoolId, examId, courseCode);
+                this.repeatCalculateTotalTableData(schoolId, examId, courseCode);
             }
-            this.deleteBasicTableData(schoolId, examId, courseCode);
-            this.deleteAnalyzeTableData(schoolId, examId, courseCode);
-            this.repeatCalculateTotalTableData(schoolId, examId, courseCode);
         }
     }
 }

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

@@ -75,7 +75,7 @@ public class TBExamCourseServiceImpl extends ServiceImpl<TBExamCourseMapper, TBE
         }
         List<TBExamCourse> tbExamCourseList = this.list(examCourseQuery);
         if (tbExamCourseList.size() != 1) {
-            throw ExceptionResultEnum.ERROR.exception("考试课程基础数据异常");
+            throw ExceptionResultEnum.ERROR.exception("缺少要分析的课程");
         }
         TBExamCourse tbExamCourse = tbExamCourseList.get(0);
         TestStatusEnum testStatusEnum = tbExamCourse.getTestStatus();
@@ -101,7 +101,7 @@ public class TBExamCourseServiceImpl extends ServiceImpl<TBExamCourseMapper, TBE
                 .eq(TBExamCourse::getCourseCode, courseCode);
         List<TBExamCourse> tbExamCourseList = this.list(examCourseQuery);
         if (tbExamCourseList.size() != 1) {
-            throw ExceptionResultEnum.ERROR.exception("考试课程基础数据异常");
+            throw ExceptionResultEnum.ERROR.exception("缺少要分析的课程");
         }
         TBExamCourse tbExamCourse = tbExamCourseList.get(0);
         TestStatusEnum testStatusEnum = tbExamCourse.getTestStatus();

+ 15 - 12
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/impl/TBExamServiceImpl.java

@@ -109,18 +109,21 @@ public class TBExamServiceImpl extends ServiceImpl<TBExamMapper, TBExam> impleme
     @Override
     public synchronized Boolean deleteTBExam(TBExamDeleteParam tbExamDeleteParam) {
         Long examId = tbExamDeleteParam.getId();
-        Long schoolId = tbExamDeleteParam.getSchoolId();
-        if (!SystemConstant.longNotNull(schoolId)) {
-            throw ExceptionResultEnum.ERROR.exception("缺少参数学校id");
-        }
-        TBExam tbExam = this.getById(examId);
-        if (Objects.isNull(tbExam)){
-            throw ExceptionResultEnum.ERROR.exception("未找到考试信息");
-        }
-        List<TBExamCourse> tbExamCourseList = tbExamCourseService.list(new QueryWrapper<TBExamCourse>().lambda().eq(TBExamCourse::getSchoolId,schoolId).eq(TBExamCourse::getExamId, examId));
-        if (tbExamCourseList.size() > 0){
-            throw ExceptionResultEnum.ERROR.exception("考试下还有分析课程不能删除");
+        if (SystemConstant.longNotNull(examId)){
+            Long schoolId = tbExamDeleteParam.getSchoolId();
+            if (!SystemConstant.longNotNull(schoolId)) {
+                throw ExceptionResultEnum.ERROR.exception("缺少参数学校id");
+            }
+            TBExam tbExam = this.getById(examId);
+            if (Objects.isNull(tbExam)){
+                throw ExceptionResultEnum.ERROR.exception("未找到考试信息");
+            }
+            List<TBExamCourse> tbExamCourseList = tbExamCourseService.list(new QueryWrapper<TBExamCourse>().lambda().eq(TBExamCourse::getSchoolId,schoolId).eq(TBExamCourse::getExamId, examId));
+            if (tbExamCourseList.size() > 0){
+                throw ExceptionResultEnum.ERROR.exception("考试下还有分析课程不能删除");
+            }
+            this.removeById(examId);
         }
-        return this.removeById(examId);
+        return true;
     }
 }

+ 10 - 9
teachcloud-report/src/main/java/com/qmth/teachcloud/report/api/OpenApiController.java

@@ -119,7 +119,6 @@ public class OpenApiController {
         log.info("examDelete进来了,result:{}", decodeJson);
         TBExamDeleteParam tbExamDeleteParam = JacksonUtil.readJson(decodeJson, TBExamDeleteParam.class);
         Optional.ofNullable(tbExamDeleteParam).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("转换后的数据为空"));
-        tbExamDeleteParam.validParams();
         BasicSchool basicSchool = AuthThirdUtil.hasPermission();
         tbExamDeleteParam.setSchoolId(basicSchool.getId());
         return ResultUtil.ok(tbExamService.deleteTBExam(tbExamDeleteParam));
@@ -135,22 +134,24 @@ public class OpenApiController {
         String decodeJson = URLDecoder.decode(result, SystemConstant.CHARSET_NAME);
         log.info("courseEdit进来了进来了,result:{}", decodeJson);
         CourseParam courseParam = JacksonUtil.readJson(decodeJson, CourseParam.class);
-        courseParam.validParams();
         BasicSchool basicSchool = AuthThirdUtil.hasPermission();
         Boolean enable = courseParam.getEnable();
         if (enable != null && enable) {
+            courseParam.validParams();
             // 新增或编辑分析课程
             basicCourseService.createCourse(basicSchool.getId(), courseParam.getCourseCode(), courseParam.getCourseName());
             tbExamCourseService.createCourse(basicSchool.getId(), courseParam.getExamId(), courseParam.getCourseCode(), courseParam.getCourseName(), courseParam.getPaperType(), courseParam.getTeachCollegeName());
         } else {
             // 删除分析课程
-            List<TBExamCourseDeleteParams> tbExamCourseDeleteParamsList = new ArrayList<>();
-            TBExamCourseDeleteParams tbExamCourseDeleteParams = new TBExamCourseDeleteParams();
-            tbExamCourseDeleteParams.setSchoolId(basicSchool.getId());
-            tbExamCourseDeleteParams.setExamId(courseParam.getExamId());
-            tbExamCourseDeleteParams.setCourseCode(courseParam.getCourseCode());
-            tbExamCourseDeleteParamsList.add(tbExamCourseDeleteParams);
-            tbExamCourseDeleteService.deleteTBExamCourse(tbExamCourseDeleteParamsList);
+            if (SystemConstant.longNotNull(courseParam.getExamId())){
+                List<TBExamCourseDeleteParams> tbExamCourseDeleteParamsList = new ArrayList<>();
+                TBExamCourseDeleteParams tbExamCourseDeleteParams = new TBExamCourseDeleteParams();
+                tbExamCourseDeleteParams.setSchoolId(basicSchool.getId());
+                tbExamCourseDeleteParams.setExamId(courseParam.getExamId());
+                tbExamCourseDeleteParams.setCourseCode(courseParam.getCourseCode());
+                tbExamCourseDeleteParamsList.add(tbExamCourseDeleteParams);
+                tbExamCourseDeleteService.deleteTBExamCourse(tbExamCourseDeleteParamsList);
+            }
         }
         return ResultUtil.ok(true);
     }