|
@@ -1,5 +1,19 @@
|
|
|
package com.qmth.teachcloud.mark.service.impl;
|
|
|
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.util.*;
|
|
|
+import java.util.concurrent.ConcurrentHashMap;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+import javax.annotation.Resource;
|
|
|
+
|
|
|
+import org.apache.commons.collections4.CollectionUtils;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
+import org.slf4j.Logger;
|
|
|
+import org.slf4j.LoggerFactory;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
+
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.core.metadata.OrderItem;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
@@ -30,19 +44,8 @@ import com.qmth.teachcloud.mark.service.*;
|
|
|
import com.qmth.teachcloud.mark.utils.BigDecimalUtils;
|
|
|
import com.qmth.teachcloud.mark.utils.TaskLock;
|
|
|
import com.qmth.teachcloud.mark.utils.TaskLockUtil;
|
|
|
-import io.lettuce.core.GeoArgs.Sort;
|
|
|
-import org.apache.commons.collections4.CollectionUtils;
|
|
|
-import org.apache.commons.lang3.StringUtils;
|
|
|
-import org.slf4j.Logger;
|
|
|
-import org.slf4j.LoggerFactory;
|
|
|
-import org.springframework.stereotype.Service;
|
|
|
-import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
-import javax.annotation.Resource;
|
|
|
-import java.math.BigDecimal;
|
|
|
-import java.util.*;
|
|
|
-import java.util.concurrent.ConcurrentHashMap;
|
|
|
-import java.util.stream.Collectors;
|
|
|
+import io.lettuce.core.GeoArgs.Sort;
|
|
|
|
|
|
@Service
|
|
|
public class MarkServiceImpl implements MarkService {
|
|
@@ -55,52 +58,72 @@ public class MarkServiceImpl implements MarkService {
|
|
|
|
|
|
@Resource
|
|
|
private MarkPaperService markPaperService;
|
|
|
+
|
|
|
@Resource
|
|
|
private MarkQuestionService markQuestionService;
|
|
|
+
|
|
|
@Resource
|
|
|
private MarkGroupService markGroupService;
|
|
|
+
|
|
|
@Resource
|
|
|
private MarkUserGroupService markUserGroupService;
|
|
|
+
|
|
|
@Resource
|
|
|
private MarkTaskService markTaskService;
|
|
|
+
|
|
|
@Resource
|
|
|
private MarkTrackService markTrackService;
|
|
|
+
|
|
|
@Resource
|
|
|
private MarkStudentService markStudentService;
|
|
|
+
|
|
|
@Resource
|
|
|
private MarkGroupStudentService markGroupStudentService;
|
|
|
+
|
|
|
@Resource
|
|
|
private MarkProblemHistoryService markProblemHistoryService;
|
|
|
+
|
|
|
@Resource
|
|
|
private MarkArbitrateHistoryService markArbitrateHistoryService;
|
|
|
+
|
|
|
@Resource
|
|
|
private MarkSubjectiveScoreService markSubjectiveScoreService;
|
|
|
+
|
|
|
@Resource
|
|
|
private MarkHeaderTrackService markHeaderTrackService;
|
|
|
+
|
|
|
@Resource
|
|
|
private MarkSpecialTagService markSpecialTagService;
|
|
|
+
|
|
|
@Resource
|
|
|
private MarkHeaderTagService markHeaderTagService;
|
|
|
+
|
|
|
@Resource
|
|
|
LockService lockService;
|
|
|
+
|
|
|
@Resource
|
|
|
ScanAnswerCardService scanAnswerCardService;
|
|
|
+
|
|
|
@Resource
|
|
|
TaskService taskService;
|
|
|
+
|
|
|
@Resource
|
|
|
TeachcloudCommonService teachcloudCommonService;
|
|
|
|
|
|
/**
|
|
|
* 释放某个评卷员已完成的评卷任务
|
|
|
*
|
|
|
- * @param submitResult 评卷结果
|
|
|
- * @param markUserGroup 评卷员
|
|
|
+ * @param submitResult
|
|
|
+ * 评卷结果
|
|
|
+ * @param markUserGroup
|
|
|
+ * 评卷员
|
|
|
*/
|
|
|
@Override
|
|
|
public void releaseTask(SubmitResult submitResult, MarkUserGroup markUserGroup) {
|
|
|
if (submitResult.getMarkLibrary() != null) {
|
|
|
TaskLock taskLock = TaskLockUtil.getFormalTask(getGroupKey(markUserGroup));
|
|
|
- taskLock.remove(submitResult.getMarkLibrary().getStudentId(), submitResult.getMarkLibrary().getTaskNumber(), markUserGroup.getId());
|
|
|
+ taskLock.remove(submitResult.getMarkLibrary().getStudentId(), submitResult.getMarkLibrary().getTaskNumber(),
|
|
|
+ markUserGroup.getId());
|
|
|
taskLock.refresh(markUserGroup.getId());
|
|
|
}
|
|
|
}
|
|
@@ -194,7 +217,8 @@ public class MarkServiceImpl implements MarkService {
|
|
|
|
|
|
@Override
|
|
|
public boolean rejectMarkTask(MarkProblemHistory markProblemHistory, MarkTask markTask, Long userId) {
|
|
|
- MarkPaper markPaper = markPaperService.getByExamIdAndPaperNumber(markTask.getExamId(), markTask.getPaperNumber());
|
|
|
+ MarkPaper markPaper = markPaperService.getByExamIdAndPaperNumber(markTask.getExamId(),
|
|
|
+ markTask.getPaperNumber());
|
|
|
if (markPaper.getStatus() == MarkPaperStatus.FINISH) {
|
|
|
return false;
|
|
|
}
|
|
@@ -203,8 +227,8 @@ public class MarkServiceImpl implements MarkService {
|
|
|
markTrackService.deleteByTaskId(markTask.getId());
|
|
|
resetStudentGroup(markTask.getStudentId(), markTask.getExamId(), markTask.getPaperNumber(),
|
|
|
markTask.getGroupNumber());
|
|
|
- markProblemHistoryService.resetByMarkProblemId(markProblemHistory.getId(), MarkProblemStatus.WAITING, userId,
|
|
|
- MarkProblemStatus.BACK, now);
|
|
|
+ markProblemHistoryService.resetByMarkProblemId(markProblemHistory.getId(), MarkProblemStatus.WAITING,
|
|
|
+ userId, MarkProblemStatus.BACK, now);
|
|
|
updateMarkedCount(markTask.getExamId(), markTask.getPaperNumber(), markTask.getGroupNumber());
|
|
|
return true;
|
|
|
} else {
|
|
@@ -218,7 +242,7 @@ public class MarkServiceImpl implements MarkService {
|
|
|
}
|
|
|
|
|
|
private void updateStudentGroupStatus(Long studentId, Long examId, String paperNumber, Integer groupNumber,
|
|
|
- SubjectiveStatus status) {
|
|
|
+ SubjectiveStatus status) {
|
|
|
MarkGroupStudent gs = new MarkGroupStudent();
|
|
|
gs.setStudentId(studentId);
|
|
|
gs.setExamId(examId);
|
|
@@ -286,7 +310,8 @@ public class MarkServiceImpl implements MarkService {
|
|
|
minScore = score;
|
|
|
}
|
|
|
}
|
|
|
- markUserGroupService.updateQualityById(markUserGroup.getId(), finishCount, headerFinishCount, validCount, avgSpent / 1000, avgScore, stdevScore, maxScore, minScore);
|
|
|
+ markUserGroupService.updateQualityById(markUserGroup.getId(), finishCount, headerFinishCount, validCount,
|
|
|
+ avgSpent / 1000, avgScore, stdevScore, maxScore, minScore);
|
|
|
markerLastUpdateTime.put(markUserGroup.getId(), System.currentTimeMillis());
|
|
|
}
|
|
|
|
|
@@ -321,12 +346,13 @@ public class MarkServiceImpl implements MarkService {
|
|
|
public void processArbitrate(MarkResult markResult, Long userId) {
|
|
|
MarkArbitrateHistory markArbitrateHistory = markArbitrateHistoryService.getById(markResult.getTaskId());
|
|
|
markArbitrateHistory.setUpdateUserId(userId);
|
|
|
- markArbitrateHistory.setTotalScore(markResult.isUnselective() ? UN_SELECTIVE_SCORE : markResult.getMarkerScore());
|
|
|
+ markArbitrateHistory
|
|
|
+ .setTotalScore(markResult.isUnselective() ? UN_SELECTIVE_SCORE : markResult.getMarkerScore());
|
|
|
markArbitrateHistory.setScoreList(markResult.isUnselective() ? null : markResult.getScoreList());
|
|
|
markArbitrateHistory.setStatus(MarkArbitrateStatus.MARKED);
|
|
|
markArbitrateHistory.setUpdateTime(System.currentTimeMillis());
|
|
|
// 保存阅卷轨迹
|
|
|
-// int unansweredCount = 0;
|
|
|
+ // int unansweredCount = 0;
|
|
|
if (markResult.getTrackList() != null && !markResult.isUnselective()) {
|
|
|
markHeaderTrackService.deleteByExamIdAndPaperNumberAndGroupNumberAndStudentId(
|
|
|
markArbitrateHistory.getExamId(), markArbitrateHistory.getPaperNumber(),
|
|
@@ -398,7 +424,8 @@ public class MarkServiceImpl implements MarkService {
|
|
|
log.info("start create library for examId=" + markPaper.getExamId() + ", paperNumber="
|
|
|
+ markPaper.getPaperNumber());
|
|
|
// 清除缺考考生和违纪考生
|
|
|
- List<MarkStudent> markStudentList = markStudentService.listAbsentOrBreachMarkTaskStudent(markPaper.getExamId(), markPaper.getPaperNumber());
|
|
|
+ List<MarkStudent> markStudentList = markStudentService
|
|
|
+ .listAbsentOrBreachMarkTaskStudent(markPaper.getExamId(), markPaper.getPaperNumber());
|
|
|
if (CollectionUtils.isNotEmpty(markStudentList)) {
|
|
|
for (MarkStudent student : markStudentList) {
|
|
|
try {
|
|
@@ -434,12 +461,15 @@ public class MarkServiceImpl implements MarkService {
|
|
|
return;
|
|
|
}
|
|
|
int count = 0;
|
|
|
- List<MarkStudent> studentList = markStudentService.listUnMarkTaskStudent(group.getExamId(), group.getPaperNumber(), group.getNumber(), pageSize);
|
|
|
+ List<MarkStudent> studentList = markStudentService.listUnMarkTaskStudent(group.getExamId(),
|
|
|
+ group.getPaperNumber(), group.getNumber(), pageSize);
|
|
|
while (CollectionUtils.isNotEmpty(studentList)) {
|
|
|
// 已生成的双评任务总数的第一组任务数
|
|
|
- int doubleMarkTaskCount1 = markTaskService.countByExamIdAndPaperNumberAndGroupNumberAndTaskNumber(group.getExamId(), group.getPaperNumber(), group.getNumber(), 1);
|
|
|
+ int doubleMarkTaskCount1 = markTaskService.countByExamIdAndPaperNumberAndGroupNumberAndTaskNumber(
|
|
|
+ group.getExamId(), group.getPaperNumber(), group.getNumber(), 1);
|
|
|
// 已生成的双评任务总数的第二组任务数
|
|
|
- int doubleMarkTaskCount2 = markTaskService.countByExamIdAndPaperNumberAndGroupNumberAndTaskNumber(group.getExamId(), group.getPaperNumber(), group.getNumber(), 2);
|
|
|
+ int doubleMarkTaskCount2 = markTaskService.countByExamIdAndPaperNumberAndGroupNumberAndTaskNumber(
|
|
|
+ group.getExamId(), group.getPaperNumber(), group.getNumber(), 2);
|
|
|
List<MarkTask> taskList = new ArrayList<>();
|
|
|
int doubleCount = 0;
|
|
|
int studentCount = studentList.size();
|
|
@@ -464,11 +494,13 @@ public class MarkServiceImpl implements MarkService {
|
|
|
needDouble = true;
|
|
|
} else {
|
|
|
double libraryCount = taskList.size();
|
|
|
- int expectCount = (int) ((doubleMarkTaskCount1 + studentCount) * group.getDoubleRate() / 100);
|
|
|
+ int expectCount = (int) ((doubleMarkTaskCount1 + studentCount) * group.getDoubleRate()
|
|
|
+ / 100);
|
|
|
// 随机数判断加入当前已经生成双评任务的比例加权
|
|
|
// 实际双评任务数小于理论生成数 &&(剩余未生成双评的考生数量小于剩余应生成的数量)
|
|
|
needDouble = (doubleMarkTaskCount2 + doubleCount) < expectCount
|
|
|
- && ((studentCount - libraryCount + doubleCount) <= (expectCount - doubleMarkTaskCount2 - doubleCount));
|
|
|
+ && ((studentCount - libraryCount + doubleCount) <= (expectCount
|
|
|
+ - doubleMarkTaskCount2 - doubleCount));
|
|
|
}
|
|
|
if (needDouble) {
|
|
|
markTask = new MarkTask();
|
|
@@ -501,7 +533,8 @@ public class MarkServiceImpl implements MarkService {
|
|
|
this.updateMarkedCount(group.getExamId(), group.getPaperNumber(), group.getNumber());
|
|
|
}
|
|
|
}
|
|
|
- studentList = markStudentService.listUnMarkTaskStudent(group.getExamId(), group.getPaperNumber(), group.getNumber(), pageSize);
|
|
|
+ studentList = markStudentService.listUnMarkTaskStudent(group.getExamId(), group.getPaperNumber(),
|
|
|
+ group.getNumber(), pageSize);
|
|
|
}
|
|
|
if (count != 0) {
|
|
|
log.info("finish create " + count + " markTask for examId=" + group.getExamId() + ", paperNumber="
|
|
@@ -518,6 +551,7 @@ public class MarkServiceImpl implements MarkService {
|
|
|
@Transactional
|
|
|
@Override
|
|
|
public void deleteMarkTaskByStudent(MarkStudent student) {
|
|
|
+ markStudentService.updateSubjectiveStatusAndScore(student.getId(), SubjectiveStatus.UNMARK, null, null);
|
|
|
// 正评相关数据
|
|
|
markTrackService.deleteByStudentId(student.getId());
|
|
|
markSpecialTagService.deleteByStudentId(student.getId());
|
|
@@ -529,12 +563,12 @@ public class MarkServiceImpl implements MarkService {
|
|
|
// 主观状态与得分明细
|
|
|
markGroupStudentService.deleteByStudentId(student.getId());
|
|
|
markSubjectiveScoreService.deleteByStudentId(student.getId());
|
|
|
-// selectiveStudentDao.deleteByStudentId(student.getId());
|
|
|
+ // selectiveStudentDao.deleteByStudentId(student.getId());
|
|
|
updateGroupAllCount(student.getExamId(), student.getPaperNumber());
|
|
|
// 复核记录
|
|
|
-// inspectedService.clearByStudent(student.getId());
|
|
|
+ // inspectedService.clearByStudent(student.getId());
|
|
|
// 打回记录
|
|
|
-// rejectHistoryDao.deleteByStudentId(student.getId());
|
|
|
+ // rejectHistoryDao.deleteByStudentId(student.getId());
|
|
|
}
|
|
|
|
|
|
@Transactional
|
|
@@ -590,35 +624,35 @@ public class MarkServiceImpl implements MarkService {
|
|
|
detail = scores;
|
|
|
} else {
|
|
|
switch (policy) {
|
|
|
- case AVG:
|
|
|
- // 直接累加
|
|
|
- score = BigDecimalUtils.add(score, current);
|
|
|
- for (int i = 0; i < detail.size(); i++) {
|
|
|
- try {
|
|
|
- ScoreItem item = detail.get(i);
|
|
|
- ScoreItem other = scores.get(i);
|
|
|
- item.setScore(BigDecimalUtils.add(item.getScore(), other.getScore()));
|
|
|
- } catch (Exception e) {
|
|
|
- continue;
|
|
|
- }
|
|
|
+ case AVG:
|
|
|
+ // 直接累加
|
|
|
+ score = BigDecimalUtils.add(score, current);
|
|
|
+ for (int i = 0; i < detail.size(); i++) {
|
|
|
+ try {
|
|
|
+ ScoreItem item = detail.get(i);
|
|
|
+ ScoreItem other = scores.get(i);
|
|
|
+ item.setScore(BigDecimalUtils.add(item.getScore(), other.getScore()));
|
|
|
+ } catch (Exception e) {
|
|
|
+ continue;
|
|
|
}
|
|
|
- break;
|
|
|
- case MAX:
|
|
|
- // 高分优先
|
|
|
- if (current > score) {
|
|
|
- score = current;
|
|
|
- detail = scores;
|
|
|
- }
|
|
|
- break;
|
|
|
- case MIN:
|
|
|
- // 低分优先
|
|
|
- if (current < score) {
|
|
|
- score = current;
|
|
|
- detail = scores;
|
|
|
- }
|
|
|
- break;
|
|
|
- default:
|
|
|
- break;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case MAX:
|
|
|
+ // 高分优先
|
|
|
+ if (current > score) {
|
|
|
+ score = current;
|
|
|
+ detail = scores;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case MIN:
|
|
|
+ // 低分优先
|
|
|
+ if (current < score) {
|
|
|
+ score = current;
|
|
|
+ detail = scores;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -635,7 +669,7 @@ public class MarkServiceImpl implements MarkService {
|
|
|
}
|
|
|
|
|
|
private void updateStudentGroupScore(Long studentId, Long examId, String paperNumber, MarkGroup group, double score,
|
|
|
- List<ScoreItem> scoreList) {
|
|
|
+ List<ScoreItem> scoreList) {
|
|
|
// scoreDao.deleteByStudentIdAndGroupNumber(studentId, groupNumber);
|
|
|
List<MarkQuestion> questions = markQuestionService.listQuestionByExamIdAndPaperNumberAndGroupNumber(examId,
|
|
|
paperNumber, group.getNumber(), false);
|
|
@@ -666,11 +700,14 @@ public class MarkServiceImpl implements MarkService {
|
|
|
ss.setMainScore(score);
|
|
|
ss.setUncalculate(true);
|
|
|
}
|
|
|
-// if (group.getArbitrateThreshold() != null && group.getArbitrateThreshold() > 0) {
|
|
|
-// ss.setUnansweredCount(markHeaderTrackService.countByStudentIdAndQuestionNumberAndUnanswered(studentId, question.getQuestionNumber(), true));
|
|
|
-// } else {
|
|
|
-// ss.setUnansweredCount(markTaskService.countByStudentIdAndQuestionNumberAndUnanswered(studentId, question.getQuestionNumber(), true));
|
|
|
-// }
|
|
|
+ // if (group.getArbitrateThreshold() != null && group.getArbitrateThreshold() >
|
|
|
+ // 0) {
|
|
|
+ // ss.setUnansweredCount(markHeaderTrackService.countByStudentIdAndQuestionNumberAndUnanswered(studentId,
|
|
|
+ // question.getQuestionNumber(), true));
|
|
|
+ // } else {
|
|
|
+ // ss.setUnansweredCount(markTaskService.countByStudentIdAndQuestionNumberAndUnanswered(studentId,
|
|
|
+ // question.getQuestionNumber(), true));
|
|
|
+ // }
|
|
|
markSubjectiveScoreService.saveOrUpdateByMultiId(ss);
|
|
|
}
|
|
|
}
|
|
@@ -682,7 +719,7 @@ public class MarkServiceImpl implements MarkService {
|
|
|
|
|
|
// 循环所有主观得分明细
|
|
|
List<MarkSubjectiveScore> list = markSubjectiveScoreService.listByStudentIdAndGroupNumber(studentId, null);
|
|
|
-// list.sort(null);
|
|
|
+ // list.sort(null);
|
|
|
for (MarkSubjectiveScore ss : list) {
|
|
|
List<MarkSubjectiveScore> mainScoreList = mainScoreMap.get(ss.getMainNumber());
|
|
|
if (mainScoreList == null) {
|
|
@@ -719,7 +756,8 @@ public class MarkServiceImpl implements MarkService {
|
|
|
totalScore = totalScore.add(BigDecimal.valueOf(scoreMap.get(mainNumber)));
|
|
|
}
|
|
|
// 全部评完,更新考生主观题得分
|
|
|
- markStudentService.updateSubjectiveStatusAndScore(studentId, SubjectiveStatus.MARKED, totalScore.doubleValue(), MarkStudent.buildScoreList(scoreList));
|
|
|
+ markStudentService.updateSubjectiveStatusAndScore(studentId, SubjectiveStatus.MARKED, totalScore.doubleValue(),
|
|
|
+ MarkStudent.buildScoreList(scoreList));
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -730,15 +768,18 @@ public class MarkServiceImpl implements MarkService {
|
|
|
|
|
|
MarkSettingDto dto = new MarkSettingDto();
|
|
|
dto.setExamType(ExamType.SCAN_IMAGE);
|
|
|
- dto.setMode(markUserGroup != null && markUserGroup.getMode() != null ? markUserGroup.getMode() : MarkMode.UNLIMITED.equals(markPaper.getMarkMode()) ? MarkMode.TRACK : markPaper.getMarkMode());
|
|
|
+ dto.setMode(markUserGroup != null && markUserGroup.getMode() != null ? markUserGroup.getMode()
|
|
|
+ : MarkMode.UNLIMITED.equals(markPaper.getMarkMode()) ? MarkMode.TRACK : markPaper.getMarkMode());
|
|
|
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()));
|
|
|
- dto.getSubject().setPaperUrl(StringUtils.isBlank(markPaper.getPaperFilePath()) ? null : teachcloudCommonService.filePreview(markPaper.getPaperFilePath()));
|
|
|
+ dto.getSubject().setAnswerUrl(StringUtils.isBlank(markPaper.getAnswerFilePath()) ? null
|
|
|
+ : teachcloudCommonService.filePreview(markPaper.getAnswerFilePath()));
|
|
|
+ dto.getSubject().setPaperUrl(StringUtils.isBlank(markPaper.getPaperFilePath()) ? null
|
|
|
+ : teachcloudCommonService.filePreview(markPaper.getPaperFilePath()));
|
|
|
dto.getSubject().setCode(markPaper.getPaperNumber());
|
|
|
dto.getSubject().setName(markPaper.getCourseName());
|
|
|
dto.setForceSpecialTag(false);
|
|
@@ -768,7 +809,8 @@ public class MarkServiceImpl implements MarkService {
|
|
|
dto.setMarkedCount(markTaskService.countByExamIdAndPaperNumberAndGroupNumberAndStatusIn(examId, paperNumber,
|
|
|
markUserGroup.getGroupNumber(), Arrays.asList(MarkTaskStatus.MARKED, MarkTaskStatus.ARBITRATED)));
|
|
|
dto.setPersonCount(markTaskService.countByExamIdAndPaperNumberAndGroupNumberAndUserIdAndStatusIn(examId,
|
|
|
- paperNumber, groupNumber, userId, MarkTaskStatus.MARKED, MarkTaskStatus.ARBITRATED, MarkTaskStatus.WAIT_ARBITRATE));
|
|
|
+ paperNumber, groupNumber, userId, MarkTaskStatus.MARKED, MarkTaskStatus.ARBITRATED,
|
|
|
+ MarkTaskStatus.WAIT_ARBITRATE));
|
|
|
dto.setProblemCount(markTaskService.countProblemByExamIdAndPaperNumberAndGroupNumberAndStatusIn(examId,
|
|
|
paperNumber, groupNumber, MarkTaskStatus.PROBLEM));
|
|
|
dto.setTotalCount(markTaskService.countByExamIdAndPaperNumberAndGroupNumber(examId, paperNumber, groupNumber));
|
|
@@ -802,32 +844,45 @@ public class MarkServiceImpl implements MarkService {
|
|
|
public void clear(Long userId, Long examId, String paperNumber, Integer groupNumber) {
|
|
|
String key = examId + "_" + paperNumber + "_" + groupNumber;
|
|
|
TaskLock taskLock = TaskLockUtil.getFormalTask(key);
|
|
|
- MarkUserGroup markUserGroup = markUserGroupService.getByExamIdAndPaperNumberAndGroupNumberAndUserId(examId, paperNumber, groupNumber, userId);
|
|
|
+ MarkUserGroup markUserGroup = markUserGroupService.getByExamIdAndPaperNumberAndGroupNumberAndUserId(examId,
|
|
|
+ paperNumber, groupNumber, userId);
|
|
|
taskLock.clear(markUserGroup.getId());
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public void deleteMarkGroup(MarkGroup markGroup, boolean deleteGroupInfo) {
|
|
|
// 正评相关数据
|
|
|
- markTrackService.deleteByExamIdAndPaperNumberAndGroupNumber(markGroup.getExamId(), markGroup.getPaperNumber(), markGroup.getNumber());
|
|
|
- markSpecialTagService.deleteByExamIdAndPaperNumberAndGroupNumber(markGroup.getExamId(), markGroup.getPaperNumber(), markGroup.getNumber());
|
|
|
- markHeaderTrackService.deleteByExamIdAndPaperNumberAndGroupNumberAndStudentId(markGroup.getExamId(), markGroup.getPaperNumber(), markGroup.getNumber(), null);
|
|
|
- markHeaderTagService.deleteByExamIdAndPaperNumberAndGroupNumber(markGroup.getExamId(), markGroup.getPaperNumber(), markGroup.getNumber());
|
|
|
- markArbitrateHistoryService.deleteByExamIdAndPaperNumberAndGroupNumber(markGroup.getExamId(), markGroup.getPaperNumber(), markGroup.getNumber());
|
|
|
- markProblemHistoryService.deleteByExamIdAndPaperNumberAndGroupNumber(markGroup.getExamId(), markGroup.getPaperNumber(), markGroup.getNumber());
|
|
|
- markTaskService.deleteByExamIdAndPaperNumberAndGroupNumber(markGroup.getExamId(), markGroup.getPaperNumber(), markGroup.getNumber());
|
|
|
+ markTrackService.deleteByExamIdAndPaperNumberAndGroupNumber(markGroup.getExamId(), markGroup.getPaperNumber(),
|
|
|
+ markGroup.getNumber());
|
|
|
+ markSpecialTagService.deleteByExamIdAndPaperNumberAndGroupNumber(markGroup.getExamId(),
|
|
|
+ markGroup.getPaperNumber(), markGroup.getNumber());
|
|
|
+ markHeaderTrackService.deleteByExamIdAndPaperNumberAndGroupNumberAndStudentId(markGroup.getExamId(),
|
|
|
+ markGroup.getPaperNumber(), markGroup.getNumber(), null);
|
|
|
+ markHeaderTagService.deleteByExamIdAndPaperNumberAndGroupNumber(markGroup.getExamId(),
|
|
|
+ markGroup.getPaperNumber(), markGroup.getNumber());
|
|
|
+ markArbitrateHistoryService.deleteByExamIdAndPaperNumberAndGroupNumber(markGroup.getExamId(),
|
|
|
+ markGroup.getPaperNumber(), markGroup.getNumber());
|
|
|
+ markProblemHistoryService.deleteByExamIdAndPaperNumberAndGroupNumber(markGroup.getExamId(),
|
|
|
+ markGroup.getPaperNumber(), markGroup.getNumber());
|
|
|
+ markTaskService.deleteByExamIdAndPaperNumberAndGroupNumber(markGroup.getExamId(), markGroup.getPaperNumber(),
|
|
|
+ markGroup.getNumber());
|
|
|
// 考生分组状态与得分明细
|
|
|
- markGroupStudentService.deleteByExamIdAndPaperNumberAndGroupNumber(markGroup.getExamId(), markGroup.getPaperNumber(), markGroup.getNumber());
|
|
|
- markSubjectiveScoreService.deleteByExamIdAndPaperNumberAndGroupNumber(markGroup.getExamId(), markGroup.getPaperNumber(), markGroup.getNumber());
|
|
|
+ markGroupStudentService.deleteByExamIdAndPaperNumberAndGroupNumber(markGroup.getExamId(),
|
|
|
+ markGroup.getPaperNumber(), markGroup.getNumber());
|
|
|
+ markSubjectiveScoreService.deleteByExamIdAndPaperNumberAndGroupNumber(markGroup.getExamId(),
|
|
|
+ markGroup.getPaperNumber(), markGroup.getNumber());
|
|
|
// 删除分组
|
|
|
releaseByMarkGroup(markGroup);
|
|
|
// 删除分组时,同步删除评卷员、分组等信息
|
|
|
if (deleteGroupInfo) {
|
|
|
// 评卷员数据
|
|
|
- markUserGroupService.deleteByExamIdAndPaperNumberAndGroupNumber(markGroup.getExamId(), markGroup.getPaperNumber(), markGroup.getNumber());
|
|
|
+ markUserGroupService.deleteByExamIdAndPaperNumberAndGroupNumber(markGroup.getExamId(),
|
|
|
+ markGroup.getPaperNumber(), markGroup.getNumber());
|
|
|
// 小题数据
|
|
|
- markQuestionService.updateGroupNumberByExamIdAndPaperNumberAndGroupNumber(null, markGroup.getExamId(), markGroup.getPaperNumber(), markGroup.getNumber());
|
|
|
- markGroupService.deleteByExamIdAndPaperNumberAndGroupNumber(markGroup.getExamId(), markGroup.getPaperNumber(), markGroup.getNumber());
|
|
|
+ markQuestionService.updateGroupNumberByExamIdAndPaperNumberAndGroupNumber(null, markGroup.getExamId(),
|
|
|
+ markGroup.getPaperNumber(), markGroup.getNumber());
|
|
|
+ markGroupService.deleteByExamIdAndPaperNumberAndGroupNumber(markGroup.getExamId(),
|
|
|
+ markGroup.getPaperNumber(), markGroup.getNumber());
|
|
|
// 更新MarkPaper中groupStatus
|
|
|
updateMarkGroupStatus(markGroup.getExamId(), markGroup.getPaperNumber());
|
|
|
}
|
|
@@ -836,12 +891,15 @@ public class MarkServiceImpl implements MarkService {
|
|
|
long unGroupQuestionCount = markQuestionService.countByExamIdAndPaperNumberAndObjectiveAndGroupNumberIsNull(
|
|
|
markGroup.getExamId(), markGroup.getPaperNumber(), false);
|
|
|
// 考生整体状态与总分更新
|
|
|
- long groupCount = markGroupService.countByExamIdAndPaperNumber(markGroup.getExamId(), markGroup.getPaperNumber());
|
|
|
+ long groupCount = markGroupService.countByExamIdAndPaperNumber(markGroup.getExamId(),
|
|
|
+ markGroup.getPaperNumber());
|
|
|
if (groupCount == 0 || unGroupQuestionCount > 0) {
|
|
|
- markStudentService.updateSubjectiveStatusAndScore(markGroup.getExamId(), markGroup.getPaperNumber(), SubjectiveStatus.UNMARK, 0D, null);
|
|
|
+ markStudentService.updateSubjectiveStatusAndScore(markGroup.getExamId(), markGroup.getPaperNumber(),
|
|
|
+ SubjectiveStatus.UNMARK, 0D, null);
|
|
|
} else {
|
|
|
List<Long> studentList = markStudentService.findIdByExamIdAndPaperNumberAndSubjectiveStatus(
|
|
|
- markGroup.getExamId(), markGroup.getPaperNumber(), SubjectiveStatus.UNMARK, SubjectiveStatus.MARKED);
|
|
|
+ markGroup.getExamId(), markGroup.getPaperNumber(), SubjectiveStatus.UNMARK,
|
|
|
+ SubjectiveStatus.MARKED);
|
|
|
for (Long studentId : studentList) {
|
|
|
checkStudentSubjective(studentId, groupCount, unGroupQuestionCount);
|
|
|
}
|
|
@@ -882,13 +940,15 @@ public class MarkServiceImpl implements MarkService {
|
|
|
Long userId = ServletUtil.getRequestUserId();
|
|
|
for (MarkHeaderGroupResult groupResult : markHeaderGroupResultList) {
|
|
|
try {
|
|
|
- lockService.watch(LockType.GROUP, markStudent.getExamId(), markStudent.getPaperNumber(), groupResult.getGroupNumber());
|
|
|
+ lockService.watch(LockType.GROUP, markStudent.getExamId(), markStudent.getPaperNumber(),
|
|
|
+ groupResult.getGroupNumber());
|
|
|
Long currentTime = System.currentTimeMillis();
|
|
|
if (groupResult.getTrackList() != null) {
|
|
|
for (MarkScoreList scoreList : groupResult.getMarkerScore()) {
|
|
|
String questionNumber = scoreList.getMainNumber() + "." + scoreList.getSubNumber();
|
|
|
- markHeaderTrackService.deleteByExamIdAndPaperNumberAndGroupNumberAndStudentIdAndQuestionNumber(markStudent.getExamId(),
|
|
|
- markStudent.getPaperNumber(), groupResult.getGroupNumber(), groupResult.getStudentId(), questionNumber);
|
|
|
+ markHeaderTrackService.deleteByExamIdAndPaperNumberAndGroupNumberAndStudentIdAndQuestionNumber(
|
|
|
+ markStudent.getExamId(), markStudent.getPaperNumber(), groupResult.getGroupNumber(),
|
|
|
+ groupResult.getStudentId(), questionNumber);
|
|
|
}
|
|
|
List<MarkHeaderTrack> tracks = groupResult.getTrackList(groupResult, markStudent, userId);
|
|
|
markHeaderTrackService.saveOrUpdateBatchByMultiId(tracks);
|
|
@@ -901,39 +961,47 @@ public class MarkServiceImpl implements MarkService {
|
|
|
}
|
|
|
updateMarkSubjectScore(markStudent, groupResult);
|
|
|
markTaskService.updateHeaderResult(markStudent.getExamId(), markStudent.getPaperNumber(),
|
|
|
- groupResult.getGroupNumber(), groupResult.getStudentId(), userId,
|
|
|
- groupResult.getGroupScore(), groupResult.getScoreList(), currentTime, MarkTaskStatus.MARKED);
|
|
|
+ groupResult.getGroupNumber(), groupResult.getStudentId(), userId, groupResult.getGroupScore(),
|
|
|
+ groupResult.getScoreList(), currentTime, MarkTaskStatus.MARKED);
|
|
|
updateMarkedCount(markStudent.getExamId(), markStudent.getPaperNumber(), groupResult.getGroupNumber());
|
|
|
markStudentService.updateCheckInfo(markStudent.getId(), userId);
|
|
|
- checkStudentGroup(groupResult.getStudentId(),
|
|
|
- markGroupService.getByExamIdAndPaperNumberAndGroupNumber(markStudent.getExamId(), markStudent.getPaperNumber(), groupResult.getGroupNumber()));
|
|
|
+ checkStudentGroup(groupResult.getStudentId(), markGroupService.getByExamIdAndPaperNumberAndGroupNumber(
|
|
|
+ markStudent.getExamId(), markStudent.getPaperNumber(), groupResult.getGroupNumber()));
|
|
|
} catch (ApiException e) {
|
|
|
throw ExceptionResultEnum.ERROR.exception(e.getMessage());
|
|
|
} finally {
|
|
|
- lockService.unwatch(LockType.GROUP, markStudent.getExamId(), markStudent.getPaperNumber(), groupResult.getGroupNumber());
|
|
|
+ lockService.unwatch(LockType.GROUP, markStudent.getExamId(), markStudent.getPaperNumber(),
|
|
|
+ groupResult.getGroupNumber());
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// 未分组的题目
|
|
|
- long unGroupQuestionCount = markQuestionService.countByExamIdAndPaperNumberAndObjectiveAndGroupNumberIsNull(markStudent.getExamId(), markStudent.getPaperNumber(), false);
|
|
|
- long groupCount = CollectionUtils.size(markGroupService.listGroupByExamIdAndPaperNumber(markStudent.getExamId(), markStudent.getPaperNumber()));
|
|
|
+ long unGroupQuestionCount = markQuestionService.countByExamIdAndPaperNumberAndObjectiveAndGroupNumberIsNull(
|
|
|
+ markStudent.getExamId(), markStudent.getPaperNumber(), false);
|
|
|
+ long groupCount = CollectionUtils.size(markGroupService.listGroupByExamIdAndPaperNumber(markStudent.getExamId(),
|
|
|
+ markStudent.getPaperNumber()));
|
|
|
checkStudentSubjective(markStudent.getId(), groupCount, unGroupQuestionCount);
|
|
|
}
|
|
|
|
|
|
private void updateMarkSubjectScore(MarkStudent markStudent, MarkHeaderGroupResult groupResult) {
|
|
|
- List<MarkSubjectiveScore> markSubjectiveScoreList = markSubjectiveScoreService.listByStudentIdAndGroupNumber(markStudent.getId(), groupResult.getGroupNumber());
|
|
|
- markSubjectiveScoreList.sort(Comparator.comparing(MarkSubjectiveScore::getMainNumber).thenComparingInt(MarkSubjectiveScore::getSubNumber));
|
|
|
+ List<MarkSubjectiveScore> markSubjectiveScoreList = markSubjectiveScoreService
|
|
|
+ .listByStudentIdAndGroupNumber(markStudent.getId(), groupResult.getGroupNumber());
|
|
|
+ markSubjectiveScoreList.sort(Comparator.comparing(MarkSubjectiveScore::getMainNumber)
|
|
|
+ .thenComparingInt(MarkSubjectiveScore::getSubNumber));
|
|
|
List<Double> scoreList = new ArrayList<>();
|
|
|
for (MarkSubjectiveScore markSubjectiveScore : markSubjectiveScoreList) {
|
|
|
List<MarkScoreList> markScoreLists = groupResult.getMarkerScore();
|
|
|
- Optional<MarkScoreList> optional = markScoreLists.stream().filter(m -> m.getMainNumber().equals(markSubjectiveScore.getMainNumber()) && m.getSubNumber().equals(markSubjectiveScore.getSubNumber())).findFirst();
|
|
|
+ Optional<MarkScoreList> optional = markScoreLists.stream()
|
|
|
+ .filter(m -> m.getMainNumber().equals(markSubjectiveScore.getMainNumber())
|
|
|
+ && m.getSubNumber().equals(markSubjectiveScore.getSubNumber()))
|
|
|
+ .findFirst();
|
|
|
if (optional.isPresent()) {
|
|
|
markSubjectiveScore.setScore(optional.get().getScore());
|
|
|
}
|
|
|
scoreList.add(markSubjectiveScore.getScore());
|
|
|
}
|
|
|
groupResult.setGroupScore(scoreList.stream().collect(Collectors.summingDouble(x -> x)));
|
|
|
- groupResult.setScoreList(scoreList.toArray(new Double[]{}));
|
|
|
+ groupResult.setScoreList(scoreList.toArray(new Double[] {}));
|
|
|
markSubjectiveScoreService.saveOrUpdateBatchByMultiId(markSubjectiveScoreList);
|
|
|
}
|
|
|
|
|
@@ -943,7 +1011,7 @@ public class MarkServiceImpl implements MarkService {
|
|
|
|
|
|
@Override
|
|
|
public IPage<Task> getHistory(Long userId, int pageNumber, int pageSize, Sort sort, String order, Long examId,
|
|
|
- String paperNumber, Integer groupNumber, String secretNumber, Double markerScore) {
|
|
|
+ String paperNumber, Integer groupNumber, String secretNumber, Double markerScore) {
|
|
|
if (!"marker_time".equals(order) && !"marker_score".equals(order)) {
|
|
|
order = "marker_time";
|
|
|
}
|
|
@@ -981,7 +1049,8 @@ public class MarkServiceImpl implements MarkService {
|
|
|
if (group == null) {
|
|
|
throw ExceptionResultEnum.ERROR.exception("评卷大题不存在");
|
|
|
}
|
|
|
- MarkUserGroup markUserGroup = markUserGroupService.getByExamIdAndPaperNumberAndGroupNumberAndUserId(examId, paperNumber, groupNumber, userId);
|
|
|
+ MarkUserGroup markUserGroup = markUserGroupService.getByExamIdAndPaperNumberAndGroupNumberAndUserId(examId,
|
|
|
+ paperNumber, groupNumber, userId);
|
|
|
Task task = null;
|
|
|
List<MarkTask> list;
|
|
|
int pageNumber = 1;
|
|
@@ -1047,13 +1116,15 @@ public class MarkServiceImpl implements MarkService {
|
|
|
public void calcObjectiveScore(MarkPaper markPaper) {
|
|
|
int pageNumber = 1;
|
|
|
int pageSize = 1000;
|
|
|
- IPage<MarkStudent> iPage = markStudentService.pageByExamAndPaperNumber(markPaper.getExamId(), markPaper.getPaperNumber(), pageNumber, pageSize);
|
|
|
+ IPage<MarkStudent> iPage = markStudentService.pageByExamAndPaperNumber(markPaper.getExamId(),
|
|
|
+ markPaper.getPaperNumber(), pageNumber, pageSize);
|
|
|
while (CollectionUtils.isNotEmpty(iPage.getRecords())) {
|
|
|
for (MarkStudent student : iPage.getRecords()) {
|
|
|
calculate(student);
|
|
|
}
|
|
|
pageNumber++;
|
|
|
- iPage = markStudentService.pageByExamAndPaperNumber(markPaper.getExamId(), markPaper.getPaperNumber(), pageNumber, pageSize);
|
|
|
+ iPage = markStudentService.pageByExamAndPaperNumber(markPaper.getExamId(), markPaper.getPaperNumber(),
|
|
|
+ pageNumber, pageSize);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -1075,7 +1146,8 @@ public class MarkServiceImpl implements MarkService {
|
|
|
|
|
|
@Override
|
|
|
public SubmitResult saveTask(Long examId, String paperNumber, Integer groupNumber, Long userId, MarkResult result) {
|
|
|
- MarkUserGroup markUserGroup = markUserGroupService.getByExamIdAndPaperNumberAndGroupNumberAndUserId(examId, paperNumber, groupNumber, userId);
|
|
|
+ MarkUserGroup markUserGroup = markUserGroupService.getByExamIdAndPaperNumberAndGroupNumberAndUserId(examId,
|
|
|
+ paperNumber, groupNumber, userId);
|
|
|
if (markUserGroup == null) {
|
|
|
throw ExceptionResultEnum.ERROR.exception("评卷员未绑定该评卷任务");
|
|
|
}
|
|
@@ -1087,7 +1159,8 @@ public class MarkServiceImpl implements MarkService {
|
|
|
SubmitResult sr = null;
|
|
|
try {
|
|
|
lockService.watch(LockType.EXAM_SUBJECT, markUserGroup.getExamId(), markUserGroup.getPaperNumber());
|
|
|
- lockService.watch(LockType.GROUP, markUserGroup.getExamId(), markUserGroup.getPaperNumber(), markUserGroup.getGroupNumber());
|
|
|
+ lockService.watch(LockType.GROUP, markUserGroup.getExamId(), markUserGroup.getPaperNumber(),
|
|
|
+ markUserGroup.getGroupNumber());
|
|
|
lockService.watch(LockType.MARK_USER_GROUP, markUserGroup.getId());
|
|
|
lockService.waitlock(LockType.STUDENT, result.getStudentId());
|
|
|
sr = submitResult(markUserGroup, group, userId, result);
|
|
@@ -1099,7 +1172,8 @@ public class MarkServiceImpl implements MarkService {
|
|
|
} finally {
|
|
|
lockService.unlock(LockType.STUDENT, result.getStudentId());
|
|
|
lockService.unwatch(LockType.MARK_USER_GROUP, markUserGroup.getId());
|
|
|
- lockService.unwatch(LockType.GROUP, markUserGroup.getExamId(), markUserGroup.getPaperNumber(), markUserGroup.getGroupNumber());
|
|
|
+ lockService.unwatch(LockType.GROUP, markUserGroup.getExamId(), markUserGroup.getPaperNumber(),
|
|
|
+ markUserGroup.getGroupNumber());
|
|
|
lockService.unwatch(LockType.EXAM_SUBJECT, markUserGroup.getExamId(), markUserGroup.getPaperNumber());
|
|
|
}
|
|
|
|
|
@@ -1167,7 +1241,8 @@ public class MarkServiceImpl implements MarkService {
|
|
|
}
|
|
|
|
|
|
private boolean submitTask(MarkTask task, Long userId, MarkGroup group, MarkResult result) {
|
|
|
- MarkUserGroup markUserGroup = markUserGroupService.getByExamIdAndPaperNumberAndGroupNumberAndUserId(group.getExamId(), group.getPaperNumber(), group.getNumber(), userId);
|
|
|
+ MarkUserGroup markUserGroup = markUserGroupService.getByExamIdAndPaperNumberAndGroupNumberAndUserId(
|
|
|
+ group.getExamId(), group.getPaperNumber(), group.getNumber(), userId);
|
|
|
// 非本人领取的待评任务
|
|
|
if ((task.getStatus() == MarkTaskStatus.WAITING || task.getStatus() == MarkTaskStatus.REJECTED)
|
|
|
&& !hasApplied(task, markUserGroup.getId())) {
|
|
@@ -1178,16 +1253,17 @@ public class MarkServiceImpl implements MarkService {
|
|
|
return false;
|
|
|
}
|
|
|
// 是否多评情况下已处理过该考生评卷任务
|
|
|
- if (markTaskService.countByStudentIdAndMarkerIdAndIdNotEqual(task.getStudentId(), task.getExamId(), task.getPaperNumber(), task.getGroupNumber(), userId, task.getId()) > 0) {
|
|
|
+ if (markTaskService.countByStudentIdAndMarkerIdAndIdNotEqual(task.getStudentId(), task.getExamId(),
|
|
|
+ task.getPaperNumber(), task.getGroupNumber(), userId, task.getId()) > 0) {
|
|
|
return false;
|
|
|
}
|
|
|
// 未选做
|
|
|
-// if (result.isUnselective() && group.isSelective()) {
|
|
|
-// result.setMarkerScore(UN_SELECTIVE_SCORE);
|
|
|
-// result.setScoreList(new Double[0]);
|
|
|
-// trackDao.deleteByLibraryId(library.getId());
|
|
|
-// specialTagDao.deleteByLibraryId(library.getId());
|
|
|
-// }
|
|
|
+ // if (result.isUnselective() && group.isSelective()) {
|
|
|
+ // result.setMarkerScore(UN_SELECTIVE_SCORE);
|
|
|
+ // result.setScoreList(new Double[0]);
|
|
|
+ // trackDao.deleteByLibraryId(library.getId());
|
|
|
+ // specialTagDao.deleteByLibraryId(library.getId());
|
|
|
+ // }
|
|
|
// 尝试提交评卷结果
|
|
|
Long now = System.currentTimeMillis();
|
|
|
if (!markTaskService.updateMarkerResult(task.getId(), MarkTaskStatus.MARKED, userId, result.getMarkerScore(),
|
|
@@ -1197,16 +1273,16 @@ public class MarkServiceImpl implements MarkService {
|
|
|
return false;
|
|
|
}
|
|
|
// 保存阅卷轨迹
|
|
|
-// int unansweredCount = 0;
|
|
|
+ // int unansweredCount = 0;
|
|
|
if (result.getTrackList() != null && !result.isUnselective()) {
|
|
|
markTrackService.deleteByTaskId(task.getId());
|
|
|
markTrackService.saveBatch(result.getTrackList(task, userId));
|
|
|
-// for (MarkTrack markTrack : tracks) {
|
|
|
-// if (markTrack.isUnanswered()) {
|
|
|
-// unansweredCount++;
|
|
|
-// }
|
|
|
-// }
|
|
|
-// libraryDao.updateUnansweredCount(library.getId(), unansweredCount);
|
|
|
+ // for (MarkTrack markTrack : tracks) {
|
|
|
+ // if (markTrack.isUnanswered()) {
|
|
|
+ // unansweredCount++;
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // libraryDao.updateUnansweredCount(library.getId(), unansweredCount);
|
|
|
}
|
|
|
// 保存特殊标记
|
|
|
if (result.getSpecialTagList() != null && !result.isUnselective()) {
|
|
@@ -1225,32 +1301,37 @@ public class MarkServiceImpl implements MarkService {
|
|
|
continue;
|
|
|
}
|
|
|
// 均为未选做,跳过该任务
|
|
|
-// if (other.getMarkerScore() == UN_SELECTIVE_SCORE && result.getMarkerScore() == UN_SELECTIVE_SCORE) {
|
|
|
-// continue;
|
|
|
-// }
|
|
|
+ // if (other.getMarkerScore() == UN_SELECTIVE_SCORE && result.getMarkerScore()
|
|
|
+ // == UN_SELECTIVE_SCORE) {
|
|
|
+ // continue;
|
|
|
+ // }
|
|
|
// 其中一个有分另一个未选做 直接进入仲裁
|
|
|
-// if ((other.getMarkerScore() != UN_SELECTIVE_SCORE && result.getMarkerScore() == UN_SELECTIVE_SCORE)
|
|
|
-// || (other.getMarkerScore() == UN_SELECTIVE_SCORE && result.getMarkerScore() != UN_SELECTIVE_SCORE)) {
|
|
|
-// history = buildArbitrateHistory(library, now);
|
|
|
-// break;
|
|
|
-// }
|
|
|
+ // if ((other.getMarkerScore() != UN_SELECTIVE_SCORE && result.getMarkerScore()
|
|
|
+ // == UN_SELECTIVE_SCORE)
|
|
|
+ // || (other.getMarkerScore() == UN_SELECTIVE_SCORE && result.getMarkerScore()
|
|
|
+ // != UN_SELECTIVE_SCORE)) {
|
|
|
+ // history = buildArbitrateHistory(library, now);
|
|
|
+ // break;
|
|
|
+ // }
|
|
|
// 分差超过阀值
|
|
|
if (Math.abs(other.getMarkerScore() - result.getMarkerScore()) > group.getArbitrateThreshold()) {
|
|
|
// 开启三评
|
|
|
-// if (group.getThirdPolicy().equals(ThirdPolicy.LOW_DIFF_HIGH_AVG)) {
|
|
|
-// if (libraryDao.countByStudentIdAndGroupNumber(library.getStudentId(), library.getGroupNumber()) == 2) {
|
|
|
-// buildThirdLibrary(library, group);
|
|
|
-// } else {
|
|
|
-// // 两两比较,触发仲裁
|
|
|
-// List<MarkLibrary> libraries = libraryDao.findByStudentIdAndGroupNumber(
|
|
|
-// library.getStudentId(), library.getGroupNumber());
|
|
|
-// history = buildArbitrateHistory(libraries, group.getArbitrateThreshold(), now);
|
|
|
-// }
|
|
|
-// } else {
|
|
|
+ // if (group.getThirdPolicy().equals(ThirdPolicy.LOW_DIFF_HIGH_AVG)) {
|
|
|
+ // if (libraryDao.countByStudentIdAndGroupNumber(library.getStudentId(),
|
|
|
+ // library.getGroupNumber()) == 2) {
|
|
|
+ // buildThirdLibrary(library, group);
|
|
|
+ // } else {
|
|
|
+ // // 两两比较,触发仲裁
|
|
|
+ // List<MarkLibrary> libraries = libraryDao.findByStudentIdAndGroupNumber(
|
|
|
+ // library.getStudentId(), library.getGroupNumber());
|
|
|
+ // history = buildArbitrateHistory(libraries, group.getArbitrateThreshold(),
|
|
|
+ // now);
|
|
|
+ // }
|
|
|
+ // } else {
|
|
|
// 未开启三评,触发仲裁
|
|
|
history = buildArbitrateHistory(task, now);
|
|
|
break;
|
|
|
-// }
|
|
|
+ // }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -1286,7 +1367,8 @@ public class MarkServiceImpl implements MarkService {
|
|
|
@Override
|
|
|
public void updateMarkGroupStatus(Long examId, String paperNumber) {
|
|
|
// 更新MarkPaper中groupStatus
|
|
|
- long groupNumberIsNull = markQuestionService.countByExamIdAndPaperNumberAndObjectiveAndGroupNumberIsNull(examId, paperNumber, false);
|
|
|
+ long groupNumberIsNull = markQuestionService.countByExamIdAndPaperNumberAndObjectiveAndGroupNumberIsNull(examId,
|
|
|
+ paperNumber, false);
|
|
|
markPaperService.updateGroupStatusByExamIdAndPaperNumber(groupNumberIsNull == 0, examId, paperNumber);
|
|
|
}
|
|
|
|