|
@@ -93,7 +93,8 @@ public class MarkServiceImpl implements MarkService {
|
|
|
/**
|
|
|
* 某个评卷分组已申请的评卷任务数量
|
|
|
*
|
|
|
- * @param group - 评卷分组
|
|
|
+ * @param group
|
|
|
+ * - 评卷分组
|
|
|
* @return int
|
|
|
*/
|
|
|
@Override
|
|
@@ -110,7 +111,8 @@ public class MarkServiceImpl implements MarkService {
|
|
|
/**
|
|
|
* 某个评卷员已申请的评卷任务数量
|
|
|
*
|
|
|
- * @param marker - 评卷员
|
|
|
+ * @param marker
|
|
|
+ * - 评卷员
|
|
|
* @return int
|
|
|
*/
|
|
|
@Override
|
|
@@ -132,7 +134,8 @@ public class MarkServiceImpl implements MarkService {
|
|
|
/**
|
|
|
* 某个评卷员已完成的评卷任务数量
|
|
|
*
|
|
|
- * @param marker - 评卷员
|
|
|
+ * @param marker
|
|
|
+ * - 评卷员
|
|
|
* @return long
|
|
|
*/
|
|
|
@Override
|
|
@@ -145,8 +148,8 @@ public class MarkServiceImpl implements MarkService {
|
|
|
if (group.getStatus() == MarkStatus.TRIAL) {
|
|
|
return trialHistoryDao.countByMarkerId(marker.getId());
|
|
|
} else {
|
|
|
- return libraryDao.countByMarkerAndStatus(marker.getId(), LibraryStatus.MARKED, LibraryStatus.ARBITRATED,
|
|
|
- LibraryStatus.INSPECTED);
|
|
|
+ return libraryDao
|
|
|
+ .countByMarkerAndStatus(marker.getId(), LibraryStatus.MARKED, LibraryStatus.ARBITRATED);
|
|
|
}
|
|
|
}
|
|
|
return 0;
|
|
@@ -155,7 +158,8 @@ public class MarkServiceImpl implements MarkService {
|
|
|
/**
|
|
|
* 释放某个评卷分组的锁定任务
|
|
|
*
|
|
|
- * @param group - 评卷分组
|
|
|
+ * @param group
|
|
|
+ * - 评卷分组
|
|
|
*/
|
|
|
@Override
|
|
|
public void releaseByGroup(MarkGroup group) {
|
|
@@ -169,7 +173,8 @@ public class MarkServiceImpl implements MarkService {
|
|
|
/**
|
|
|
* 重置某个评卷分组的所有评卷任务
|
|
|
*
|
|
|
- * @param group - 评卷分组
|
|
|
+ * @param group
|
|
|
+ * - 评卷分组
|
|
|
*/
|
|
|
@Override
|
|
|
@Transactional
|
|
@@ -180,7 +185,8 @@ public class MarkServiceImpl implements MarkService {
|
|
|
/**
|
|
|
* 删除某个评卷分组
|
|
|
*
|
|
|
- * @param group - 评卷分组
|
|
|
+ * @param group
|
|
|
+ * - 评卷分组
|
|
|
*/
|
|
|
@Override
|
|
|
@Transactional
|
|
@@ -222,9 +228,8 @@ public class MarkServiceImpl implements MarkService {
|
|
|
sumTotalScore(group.getExamId(), group.getSubjectCode()));
|
|
|
// 考生整体状态与总分更新
|
|
|
long groupCount = groupDao.countByExamIdAndSubjectCode(group.getExamId(), group.getSubjectCode());
|
|
|
- List<Integer> studentList = studentService
|
|
|
- .findIdByExamIdAndSubjectCodeAndSubjectiveStatus(group.getExamId(), group.getSubjectCode(),
|
|
|
- SubjectiveStatus.MARKED, SubjectiveStatus.INSPECTED);
|
|
|
+ List<Integer> studentList = studentService.findIdByExamIdAndSubjectCodeAndSubjectiveStatus(group.getExamId(),
|
|
|
+ group.getSubjectCode(), SubjectiveStatus.MARKED, SubjectiveStatus.INSPECTED);
|
|
|
for (Integer studentId : studentList) {
|
|
|
checkStudentSubjective(studentId, groupCount);
|
|
|
}
|
|
@@ -233,7 +238,8 @@ public class MarkServiceImpl implements MarkService {
|
|
|
/**
|
|
|
* 修改某个评卷分组给分步骤,并重置评卷任务
|
|
|
*
|
|
|
- * @param group - 评卷分组
|
|
|
+ * @param group
|
|
|
+ * - 评卷分组
|
|
|
*/
|
|
|
@Override
|
|
|
@Transactional
|
|
@@ -257,8 +263,10 @@ public class MarkServiceImpl implements MarkService {
|
|
|
/**
|
|
|
* 评卷员申请领取某个正式评卷任务
|
|
|
*
|
|
|
- * @param library - 正评任务
|
|
|
- * @param marker - 评卷员
|
|
|
+ * @param library
|
|
|
+ * - 正评任务
|
|
|
+ * @param marker
|
|
|
+ * - 评卷员
|
|
|
*/
|
|
|
@Override
|
|
|
public boolean applyLibrary(MarkLibrary library, Marker marker) {
|
|
@@ -274,8 +282,10 @@ public class MarkServiceImpl implements MarkService {
|
|
|
/**
|
|
|
* 评卷员申请领取某个试评评卷任务
|
|
|
*
|
|
|
- * @param library - 试评任务
|
|
|
- * @param marker - 评卷员
|
|
|
+ * @param library
|
|
|
+ * - 试评任务
|
|
|
+ * @param marker
|
|
|
+ * - 评卷员
|
|
|
* @return boolean
|
|
|
*/
|
|
|
@Override
|
|
@@ -286,8 +296,10 @@ public class MarkServiceImpl implements MarkService {
|
|
|
/**
|
|
|
* 评卷员是否已领取了某个正式评卷任务
|
|
|
*
|
|
|
- * @param library - 正评任务
|
|
|
- * @param marker - 评卷员
|
|
|
+ * @param library
|
|
|
+ * - 正评任务
|
|
|
+ * @param marker
|
|
|
+ * - 评卷员
|
|
|
* @return boolean
|
|
|
*/
|
|
|
@Override
|
|
@@ -298,8 +310,10 @@ public class MarkServiceImpl implements MarkService {
|
|
|
/**
|
|
|
* 评卷员是否已领取了某个试评评卷任务
|
|
|
*
|
|
|
- * @param library - 试评任务
|
|
|
- * @param marker - 评卷员
|
|
|
+ * @param library
|
|
|
+ * - 试评任务
|
|
|
+ * @param marker
|
|
|
+ * - 评卷员
|
|
|
* @return boolean
|
|
|
*/
|
|
|
@Override
|
|
@@ -310,8 +324,10 @@ public class MarkServiceImpl implements MarkService {
|
|
|
/**
|
|
|
* 释放某个评卷员已领取的正评任务
|
|
|
*
|
|
|
- * @param library - 正评任务
|
|
|
- * @param marker - 评卷员
|
|
|
+ * @param library
|
|
|
+ * - 正评任务
|
|
|
+ * @param marker
|
|
|
+ * - 评卷员
|
|
|
*/
|
|
|
@Override
|
|
|
public void releaseLibrary(MarkLibrary library, Marker marker) {
|
|
@@ -321,8 +337,10 @@ public class MarkServiceImpl implements MarkService {
|
|
|
/**
|
|
|
* 释放某个评卷员已领取的试评任务
|
|
|
*
|
|
|
- * @param library - 试评任务
|
|
|
- * @param marker - 评卷员
|
|
|
+ * @param library
|
|
|
+ * - 试评任务
|
|
|
+ * @param marker
|
|
|
+ * - 评卷员
|
|
|
*/
|
|
|
@Override
|
|
|
public void releaseLibrary(TrialLibrary library, Marker marker) {
|
|
@@ -332,7 +350,8 @@ public class MarkServiceImpl implements MarkService {
|
|
|
/**
|
|
|
* 释放某个评卷员的所有锁定任务
|
|
|
*
|
|
|
- * @param marker - 评卷员
|
|
|
+ * @param marker
|
|
|
+ * - 评卷员
|
|
|
*/
|
|
|
@Override
|
|
|
public void releaseByMarker(Marker marker) {
|
|
@@ -343,7 +362,8 @@ public class MarkServiceImpl implements MarkService {
|
|
|
/**
|
|
|
* 重置某个评卷员
|
|
|
*
|
|
|
- * @param marker - 评卷员
|
|
|
+ * @param marker
|
|
|
+ * - 评卷员
|
|
|
*/
|
|
|
@Override
|
|
|
@Transactional
|
|
@@ -361,9 +381,8 @@ public class MarkServiceImpl implements MarkService {
|
|
|
libraryDao.resetByMarkerId(marker.getId(), LibraryStatus.WAITING, LibraryStatus.ARBITRATED,
|
|
|
LibraryStatus.WAIT_ARBITRATE, LibraryStatus.PROBLEM);
|
|
|
// 只选取评卷完成状态的记录重新检查
|
|
|
- List<Integer> studentIdList = groupStudentDao
|
|
|
- .findStudentIdByGroupNumberAndStatus(marker.getExamId(), marker.getSubjectCode(),
|
|
|
- marker.getGroupNumber(), SubjectiveStatus.MARKED);
|
|
|
+ List<Integer> studentIdList = groupStudentDao.findStudentIdByGroupNumberAndStatus(marker.getExamId(),
|
|
|
+ marker.getSubjectCode(), marker.getGroupNumber(), SubjectiveStatus.MARKED);
|
|
|
for (Integer studentId : studentIdList) {
|
|
|
checkStudentGroup(studentId, group);
|
|
|
}
|
|
@@ -380,7 +399,8 @@ public class MarkServiceImpl implements MarkService {
|
|
|
/**
|
|
|
* 根据考生删除评卷任务
|
|
|
*
|
|
|
- * @param student - 考生
|
|
|
+ * @param student
|
|
|
+ * - 考生
|
|
|
*/
|
|
|
@Override
|
|
|
@Transactional
|
|
@@ -396,7 +416,7 @@ public class MarkServiceImpl implements MarkService {
|
|
|
trialTagDao.deleteByStudentId(student.getId());
|
|
|
trialHistoryDao.deleteByStudentId(student.getId());
|
|
|
trialLibraryDao.deleteByStudentId(student.getId());
|
|
|
- //主观状态与得分明细
|
|
|
+ // 主观状态与得分明细
|
|
|
groupStudentDao.deleteByStudentId(student.getId());
|
|
|
scoreDao.deleteByStudentId(student.getId());
|
|
|
updateAllCount(student.getExamId(), student.getSubjectCode());
|
|
@@ -405,8 +425,10 @@ public class MarkServiceImpl implements MarkService {
|
|
|
/**
|
|
|
* 评卷员提交评卷任务
|
|
|
*
|
|
|
- * @param result - 评卷结果
|
|
|
- * @param marker - 评卷员
|
|
|
+ * @param result
|
|
|
+ * - 评卷结果
|
|
|
+ * @param marker
|
|
|
+ * - 评卷员
|
|
|
* @return boolean
|
|
|
*/
|
|
|
@Override
|
|
@@ -414,8 +436,8 @@ public class MarkServiceImpl implements MarkService {
|
|
|
public boolean submitTask(MarkResult result, Marker marker) {
|
|
|
// 判断评卷分组是否存在/评卷是否结束
|
|
|
MarkGroup group = groupDao.findOne(marker.getExamId(), marker.getSubjectCode(), marker.getGroupNumber());
|
|
|
- if (group == null || group.getStatus() == MarkStatus.FINISH || group.getStatus().getValue() != result
|
|
|
- .getStatusValue()) {
|
|
|
+ if (group == null || group.getStatus() == MarkStatus.FINISH
|
|
|
+ || group.getStatus().getValue() != result.getStatusValue()) {
|
|
|
return false;
|
|
|
}
|
|
|
|
|
@@ -426,17 +448,17 @@ public class MarkServiceImpl implements MarkService {
|
|
|
// 状态更新
|
|
|
Date now = new Date();
|
|
|
if (libraryDao.updateProblemResult(library.getId(), LibraryStatus.PROBLEM, marker.getId(), now,
|
|
|
- result.getSpent(), LibraryStatus.WAITING, LibraryStatus.MARKED, LibraryStatus.INSPECTED) != 0) {
|
|
|
+ result.getSpent(), LibraryStatus.WAITING, LibraryStatus.MARKED) != 0) {
|
|
|
saveProblemHistory(result, library);
|
|
|
updateMarkedCount(group);
|
|
|
releaseLibrary(library, marker);
|
|
|
return true;
|
|
|
}
|
|
|
}
|
|
|
- if (library != null && library.getExamId().equals(group.getExamId()) && library.getSubjectCode()
|
|
|
- .equals(group.getSubjectCode()) && library.getGroupNumber().equals(group.getNumber())
|
|
|
- && result.getTotalScore() <= group.getTotalScore() && StringUtils
|
|
|
- .isNotBlank(result.getScoreList())) {
|
|
|
+ if (library != null && library.getExamId().equals(group.getExamId())
|
|
|
+ && library.getSubjectCode().equals(group.getSubjectCode())
|
|
|
+ && library.getGroupNumber().equals(group.getNumber())
|
|
|
+ && result.getTotalScore() <= group.getTotalScore() && StringUtils.isNotBlank(result.getScoreList())) {
|
|
|
if (submitLibrary(library, marker, group, result)) {
|
|
|
updateMarkedCount(group);
|
|
|
releaseLibrary(library, marker);
|
|
@@ -445,10 +467,10 @@ public class MarkServiceImpl implements MarkService {
|
|
|
}
|
|
|
} else if (group.getStatus() == MarkStatus.TRIAL) {
|
|
|
TrialLibrary library = trialLibraryDao.findOne(result.getLibraryId());
|
|
|
- if (library != null && library.getExamId().equals(group.getExamId()) && library.getSubjectCode()
|
|
|
- .equals(group.getSubjectCode()) && library.getGroupNumber().equals(group.getNumber())
|
|
|
- && result.getTotalScore() <= group.getTotalScore() && StringUtils
|
|
|
- .isNotBlank(result.getScoreList())) {
|
|
|
+ if (library != null && library.getExamId().equals(group.getExamId())
|
|
|
+ && library.getSubjectCode().equals(group.getSubjectCode())
|
|
|
+ && library.getGroupNumber().equals(group.getNumber())
|
|
|
+ && result.getTotalScore() <= group.getTotalScore() && StringUtils.isNotBlank(result.getScoreList())) {
|
|
|
TrialHistory history = new TrialHistory();
|
|
|
history.setExamId(library.getExamId());
|
|
|
history.setSubjectCode(library.getSubjectCode());
|
|
@@ -499,10 +521,14 @@ public class MarkServiceImpl implements MarkService {
|
|
|
/**
|
|
|
* 评卷员提交某个正评任务
|
|
|
*
|
|
|
- * @param library - 正评任务
|
|
|
- * @param marker - 评卷员
|
|
|
- * @param group - 评卷分组
|
|
|
- * @param result - 评卷结果
|
|
|
+ * @param library
|
|
|
+ * - 正评任务
|
|
|
+ * @param marker
|
|
|
+ * - 评卷员
|
|
|
+ * @param group
|
|
|
+ * - 评卷分组
|
|
|
+ * @param result
|
|
|
+ * - 评卷结果
|
|
|
*/
|
|
|
private boolean submitLibrary(MarkLibrary library, Marker marker, MarkGroup group, MarkResult result) {
|
|
|
// 非本人领取的待评任务
|
|
@@ -510,8 +536,7 @@ public class MarkServiceImpl implements MarkService {
|
|
|
return false;
|
|
|
}
|
|
|
// 非本人的回评任务
|
|
|
- if ((library.getStatus() == LibraryStatus.MARKED || library.getStatus() == LibraryStatus.INSPECTED) && !library
|
|
|
- .getMarkerId().equals(marker.getId())) {
|
|
|
+ if ((library.getStatus() == LibraryStatus.MARKED) && !library.getMarkerId().equals(marker.getId())) {
|
|
|
return false;
|
|
|
}
|
|
|
// 是否多评情况下已处理过该考生评卷任务
|
|
@@ -521,9 +546,9 @@ public class MarkServiceImpl implements MarkService {
|
|
|
}
|
|
|
// 尝试提交评卷结果
|
|
|
Date now = new Date();
|
|
|
- if (libraryDao.updateMarkerResult(library.getId(), LibraryStatus.MARKED, marker.getId(), result.getTotalScore(),
|
|
|
- result.getScoreList(), now, result.getSpent(), LibraryStatus.WAITING, LibraryStatus.MARKED,
|
|
|
- LibraryStatus.INSPECTED) == 0) {
|
|
|
+ if (libraryDao.updateMarkerResult(library.getId(), LibraryStatus.MARKED, marker.getId(),
|
|
|
+ result.getTotalScore(), result.getScoreList(), now, result.getSpent(), LibraryStatus.WAITING,
|
|
|
+ LibraryStatus.MARKED) == 0) {
|
|
|
// 条件不符更新失败,直接返回
|
|
|
return false;
|
|
|
}
|
|
@@ -541,9 +566,8 @@ public class MarkServiceImpl implements MarkService {
|
|
|
ArbitrateHistory history = null;
|
|
|
if (group.getArbitrateThreshold() != null && group.getArbitrateThreshold() > 0) {
|
|
|
// 多评模式
|
|
|
- List<MarkLibrary> list = libraryDao
|
|
|
- .findByStudentIdAndGroupNumberAndStatus(library.getStudentId(), library.getGroupNumber(),
|
|
|
- LibraryStatus.MARKED, LibraryStatus.INSPECTED);
|
|
|
+ List<MarkLibrary> list = libraryDao.findByStudentIdAndGroupNumberAndStatus(library.getStudentId(),
|
|
|
+ library.getGroupNumber(), LibraryStatus.MARKED);
|
|
|
for (MarkLibrary other : list) {
|
|
|
if (other.getId().equals(library.getId()) || other.getHeaderScore() != null) {
|
|
|
// 本评卷任务或组长已打分,则跳过该任务
|
|
@@ -553,13 +577,12 @@ public class MarkServiceImpl implements MarkService {
|
|
|
if (Math.abs(other.getMarkerScore() - result.getTotalScore()) > group.getArbitrateThreshold()) {
|
|
|
// 开启三评
|
|
|
if (group.getThirdPolicy().equals(ThirdPolicy.LOW_DIFF_HIGH_AVG)) {
|
|
|
- if (libraryDao.countByStudentIdAndGroupNumber(library.getStudentId(), library.getGroupNumber())
|
|
|
- == 2) {
|
|
|
+ if (libraryDao.countByStudentIdAndGroupNumber(library.getStudentId(), library.getGroupNumber()) == 2) {
|
|
|
buildThirdLibrary(library, group);
|
|
|
} else {
|
|
|
// 两两比较,触发仲裁
|
|
|
- List<MarkLibrary> libraries = libraryDao
|
|
|
- .findByStudentIdAndGroupNumber(library.getStudentId(), library.getGroupNumber());
|
|
|
+ List<MarkLibrary> libraries = libraryDao.findByStudentIdAndGroupNumber(
|
|
|
+ library.getStudentId(), library.getGroupNumber());
|
|
|
history = buildArbitrateHistory(libraries, group.getArbitrateThreshold(), now);
|
|
|
}
|
|
|
} else {
|
|
@@ -585,8 +608,7 @@ public class MarkServiceImpl implements MarkService {
|
|
|
|
|
|
private ArbitrateHistory buildArbitrateHistory(List<MarkLibrary> list, Double arbitrateThreshold, Date now) {
|
|
|
for (MarkLibrary library : list) {
|
|
|
- if (library.getStatus() != LibraryStatus.MARKED && library.getStatus() != LibraryStatus.INSPECTED
|
|
|
- && library.getStatus() != LibraryStatus.ARBITRATED) {
|
|
|
+ if (library.getStatus() != LibraryStatus.MARKED && library.getStatus() != LibraryStatus.ARBITRATED) {
|
|
|
return null;
|
|
|
}
|
|
|
}
|
|
@@ -637,7 +659,8 @@ public class MarkServiceImpl implements MarkService {
|
|
|
* 管理员/组长打回某个评卷任务<br>
|
|
|
* 暂时不用到BACKED状态,直接等同于重置该评卷任务
|
|
|
*
|
|
|
- * @param library - 正评任务
|
|
|
+ * @param library
|
|
|
+ * - 正评任务
|
|
|
*/
|
|
|
@Override
|
|
|
@Transactional
|
|
@@ -646,8 +669,7 @@ public class MarkServiceImpl implements MarkService {
|
|
|
if (group.getStatus() == MarkStatus.FINISH) {
|
|
|
return false;
|
|
|
}
|
|
|
- if (libraryDao.resetById(library.getId(), LibraryStatus.WAITING, LibraryStatus.MARKED, LibraryStatus.INSPECTED,
|
|
|
- LibraryStatus.PROBLEM) > 0) {
|
|
|
+ if (libraryDao.resetById(library.getId(), LibraryStatus.WAITING, LibraryStatus.MARKED, LibraryStatus.PROBLEM) > 0) {
|
|
|
trackDao.deleteByLibraryId(library.getId());
|
|
|
specialTagDao.deleteByLibraryId(library.getId());
|
|
|
resetStudentGroup(library.getStudentId(), library.getExamId(), library.getSubjectCode(),
|
|
@@ -663,7 +685,8 @@ public class MarkServiceImpl implements MarkService {
|
|
|
/**
|
|
|
* 管理员/组长重置某个试评任务
|
|
|
*
|
|
|
- * @param library - 试评任务
|
|
|
+ * @param library
|
|
|
+ * - 试评任务
|
|
|
*/
|
|
|
@Override
|
|
|
@Transactional
|
|
@@ -681,7 +704,8 @@ public class MarkServiceImpl implements MarkService {
|
|
|
/**
|
|
|
* 管理员/组长处理仲裁卷
|
|
|
*
|
|
|
- * @param history - 仲裁卷
|
|
|
+ * @param history
|
|
|
+ * - 仲裁卷
|
|
|
*/
|
|
|
@Override
|
|
|
@Transactional
|
|
@@ -696,39 +720,40 @@ public class MarkServiceImpl implements MarkService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- // /**
|
|
|
- // * 对某个考生某个科目进行主观题统分
|
|
|
- // *
|
|
|
- // * @param student - 考生
|
|
|
- // * @param groups - 所有评卷分组
|
|
|
- // */
|
|
|
- // @Override
|
|
|
- // @Transactional
|
|
|
- // public void scoreCalculate(ExamStudent student, List<MarkGroup> groups) {
|
|
|
- // if (student == null || groups == null || groups.isEmpty()) {
|
|
|
- // return;
|
|
|
- // }
|
|
|
- // List<ScoreItem> scoreList = new ArrayList<>();
|
|
|
- // double totalScore = 0.0;
|
|
|
- // // 循环所有评卷分组
|
|
|
- // for (MarkGroup group : groups) {
|
|
|
- // if (group.getStatus().equals(MarkStatus.TRIAL)) {
|
|
|
- // return;
|
|
|
- // }
|
|
|
- // if (calculateGroup(group, student.getId())) {
|
|
|
- // totalScore += group.getMarkScore();
|
|
|
- // scoreList.addAll(group.getMarkScoreDetail());
|
|
|
- // } else {
|
|
|
- // // 未评完直接返回
|
|
|
- // return;
|
|
|
- // }
|
|
|
- // }
|
|
|
- // // 全部评完,更新考生主观题得分
|
|
|
- // student.setSubjectiveScore(totalScore);
|
|
|
- // student.setScoreList(scoreList, false);
|
|
|
- // studentService
|
|
|
- // .updateSubjectiveScore(student.getId(), student.getSubjectiveScore(), student.getSubjectiveScoreList());
|
|
|
- // }
|
|
|
+ // /**
|
|
|
+ // * 对某个考生某个科目进行主观题统分
|
|
|
+ // *
|
|
|
+ // * @param student - 考生
|
|
|
+ // * @param groups - 所有评卷分组
|
|
|
+ // */
|
|
|
+ // @Override
|
|
|
+ // @Transactional
|
|
|
+ // public void scoreCalculate(ExamStudent student, List<MarkGroup> groups) {
|
|
|
+ // if (student == null || groups == null || groups.isEmpty()) {
|
|
|
+ // return;
|
|
|
+ // }
|
|
|
+ // List<ScoreItem> scoreList = new ArrayList<>();
|
|
|
+ // double totalScore = 0.0;
|
|
|
+ // // 循环所有评卷分组
|
|
|
+ // for (MarkGroup group : groups) {
|
|
|
+ // if (group.getStatus().equals(MarkStatus.TRIAL)) {
|
|
|
+ // return;
|
|
|
+ // }
|
|
|
+ // if (calculateGroup(group, student.getId())) {
|
|
|
+ // totalScore += group.getMarkScore();
|
|
|
+ // scoreList.addAll(group.getMarkScoreDetail());
|
|
|
+ // } else {
|
|
|
+ // // 未评完直接返回
|
|
|
+ // return;
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // // 全部评完,更新考生主观题得分
|
|
|
+ // student.setSubjectiveScore(totalScore);
|
|
|
+ // student.setScoreList(scoreList, false);
|
|
|
+ // studentService
|
|
|
+ // .updateSubjectiveScore(student.getId(), student.getSubjectiveScore(),
|
|
|
+ // student.getSubjectiveScoreList());
|
|
|
+ // }
|
|
|
|
|
|
private void scoreCalculate(Integer studentId) {
|
|
|
List<ScoreItem> scoreList = new ArrayList<>();
|
|
@@ -755,8 +780,7 @@ public class MarkServiceImpl implements MarkService {
|
|
|
return false;
|
|
|
}
|
|
|
for (MarkLibrary library : list) {
|
|
|
- if (library.getStatus() != LibraryStatus.MARKED && library.getStatus() != LibraryStatus.INSPECTED
|
|
|
- && library.getStatus() != LibraryStatus.ARBITRATED) {
|
|
|
+ if (library.getStatus() != LibraryStatus.MARKED && library.getStatus() != LibraryStatus.ARBITRATED) {
|
|
|
// 有非完成状态的评卷任务,直接返回
|
|
|
return false;
|
|
|
}
|
|
@@ -772,12 +796,12 @@ public class MarkServiceImpl implements MarkService {
|
|
|
}
|
|
|
return -1;
|
|
|
});
|
|
|
- Double score1 =
|
|
|
- list.get(0).getHeaderScore() != null ? list.get(0).getHeaderScore() : list.get(0).getMarkerScore();
|
|
|
- Double score2 =
|
|
|
- list.get(1).getHeaderScore() != null ? list.get(1).getHeaderScore() : list.get(1).getMarkerScore();
|
|
|
- Double score3 =
|
|
|
- list.get(2).getHeaderScore() != null ? list.get(2).getHeaderScore() : list.get(2).getMarkerScore();
|
|
|
+ Double score1 = list.get(0).getHeaderScore() != null ? list.get(0).getHeaderScore() : list.get(0)
|
|
|
+ .getMarkerScore();
|
|
|
+ Double score2 = list.get(1).getHeaderScore() != null ? list.get(1).getHeaderScore() : list.get(1)
|
|
|
+ .getMarkerScore();
|
|
|
+ Double score3 = list.get(2).getHeaderScore() != null ? list.get(2).getHeaderScore() : list.get(2)
|
|
|
+ .getMarkerScore();
|
|
|
if ((score3 - score2) <= (score2 - score1)) {
|
|
|
list.remove(0);
|
|
|
} else {
|
|
@@ -849,16 +873,19 @@ public class MarkServiceImpl implements MarkService {
|
|
|
/**
|
|
|
* 更新某个评卷分组已评任务数量
|
|
|
*
|
|
|
- * @param group - 评卷分组
|
|
|
+ * @param group
|
|
|
+ * - 评卷分组
|
|
|
*/
|
|
|
@Override
|
|
|
@Transactional
|
|
|
public void updateMarkedCount(MarkGroup group) {
|
|
|
if (group.getStatus() == MarkStatus.FORMAL || group.getStatus() == MarkStatus.FINISH) {
|
|
|
- groupDao.updateMarkedCount(group.getExamId(), group.getSubjectCode(), group.getNumber(), (int) libraryDao
|
|
|
- .countByExamIdAndSubjectCodeAndGroupNumberAndStatus(group.getExamId(), group.getSubjectCode(),
|
|
|
- group.getNumber(), LibraryStatus.MARKED, LibraryStatus.ARBITRATED,
|
|
|
- LibraryStatus.INSPECTED));
|
|
|
+ groupDao.updateMarkedCount(
|
|
|
+ group.getExamId(),
|
|
|
+ group.getSubjectCode(),
|
|
|
+ group.getNumber(),
|
|
|
+ (int) libraryDao.countByExamIdAndSubjectCodeAndGroupNumberAndStatus(group.getExamId(),
|
|
|
+ group.getSubjectCode(), group.getNumber(), LibraryStatus.MARKED, LibraryStatus.ARBITRATED));
|
|
|
} else if (group.getStatus() == MarkStatus.TRIAL) {
|
|
|
groupDao.updateMarkedCount(group.getExamId(), group.getSubjectCode(), group.getNumber(),
|
|
|
(int) trialLibraryDao.countMarked(group.getExamId(), group.getSubjectCode(), group.getNumber()));
|
|
@@ -868,21 +895,20 @@ public class MarkServiceImpl implements MarkService {
|
|
|
/**
|
|
|
* 更新某个评卷分组评卷任务总量
|
|
|
*
|
|
|
- * @param group - 评卷分组
|
|
|
+ * @param group
|
|
|
+ * - 评卷分组
|
|
|
*/
|
|
|
@Override
|
|
|
@Transactional
|
|
|
public void updateLibraryCount(MarkGroup group) {
|
|
|
if (group.getStatus() == MarkStatus.FORMAL || group.getStatus() == MarkStatus.FINISH) {
|
|
|
- group.setLibraryCount((int) libraryDao
|
|
|
- .countByExamIdAndSubjectCodeAndGroupNumber(group.getExamId(), group.getSubjectCode(),
|
|
|
- group.getNumber()));
|
|
|
+ group.setLibraryCount((int) libraryDao.countByExamIdAndSubjectCodeAndGroupNumber(group.getExamId(),
|
|
|
+ group.getSubjectCode(), group.getNumber()));
|
|
|
groupDao.updateLibraryCount(group.getExamId(), group.getSubjectCode(), group.getNumber(),
|
|
|
group.getLibraryCount());
|
|
|
} else if (group.getStatus() == MarkStatus.TRIAL) {
|
|
|
- group.setLibraryCount((int) trialLibraryDao
|
|
|
- .countByExamIdAndSubjectCodeAndGroupNumber(group.getExamId(), group.getSubjectCode(),
|
|
|
- group.getNumber()));
|
|
|
+ group.setLibraryCount((int) trialLibraryDao.countByExamIdAndSubjectCodeAndGroupNumber(group.getExamId(),
|
|
|
+ group.getSubjectCode(), group.getNumber()));
|
|
|
groupDao.updateLibraryCount(group.getExamId(), group.getSubjectCode(), group.getNumber(),
|
|
|
group.getLibraryCount());
|
|
|
}
|
|
@@ -891,8 +917,10 @@ public class MarkServiceImpl implements MarkService {
|
|
|
/**
|
|
|
* 更新某个科目所有评卷分组评卷任务数量
|
|
|
*
|
|
|
- * @param examId - 考试ID
|
|
|
- * @param subjectCode - 科目代码
|
|
|
+ * @param examId
|
|
|
+ * - 考试ID
|
|
|
+ * @param subjectCode
|
|
|
+ * - 科目代码
|
|
|
*/
|
|
|
@Transactional
|
|
|
@Override
|
|
@@ -907,9 +935,12 @@ public class MarkServiceImpl implements MarkService {
|
|
|
/**
|
|
|
* 根据考生、学习中心、评卷分组构造正式评卷任务
|
|
|
*
|
|
|
- * @param student - 考生
|
|
|
- * @param group - 评卷分组
|
|
|
- * @param subject - 科目
|
|
|
+ * @param student
|
|
|
+ * - 考生
|
|
|
+ * @param group
|
|
|
+ * - 评卷分组
|
|
|
+ * @param subject
|
|
|
+ * - 科目
|
|
|
*/
|
|
|
@Override
|
|
|
@Transactional
|
|
@@ -935,15 +966,14 @@ public class MarkServiceImpl implements MarkService {
|
|
|
} else {
|
|
|
double studentCount = subject.getUploadCount();
|
|
|
double libraryCount = group.getLibraryCount();
|
|
|
- double doubleCount = libraryDao
|
|
|
- .countByExamIdAndSubjectCodeAndGroupNumberAndTaskNumber(group.getExamId(),
|
|
|
- group.getSubjectCode(), group.getNumber(), 2);
|
|
|
+ double doubleCount = libraryDao.countByExamIdAndSubjectCodeAndGroupNumberAndTaskNumber(
|
|
|
+ group.getExamId(), group.getSubjectCode(), group.getNumber(), 2);
|
|
|
int expectCount = (int) (studentCount * group.getDoubleRate());
|
|
|
// 随机数判断加入当前已经生成双评任务的比例加权
|
|
|
// 实际双评任务数小于理论生成数 &&(剩余未生成双评的考生数量小于剩余应生成的数量||随机比例)
|
|
|
- needDouble = doubleCount < expectCount && (
|
|
|
- (studentCount - libraryCount + doubleCount) <= (expectCount - doubleCount)
|
|
|
- || Math.random() < group.getDoubleRate() + 0.1);
|
|
|
+ needDouble = doubleCount < expectCount
|
|
|
+ && ((studentCount - libraryCount + doubleCount) <= (expectCount - doubleCount) || Math
|
|
|
+ .random() < group.getDoubleRate() + 0.1);
|
|
|
}
|
|
|
if (needDouble) {
|
|
|
library = new MarkLibrary();
|
|
@@ -968,8 +998,10 @@ public class MarkServiceImpl implements MarkService {
|
|
|
/**
|
|
|
* 根据考生、学习中心、评卷分组构造试评评卷任务
|
|
|
*
|
|
|
- * @param student - 考生
|
|
|
- * @param group - 评卷分组
|
|
|
+ * @param student
|
|
|
+ * - 考生
|
|
|
+ * @param group
|
|
|
+ * - 评卷分组
|
|
|
*/
|
|
|
@Override
|
|
|
@Transactional
|
|
@@ -991,7 +1023,8 @@ public class MarkServiceImpl implements MarkService {
|
|
|
* 领取正式评卷任务时,用来区分的唯一标识<br/>
|
|
|
* 多评时同一个考生的多份任务不能被同一位评卷员领取
|
|
|
*
|
|
|
- * @param library - 正评任务
|
|
|
+ * @param library
|
|
|
+ * - 正评任务
|
|
|
*/
|
|
|
private String getApplyTaskId(MarkLibrary library) {
|
|
|
return library.getStudentId() + "_" + library.getGroupNumber();
|
|
@@ -1000,7 +1033,8 @@ public class MarkServiceImpl implements MarkService {
|
|
|
/**
|
|
|
* 领取试评评卷任务时,用来区分的唯一标识
|
|
|
*
|
|
|
- * @param library - 试评任务
|
|
|
+ * @param library
|
|
|
+ * - 试评任务
|
|
|
*/
|
|
|
private String getApplyTaskId(TrialLibrary library, Marker marker) {
|
|
|
return library.getId() + "_" + marker.getId();
|
|
@@ -1009,7 +1043,8 @@ public class MarkServiceImpl implements MarkService {
|
|
|
/**
|
|
|
* 重置评卷分组的连带操作
|
|
|
*
|
|
|
- * @param group - 评卷分组
|
|
|
+ * @param group
|
|
|
+ * - 评卷分组
|
|
|
*/
|
|
|
private void resetGroup(MarkGroup group) {
|
|
|
if (group.getStatus() == MarkStatus.FORMAL) {
|
|
@@ -1022,9 +1057,8 @@ public class MarkServiceImpl implements MarkService {
|
|
|
group.getNumber());
|
|
|
libraryDao.resetByExamIdAndSubjectCodeAndGroupNumber(group.getExamId(), group.getSubjectCode(),
|
|
|
group.getNumber(), LibraryStatus.WAITING);
|
|
|
- libraryDao
|
|
|
- .deleteByExamIdAndSubjectCodeAndGroupNumberAndTaskNumber(group.getExamId(), group.getSubjectCode(),
|
|
|
- group.getNumber(), 3);
|
|
|
+ libraryDao.deleteByExamIdAndSubjectCodeAndGroupNumberAndTaskNumber(group.getExamId(),
|
|
|
+ group.getSubjectCode(), group.getNumber(), 3);
|
|
|
markerDao.resetByExamIdAndSubjectCodeAndGroupNumber(group.getExamId(), group.getSubjectCode(),
|
|
|
group.getNumber());
|
|
|
resetStudentGroup(group.getExamId(), group.getSubjectCode(), group.getNumber());
|
|
@@ -1043,7 +1077,8 @@ public class MarkServiceImpl implements MarkService {
|
|
|
/**
|
|
|
* 计算并更新指定评卷员的评卷质量指标
|
|
|
*
|
|
|
- * @param marker - 评卷员
|
|
|
+ * @param marker
|
|
|
+ * - 评卷员
|
|
|
*/
|
|
|
@Override
|
|
|
@Transactional
|
|
@@ -1059,7 +1094,7 @@ public class MarkServiceImpl implements MarkService {
|
|
|
double avgSpent = 0;
|
|
|
for (MarkLibrary library : list) {
|
|
|
finishCount++;
|
|
|
- if (library.getStatus() == LibraryStatus.MARKED || library.getStatus() == LibraryStatus.INSPECTED) {
|
|
|
+ if (library.getStatus() == LibraryStatus.MARKED) {
|
|
|
validCount++;
|
|
|
}
|
|
|
double score = library.getMarkerScore() != null ? library.getMarkerScore() : 0;
|
|
@@ -1182,7 +1217,7 @@ public class MarkServiceImpl implements MarkService {
|
|
|
|
|
|
private void updateStudentGroupScore(Integer studentId, Integer examId, String subjectCode, Integer groupNumber,
|
|
|
double score, List<ScoreItem> scoreList) {
|
|
|
- //scoreDao.deleteByStudentIdAndGroupNumber(studentId, groupNumber);
|
|
|
+ // scoreDao.deleteByStudentIdAndGroupNumber(studentId, groupNumber);
|
|
|
List<SubjectiveScore> list = new ArrayList<>();
|
|
|
for (ScoreItem item : scoreList) {
|
|
|
SubjectiveScore ss = new SubjectiveScore();
|