|
@@ -194,8 +194,10 @@ public class MarkServiceImpl implements MarkService {
|
|
|
@Override
|
|
|
public void updateMarkedCount(Long examId, String paperNumber, Long questionId) {
|
|
|
List<MarkTaskStatus> markTaskStatuses = Arrays.asList(MarkTaskStatus.MARKED, MarkTaskStatus.ARBITRATED);
|
|
|
+
|
|
|
int count = markTaskService.countByExamIdAndPaperNumberAndQuestionIdAndStatusIn(examId, paperNumber,
|
|
|
questionId, markTaskStatuses);
|
|
|
+
|
|
|
markQuestionService.updateMarkedCount(questionId, count);
|
|
|
}
|
|
|
|
|
@@ -358,8 +360,9 @@ public class MarkServiceImpl implements MarkService {
|
|
|
*/
|
|
|
private void checkStudentGroup(Long studentId, MarkQuestion markQuestion) {
|
|
|
if (calculateGroup(markQuestion, studentId)) {
|
|
|
+
|
|
|
updateStudentGroupScore(studentId, markQuestion);
|
|
|
-
|
|
|
+
|
|
|
long unGroupQuestionCount = markQuestionService.countByExamIdAndPaperNumberAndObjectiveAndGroupNumberIsNull(
|
|
|
markQuestion.getExamId(), markQuestion.getPaperNumber(), false);
|
|
|
checkStudentSubjective(studentId, unGroupQuestionCount);
|
|
@@ -373,7 +376,7 @@ public class MarkServiceImpl implements MarkService {
|
|
|
|
|
|
if (unGroupQuestionCount == 0) {
|
|
|
scoreCalculate(studentId);
|
|
|
- } else {
|
|
|
+ } else {
|
|
|
markStudentService.updateSubjectiveStatusAndScore(studentId, SubjectiveStatus.UNMARK, null, null);
|
|
|
}
|
|
|
}
|
|
@@ -619,16 +622,16 @@ public class MarkServiceImpl implements MarkService {
|
|
|
MarkPaper markPaper = markPaperService.getByExamIdAndPaperNumber(examId, paperNumber);
|
|
|
|
|
|
MarkSettingDto dto = new MarkSettingDto();
|
|
|
- dto.setExamType(ExamType.SCAN_IMAGE);
|
|
|
+ dto.setExamType(ExamType.SCAN_IMAGE);
|
|
|
dto.setMode(markUserPaper != null && markUserPaper.getMode() != null ? markUserPaper.getMode()
|
|
|
- : MarkMode.UNLIMITED.equals(markPaper.getMarkMode()) ? MarkMode.TRACK : markPaper.getMarkMode());
|
|
|
+ : MarkMode.UNLIMITED.equals(markPaper.getMarkMode()) ? MarkMode.TRACK : markPaper.getMarkMode());
|
|
|
dto.setQuestionModel(markUserPaper != null && markUserPaper.getQuestionModel() != null ? markUserPaper.getQuestionModel() : QuestionModel.MULTI);
|
|
|
- dto.setForceMode(markPaper.getForceMode());
|
|
|
- dto.setSheetView(markPaper.getSheetView());
|
|
|
- dto.setSheetConfig(markPaper.getSheetConfig());
|
|
|
- dto.setEnableAllZore(false);
|
|
|
- dto.setFileServer(null);
|
|
|
- dto.setUserName(user.getRealName());
|
|
|
+ dto.setForceMode(markPaper.getForceMode());
|
|
|
+ dto.setSheetView(markPaper.getSheetView());
|
|
|
+ dto.setSheetConfig(markPaper.getSheetConfig());
|
|
|
+ dto.setEnableAllZore(false);
|
|
|
+ dto.setFileServer(null);
|
|
|
+ dto.setUserName(user.getRealName());
|
|
|
dto.getSubject().setAnswerUrl(StringUtils.isBlank(markPaper.getAnswerFilePath()) ? null
|
|
|
: teachcloudCommonService.filePreview(markPaper.getAnswerFilePath()));
|
|
|
|
|
@@ -636,19 +639,19 @@ public class MarkServiceImpl implements MarkService {
|
|
|
BasicCourse basicCourse = basicCourseService.getById(markPaper.getCourseId());
|
|
|
dto.getSubject().setCode(markPaper.getPaperNumber());
|
|
|
dto.getSubject().setName(basicCourse != null ? basicCourse.getName() : null);
|
|
|
- dto.setForceSpecialTag(false);
|
|
|
- dto.setUiSetting(user.getUiSetting());
|
|
|
- dto.setStatusValue(markPaper.getStatus());
|
|
|
- dto.setProblemTypes(MarkProblemType.listTypes());
|
|
|
+ dto.setForceSpecialTag(false);
|
|
|
+ dto.setUiSetting(user.getUiSetting());
|
|
|
+ dto.setStatusValue(markPaper.getStatus());
|
|
|
+ dto.setProblemTypes(MarkProblemType.listTypes());
|
|
|
|
|
|
- dto.setSplitConfig(new Double[0]);
|
|
|
- dto.setPrefetchCount(3);
|
|
|
- dto.setStartTime(markPaper.getMarkStartTime());
|
|
|
- dto.setEndTime(markPaper.getMarkEndTime());
|
|
|
- dto.setSelective(false);
|
|
|
- dto.setAutoScroll(markPaper.getAutoScroll());
|
|
|
- dto.setEnableSplit(false);
|
|
|
- dto.setShowObjectScore(markPaper.getShowObjectScore());
|
|
|
+ dto.setSplitConfig(new Double[0]);
|
|
|
+ dto.setPrefetchCount(3);
|
|
|
+ dto.setStartTime(markPaper.getMarkStartTime());
|
|
|
+ dto.setEndTime(markPaper.getMarkEndTime());
|
|
|
+ dto.setSelective(false);
|
|
|
+ dto.setAutoScroll(markPaper.getAutoScroll());
|
|
|
+ dto.setEnableSplit(false);
|
|
|
+ dto.setShowObjectScore(markPaper.getShowObjectScore());
|
|
|
return dto;
|
|
|
}
|
|
|
|
|
@@ -664,19 +667,25 @@ public class MarkServiceImpl implements MarkService {
|
|
|
questionId = markTaskService.minQuestionIdByExamIdAndPaperNumber(examId, paperNumber, MarkTaskStatus.MARKED, MarkTaskStatus.ARBITRATED);
|
|
|
}
|
|
|
List<String> classNames = null;
|
|
|
+
|
|
|
if (markPaper != null && markPaper.getClassMark() != null && markPaper.getClassMark().booleanValue()) {
|
|
|
List<MarkUserClass> markUserClassList = markUserClassService.listByExamIdAndPaperNumberAndUserId(examId, paperNumber, userId);
|
|
|
if (CollectionUtils.isNotEmpty(markUserClassList)) {
|
|
|
classNames = markUserClassList.stream().map(MarkUserClass::getClassName).collect(Collectors.toList());
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
dto.setArbitrateCount(markTaskService.countByExamIdAndPaperNumberAndQuestionIdAndUserIdAndAndClassNameStatusIn(examId,
|
|
|
paperNumber, null, null, classNames, MarkTaskStatus.WAIT_ARBITRATE));
|
|
|
+
|
|
|
dto.setTotalCount(markTaskService.countByExamIdAndPaperNumberAndQuestionIdAndUserIdAndAndClassNameStatusIn(examId, paperNumber, questionId, null, classNames));
|
|
|
+
|
|
|
dto.setMarkedCount(markTaskService.countByExamIdAndPaperNumberAndQuestionIdAndUserIdAndAndClassNameStatusIn(examId, paperNumber, questionId, null, classNames, MarkTaskStatus.MARKED, MarkTaskStatus.ARBITRATED));
|
|
|
+
|
|
|
dto.setPersonCount(markTaskService.countByExamIdAndPaperNumberAndQuestionIdAndUserIdAndAndClassNameStatusIn(examId,
|
|
|
paperNumber, questionId, userId, classNames, MarkTaskStatus.MARKED, MarkTaskStatus.ARBITRATED,
|
|
|
MarkTaskStatus.WAIT_ARBITRATE));
|
|
|
+
|
|
|
dto.setProblemCount(markTaskService.countByExamIdAndPaperNumberAndQuestionIdAndUserIdAndAndClassNameStatusIn(examId,
|
|
|
paperNumber, questionId, null, classNames, MarkTaskStatus.PROBLEM));
|
|
|
return dto;
|
|
@@ -1065,7 +1074,7 @@ public class MarkServiceImpl implements MarkService {
|
|
|
return SubmitResult.success(task);
|
|
|
}
|
|
|
}
|
|
|
- if (markResultQuestion.getMarkerScore() <= markQuestion.getTotalScore()) {
|
|
|
+ if (markResultQuestion.getMarkerScore() <= markQuestion.getTotalScore()) {
|
|
|
if (submitTask(task, userId, markQuestion, markUserQuestion, markResultQuestion)) {
|
|
|
updateMarkedCount(markUserQuestion.getExamId(), markUserQuestion.getPaperNumber(),
|
|
|
markUserQuestion.getQuestionId());
|
|
@@ -1119,6 +1128,7 @@ public class MarkServiceImpl implements MarkService {
|
|
|
}
|
|
|
|
|
|
Long now = System.currentTimeMillis();
|
|
|
+
|
|
|
if (!markTaskService.updateMarkerResult(task.getId(), MarkTaskStatus.MARKED, userId,
|
|
|
result, now, null, null, null, MarkTaskStatus.WAITING,
|
|
|
MarkTaskStatus.MARKED, MarkTaskStatus.REJECTED)) {
|