|
@@ -681,7 +681,7 @@ public class MarkServiceImpl implements MarkService {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public List<MarkStatusDto> getStatus(Long userId, Long examId, String paperNumber, QuestionModel questionModel) {
|
|
|
+ public List<MarkStatusDto> getStatus(Long userId, Long examId, String paperNumber, QuestionModel questionModel, Long questionId) {
|
|
|
MarkPaper markPaper = markPaperService.getByExamIdAndPaperNumber(examId, paperNumber);
|
|
|
|
|
|
List<String> classNames = null;
|
|
@@ -694,41 +694,49 @@ public class MarkServiceImpl implements MarkService {
|
|
|
}
|
|
|
|
|
|
List<MarkStatusDto> dtoList = new ArrayList<>();
|
|
|
+ List<MarkUserQuestion> markUserQuestionList = markUserQuestionService.listByExamIdAndPaperNumberAndUserIdAndEnableTure(examId, paperNumber, userId);
|
|
|
// 评卷方式
|
|
|
if (QuestionModel.SINGLE.equals(questionModel)) {
|
|
|
- List<MarkUserQuestion> markUserQuestionList = markUserQuestionService.listByExamIdAndPaperNumberAndUserIdAndEnableTure(examId, paperNumber, userId);
|
|
|
+ if (questionId != null) {
|
|
|
+ markUserQuestionList = markUserQuestionList.stream().filter(m -> m.getQuestionId().equals(questionId)).collect(Collectors.toList());
|
|
|
+ }
|
|
|
MarkStatusDto dto;
|
|
|
for (MarkUserQuestion question : markUserQuestionList) {
|
|
|
- dto = new MarkStatusDto(markQuestionService.getById(question.getId()));
|
|
|
+ dto = new MarkStatusDto(markQuestionService.getById(question.getQuestionId()));
|
|
|
+ Long[] questionIds = new Long[]{question.getQuestionId()};
|
|
|
//总数量(考生数)
|
|
|
- dto.setTotalCount(markTaskService.countTotalCountByExamIdAndPaperNumberAndUserIdAndAndClassName(examId, paperNumber, userId, classNames));
|
|
|
+ dto.setTotalCount(markTaskService.countTotalCountByExamIdAndPaperNumberAndAndClassNameAndQuestionIdIn(examId, paperNumber, classNames, questionIds));
|
|
|
//总评卷数量(考生数)
|
|
|
-// dto.setMarkedCount(markTaskService.countMarkedCountByExamIdAndPaperNumberAndUserIdAndAndClassName(examId, paperNumber, userId, classNames, questionId, MarkTaskStatus.MARKED, MarkTaskStatus.ARBITRATED));
|
|
|
+ dto.setMarkedCount(markTaskService.countMarkedCountByExamIdAndPaperNumberAndUserIdAndAndClassNameAndQuestionIdIn(examId, paperNumber, userId, classNames, questionIds, MarkTaskStatus.MARKED, MarkTaskStatus.ARBITRATED));
|
|
|
//个人评卷数量(考生数)
|
|
|
-// dto.setPersonCount(markTaskService.countMarkedCountByExamIdAndPaperNumberAndUserIdAndAndClassName(examId, paperNumber, userId, classNames, questionId, MarkTaskStatus.MARKED, MarkTaskStatus.ARBITRATED,MarkTaskStatus.WAIT_ARBITRATE));
|
|
|
+ dto.setPersonCount(markTaskService.countMarkedCountByExamIdAndPaperNumberAndUserIdAndAndClassNameAndQuestionIdIn(examId, paperNumber, userId, classNames, questionIds, MarkTaskStatus.MARKED, MarkTaskStatus.ARBITRATED,
|
|
|
+ MarkTaskStatus.WAIT_ARBITRATE));
|
|
|
//问题卷数量(任务数)
|
|
|
dto.setProblemCount(markTaskService.countByExamIdAndPaperNumberAndQuestionIdAndUserIdAndAndClassNameStatusIn(examId,
|
|
|
paperNumber, question.getQuestionId(), null, classNames, MarkTaskStatus.PROBLEM));
|
|
|
//待仲裁卷数量(任务数)
|
|
|
dto.setArbitrateCount(markTaskService.countByExamIdAndPaperNumberAndQuestionIdAndUserIdAndAndClassNameStatusIn(examId,
|
|
|
paperNumber, question.getQuestionId(), null, classNames, MarkTaskStatus.WAIT_ARBITRATE));
|
|
|
+ dto.setLeftCount(dto.getTotalCount() - dto.getPersonCount());
|
|
|
dtoList.add(dto);
|
|
|
}
|
|
|
} else if (QuestionModel.MULTI.equals(questionModel)) {
|
|
|
MarkStatusDto dto = new MarkStatusDto();
|
|
|
-
|
|
|
+ List<Long> questionIdList = markUserQuestionList.stream().filter(m -> m.getUserId().equals(userId)).map(MarkUserQuestion::getQuestionId).collect(Collectors.toList());
|
|
|
+ Long[] questionIds = questionIdList.toArray(new Long[0]);
|
|
|
//待仲裁卷数量
|
|
|
dto.setArbitrateCount(markTaskService.countByExamIdAndPaperNumberAndQuestionIdAndUserIdAndAndClassNameStatusIn(examId,
|
|
|
paperNumber, null, null, classNames, MarkTaskStatus.WAIT_ARBITRATE));
|
|
|
//总数量
|
|
|
- dto.setTotalCount(markTaskService.countTotalCountByExamIdAndPaperNumberAndUserIdAndAndClassName(examId, paperNumber, userId, classNames));
|
|
|
+ dto.setTotalCount(markTaskService.countTotalCountByExamIdAndPaperNumberAndAndClassNameAndQuestionIdIn(examId, paperNumber, classNames, questionIds));
|
|
|
//总评卷数量(已评)
|
|
|
-// dto.setMarkedCount(markTaskService.countMarkedCountByExamIdAndPaperNumberAndUserIdAndAndClassName(examId, paperNumber, userId, classNames, questionId, MarkTaskStatus.MARKED, MarkTaskStatus.ARBITRATED));
|
|
|
+ dto.setMarkedCount(markTaskService.countMarkedCountByExamIdAndPaperNumberAndUserIdAndAndClassNameAndQuestionIdIn(examId, paperNumber, userId, classNames, questionIds, MarkTaskStatus.MARKED, MarkTaskStatus.ARBITRATED));
|
|
|
//个人评卷数量
|
|
|
-// dto.setPersonCount(markTaskService.countMarkedCountByExamIdAndPaperNumberAndUserIdAndAndClassName(examId, paperNumber, userId, classNames, questionId, MarkTaskStatus.MARKED, MarkTaskStatus.ARBITRATED, MarkTaskStatus.WAIT_ARBITRATE));
|
|
|
+ dto.setPersonCount(markTaskService.countMarkedCountByExamIdAndPaperNumberAndUserIdAndAndClassNameAndQuestionIdIn(examId, paperNumber, userId, classNames, questionIds, MarkTaskStatus.MARKED, MarkTaskStatus.ARBITRATED,
|
|
|
+ MarkTaskStatus.WAIT_ARBITRATE));
|
|
|
//问题卷数量
|
|
|
-// dto.setProblemCount(markTaskService.countByExamIdAndPaperNumberAndQuestionIdAndUserIdAndAndClassNameStatusIn(examId,
|
|
|
-// paperNumber, questionId, null, classNames, MarkTaskStatus.PROBLEM));
|
|
|
+ dto.setProblemCount(markTaskService.countByExamIdAndPaperNumberAndQuestionIdAndUserIdAndAndClassNameStatusIn(examId,
|
|
|
+ paperNumber, null, null, classNames, MarkTaskStatus.PROBLEM));
|
|
|
dtoList.add(dto);
|
|
|
} else {
|
|
|
throw ExceptionResultEnum.ERROR.exception("参数有误");
|
|
@@ -867,12 +875,12 @@ public class MarkServiceImpl implements MarkService {
|
|
|
if (markUserQuestions.isEmpty()) {
|
|
|
throw ExceptionResultEnum.ERROR.exception("评卷员未设置评卷题目");
|
|
|
}
|
|
|
- Set<Long> questions = markUserQuestions.stream().map(MarkUserQuestion::getQuestionId).collect(Collectors.toSet());
|
|
|
Task task = null;
|
|
|
List<Long> studentIds;
|
|
|
int pageNumber = 1;
|
|
|
while (task == null) {
|
|
|
if (questionModel.equals(QuestionModel.SINGLE)) {
|
|
|
+ Set<Long> questions = new HashSet<>(Arrays.asList(questionId));
|
|
|
List<MarkTask> list = markTaskService.findUnMarkedFilterClass(new Page<>(pageNumber, 20), examId, paperNumber, userId, markPaper.getClassMark());
|
|
|
if (list.isEmpty()) {
|
|
|
break;
|
|
@@ -884,6 +892,7 @@ public class MarkServiceImpl implements MarkService {
|
|
|
}
|
|
|
}
|
|
|
} else if (questionModel.equals(QuestionModel.MULTI)) {
|
|
|
+ Set<Long> questions = markUserQuestions.stream().map(MarkUserQuestion::getQuestionId).collect(Collectors.toSet());
|
|
|
studentIds = markStudentService.findUnMarked(new Page<>(pageNumber, 20), examId, paperNumber, userId, markPaper.getClassMark());
|
|
|
if (studentIds.isEmpty()) {
|
|
|
break;
|