|
@@ -194,8 +194,10 @@ public class MarkServiceImpl implements MarkService {
|
|
@Override
|
|
@Override
|
|
public void updateMarkedCount(Long examId, String paperNumber, Long questionId) {
|
|
public void updateMarkedCount(Long examId, String paperNumber, Long questionId) {
|
|
List<MarkTaskStatus> markTaskStatuses = Arrays.asList(MarkTaskStatus.MARKED, MarkTaskStatus.ARBITRATED);
|
|
List<MarkTaskStatus> markTaskStatuses = Arrays.asList(MarkTaskStatus.MARKED, MarkTaskStatus.ARBITRATED);
|
|
|
|
+ //查询已评和已仲裁的任务数
|
|
int count = markTaskService.countByExamIdAndPaperNumberAndQuestionIdAndStatusIn(examId, paperNumber,
|
|
int count = markTaskService.countByExamIdAndPaperNumberAndQuestionIdAndStatusIn(examId, paperNumber,
|
|
questionId, markTaskStatuses);
|
|
questionId, markTaskStatuses);
|
|
|
|
+ //更新当前组的已评数量
|
|
markQuestionService.updateMarkedCount(questionId, count);
|
|
markQuestionService.updateMarkedCount(questionId, count);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -358,8 +360,9 @@ public class MarkServiceImpl implements MarkService {
|
|
*/
|
|
*/
|
|
private void checkStudentGroup(Long studentId, MarkQuestion markQuestion) {
|
|
private void checkStudentGroup(Long studentId, MarkQuestion markQuestion) {
|
|
if (calculateGroup(markQuestion, studentId)) {
|
|
if (calculateGroup(markQuestion, studentId)) {
|
|
|
|
+ //更新考生分组分数
|
|
updateStudentGroupScore(studentId, markQuestion);
|
|
updateStudentGroupScore(studentId, markQuestion);
|
|
- // 未分组的题目
|
|
|
|
|
|
+ //未分组的题目
|
|
long unGroupQuestionCount = markQuestionService.countByExamIdAndPaperNumberAndObjectiveAndGroupNumberIsNull(
|
|
long unGroupQuestionCount = markQuestionService.countByExamIdAndPaperNumberAndObjectiveAndGroupNumberIsNull(
|
|
markQuestion.getExamId(), markQuestion.getPaperNumber(), false);
|
|
markQuestion.getExamId(), markQuestion.getPaperNumber(), false);
|
|
checkStudentSubjective(studentId, unGroupQuestionCount);
|
|
checkStudentSubjective(studentId, unGroupQuestionCount);
|
|
@@ -373,7 +376,7 @@ public class MarkServiceImpl implements MarkService {
|
|
// todo 所有任务是否已完成
|
|
// todo 所有任务是否已完成
|
|
if (unGroupQuestionCount == 0) {
|
|
if (unGroupQuestionCount == 0) {
|
|
scoreCalculate(studentId);
|
|
scoreCalculate(studentId);
|
|
- } else {
|
|
|
|
|
|
+ } else {//否则更新该学生主观题状态为未阅卷
|
|
markStudentService.updateSubjectiveStatusAndScore(studentId, SubjectiveStatus.UNMARK, null, null);
|
|
markStudentService.updateSubjectiveStatusAndScore(studentId, SubjectiveStatus.UNMARK, null, null);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -619,16 +622,16 @@ public class MarkServiceImpl implements MarkService {
|
|
MarkPaper markPaper = markPaperService.getByExamIdAndPaperNumber(examId, paperNumber);
|
|
MarkPaper markPaper = markPaperService.getByExamIdAndPaperNumber(examId, paperNumber);
|
|
|
|
|
|
MarkSettingDto dto = new MarkSettingDto();
|
|
MarkSettingDto dto = new MarkSettingDto();
|
|
- dto.setExamType(ExamType.SCAN_IMAGE);
|
|
|
|
|
|
+ dto.setExamType(ExamType.SCAN_IMAGE);//考试类型,默认SCAN_IMAGE
|
|
dto.setMode(markUserPaper != null && markUserPaper.getMode() != null ? markUserPaper.getMode()
|
|
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());//模式 TRACK/COMMON
|
|
dto.setQuestionModel(markUserPaper != null && markUserPaper.getQuestionModel() != null ? markUserPaper.getQuestionModel() : QuestionModel.MULTI);
|
|
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);//是否开启全零分(知学知考阅卷默认false)
|
|
|
|
+ dto.setFileServer(null);//图片服务地址
|
|
|
|
+ dto.setUserName(user.getRealName());//评卷员名称
|
|
dto.getSubject().setAnswerUrl(StringUtils.isBlank(markPaper.getAnswerFilePath()) ? null
|
|
dto.getSubject().setAnswerUrl(StringUtils.isBlank(markPaper.getAnswerFilePath()) ? null
|
|
: teachcloudCommonService.filePreview(markPaper.getAnswerFilePath()));
|
|
: teachcloudCommonService.filePreview(markPaper.getAnswerFilePath()));
|
|
// dto.getSubject().setPaperUrl(StringUtils.isBlank(markPaper.getPaperFilePath()) ? null
|
|
// dto.getSubject().setPaperUrl(StringUtils.isBlank(markPaper.getPaperFilePath()) ? null
|
|
@@ -636,19 +639,19 @@ public class MarkServiceImpl implements MarkService {
|
|
BasicCourse basicCourse = basicCourseService.getById(markPaper.getCourseId());
|
|
BasicCourse basicCourse = basicCourseService.getById(markPaper.getCourseId());
|
|
dto.getSubject().setCode(markPaper.getPaperNumber());
|
|
dto.getSubject().setCode(markPaper.getPaperNumber());
|
|
dto.getSubject().setName(basicCourse != null ? basicCourse.getName() : null);
|
|
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);//强制标记是否开启 必须要有标记(分数轨迹或特殊标记)(知学知考阅卷默认true)
|
|
|
|
+ dto.setUiSetting(user.getUiSetting());//新交互模式下,以下字段要重新定义或新增(初始值为空,按评卷员保存)
|
|
|
|
+ dto.setStatusValue(markPaper.getStatus());//只显示试评名称 FORMAL("正评"), FINISH("结束")
|
|
|
|
+ dto.setProblemTypes(MarkProblemType.listTypes());//问题卷类型
|
|
// dto.setTopCount(markUserGroup != null && markUserGroup.getTopCount() != null ? markUserGroup.getTopCount() : 0);
|
|
// dto.setTopCount(markUserGroup != null && markUserGroup.getTopCount() != null ? markUserGroup.getTopCount() : 0);
|
|
- 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);//是否为选做题(默认false)
|
|
|
|
+ dto.setAutoScroll(markPaper.getAutoScroll());//是否自动跳转
|
|
|
|
+ dto.setEnableSplit(false);//是否裁切(默认false)
|
|
|
|
+ dto.setShowObjectScore(markPaper.getShowObjectScore());//是否显示客观分
|
|
return dto;
|
|
return dto;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -664,19 +667,25 @@ public class MarkServiceImpl implements MarkService {
|
|
questionId = markTaskService.minQuestionIdByExamIdAndPaperNumber(examId, paperNumber, MarkTaskStatus.MARKED, MarkTaskStatus.ARBITRATED);
|
|
questionId = markTaskService.minQuestionIdByExamIdAndPaperNumber(examId, paperNumber, MarkTaskStatus.MARKED, MarkTaskStatus.ARBITRATED);
|
|
}
|
|
}
|
|
List<String> classNames = null;
|
|
List<String> classNames = null;
|
|
|
|
+ //校验是否有分班阅
|
|
if (markPaper != null && markPaper.getClassMark() != null && markPaper.getClassMark().booleanValue()) {
|
|
if (markPaper != null && markPaper.getClassMark() != null && markPaper.getClassMark().booleanValue()) {
|
|
List<MarkUserClass> markUserClassList = markUserClassService.listByExamIdAndPaperNumberAndUserId(examId, paperNumber, userId);
|
|
List<MarkUserClass> markUserClassList = markUserClassService.listByExamIdAndPaperNumberAndUserId(examId, paperNumber, userId);
|
|
if (CollectionUtils.isNotEmpty(markUserClassList)) {
|
|
if (CollectionUtils.isNotEmpty(markUserClassList)) {
|
|
classNames = markUserClassList.stream().map(MarkUserClass::getClassName).collect(Collectors.toList());
|
|
classNames = markUserClassList.stream().map(MarkUserClass::getClassName).collect(Collectors.toList());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ //待仲裁卷数量
|
|
dto.setArbitrateCount(markTaskService.countByExamIdAndPaperNumberAndQuestionIdAndUserIdAndAndClassNameStatusIn(examId,
|
|
dto.setArbitrateCount(markTaskService.countByExamIdAndPaperNumberAndQuestionIdAndUserIdAndAndClassNameStatusIn(examId,
|
|
paperNumber, null, null, classNames, MarkTaskStatus.WAIT_ARBITRATE));
|
|
paperNumber, null, null, classNames, MarkTaskStatus.WAIT_ARBITRATE));
|
|
|
|
+ //总数量
|
|
dto.setTotalCount(markTaskService.countByExamIdAndPaperNumberAndQuestionIdAndUserIdAndAndClassNameStatusIn(examId, paperNumber, questionId, null, classNames));
|
|
dto.setTotalCount(markTaskService.countByExamIdAndPaperNumberAndQuestionIdAndUserIdAndAndClassNameStatusIn(examId, paperNumber, questionId, null, classNames));
|
|
|
|
+ //总评卷数量(已评)
|
|
dto.setMarkedCount(markTaskService.countByExamIdAndPaperNumberAndQuestionIdAndUserIdAndAndClassNameStatusIn(examId, paperNumber, questionId, null, classNames, MarkTaskStatus.MARKED, MarkTaskStatus.ARBITRATED));
|
|
dto.setMarkedCount(markTaskService.countByExamIdAndPaperNumberAndQuestionIdAndUserIdAndAndClassNameStatusIn(examId, paperNumber, questionId, null, classNames, MarkTaskStatus.MARKED, MarkTaskStatus.ARBITRATED));
|
|
|
|
+ //个人评卷数量
|
|
dto.setPersonCount(markTaskService.countByExamIdAndPaperNumberAndQuestionIdAndUserIdAndAndClassNameStatusIn(examId,
|
|
dto.setPersonCount(markTaskService.countByExamIdAndPaperNumberAndQuestionIdAndUserIdAndAndClassNameStatusIn(examId,
|
|
paperNumber, questionId, userId, classNames, MarkTaskStatus.MARKED, MarkTaskStatus.ARBITRATED,
|
|
paperNumber, questionId, userId, classNames, MarkTaskStatus.MARKED, MarkTaskStatus.ARBITRATED,
|
|
MarkTaskStatus.WAIT_ARBITRATE));
|
|
MarkTaskStatus.WAIT_ARBITRATE));
|
|
|
|
+ //问题卷数量
|
|
dto.setProblemCount(markTaskService.countByExamIdAndPaperNumberAndQuestionIdAndUserIdAndAndClassNameStatusIn(examId,
|
|
dto.setProblemCount(markTaskService.countByExamIdAndPaperNumberAndQuestionIdAndUserIdAndAndClassNameStatusIn(examId,
|
|
paperNumber, questionId, null, classNames, MarkTaskStatus.PROBLEM));
|
|
paperNumber, questionId, null, classNames, MarkTaskStatus.PROBLEM));
|
|
return dto;
|
|
return dto;
|
|
@@ -1065,7 +1074,7 @@ public class MarkServiceImpl implements MarkService {
|
|
return SubmitResult.success(task);
|
|
return SubmitResult.success(task);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- if (markResultQuestion.getMarkerScore() <= markQuestion.getTotalScore()) {
|
|
|
|
|
|
+ if (markResultQuestion.getMarkerScore() <= markQuestion.getTotalScore()) {//阅卷分是否小于等于该组总分
|
|
if (submitTask(task, userId, markQuestion, markUserQuestion, markResultQuestion)) {
|
|
if (submitTask(task, userId, markQuestion, markUserQuestion, markResultQuestion)) {
|
|
updateMarkedCount(markUserQuestion.getExamId(), markUserQuestion.getPaperNumber(),
|
|
updateMarkedCount(markUserQuestion.getExamId(), markUserQuestion.getPaperNumber(),
|
|
markUserQuestion.getQuestionId());
|
|
markUserQuestion.getQuestionId());
|
|
@@ -1119,6 +1128,7 @@ public class MarkServiceImpl implements MarkService {
|
|
}
|
|
}
|
|
// 尝试提交评卷结果
|
|
// 尝试提交评卷结果
|
|
Long now = System.currentTimeMillis();
|
|
Long now = System.currentTimeMillis();
|
|
|
|
+ //更新阅卷任务状态为已阅卷[阅卷分数,给分明细,阅卷时间,评卷时长]
|
|
if (!markTaskService.updateMarkerResult(task.getId(), MarkTaskStatus.MARKED, userId,
|
|
if (!markTaskService.updateMarkerResult(task.getId(), MarkTaskStatus.MARKED, userId,
|
|
result, now, null, null, null, MarkTaskStatus.WAITING,
|
|
result, now, null, null, null, MarkTaskStatus.WAITING,
|
|
MarkTaskStatus.MARKED, MarkTaskStatus.REJECTED)) {
|
|
MarkTaskStatus.MARKED, MarkTaskStatus.REJECTED)) {
|