|
@@ -1,6 +1,8 @@
|
|
|
package com.qmth.teachcloud.mark.service.impl;
|
|
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
+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.OrderItem;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
@@ -100,6 +102,8 @@ public class MarkServiceImpl implements MarkService {
|
|
|
private MarkRejectHistoryService markRejectHistoryService;
|
|
|
@Resource
|
|
|
private BasicOperationLogService basicOperationLogService;
|
|
|
+ @Resource
|
|
|
+ private MarkAiQuestionParamService markAiQuestionParamService;
|
|
|
|
|
|
/**
|
|
|
* 释放某个评卷员的考生
|
|
@@ -214,6 +218,21 @@ public class MarkServiceImpl implements MarkService {
|
|
|
markQuestionService.updateMarkedCount(questionId, count);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public void updatePersonTask(Long examId, String paperNumber, Long questionId) {
|
|
|
+ QueryWrapper<MarkTask> queryWrapper = new QueryWrapper<>();
|
|
|
+ queryWrapper.lambda().eq(MarkTask::getExamId, examId)
|
|
|
+ .eq(MarkTask::getPaperNumber, paperNumber)
|
|
|
+ .eq(MarkTask::getQuestionId, questionId)
|
|
|
+ .last(" limit 1");
|
|
|
+ MarkTask markTask = markTaskService.getOne(queryWrapper);
|
|
|
+
|
|
|
+ UpdateWrapper<MarkQuestion> updateWrapper = new UpdateWrapper<>();
|
|
|
+ updateWrapper.lambda().set(MarkQuestion::getPersonTask, markTask != null)
|
|
|
+ .eq(MarkQuestion::getId, questionId);
|
|
|
+ markQuestionService.update(updateWrapper);
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public boolean rejectMarkTask(MarkProblemHistory markProblemHistory, MarkTask markTask, Long userId) {
|
|
|
MarkPaper markPaper = markPaperService.getByExamIdAndPaperNumber(markTask.getExamId(), markTask.getPaperNumber());
|
|
@@ -455,6 +474,9 @@ public class MarkServiceImpl implements MarkService {
|
|
|
// 处理正常考生
|
|
|
List<MarkQuestion> markQuestionList = markQuestionService.listByExamIdAndPaperNumberAndObjective(markPaper.getExamId(), markPaper.getPaperNumber(), false);
|
|
|
for (MarkQuestion markQuestion : markQuestionList) {
|
|
|
+ if (!MarkPaperAiMark.NONE.equals(markQuestion.getAiMark()) && !markAiQuestionParamService.existMarkAiQuestionScoreOrLevel(markQuestion.getExamId(), markQuestion.getPaperNumber(), markQuestion.getId())) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
// 生成正评任务
|
|
|
buildFormalTask(markQuestion);
|
|
|
if (markQuestion.getDoubleRate() != null && markQuestion.getDoubleRate() > 0) {
|
|
@@ -502,6 +524,7 @@ public class MarkServiceImpl implements MarkService {
|
|
|
markTask.setStudentCode(student.getStudentCode());
|
|
|
markTask.setSecretNumber(student.getSecretNumber());
|
|
|
markTask.setTaskNumber(1);
|
|
|
+ markTask.setAiMarked(getAiMarked(markQuestion, markTask.getTaskNumber()));
|
|
|
markTask.setStatus(MarkTaskStatus.WAITING);
|
|
|
taskList.add(markTask);
|
|
|
// 开启双评时需要判断是否生成第二份评卷任务
|
|
@@ -533,6 +556,7 @@ public class MarkServiceImpl implements MarkService {
|
|
|
markTask.setStudentCode(student.getStudentCode());
|
|
|
markTask.setSecretNumber(student.getSecretNumber());
|
|
|
markTask.setTaskNumber(2);
|
|
|
+ markTask.setAiMarked(getAiMarked(markQuestion, markTask.getTaskNumber()));
|
|
|
markTask.setStatus(MarkTaskStatus.WAITING);
|
|
|
taskList.add(markTask);
|
|
|
doubleCount++;
|
|
@@ -550,6 +574,7 @@ public class MarkServiceImpl implements MarkService {
|
|
|
if (MarkPaperStatus.FORMAL.equals(markPaper.getStatus())) {
|
|
|
this.updateMarkTaskCount(markQuestion.getExamId(), markQuestion.getPaperNumber(), markQuestion.getId());
|
|
|
this.updateMarkedCount(markQuestion.getExamId(), markQuestion.getPaperNumber(), markQuestion.getId());
|
|
|
+ this.updatePersonTask(markQuestion.getExamId(), markQuestion.getPaperNumber(), markQuestion.getId());
|
|
|
}
|
|
|
}
|
|
|
studentList = markStudentService.listUnMarkTaskStudent(markQuestion.getExamId(), markQuestion.getPaperNumber(), markQuestion.getId(), pageSize);
|
|
@@ -566,6 +591,16 @@ public class MarkServiceImpl implements MarkService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private Boolean getAiMarked(MarkQuestion markQuestion, Integer taskNumber) {
|
|
|
+ if (MarkPaperAiMark.NONE.equals(markQuestion.getAiMark())) {
|
|
|
+ return false;
|
|
|
+ } else if (MarkPaperAiMark.AI_ONLY.equals(markQuestion.getAiMark()) || MarkPaperAiMark.MAN_MACHINE.equals(markQuestion.getAiMark())) {
|
|
|
+ return taskNumber == 1;
|
|
|
+ } else {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
private void fillFormalTask(MarkQuestion markQuestion) {
|
|
|
int pageSize = 100;
|
|
|
try {
|
|
@@ -617,6 +652,7 @@ public class MarkServiceImpl implements MarkService {
|
|
|
markTask.setStudentCode(student.getStudentCode());
|
|
|
markTask.setSecretNumber(student.getSecretNumber());
|
|
|
markTask.setTaskNumber(2);
|
|
|
+ markTask.setAiMarked(getAiMarked(markQuestion, markTask.getTaskNumber()));
|
|
|
markTask.setStatus(MarkTaskStatus.WAITING);
|
|
|
taskList.add(markTask);
|
|
|
doubleCount++;
|
|
@@ -634,6 +670,7 @@ public class MarkServiceImpl implements MarkService {
|
|
|
if (MarkPaperStatus.FORMAL.equals(markPaper.getStatus())) {
|
|
|
this.updateMarkTaskCount(markQuestion.getExamId(), markQuestion.getPaperNumber(), markQuestion.getId());
|
|
|
this.updateMarkedCount(markQuestion.getExamId(), markQuestion.getPaperNumber(), markQuestion.getId());
|
|
|
+ this.updatePersonTask(markQuestion.getExamId(), markQuestion.getPaperNumber(), markQuestion.getId());
|
|
|
}
|
|
|
}
|
|
|
studentList = markStudentService.listUnMarkTaskStudent(markQuestion.getExamId(), markQuestion.getPaperNumber(), markQuestion.getId(), pageSize);
|
|
@@ -672,8 +709,9 @@ public class MarkServiceImpl implements MarkService {
|
|
|
public void updateGroupAllCount(Long examId, String paperNumber) {
|
|
|
List<MarkQuestion> markQuestionList = markQuestionService.listByExamIdAndPaperNumberAndObjective(examId, paperNumber, false);
|
|
|
for (MarkQuestion markQuestion : markQuestionList) {
|
|
|
- updateMarkedCount(markQuestion.getExamId(), markQuestion.getPaperNumber(), markQuestion.getId());
|
|
|
- updateMarkTaskCount(markQuestion.getExamId(), markQuestion.getPaperNumber(), markQuestion.getId());
|
|
|
+ this.updateMarkedCount(markQuestion.getExamId(), markQuestion.getPaperNumber(), markQuestion.getId());
|
|
|
+ this.updateMarkTaskCount(markQuestion.getExamId(), markQuestion.getPaperNumber(), markQuestion.getId());
|
|
|
+ this.updatePersonTask(markQuestion.getExamId(), markQuestion.getPaperNumber(), markQuestion.getId());
|
|
|
}
|
|
|
}
|
|
|
|