|
@@ -141,14 +141,8 @@ public class MarkServiceImpl implements MarkService {
|
|
|
*/
|
|
|
@Override
|
|
|
public int applyCount(MarkGroup group) {
|
|
|
- int count = 0;
|
|
|
- if (group.getStatus() == MarkStatus.TRIAL) {
|
|
|
- TaskLock taskLock = TaskLockUtil.getTrialTask(getGroupKey(group));
|
|
|
- count = taskLock.count();
|
|
|
- } else if (group.getStatus() == MarkStatus.FORMAL) {
|
|
|
- TaskLock taskLock = TaskLockUtil.getFormalTask(getGroupKey(group));
|
|
|
- count = taskLock.count();
|
|
|
- }
|
|
|
+ TaskLock taskLock = getTaskLock(group);
|
|
|
+ int count = taskLock.count();
|
|
|
return count;
|
|
|
}
|
|
|
|
|
@@ -166,17 +160,22 @@ public class MarkServiceImpl implements MarkService {
|
|
|
group = groupDao.findOne(marker.getExamId(), marker.getSubjectCode(), marker.getGroupNumber());
|
|
|
}
|
|
|
if (group != null) {
|
|
|
- if (group.getStatus() == MarkStatus.FORMAL) {
|
|
|
- TaskLock taskLock = TaskLockUtil.getFormalTask(getGroupKey(marker));
|
|
|
- return taskLock.count(marker.getId());
|
|
|
- } else if (group.getStatus() == MarkStatus.TRIAL) {
|
|
|
- TaskLock taskLock = TaskLockUtil.getTrialTask(getGroupKey(marker));
|
|
|
- return taskLock.count(marker.getId());
|
|
|
- }
|
|
|
+ TaskLock taskLock = getTaskLock(group);
|
|
|
+ return taskLock.count(marker.getId());
|
|
|
}
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
+ private TaskLock getTaskLock(MarkGroup group) {
|
|
|
+ if (group.getStatus() == MarkStatus.FORMAL) {
|
|
|
+ return TaskLockUtil.getFormalTask(getGroupKey(group));
|
|
|
+
|
|
|
+ } else if (group.getStatus() == MarkStatus.TRIAL) {
|
|
|
+ return TaskLockUtil.getTrialTask(getGroupKey(group));
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 某个评卷员已完成的评卷任务数量
|
|
|
*
|
|
@@ -209,13 +208,8 @@ public class MarkServiceImpl implements MarkService {
|
|
|
*/
|
|
|
@Override
|
|
|
public void releaseByGroup(MarkGroup group) {
|
|
|
- if (group.getStatus() == MarkStatus.TRIAL) {
|
|
|
- TaskLock taskLock = TaskLockUtil.getTrialTask(getGroupKey(group));
|
|
|
- taskLock.clear();
|
|
|
- } else if (group.getStatus() == MarkStatus.FORMAL) {
|
|
|
- TaskLock taskLock = TaskLockUtil.getFormalTask(getGroupKey(group));
|
|
|
- taskLock.clear();
|
|
|
- }
|
|
|
+ TaskLock taskLock = getTaskLock(group);
|
|
|
+ taskLock.clear();
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -546,29 +540,30 @@ public class MarkServiceImpl implements MarkService {
|
|
|
// 根据评卷状态选择读取不同的评卷任务
|
|
|
if (group.getStatus() == MarkStatus.FORMAL) {
|
|
|
MarkLibrary library = libraryDao.findOne(result.getLibraryId());
|
|
|
- // 问题卷
|
|
|
- if (library != null && result.isProblem()) {
|
|
|
- // 状态更新
|
|
|
- if (libraryDao.updateProblemResult(library.getId(), LibraryStatus.PROBLEM, marker.getId(), now,
|
|
|
- result.getSpent(), LibraryStatus.WAITING, LibraryStatus.MARKED, LibraryStatus.INSPECTED,
|
|
|
- LibraryStatus.REJECTED) != 0) {
|
|
|
- saveProblemHistory(result, library);
|
|
|
- updateMarkedCount(group);
|
|
|
- // 未评完
|
|
|
- resetStudentGroup(library.getStudentId(), library.getExamId(), library.getSubjectCode(),
|
|
|
- library.getGroupNumber());
|
|
|
- trackDao.deleteByLibraryId(library.getId());
|
|
|
- specialTagDao.deleteByLibraryId(library.getId());
|
|
|
- return SubmitResult.success(library);
|
|
|
- }
|
|
|
- }
|
|
|
if (library != null && library.getExamId().equals(group.getExamId())
|
|
|
&& library.getSubjectCode().equals(group.getSubjectCode())
|
|
|
- && library.getGroupNumber().equals(group.getNumber())
|
|
|
- && result.getMarkerScore() <= group.getTotalScore()) {
|
|
|
- if (submitLibrary(library, marker, group, result)) {
|
|
|
- updateMarkedCount(group);
|
|
|
- return SubmitResult.success(library);
|
|
|
+ && library.getGroupNumber().equals(group.getNumber())) {
|
|
|
+ // 问题卷
|
|
|
+ if (result.isProblem()) {
|
|
|
+ // 状态更新
|
|
|
+ if (libraryDao.updateProblemResult(library.getId(), LibraryStatus.PROBLEM, marker.getId(), now,
|
|
|
+ result.getSpent(), LibraryStatus.WAITING, LibraryStatus.MARKED, LibraryStatus.INSPECTED,
|
|
|
+ LibraryStatus.REJECTED) != 0) {
|
|
|
+ saveProblemHistory(result, library, marker);
|
|
|
+ updateMarkedCount(group);
|
|
|
+ // 未评完
|
|
|
+ resetStudentGroup(library.getStudentId(), library.getExamId(), library.getSubjectCode(),
|
|
|
+ library.getGroupNumber());
|
|
|
+ trackDao.deleteByLibraryId(library.getId());
|
|
|
+ specialTagDao.deleteByLibraryId(library.getId());
|
|
|
+ return SubmitResult.success(library);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (result.getMarkerScore() <= group.getTotalScore()) {
|
|
|
+ if (submitLibrary(library, marker, group, result)) {
|
|
|
+ updateMarkedCount(group);
|
|
|
+ return SubmitResult.success(library);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
} else if (group.getStatus() == MarkStatus.TRIAL) {
|
|
@@ -599,7 +594,7 @@ public class MarkServiceImpl implements MarkService {
|
|
|
return SubmitResult.faile();
|
|
|
}
|
|
|
|
|
|
- private void saveProblemHistory(MarkResult result, MarkLibrary library) {
|
|
|
+ private void saveProblemHistory(MarkResult result, MarkLibrary library, Marker marker) {
|
|
|
ProblemHistory history = problemHistoryDao.findByLibraryIdAndStatus(library.getId(), HistoryStatus.WAITING);
|
|
|
if (history == null) {
|
|
|
history = new ProblemHistory();
|
|
@@ -614,6 +609,7 @@ public class MarkServiceImpl implements MarkService {
|
|
|
history.setGroupNumber(library.getGroupNumber());
|
|
|
history.setProblemId(result.getProblemTypeId());
|
|
|
history.setStatus(HistoryStatus.WAITING);
|
|
|
+ history.setMarkerId(marker.getId());
|
|
|
problemHistoryDao.save(history);
|
|
|
}
|
|
|
|
|
@@ -646,9 +642,11 @@ public class MarkServiceImpl implements MarkService {
|
|
|
return false;
|
|
|
}
|
|
|
// 未选做
|
|
|
- if (result.isUnselective()) {
|
|
|
+ if (result.isUnselective() && group.isSelective()) {
|
|
|
result.setMarkerScore(UN_SELECTIVE_SCORE);
|
|
|
result.setScoreList(null);
|
|
|
+ trackDao.deleteByLibraryId(library.getId());
|
|
|
+ specialTagDao.deleteByLibraryId(library.getId());
|
|
|
}
|
|
|
// 尝试提交评卷结果
|
|
|
Date now = new Date();
|