|
@@ -90,6 +90,8 @@ public class MarkAiQuestionParamController {
|
|
MarkPaper markPaper = markPaperService.getByExamIdAndPaperNumber(markAiQuestionParam.getExamId(), markAiQuestionParam.getPaperNumber());
|
|
MarkPaper markPaper = markPaperService.getByExamIdAndPaperNumber(markAiQuestionParam.getExamId(), markAiQuestionParam.getPaperNumber());
|
|
Objects.requireNonNull(markPaper, "试卷信息为空");
|
|
Objects.requireNonNull(markPaper, "试卷信息为空");
|
|
Objects.requireNonNull(markPaper.getAiMark(), "AI评卷信息为空");
|
|
Objects.requireNonNull(markPaper.getAiMark(), "AI评卷信息为空");
|
|
|
|
+ MarkQuestion markQuestion = markQuestionService.getById(markAiQuestionParam.getQuestionId());
|
|
|
|
+ Objects.requireNonNull(markQuestion, "题目为空");
|
|
if (!MarkPaperAiMark.NONE.equals(markPaper.getAiMark())
|
|
if (!MarkPaperAiMark.NONE.equals(markPaper.getAiMark())
|
|
&& (CollectionUtils.isNotEmpty(markAiQuestionParam.getPointList()) || CollectionUtils.isEmpty(markAiQuestionParam.getLevelList()))
|
|
&& (CollectionUtils.isNotEmpty(markAiQuestionParam.getPointList()) || CollectionUtils.isEmpty(markAiQuestionParam.getLevelList()))
|
|
&& markTaskService.countByExamIdAndPaperNumberAndQuestionIdAndTaskNumberAndAiMarkedAndStatusNotIn(markAiQuestionParam.getExamId(), markAiQuestionParam.getPaperNumber(), markAiQuestionParam.getQuestionId(), 1, false, Arrays.asList(MarkTaskStatus.WAITING)) > 0) {
|
|
&& markTaskService.countByExamIdAndPaperNumberAndQuestionIdAndTaskNumberAndAiMarkedAndStatusNotIn(markAiQuestionParam.getExamId(), markAiQuestionParam.getPaperNumber(), markAiQuestionParam.getQuestionId(), 1, false, Arrays.asList(MarkTaskStatus.WAITING)) > 0) {
|
|
@@ -102,9 +104,14 @@ public class MarkAiQuestionParamController {
|
|
}
|
|
}
|
|
// 最小分校验
|
|
// 最小分校验
|
|
MarkAiQuestionPoint markAiQuestionPoint = markAiQuestionParam.getPointList().stream().min(Comparator.comparingDouble(MarkAiQuestionPoint::getScore)).get();
|
|
MarkAiQuestionPoint markAiQuestionPoint = markAiQuestionParam.getPointList().stream().min(Comparator.comparingDouble(MarkAiQuestionPoint::getScore)).get();
|
|
- if(markAiQuestionParam.getMinScore() > markAiQuestionPoint.getScore()){
|
|
|
|
|
|
+ if (markAiQuestionParam.getMinScore() > markAiQuestionPoint.getScore()) {
|
|
throw ExceptionResultEnum.ERROR.exception("最小分不能超过得分点的最小分值");
|
|
throw ExceptionResultEnum.ERROR.exception("最小分不能超过得分点的最小分值");
|
|
}
|
|
}
|
|
|
|
+ // 各知识点得分总和校验
|
|
|
|
+ Double sumScore = markAiQuestionParam.getPointList().stream().filter(m -> m.getScore() != null).collect(Collectors.summingDouble(MarkAiQuestionPoint::getScore));
|
|
|
|
+ if (sumScore.doubleValue() - markQuestion.getTotalScore().doubleValue() != 0) {
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("各知识点得分总和必须等于小题满分[" + markQuestion.getTotalScore() + "]分");
|
|
|
|
+ }
|
|
if (Objects.isNull(markAiQuestionParam.getId())) {//新增
|
|
if (Objects.isNull(markAiQuestionParam.getId())) {//新增
|
|
markAiQuestionParam.insertInfo(sysUser.getId());
|
|
markAiQuestionParam.insertInfo(sysUser.getId());
|
|
markAiQuestionParam.getPointList().stream().peek(s -> {
|
|
markAiQuestionParam.getPointList().stream().peek(s -> {
|
|
@@ -147,9 +154,14 @@ public class MarkAiQuestionParamController {
|
|
}
|
|
}
|
|
// 最小分校验
|
|
// 最小分校验
|
|
MarkAiQuestionLevel markAiQuestionLevel = markAiQuestionParam.getLevelList().stream().min(Comparator.comparingDouble(MarkAiQuestionLevel::getMinScore)).get();
|
|
MarkAiQuestionLevel markAiQuestionLevel = markAiQuestionParam.getLevelList().stream().min(Comparator.comparingDouble(MarkAiQuestionLevel::getMinScore)).get();
|
|
- if(markAiQuestionParam.getMinScore() > markAiQuestionLevel.getMinScore()){
|
|
|
|
|
|
+ if (markAiQuestionParam.getMinScore() > markAiQuestionLevel.getMinScore()) {
|
|
throw ExceptionResultEnum.ERROR.exception("最小分不能超过档次的最小分值");
|
|
throw ExceptionResultEnum.ERROR.exception("最小分不能超过档次的最小分值");
|
|
}
|
|
}
|
|
|
|
+ // 档位最大分校验
|
|
|
|
+ Double maxScore = markAiQuestionParam.getLevelList().stream().filter(m -> m.getMaxScore() != null).max(Comparator.comparingDouble(MarkAiQuestionLevel::getMaxScore)).get().getMaxScore();
|
|
|
|
+ if (maxScore.doubleValue() - markQuestion.getTotalScore().doubleValue() != 0) {
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("档位最大分必须等于小题满分[" + markQuestion.getTotalScore() + "]分");
|
|
|
|
+ }
|
|
if (Objects.isNull(markAiQuestionParam.getId())) {//新增
|
|
if (Objects.isNull(markAiQuestionParam.getId())) {//新增
|
|
markAiQuestionParam.insertInfo(sysUser.getId());
|
|
markAiQuestionParam.insertInfo(sysUser.getId());
|
|
markAiQuestionParam.getLevelList().stream().peek(s -> {
|
|
markAiQuestionParam.getLevelList().stream().peek(s -> {
|
|
@@ -197,7 +209,6 @@ public class MarkAiQuestionParamController {
|
|
|
|
|
|
if (markAiQuestionParamService.existMarkAiQuestionPointOrLevel(markAiQuestionParam.getExamId(), markAiQuestionParam.getPaperNumber(), markAiQuestionParam.getQuestionId())
|
|
if (markAiQuestionParamService.existMarkAiQuestionPointOrLevel(markAiQuestionParam.getExamId(), markAiQuestionParam.getPaperNumber(), markAiQuestionParam.getQuestionId())
|
|
&& markTaskService.countByExamIdAndPaperNumberAndQuestionIdAndTaskNumberAndAiMarkedAndStatusNotIn(markAiQuestionParam.getExamId(), markAiQuestionParam.getPaperNumber(), markAiQuestionParam.getQuestionId(), 1, false, null) > 0) {
|
|
&& markTaskService.countByExamIdAndPaperNumberAndQuestionIdAndTaskNumberAndAiMarkedAndStatusNotIn(markAiQuestionParam.getExamId(), markAiQuestionParam.getPaperNumber(), markAiQuestionParam.getQuestionId(), 1, false, null) > 0) {
|
|
- MarkQuestion markQuestion = markQuestionService.getById(markAiQuestionParam.getQuestionId());
|
|
|
|
markService.deleteMarkTask(markQuestion, true);
|
|
markService.deleteMarkTask(markQuestion, true);
|
|
markService.checkStudentSubjectiveScore(markAiQuestionParam.getExamId(), markPaper.getCoursePaperId());
|
|
markService.checkStudentSubjectiveScore(markAiQuestionParam.getExamId(), markPaper.getCoursePaperId());
|
|
markService.updateMarkedCount(markAiQuestionParam.getExamId(), markAiQuestionParam.getPaperNumber(), markAiQuestionParam.getQuestionId());
|
|
markService.updateMarkedCount(markAiQuestionParam.getExamId(), markAiQuestionParam.getPaperNumber(), markAiQuestionParam.getQuestionId());
|