|
@@ -3,6 +3,7 @@ package com.qmth.teachcloud.mark.service.impl;
|
|
import com.alibaba.fastjson.JSON;
|
|
import com.alibaba.fastjson.JSON;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
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;
|
|
@@ -20,6 +21,7 @@ import com.qmth.teachcloud.common.entity.SysUser;
|
|
import com.qmth.teachcloud.common.enums.*;
|
|
import com.qmth.teachcloud.common.enums.*;
|
|
import com.qmth.teachcloud.common.enums.mark.MarkPaperAiMark;
|
|
import com.qmth.teachcloud.common.enums.mark.MarkPaperAiMark;
|
|
import com.qmth.teachcloud.common.mapper.BasicSchoolMapper;
|
|
import com.qmth.teachcloud.common.mapper.BasicSchoolMapper;
|
|
|
|
+import com.qmth.teachcloud.common.service.SysConfigService;
|
|
import com.qmth.teachcloud.common.service.TeachcloudCommonService;
|
|
import com.qmth.teachcloud.common.service.TeachcloudCommonService;
|
|
import com.qmth.teachcloud.common.util.ConvertUtil;
|
|
import com.qmth.teachcloud.common.util.ConvertUtil;
|
|
import com.qmth.teachcloud.common.util.ExcelUtil;
|
|
import com.qmth.teachcloud.common.util.ExcelUtil;
|
|
@@ -73,6 +75,8 @@ public class MarkQuestionServiceImpl extends ServiceImpl<MarkQuestionMapper, Mar
|
|
@Resource
|
|
@Resource
|
|
private TeachcloudCommonService teachcloudCommonService;
|
|
private TeachcloudCommonService teachcloudCommonService;
|
|
@Resource
|
|
@Resource
|
|
|
|
+ private SysConfigService sysConfigService;
|
|
|
|
+ @Resource
|
|
private MarkPaperService markPaperService;
|
|
private MarkPaperService markPaperService;
|
|
@Resource
|
|
@Resource
|
|
private MarkQuestionAnswerService markQuestionAnswerService;
|
|
private MarkQuestionAnswerService markQuestionAnswerService;
|
|
@@ -915,6 +919,10 @@ public class MarkQuestionServiceImpl extends ServiceImpl<MarkQuestionMapper, Mar
|
|
if (this.update(updateWrapper)) {
|
|
if (this.update(updateWrapper)) {
|
|
if (enableAi) {
|
|
if (enableAi) {
|
|
MarkQuestion markQuestion = this.getById(questionId);
|
|
MarkQuestion markQuestion = this.getById(questionId);
|
|
|
|
+ BasicSchool basicSchool = basicSchoolMapper.selectByExamId(markQuestion.getExamId());
|
|
|
|
+ if (!sysConfigService.getEnableByType(basicSchool.getId(), SystemConstant.AI_MARK_SET)) {
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
if (lockService.trylock(LockType.AI_MARK, markQuestion.getId())) {
|
|
if (lockService.trylock(LockType.AI_MARK, markQuestion.getId())) {
|
|
markSyncService.aiAutoMark(markQuestion);
|
|
markSyncService.aiAutoMark(markQuestion);
|
|
return true;
|
|
return true;
|
|
@@ -938,10 +946,19 @@ public class MarkQuestionServiceImpl extends ServiceImpl<MarkQuestionMapper, Mar
|
|
boolean isExist = markAiQuestionParamService.existMarkAiQuestionPointOrLevel(examId, paperNumber, questionId);
|
|
boolean isExist = markAiQuestionParamService.existMarkAiQuestionPointOrLevel(examId, paperNumber, questionId);
|
|
MarkQuestion markQuestion = this.getById(questionId);
|
|
MarkQuestion markQuestion = this.getById(questionId);
|
|
UpdateWrapper<MarkQuestion> updateWrapper = new UpdateWrapper<>();
|
|
UpdateWrapper<MarkQuestion> updateWrapper = new UpdateWrapper<>();
|
|
- updateWrapper.lambda().set(MarkQuestion::getAiMark, isExist && !MarkPaperAiMark.NONE.equals(markPaper.getAiMark()) ? markPaper.getAiMark() : MarkPaperAiMark.NONE)
|
|
|
|
- .set(markQuestion.getDoubleRate() == 0, MarkQuestion::getDoubleRate, isExist && MarkPaperAiMark.MAN_MACHINE.equals(markPaper.getAiMark()) ? 100 : 0)
|
|
|
|
- .set(markQuestion.getScorePolicy() == null, MarkQuestion::getScorePolicy, isExist && MarkPaperAiMark.MAN_MACHINE.equals(markPaper.getAiMark()) ? ScorePolicy.AVG : null)
|
|
|
|
- .eq(MarkQuestion::getId, questionId);
|
|
|
|
|
|
+ LambdaUpdateWrapper<MarkQuestion> lambda = updateWrapper.lambda();
|
|
|
|
+ lambda.set(MarkQuestion::getAiMark, isExist && !MarkPaperAiMark.NONE.equals(markPaper.getAiMark()) ? markPaper.getAiMark() : MarkPaperAiMark.NONE);
|
|
|
|
+ if (isExist) {
|
|
|
|
+ if (MarkPaperAiMark.AI_ONLY.equals(markPaper.getAiMark())) {
|
|
|
|
+ lambda.set(MarkQuestion::getDoubleRate, 0);
|
|
|
|
+ lambda.set(MarkQuestion::getArbitrateThreshold, null);
|
|
|
|
+ lambda.set(MarkQuestion::getScorePolicy, null);
|
|
|
|
+ } else if (MarkPaperAiMark.MAN_MACHINE.equals(markPaper.getAiMark())) {
|
|
|
|
+ lambda.set(MarkQuestion::getDoubleRate, 100);
|
|
|
|
+ lambda.set(markQuestion.getScorePolicy() == null, MarkQuestion::getScorePolicy, ScorePolicy.AVG);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ lambda.eq(MarkQuestion::getId, questionId);
|
|
this.update(updateWrapper);
|
|
this.update(updateWrapper);
|
|
}
|
|
}
|
|
|
|
|