|
@@ -1,6 +1,7 @@
|
|
package com.qmth.distributed.print.business.service.impl;
|
|
package com.qmth.distributed.print.business.service.impl;
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
@@ -26,6 +27,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
import javax.annotation.Resource;
|
|
import java.util.*;
|
|
import java.util.*;
|
|
|
|
+import java.util.concurrent.atomic.AtomicBoolean;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Stream;
|
|
import java.util.stream.Stream;
|
|
|
|
|
|
@@ -104,6 +106,8 @@ public class GradeBatchPaperServiceImpl extends ServiceImpl<GradeBatchPaperMappe
|
|
Long schoolId = requestUser.getSchoolId();
|
|
Long schoolId = requestUser.getSchoolId();
|
|
List<AbleAnalyzePaperParam> ableAnalyzePaperParamList = gradeBatchPaperParam.getAbleAnalyzePaperList();
|
|
List<AbleAnalyzePaperParam> ableAnalyzePaperParamList = gradeBatchPaperParam.getAbleAnalyzePaperList();
|
|
|
|
|
|
|
|
+ // 是否需要更新批次状态
|
|
|
|
+ AtomicBoolean updateBatchStatus = new AtomicBoolean(false);
|
|
List<GradeBatchPaper> gradeBatchPaperList = ableAnalyzePaperParamList.stream().flatMap(e -> {
|
|
List<GradeBatchPaper> gradeBatchPaperList = ableAnalyzePaperParamList.stream().flatMap(e -> {
|
|
String paperNumber = e.getPaperNumber();
|
|
String paperNumber = e.getPaperNumber();
|
|
String paperType = e.getPaperType();
|
|
String paperType = e.getPaperType();
|
|
@@ -129,6 +133,7 @@ public class GradeBatchPaperServiceImpl extends ServiceImpl<GradeBatchPaperMappe
|
|
// 新增
|
|
// 新增
|
|
gradeBatchPaper.insertInfo(requestUser.getId());
|
|
gradeBatchPaper.insertInfo(requestUser.getId());
|
|
gradeBatchPaper.setStatus(GradeAnalyzePaperStatusEnum.PUSH_GRADE_BATCH);
|
|
gradeBatchPaper.setStatus(GradeAnalyzePaperStatusEnum.PUSH_GRADE_BATCH);
|
|
|
|
+ updateBatchStatus.set(true);
|
|
} else {
|
|
} else {
|
|
// 编辑(计算中的不允许被编辑,其他状态下的只要开课学院和试卷名称有变化,状态就更新为需要重新推送)
|
|
// 编辑(计算中的不允许被编辑,其他状态下的只要开课学院和试卷名称有变化,状态就更新为需要重新推送)
|
|
GradeAnalyzePaperStatusEnum dbStatus = dbBatchPaper.getStatus();
|
|
GradeAnalyzePaperStatusEnum dbStatus = dbBatchPaper.getStatus();
|
|
@@ -137,6 +142,7 @@ public class GradeBatchPaperServiceImpl extends ServiceImpl<GradeBatchPaperMappe
|
|
}
|
|
}
|
|
if (!teachCollegeId.equals(dbBatchPaper.getTeachCollegeId()) || !teachCollegeName.equals(dbBatchPaper.getTeachCollegeName()) || !paperName.equals(dbBatchPaper.getPaperName())) {
|
|
if (!teachCollegeId.equals(dbBatchPaper.getTeachCollegeId()) || !teachCollegeName.equals(dbBatchPaper.getTeachCollegeName()) || !paperName.equals(dbBatchPaper.getPaperName())) {
|
|
gradeBatchPaper.setStatus(GradeAnalyzePaperStatusEnum.PUSH_GRADE_BATCH);
|
|
gradeBatchPaper.setStatus(GradeAnalyzePaperStatusEnum.PUSH_GRADE_BATCH);
|
|
|
|
+ updateBatchStatus.set(true);
|
|
}
|
|
}
|
|
gradeBatchPaper.setId(dbBatchPaper.getId());
|
|
gradeBatchPaper.setId(dbBatchPaper.getId());
|
|
gradeBatchPaper.setStatus(dbBatchPaper.getStatus());
|
|
gradeBatchPaper.setStatus(dbBatchPaper.getStatus());
|
|
@@ -146,6 +152,13 @@ public class GradeBatchPaperServiceImpl extends ServiceImpl<GradeBatchPaperMappe
|
|
}).collect(Collectors.toList());
|
|
}).collect(Collectors.toList());
|
|
|
|
|
|
this.saveOrUpdateBatch(gradeBatchPaperList);
|
|
this.saveOrUpdateBatch(gradeBatchPaperList);
|
|
|
|
+
|
|
|
|
+ // 更新批次状态
|
|
|
|
+ if (updateBatchStatus.get()) {
|
|
|
|
+ UpdateWrapper<GradeBatch> updateWrapper = new UpdateWrapper<>();
|
|
|
|
+ updateWrapper.lambda().set(GradeBatch::getStatus, GradeAnalyzePaperStatusEnum.PUSH_GRADE_BATCH).eq(GradeBatch::getId, batchId);
|
|
|
|
+ gradeBatchService.update(updateWrapper);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@@ -166,6 +179,7 @@ public class GradeBatchPaperServiceImpl extends ServiceImpl<GradeBatchPaperMappe
|
|
return this.baseMapper.findByThirdExamIdAndGradeCourseCode(schoolId, thirdExamId, gradeCourseCode);
|
|
return this.baseMapper.findByThirdExamIdAndGradeCourseCode(schoolId, thirdExamId, gradeCourseCode);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @Transactional
|
|
@Override
|
|
@Override
|
|
public void checkOperateAuth(Long schoolId, String paperNumber, String paperType) {
|
|
public void checkOperateAuth(Long schoolId, String paperNumber, String paperType) {
|
|
List<GradeBatchPaper> gradeBatchPaperList = this.list(new QueryWrapper<GradeBatchPaper>().lambda()
|
|
List<GradeBatchPaper> gradeBatchPaperList = this.list(new QueryWrapper<GradeBatchPaper>().lambda()
|
|
@@ -176,11 +190,36 @@ public class GradeBatchPaperServiceImpl extends ServiceImpl<GradeBatchPaperMappe
|
|
throw ExceptionResultEnum.ERROR.exception("选择的试卷有正在计算的分析课程");
|
|
throw ExceptionResultEnum.ERROR.exception("选择的试卷有正在计算的分析课程");
|
|
}
|
|
}
|
|
List<Long> batchIdList = gradeBatchPaperList.stream().map(GradeBatchPaper::getBatchId).distinct().collect(Collectors.toList());
|
|
List<Long> batchIdList = gradeBatchPaperList.stream().map(GradeBatchPaper::getBatchId).distinct().collect(Collectors.toList());
|
|
- if (batchIdList.size() > 0){
|
|
|
|
- if (gradeBatchService.list(new QueryWrapper<GradeBatch>().lambda().in(GradeBatch::getId, batchIdList)).stream().anyMatch(e -> GradeAnalyzePaperStatusEnum.CALCULATING.equals(e.getStatus()))){
|
|
|
|
|
|
+ if (batchIdList.size() > 0) {
|
|
|
|
+ if (gradeBatchService.list(new QueryWrapper<GradeBatch>().lambda().in(GradeBatch::getId, batchIdList)).stream().anyMatch(e -> GradeAnalyzePaperStatusEnum.CALCULATING.equals(e.getStatus()))) {
|
|
throw ExceptionResultEnum.ERROR.exception("所选择的试卷所属的批次正在计算中不能更改");
|
|
throw ExceptionResultEnum.ERROR.exception("所选择的试卷所属的批次正在计算中不能更改");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ // 更新批次科目状态
|
|
|
|
+ for (GradeBatchPaper gradeBatchPaper : gradeBatchPaperList) {
|
|
|
|
+ gradeBatchPaper.setStatus(GradeAnalyzePaperStatusEnum.READY_TO_CALCULATE);
|
|
|
|
+ this.updateById(gradeBatchPaper);
|
|
|
|
+
|
|
|
|
+ // 更新批次状态
|
|
|
|
+ GradeBatch gradeBatch = gradeBatchService.getById(gradeBatchPaper.getBatchId());
|
|
|
|
+ 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());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|