|
@@ -112,29 +112,32 @@ public class MarkUserQuestionServiceImpl extends ServiceImpl<MarkUserQuestionMap
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public IPage<MarkUserGroupProgressDto> pageGroupUserByExamIdAndPaperNumberAndQuestionId(Long examId, String paperNumber, Long questionId, String loginName, String className, Integer pageNumber, Integer pageSize) {
|
|
|
|
|
|
+ public IPage<MarkUserGroupProgressDto> pageGroupUserByExamIdAndPaperNumberAndQuestionId(Long examId, String paperNumber, Long questionId, String loginName, String className, Boolean marked, Integer pageNumber, Integer pageSize) {
|
|
Page<MarkUserGroupProgressDto> page = new Page<>(pageNumber, pageSize);
|
|
Page<MarkUserGroupProgressDto> page = new Page<>(pageNumber, pageSize);
|
|
- IPage<MarkUserGroupProgressDto> markUserGroupProgressDtoIPage = this.baseMapper.pageGroupUserByExamIdAndPaperNumberAndQuestionId(page, examId, paperNumber, questionId, loginName, className);
|
|
|
|
|
|
+ IPage<MarkUserGroupProgressDto> markUserGroupProgressDtoIPage = this.baseMapper.pageGroupUserByExamIdAndPaperNumberAndQuestionId(page, examId, paperNumber, questionId, loginName, className, marked);
|
|
for (MarkUserGroupProgressDto record : markUserGroupProgressDtoIPage.getRecords()) {
|
|
for (MarkUserGroupProgressDto record : markUserGroupProgressDtoIPage.getRecords()) {
|
|
MarkQuestion markQuestion = markQuestionService.getById(record.getQuestionId());
|
|
MarkQuestion markQuestion = markQuestionService.getById(record.getQuestionId());
|
|
record.setQuestionNumber(markQuestion.getQuestionNumber());
|
|
record.setQuestionNumber(markQuestion.getQuestionNumber());
|
|
List<MarkTask> markTaskList = markTaskService.listByExamIdAndPaperNumberAndQuestionIdAndUserIdAndClassName(examId, paperNumber, record.getQuestionId(), record.getUserId(), null);
|
|
List<MarkTask> markTaskList = markTaskService.listByExamIdAndPaperNumberAndQuestionIdAndUserIdAndClassName(examId, paperNumber, record.getQuestionId(), record.getUserId(), null);
|
|
- record.setResetting(lockService.isLocked(LockType.MARKER_RESET, record.getMarkUserGroupId()));
|
|
|
|
|
|
+ record.setResetting(lockService.isLocked(LockType.MARKER_RESET, record.getMarkUserQuestionId()));
|
|
record.setMarkedCount(markTaskService.markedCount(markTaskList));
|
|
record.setMarkedCount(markTaskService.markedCount(markTaskList));
|
|
- record.setCurrentCount(markService.applyCurrentCount(markQuestion, record.getMarkUserGroupId()));
|
|
|
|
|
|
+ record.setCurrentCount(markService.applyCurrentCount(markQuestion, record.getMarkUserQuestionId()));
|
|
}
|
|
}
|
|
return markUserGroupProgressDtoIPage;
|
|
return markUserGroupProgressDtoIPage;
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public void addMarkUserQuestion(MarkerAddParam markerAddParam) {
|
|
public void addMarkUserQuestion(MarkerAddParam markerAddParam) {
|
|
- if (CollectionUtils.isNotEmpty(markerAddParam.getMarkers())) {
|
|
|
|
|
|
+ if (CollectionUtils.isNotEmpty(markerAddParam.getUserIds())) {
|
|
|
|
+ // 根据是否合并设置评卷员参数,做合并
|
|
|
|
+ List<Long> questionIds = listMergeQuestionId(markerAddParam.getExamId(), markerAddParam.getPaperNumber(), markerAddParam.getQuestionId());
|
|
|
|
+
|
|
List<MarkUserQuestion> markUserGroups = new ArrayList<>();
|
|
List<MarkUserQuestion> markUserGroups = new ArrayList<>();
|
|
- for (MarkUser markUser : markerAddParam.getMarkers()) {
|
|
|
|
- for (Long questionId : markerAddParam.getQuestionIds()) {
|
|
|
|
- MarkUserQuestion markUserGroup = this.getByExamIdAndPaperNumberAndQuestionIdAndUserId(markerAddParam.getExamId(), markerAddParam.getPaperNumber(), questionId, markUser.getUserId());
|
|
|
|
|
|
+ for (Long userId : markerAddParam.getUserIds()) {
|
|
|
|
+ for (Long questionId : questionIds) {
|
|
|
|
+ MarkUserQuestion markUserGroup = this.getByExamIdAndPaperNumberAndQuestionIdAndUserId(markerAddParam.getExamId(), markerAddParam.getPaperNumber(), questionId, userId);
|
|
if (markUserGroup == null) {
|
|
if (markUserGroup == null) {
|
|
- markUserGroups.add(new MarkUserQuestion(markerAddParam.getExamId(), markerAddParam.getPaperNumber(), questionId, markUser.getUserId()));
|
|
|
|
|
|
+ markUserGroups.add(new MarkUserQuestion(markerAddParam.getExamId(), markerAddParam.getPaperNumber(), questionId, userId));
|
|
} else if (!markUserGroup.getEnable()) {
|
|
} else if (!markUserGroup.getEnable()) {
|
|
markUserGroup.setEnable(true);
|
|
markUserGroup.setEnable(true);
|
|
markUserGroups.add(markUserGroup);
|
|
markUserGroups.add(markUserGroup);
|
|
@@ -147,6 +150,24 @@ public class MarkUserQuestionServiceImpl extends ServiceImpl<MarkUserQuestionMap
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ private List<Long> listMergeQuestionId(Long examId, String paperNumber, Long questionId) {
|
|
|
|
+ MarkPaper markPaper = markPaperService.getByExamIdAndPaperNumber(examId, paperNumber);
|
|
|
|
+ List<Long> questionIds = new ArrayList<>();
|
|
|
|
+ if (markPaper != null && markPaper.getMergeMarker() != null && markPaper.getMergeMarker()) {
|
|
|
|
+ // 逻辑解绑
|
|
|
|
+ MarkQuestion markQuestion = markQuestionService.getById(questionId);
|
|
|
|
+ if (markQuestion == null) {
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("题目不存在");
|
|
|
|
+ }
|
|
|
|
+ List<MarkQuestion> markQuestionList = markQuestionService.listByExamIdAndPaperNumberAndObjective(examId, paperNumber, false);
|
|
|
|
+ // 填空题,整个大题一起解绑
|
|
|
|
+ return markQuestionList.stream().filter(m -> markQuestion.getMainNumber().equals(m.getMainNumber()) && "4".equals(m.getQuestionType())).map(MarkQuestion::getId).collect(Collectors.toList());
|
|
|
|
+ } else {
|
|
|
|
+ questionIds.add(questionId);
|
|
|
|
+ }
|
|
|
|
+ return questionIds;
|
|
|
|
+ }
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
public void setTopCount(List<Long> markUserQuestionIds, Integer topCount) {
|
|
public void setTopCount(List<Long> markUserQuestionIds, Integer topCount) {
|
|
for (Long markUserQuestionId : markUserQuestionIds) {
|
|
for (Long markUserQuestionId : markUserQuestionIds) {
|
|
@@ -170,18 +191,13 @@ public class MarkUserQuestionServiceImpl extends ServiceImpl<MarkUserQuestionMap
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public void deleteMarker(MarkUserQuestion markUserQuestion) {
|
|
public void deleteMarker(MarkUserQuestion markUserQuestion) {
|
|
- // 已评卷也可解绑 2025-02-26
|
|
|
|
-// int count = markTaskService.countByExamIdAndPaperNumberAndQuestionIdAndUserId(markUserQuestion.getExamId(), markUserQuestion.getPaperNumber(), markUserQuestion.getId(), markUserQuestion.getUserId());
|
|
|
|
-// if (count > 0) {
|
|
|
|
-// throw ExceptionResultEnum.ERROR.exception("删除评卷员失败,该评卷员已开始评卷");
|
|
|
|
-// } else {
|
|
|
|
// 先回收,再删除
|
|
// 先回收,再删除
|
|
releaseMarker(Arrays.asList(markUserQuestion.getId()));
|
|
releaseMarker(Arrays.asList(markUserQuestion.getId()));
|
|
// 逻辑解绑
|
|
// 逻辑解绑
|
|
|
|
+ List<Long> ids = listMergeQuestionId(markUserQuestion.getExamId(), markUserQuestion.getPaperNumber(), markUserQuestion.getQuestionId());
|
|
UpdateWrapper<MarkUserQuestion> updateWrapper = new UpdateWrapper<>();
|
|
UpdateWrapper<MarkUserQuestion> updateWrapper = new UpdateWrapper<>();
|
|
- updateWrapper.lambda().set(MarkUserQuestion::getEnable, false).eq(MarkUserQuestion::getId, markUserQuestion.getId());
|
|
|
|
|
|
+ updateWrapper.lambda().set(MarkUserQuestion::getEnable, false).in(MarkUserQuestion::getId, ids);
|
|
this.update(updateWrapper);
|
|
this.update(updateWrapper);
|
|
-// }
|
|
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -352,7 +368,7 @@ public class MarkUserQuestionServiceImpl extends ServiceImpl<MarkUserQuestionMap
|
|
List<MarkUserQuestion> markUserQuestions = listByExamIdAndPaperNumberAndQuestionId(examId, paperNumber, questionId);
|
|
List<MarkUserQuestion> markUserQuestions = listByExamIdAndPaperNumberAndQuestionId(examId, paperNumber, questionId);
|
|
List<String> userIds = new ArrayList<>();
|
|
List<String> userIds = new ArrayList<>();
|
|
if (CollectionUtils.isNotEmpty(markUserQuestions)) {
|
|
if (CollectionUtils.isNotEmpty(markUserQuestions)) {
|
|
- userIds = markUserQuestions.stream().map(m -> String.valueOf(m.getUserId())).collect(Collectors.toList());
|
|
|
|
|
|
+ userIds = markUserQuestions.stream().filter(m -> m.getEnable()).map(m -> String.valueOf(m.getUserId())).collect(Collectors.toList());
|
|
}
|
|
}
|
|
return userIds;
|
|
return userIds;
|
|
}
|
|
}
|
|
@@ -378,4 +394,9 @@ public class MarkUserQuestionServiceImpl extends ServiceImpl<MarkUserQuestionMap
|
|
}
|
|
}
|
|
this.saveBatch(markUserQuestions);
|
|
this.saveBatch(markUserQuestions);
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public List<String> countClassByExamIdAndPaperNumberAndQuestionId(Long examId, String paperNumber, Long questionId) {
|
|
|
|
+ return this.baseMapper.countClassByExamIdAndPaperNumberAndQuestionId(examId, paperNumber, questionId);
|
|
|
|
+ }
|
|
}
|
|
}
|