|
@@ -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);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|