|
@@ -1,17 +1,18 @@
|
|
|
package cn.com.qmth.stmms.biz.mark.service.Impl;
|
|
|
|
|
|
-import java.math.BigDecimal;
|
|
|
-import java.text.DecimalFormat;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.Collections;
|
|
|
-import java.util.Date;
|
|
|
-import java.util.HashMap;
|
|
|
-import java.util.Iterator;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
-import java.util.Map.Entry;
|
|
|
-import java.util.concurrent.ConcurrentHashMap;
|
|
|
-
|
|
|
+import cn.com.qmth.stmms.biz.exam.dao.*;
|
|
|
+import cn.com.qmth.stmms.biz.exam.model.*;
|
|
|
+import cn.com.qmth.stmms.biz.exam.service.*;
|
|
|
+import cn.com.qmth.stmms.biz.lock.LockService;
|
|
|
+import cn.com.qmth.stmms.biz.mark.dao.*;
|
|
|
+import cn.com.qmth.stmms.biz.mark.model.*;
|
|
|
+import cn.com.qmth.stmms.biz.mark.query.MarkLibrarySearchQuery;
|
|
|
+import cn.com.qmth.stmms.biz.mark.service.MarkService;
|
|
|
+import cn.com.qmth.stmms.biz.utils.ScoreItem;
|
|
|
+import cn.com.qmth.stmms.biz.utils.TaskLock;
|
|
|
+import cn.com.qmth.stmms.biz.utils.TaskLockUtil;
|
|
|
+import cn.com.qmth.stmms.common.enums.*;
|
|
|
+import cn.com.qmth.stmms.common.utils.BigDecimalUtils;
|
|
|
import org.apache.commons.lang.StringUtils;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
@@ -20,61 +21,11 @@ import org.springframework.data.domain.Sort;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
-import cn.com.qmth.stmms.biz.exam.dao.MarkGroupDao;
|
|
|
-import cn.com.qmth.stmms.biz.exam.dao.MarkGroupStudentDao;
|
|
|
-import cn.com.qmth.stmms.biz.exam.dao.MarkerDao;
|
|
|
-import cn.com.qmth.stmms.biz.exam.dao.SelectiveStudentDao;
|
|
|
-import cn.com.qmth.stmms.biz.exam.dao.SubjectiveScoreDao;
|
|
|
-import cn.com.qmth.stmms.biz.exam.model.ExamQuestion;
|
|
|
-import cn.com.qmth.stmms.biz.exam.model.ExamStudent;
|
|
|
-import cn.com.qmth.stmms.biz.exam.model.ExamSubject;
|
|
|
-import cn.com.qmth.stmms.biz.exam.model.MarkGroup;
|
|
|
-import cn.com.qmth.stmms.biz.exam.model.MarkGroupStudent;
|
|
|
-import cn.com.qmth.stmms.biz.exam.model.Marker;
|
|
|
-import cn.com.qmth.stmms.biz.exam.model.SelectiveGroup;
|
|
|
-import cn.com.qmth.stmms.biz.exam.model.SelectiveStudent;
|
|
|
-import cn.com.qmth.stmms.biz.exam.model.SubjectiveScore;
|
|
|
-import cn.com.qmth.stmms.biz.exam.service.ExamQuestionService;
|
|
|
-import cn.com.qmth.stmms.biz.exam.service.ExamService;
|
|
|
-import cn.com.qmth.stmms.biz.exam.service.ExamStudentService;
|
|
|
-import cn.com.qmth.stmms.biz.exam.service.ExamSubjectService;
|
|
|
-import cn.com.qmth.stmms.biz.exam.service.InspectHistoryService;
|
|
|
-import cn.com.qmth.stmms.biz.exam.service.MarkerService;
|
|
|
-import cn.com.qmth.stmms.biz.exam.service.SelectiveGroupService;
|
|
|
-import cn.com.qmth.stmms.biz.exam.service.SubjectiveScoreService;
|
|
|
-import cn.com.qmth.stmms.biz.lock.LockService;
|
|
|
-import cn.com.qmth.stmms.biz.mark.dao.ArbitrateHistoryDao;
|
|
|
-import cn.com.qmth.stmms.biz.mark.dao.MarkLibraryDao;
|
|
|
-import cn.com.qmth.stmms.biz.mark.dao.MarkSpecialTagDao;
|
|
|
-import cn.com.qmth.stmms.biz.mark.dao.MarkTrackDao;
|
|
|
-import cn.com.qmth.stmms.biz.mark.dao.ProblemHistoryDao;
|
|
|
-import cn.com.qmth.stmms.biz.mark.dao.RejectHistoryDao;
|
|
|
-import cn.com.qmth.stmms.biz.mark.dao.TrialLibraryDao;
|
|
|
-import cn.com.qmth.stmms.biz.mark.dao.TrialTagDao;
|
|
|
-import cn.com.qmth.stmms.biz.mark.dao.TrialTrackDao;
|
|
|
-import cn.com.qmth.stmms.biz.mark.model.ArbitrateHistory;
|
|
|
-import cn.com.qmth.stmms.biz.mark.model.MarkLibrary;
|
|
|
-import cn.com.qmth.stmms.biz.mark.model.MarkResult;
|
|
|
-import cn.com.qmth.stmms.biz.mark.model.MarkStepDTO;
|
|
|
-import cn.com.qmth.stmms.biz.mark.model.MarkTrack;
|
|
|
-import cn.com.qmth.stmms.biz.mark.model.ProblemHistory;
|
|
|
-import cn.com.qmth.stmms.biz.mark.model.RejectHistory;
|
|
|
-import cn.com.qmth.stmms.biz.mark.model.SubmitResult;
|
|
|
-import cn.com.qmth.stmms.biz.mark.model.TrialLibrary;
|
|
|
-import cn.com.qmth.stmms.biz.mark.query.MarkLibrarySearchQuery;
|
|
|
-import cn.com.qmth.stmms.biz.mark.service.MarkService;
|
|
|
-import cn.com.qmth.stmms.biz.utils.ScoreItem;
|
|
|
-import cn.com.qmth.stmms.biz.utils.TaskLock;
|
|
|
-import cn.com.qmth.stmms.biz.utils.TaskLockUtil;
|
|
|
-import cn.com.qmth.stmms.common.enums.HistoryStatus;
|
|
|
-import cn.com.qmth.stmms.common.enums.LibraryStatus;
|
|
|
-import cn.com.qmth.stmms.common.enums.LockType;
|
|
|
-import cn.com.qmth.stmms.common.enums.MarkStatus;
|
|
|
-import cn.com.qmth.stmms.common.enums.ObjectiveStatus;
|
|
|
-import cn.com.qmth.stmms.common.enums.ScorePolicy;
|
|
|
-import cn.com.qmth.stmms.common.enums.SubjectiveStatus;
|
|
|
-import cn.com.qmth.stmms.common.enums.ThirdPolicy;
|
|
|
-import cn.com.qmth.stmms.common.utils.BigDecimalUtils;
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.text.DecimalFormat;
|
|
|
+import java.util.*;
|
|
|
+import java.util.Map.Entry;
|
|
|
+import java.util.concurrent.ConcurrentHashMap;
|
|
|
|
|
|
/**
|
|
|
* 与评卷相关的所有修改操作(非传播性的新增操作除外),全部汇总到这里进行集中控制
|
|
@@ -162,8 +113,7 @@ public class MarkServiceImpl implements MarkService {
|
|
|
/**
|
|
|
* 某个评卷分组已申请的评卷任务数量
|
|
|
*
|
|
|
- * @param group
|
|
|
- * - 评卷分组
|
|
|
+ * @param group - 评卷分组
|
|
|
* @return int
|
|
|
*/
|
|
|
@Override
|
|
@@ -179,8 +129,7 @@ public class MarkServiceImpl implements MarkService {
|
|
|
/**
|
|
|
* 某个评卷员已申请的评卷任务数量
|
|
|
*
|
|
|
- * @param marker
|
|
|
- * - 评卷员
|
|
|
+ * @param marker - 评卷员
|
|
|
* @return int
|
|
|
*/
|
|
|
@Override
|
|
@@ -210,8 +159,7 @@ public class MarkServiceImpl implements MarkService {
|
|
|
/**
|
|
|
* 某个评卷员已完成的评卷任务数量
|
|
|
*
|
|
|
- * @param marker
|
|
|
- * - 评卷员
|
|
|
+ * @param marker - 评卷员
|
|
|
* @return long
|
|
|
*/
|
|
|
@Override
|
|
@@ -224,8 +172,8 @@ public class MarkServiceImpl implements MarkService {
|
|
|
if (group.getStatus() == MarkStatus.TRIAL) {
|
|
|
return trialLibraryDao.countByMarkerId(marker.getId());
|
|
|
} else {
|
|
|
- return libraryDao.countByMarkerAndStatus(marker.getId(), LibraryStatus.MARKED,
|
|
|
- LibraryStatus.ARBITRATED, LibraryStatus.INSPECTED);
|
|
|
+ return libraryDao.countByMarkerAndStatus(marker.getId(), LibraryStatus.MARKED, LibraryStatus.ARBITRATED,
|
|
|
+ LibraryStatus.INSPECTED);
|
|
|
}
|
|
|
}
|
|
|
return 0;
|
|
@@ -234,8 +182,7 @@ public class MarkServiceImpl implements MarkService {
|
|
|
/**
|
|
|
* 释放某个评卷分组的锁定任务
|
|
|
*
|
|
|
- * @param group
|
|
|
- * - 评卷分组
|
|
|
+ * @param group - 评卷分组
|
|
|
*/
|
|
|
@Override
|
|
|
public void releaseByGroup(MarkGroup group) {
|
|
@@ -246,8 +193,7 @@ public class MarkServiceImpl implements MarkService {
|
|
|
/**
|
|
|
* 重置某个评卷分组的所有评卷任务
|
|
|
*
|
|
|
- * @param group
|
|
|
- * - 评卷分组
|
|
|
+ * @param group - 评卷分组
|
|
|
*/
|
|
|
@Override
|
|
|
@Transactional
|
|
@@ -258,8 +204,7 @@ public class MarkServiceImpl implements MarkService {
|
|
|
/**
|
|
|
* 删除某个评卷分组
|
|
|
*
|
|
|
- * @param group
|
|
|
- * - 评卷分组
|
|
|
+ * @param group - 评卷分组
|
|
|
*/
|
|
|
@Override
|
|
|
@Transactional
|
|
@@ -286,8 +231,9 @@ public class MarkServiceImpl implements MarkService {
|
|
|
markerDao.deleteByExamIdAndSubjectCodeAndGroupNumber(group.getExamId(), group.getSubjectCode(),
|
|
|
group.getNumber());
|
|
|
// 小题数据
|
|
|
- questionService.resetByExamIdAndSubjectCodeAndObjectiveAndGroupNumber(group.getExamId(),
|
|
|
- group.getSubjectCode(), false, group.getNumber());
|
|
|
+ questionService
|
|
|
+ .resetByExamIdAndSubjectCodeAndObjectiveAndGroupNumber(group.getExamId(), group.getSubjectCode(), false,
|
|
|
+ group.getNumber());
|
|
|
// 考生分组状态与得分明细
|
|
|
groupStudentDao.deleteByExamIdAndSubjectCodeAndGroupNumber(group.getExamId(), group.getSubjectCode(),
|
|
|
group.getNumber());
|
|
@@ -298,8 +244,9 @@ public class MarkServiceImpl implements MarkService {
|
|
|
releaseByGroup(group);
|
|
|
groupDao.delete(group);
|
|
|
// 未分组的题目
|
|
|
- long unGroupQuestionCount = questionService.countByExamIdAndSubjectAndObjectiveAndGroupNumberIsNull(
|
|
|
- group.getExamId(), group.getSubjectCode(), false);
|
|
|
+ long unGroupQuestionCount = questionService
|
|
|
+ .countByExamIdAndSubjectAndObjectiveAndGroupNumberIsNull(group.getExamId(), group.getSubjectCode(),
|
|
|
+ false);
|
|
|
// 考生整体状态与总分更新
|
|
|
long groupCount = groupDao.countByExamIdAndSubjectCode(group.getExamId(), group.getSubjectCode());
|
|
|
if (groupCount == 0 || unGroupQuestionCount > 0) {
|
|
@@ -309,8 +256,9 @@ public class MarkServiceImpl implements MarkService {
|
|
|
// group.getSubjectCode());
|
|
|
inspectHistoryService.deleteByExamIdAndSubjectCode(group.getExamId(), group.getSubjectCode());
|
|
|
} else {
|
|
|
- List<Integer> studentList = studentService.findIdByExamIdAndSubjectCodeAndSubjectiveStatus(
|
|
|
- group.getExamId(), group.getSubjectCode(), SubjectiveStatus.UNMARK, SubjectiveStatus.MARKED);
|
|
|
+ List<Integer> studentList = studentService
|
|
|
+ .findIdByExamIdAndSubjectCodeAndSubjectiveStatus(group.getExamId(), group.getSubjectCode(),
|
|
|
+ SubjectiveStatus.UNMARK, SubjectiveStatus.MARKED);
|
|
|
for (Integer studentId : studentList) {
|
|
|
checkStudentSubjective(studentId, groupCount, unGroupQuestionCount);
|
|
|
}
|
|
@@ -320,15 +268,15 @@ public class MarkServiceImpl implements MarkService {
|
|
|
/**
|
|
|
* 修改某个评卷分组给分步骤,并重置评卷任务
|
|
|
*
|
|
|
- * @param group
|
|
|
- * - 评卷分组
|
|
|
+ * @param group - 评卷分组
|
|
|
*/
|
|
|
@Override
|
|
|
@Transactional
|
|
|
public void updateGroup(MarkGroup group, List<ExamQuestion> questionList, ScorePolicy policy, ThirdPolicy third,
|
|
|
boolean selective) {
|
|
|
- List<ExamQuestion> old = questionService.findByExamAndSubjectAndObjectiveAndGroupNumber(group.getExamId(),
|
|
|
- group.getSubjectCode(), false, group.getNumber());
|
|
|
+ List<ExamQuestion> old = questionService
|
|
|
+ .findByExamAndSubjectAndObjectiveAndGroupNumber(group.getExamId(), group.getSubjectCode(), false,
|
|
|
+ group.getNumber());
|
|
|
for (ExamQuestion question : old) {
|
|
|
question.setGroupNumber(null);
|
|
|
questionService.saveAndFlush(question);
|
|
@@ -361,10 +309,8 @@ public class MarkServiceImpl implements MarkService {
|
|
|
/**
|
|
|
* 评卷员申请领取某个正式评卷任务
|
|
|
*
|
|
|
- * @param library
|
|
|
- * - 正评任务
|
|
|
- * @param marker
|
|
|
- * - 评卷员
|
|
|
+ * @param library - 正评任务
|
|
|
+ * @param marker - 评卷员
|
|
|
*/
|
|
|
@Override
|
|
|
public boolean applyLibrary(MarkLibrary library, Marker marker) {
|
|
@@ -387,10 +333,8 @@ public class MarkServiceImpl implements MarkService {
|
|
|
/**
|
|
|
* 评卷员申请领取某个试评评卷任务
|
|
|
*
|
|
|
- * @param library
|
|
|
- * - 试评任务
|
|
|
- * @param marker
|
|
|
- * - 评卷员
|
|
|
+ * @param library - 试评任务
|
|
|
+ * @param marker - 评卷员
|
|
|
* @return boolean
|
|
|
*/
|
|
|
@Override
|
|
@@ -402,10 +346,8 @@ public class MarkServiceImpl implements MarkService {
|
|
|
/**
|
|
|
* 评卷员是否已领取了某个正式评卷任务
|
|
|
*
|
|
|
- * @param library
|
|
|
- * - 正评任务
|
|
|
- * @param marker
|
|
|
- * - 评卷员
|
|
|
+ * @param library - 正评任务
|
|
|
+ * @param marker - 评卷员
|
|
|
* @return boolean
|
|
|
*/
|
|
|
@Override
|
|
@@ -417,10 +359,8 @@ public class MarkServiceImpl implements MarkService {
|
|
|
/**
|
|
|
* 评卷员是否已领取了某个试评评卷任务
|
|
|
*
|
|
|
- * @param library
|
|
|
- * - 试评任务
|
|
|
- * @param marker
|
|
|
- * - 评卷员
|
|
|
+ * @param library - 试评任务
|
|
|
+ * @param marker - 评卷员
|
|
|
* @return boolean
|
|
|
*/
|
|
|
@Override
|
|
@@ -432,10 +372,8 @@ public class MarkServiceImpl implements MarkService {
|
|
|
/**
|
|
|
* 释放某个评卷员已完成的评卷任务
|
|
|
*
|
|
|
- * @param result
|
|
|
- * - 评卷结果
|
|
|
- * @param marker
|
|
|
- * - 评卷员
|
|
|
+ * @param result - 评卷结果
|
|
|
+ * @param marker - 评卷员
|
|
|
*/
|
|
|
@Override
|
|
|
public void releaseTask(SubmitResult result, Marker marker) {
|
|
@@ -453,8 +391,7 @@ public class MarkServiceImpl implements MarkService {
|
|
|
/**
|
|
|
* 释放某个评卷员的所有锁定任务
|
|
|
*
|
|
|
- * @param marker
|
|
|
- * - 评卷员
|
|
|
+ * @param marker - 评卷员
|
|
|
*/
|
|
|
@Override
|
|
|
public void releaseByMarker(Marker marker) {
|
|
@@ -467,8 +404,7 @@ public class MarkServiceImpl implements MarkService {
|
|
|
/**
|
|
|
* 重置某个评卷员
|
|
|
*
|
|
|
- * @param marker
|
|
|
- * - 评卷员
|
|
|
+ * @param marker - 评卷员
|
|
|
*/
|
|
|
@Override
|
|
|
@Transactional
|
|
@@ -512,8 +448,8 @@ public class MarkServiceImpl implements MarkService {
|
|
|
for (MarkLibrary library : list) {
|
|
|
trackDao.deleteByLibraryId(library.getId());
|
|
|
specialTagDao.deleteByLibraryId(library.getId());
|
|
|
- libraryDao.resetById(library.getId(), null, null, null, null, LibraryStatus.WAITING,
|
|
|
- library.getStatus());
|
|
|
+ libraryDao
|
|
|
+ .resetById(library.getId(), null, null, null, null, LibraryStatus.WAITING, library.getStatus());
|
|
|
lockService.waitlock(LockType.STUDENT, library.getStudentId());
|
|
|
updateStudentGroupStatus(library.getStudentId(), library.getExamId(), library.getSubjectCode(),
|
|
|
library.getGroupNumber(), SubjectiveStatus.UNMARK);
|
|
@@ -533,8 +469,7 @@ public class MarkServiceImpl implements MarkService {
|
|
|
/**
|
|
|
* 根据考生删除评卷任务
|
|
|
*
|
|
|
- * @param student
|
|
|
- * - 考生
|
|
|
+ * @param student - 考生
|
|
|
*/
|
|
|
@Override
|
|
|
@Transactional
|
|
@@ -563,10 +498,8 @@ public class MarkServiceImpl implements MarkService {
|
|
|
/**
|
|
|
* 评卷员提交评卷任务
|
|
|
*
|
|
|
- * @param result
|
|
|
- * - 评卷结果
|
|
|
- * @param marker
|
|
|
- * - 评卷员
|
|
|
+ * @param result - 评卷结果
|
|
|
+ * @param marker - 评卷员
|
|
|
* @return boolean
|
|
|
*/
|
|
|
@Override
|
|
@@ -574,8 +507,8 @@ public class MarkServiceImpl implements MarkService {
|
|
|
public SubmitResult submitTask(MarkResult result, Marker marker) {
|
|
|
// 判断评卷分组是否存在/评卷是否结束
|
|
|
MarkGroup group = groupDao.findOne(marker.getExamId(), marker.getSubjectCode(), marker.getGroupNumber());
|
|
|
- if (group == null || group.getStatus() == MarkStatus.FINISH
|
|
|
- || !group.getStatus().toString().equals(result.getStatusValue())) {
|
|
|
+ if (group == null || group.getStatus() == MarkStatus.FINISH || !group.getStatus().toString()
|
|
|
+ .equals(result.getStatusValue())) {
|
|
|
return SubmitResult.faile();
|
|
|
}
|
|
|
|
|
@@ -583,9 +516,8 @@ public class MarkServiceImpl implements MarkService {
|
|
|
// 根据评卷状态选择读取不同的评卷任务
|
|
|
if (group.getStatus() == MarkStatus.FORMAL) {
|
|
|
MarkLibrary library = libraryDao.findOne(result.getLibraryId());
|
|
|
- if (library != null && library.getExamId().equals(group.getExamId())
|
|
|
- && library.getSubjectCode().equals(group.getSubjectCode())
|
|
|
- && library.getGroupNumber().equals(group.getNumber())) {
|
|
|
+ if (library != null && library.getExamId().equals(group.getExamId()) && library.getSubjectCode()
|
|
|
+ .equals(group.getSubjectCode()) && library.getGroupNumber().equals(group.getNumber())) {
|
|
|
// 问题卷
|
|
|
if (result.isProblem()) {
|
|
|
// 状态更新
|
|
@@ -611,12 +543,11 @@ 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())
|
|
|
+ if (library != null && library.getExamId().equals(group.getExamId()) && library.getSubjectCode()
|
|
|
+ .equals(group.getSubjectCode()) && library.getGroupNumber().equals(group.getNumber())
|
|
|
&& result.getMarkerScore() <= group.getTotalScore()) {
|
|
|
- if ((library.getMarkerId() == null && !hasApplied(library, marker))
|
|
|
- || (library.getMarkerId() != null && !library.getMarkerId().equals(marker.getId()))) {
|
|
|
+ if ((library.getMarkerId() == null && !hasApplied(library, marker)) || (library.getMarkerId() != null
|
|
|
+ && !library.getMarkerId().equals(marker.getId()))) {
|
|
|
return SubmitResult.faile();
|
|
|
}
|
|
|
library.setMarkerId(marker.getId());
|
|
@@ -669,14 +600,10 @@ 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) {
|
|
|
// 非本人领取的待评任务
|
|
@@ -685,13 +612,13 @@ 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.getStatus() == LibraryStatus.INSPECTED) && !library
|
|
|
+ .getMarkerId().equals(marker.getId())) {
|
|
|
return false;
|
|
|
}
|
|
|
// 是否多评情况下已处理过该考生评卷任务
|
|
|
- if (libraryDao
|
|
|
- .countByStudentIdAndMarkerIdAndIdNotEqual(library.getStudentId(), marker.getId(), library.getId()) > 0) {
|
|
|
+ if (libraryDao.countByStudentIdAndMarkerIdAndIdNotEqual(library.getStudentId(), marker.getId(), library.getId())
|
|
|
+ > 0) {
|
|
|
return false;
|
|
|
}
|
|
|
// 未选做
|
|
@@ -703,9 +630,10 @@ public class MarkServiceImpl implements MarkService {
|
|
|
}
|
|
|
// 尝试提交评卷结果
|
|
|
Date now = new Date();
|
|
|
- if (libraryDao.updateMarkerResult(library.getId(), LibraryStatus.MARKED, marker.getId(),
|
|
|
- result.getMarkerScore(), result.getScoreList(), now, result.getSpent(), null, null, null,
|
|
|
- LibraryStatus.WAITING, LibraryStatus.MARKED, LibraryStatus.INSPECTED, LibraryStatus.REJECTED) == 0) {
|
|
|
+ if (libraryDao
|
|
|
+ .updateMarkerResult(library.getId(), LibraryStatus.MARKED, marker.getId(), result.getMarkerScore(),
|
|
|
+ result.getScoreList(), now, result.getSpent(), null, null, null, LibraryStatus.WAITING,
|
|
|
+ LibraryStatus.MARKED, LibraryStatus.INSPECTED, LibraryStatus.REJECTED) == 0) {
|
|
|
// 条件不符更新失败,直接返回
|
|
|
return false;
|
|
|
}
|
|
@@ -731,8 +659,9 @@ 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, LibraryStatus.INSPECTED);
|
|
|
for (MarkLibrary other : list) {
|
|
|
// 本评卷任务或组长已打分,则跳过该任务
|
|
|
if (other.getId().equals(library.getId()) || other.getHeaderScore() != null) {
|
|
@@ -743,8 +672,9 @@ public class MarkServiceImpl implements MarkService {
|
|
|
continue;
|
|
|
}
|
|
|
// 其中一个有分另一个未选做 直接进入仲裁
|
|
|
- if ((other.getMarkerScore() != UN_SELECTIVE_SCORE && result.getMarkerScore() == UN_SELECTIVE_SCORE)
|
|
|
- || (other.getMarkerScore() == UN_SELECTIVE_SCORE && result.getMarkerScore() != UN_SELECTIVE_SCORE)) {
|
|
|
+ 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;
|
|
|
}
|
|
@@ -752,12 +682,13 @@ public class MarkServiceImpl implements MarkService {
|
|
|
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) {
|
|
|
+ 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 {
|
|
@@ -838,8 +769,7 @@ public class MarkServiceImpl implements MarkService {
|
|
|
* 管理员/组长打回某个评卷任务<br>
|
|
|
* isRest为true时重置该评卷任务
|
|
|
*
|
|
|
- * @param library
|
|
|
- * - 正评任务
|
|
|
+ * @param library - 正评任务
|
|
|
*/
|
|
|
@Override
|
|
|
@Transactional
|
|
@@ -852,8 +782,9 @@ public class MarkServiceImpl implements MarkService {
|
|
|
history.setUserId(userId);
|
|
|
history.setReason(reason);
|
|
|
Date now = new Date();
|
|
|
- if (libraryDao.resetById(library.getId(), null, reason, userId, now, isRest ? LibraryStatus.WAITING
|
|
|
- : LibraryStatus.REJECTED, LibraryStatus.MARKED, LibraryStatus.PROBLEM, LibraryStatus.INSPECTED) > 0) {
|
|
|
+ if (libraryDao.resetById(library.getId(), null, reason, userId, now,
|
|
|
+ isRest ? LibraryStatus.WAITING : LibraryStatus.REJECTED, LibraryStatus.MARKED, LibraryStatus.PROBLEM,
|
|
|
+ LibraryStatus.INSPECTED) > 0) {
|
|
|
if (!isRest) {
|
|
|
markerService.updateRejectCountById(library.getMarkerId());
|
|
|
rejectHistoryDao.save(history);
|
|
@@ -867,8 +798,9 @@ public class MarkServiceImpl implements MarkService {
|
|
|
// 开启三评时,打回1,2任务则删除第3条任务
|
|
|
long count = libraryDao.countByStudentIdAndGroupNumber(library.getStudentId(), library.getGroupNumber());
|
|
|
if (library.getTaskNumber() != 3 && count == 3) {
|
|
|
- MarkLibrary third = libraryDao.findByStudentIdAndGroupNumberAndTaskNumber(library.getStudentId(),
|
|
|
- library.getGroupNumber(), 3);
|
|
|
+ MarkLibrary third = libraryDao
|
|
|
+ .findByStudentIdAndGroupNumberAndTaskNumber(library.getStudentId(), library.getGroupNumber(),
|
|
|
+ 3);
|
|
|
trackDao.deleteByLibraryId(third.getId());
|
|
|
specialTagDao.deleteByLibraryId(third.getId());
|
|
|
problemHistoryDao.deleteByLibraryId(third.getId());
|
|
@@ -885,8 +817,7 @@ public class MarkServiceImpl implements MarkService {
|
|
|
/**
|
|
|
* 管理员/组长重置某个试评任务
|
|
|
*
|
|
|
- * @param library
|
|
|
- * - 试评任务
|
|
|
+ * @param library - 试评任务
|
|
|
*/
|
|
|
@Override
|
|
|
@Transactional
|
|
@@ -904,8 +835,7 @@ public class MarkServiceImpl implements MarkService {
|
|
|
/**
|
|
|
* 管理员/组长处理仲裁卷
|
|
|
*
|
|
|
- * @param history
|
|
|
- * - 仲裁卷
|
|
|
+ * @param history - 仲裁卷
|
|
|
*/
|
|
|
@Override
|
|
|
@Transactional
|
|
@@ -997,8 +927,8 @@ public class MarkServiceImpl implements MarkService {
|
|
|
boolean lessSelective = false;
|
|
|
boolean mutiSelective = false;
|
|
|
ExamStudent student = studentService.findById(studentId);
|
|
|
- Map<Integer, List<SelectiveGroup>> indexMap = selectiveGroupService.findGroupByExamIdAndSubjectCode(
|
|
|
- student.getExamId(), student.getSubjectCode());
|
|
|
+ Map<Integer, List<SelectiveGroup>> indexMap = selectiveGroupService
|
|
|
+ .findGroupByExamIdAndSubjectCode(student.getExamId(), student.getSubjectCode());
|
|
|
for (Integer index : indexMap.keySet()) {
|
|
|
// 循环选做题组
|
|
|
List<SelectiveGroup> indexGroup = indexMap.get(index);
|
|
@@ -1126,8 +1056,9 @@ public class MarkServiceImpl implements MarkService {
|
|
|
// 有非完成状态的评卷任务,直接返回
|
|
|
return false;
|
|
|
}
|
|
|
- double markerScore = library.getStatus() == LibraryStatus.ARBITRATED ? library.getHeaderScore() : library
|
|
|
- .getMarkerScore();
|
|
|
+ double markerScore = library.getStatus() == LibraryStatus.ARBITRATED ?
|
|
|
+ library.getHeaderScore() :
|
|
|
+ library.getMarkerScore();
|
|
|
if (markerScore == UN_SELECTIVE_SCORE) {
|
|
|
selectiveAll = true;
|
|
|
}
|
|
@@ -1147,12 +1078,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 {
|
|
@@ -1224,8 +1155,7 @@ public class MarkServiceImpl implements MarkService {
|
|
|
/**
|
|
|
* 更新某个评卷分组已评任务数量
|
|
|
*
|
|
|
- * @param group
|
|
|
- * - 评卷分组
|
|
|
+ * @param group - 评卷分组
|
|
|
*/
|
|
|
@Override
|
|
|
@Transactional
|
|
@@ -1233,7 +1163,8 @@ public class MarkServiceImpl implements MarkService {
|
|
|
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));
|
|
|
+ group.getNumber(), LibraryStatus.MARKED, LibraryStatus.ARBITRATED,
|
|
|
+ LibraryStatus.INSPECTED));
|
|
|
} else if (group.getStatus() == MarkStatus.TRIAL) {
|
|
|
groupDao.updateMarkedCount(group.getExamId(), group.getSubjectCode(), group.getNumber(),
|
|
|
(int) trialLibraryDao.countMarked(group.getExamId(), group.getSubjectCode(), group.getNumber()));
|
|
@@ -1243,20 +1174,21 @@ 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());
|
|
|
}
|
|
@@ -1265,10 +1197,8 @@ public class MarkServiceImpl implements MarkService {
|
|
|
/**
|
|
|
* 更新某个科目所有评卷分组评卷任务数量
|
|
|
*
|
|
|
- * @param examId
|
|
|
- * - 考试ID
|
|
|
- * @param subjectCode
|
|
|
- * - 科目代码
|
|
|
+ * @param examId - 考试ID
|
|
|
+ * @param subjectCode - 科目代码
|
|
|
*/
|
|
|
@Transactional
|
|
|
@Override
|
|
@@ -1280,76 +1210,11 @@ public class MarkServiceImpl implements MarkService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 根据考生、学习中心、评卷分组构造正式评卷任务
|
|
|
- *
|
|
|
- * @param student
|
|
|
- * - 考生
|
|
|
- * @param group
|
|
|
- * - 评卷分组
|
|
|
- * @param subject
|
|
|
- * - 科目
|
|
|
- */
|
|
|
- @Override
|
|
|
- @Transactional
|
|
|
- public void buildFormalLibrary(ExamStudent student, MarkGroup group, ExamSubject subject) {
|
|
|
- // 查询是否已创建评卷任务
|
|
|
- if (libraryDao.countByStudentIdAndGroupNumber(student.getId(), group.getNumber()) == 0) {
|
|
|
- MarkLibrary library = new MarkLibrary();
|
|
|
- library.setExamId(student.getExamId());
|
|
|
- library.setSubjectCode(student.getSubjectCode());
|
|
|
- library.setGroupNumber(group.getNumber());
|
|
|
- library.setStudentId(student.getId());
|
|
|
- library.setExamNumber(student.getExamNumber());
|
|
|
- library.setSecretNumber(student.getSecretNumber());
|
|
|
- library.setTaskNumber(1);
|
|
|
- library.setStatus(LibraryStatus.WAITING);
|
|
|
- libraryDao.save(library);
|
|
|
- group.setLibraryCount(group.getLibraryCount() + 1);
|
|
|
- // 开启双评时需要判断是否生成第二份评卷任务
|
|
|
- if (group.getDoubleRate() != null && group.getDoubleRate() > 0) {
|
|
|
- boolean needDouble = false;
|
|
|
- if (group.getDoubleRate() == 1) {
|
|
|
- needDouble = true;
|
|
|
- } else {
|
|
|
- double studentCount = subject.getUploadCount();
|
|
|
- double libraryCount = group.getLibraryCount();
|
|
|
- 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);
|
|
|
- }
|
|
|
- if (needDouble) {
|
|
|
- library = new MarkLibrary();
|
|
|
- library.setExamId(student.getExamId());
|
|
|
- library.setSubjectCode(student.getSubjectCode());
|
|
|
- library.setGroupNumber(group.getNumber());
|
|
|
- library.setStudentId(student.getId());
|
|
|
- library.setExamNumber(student.getExamNumber());
|
|
|
- library.setSecretNumber(student.getSecretNumber());
|
|
|
- library.setTaskNumber(2);
|
|
|
- library.setStatus(LibraryStatus.WAITING);
|
|
|
- libraryDao.save(library);
|
|
|
- group.setLibraryCount(group.getLibraryCount() + 1);
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- group.setBuildTime(student.getUploadTime());
|
|
|
- groupDao.updateBuildTime(group.getExamId(), group.getSubjectCode(), group.getNumber(), student.getUploadTime());
|
|
|
- }
|
|
|
-
|
|
|
/**
|
|
|
* 根据考生、学习中心、评卷分组构造试评评卷任务
|
|
|
*
|
|
|
- * @param student
|
|
|
- * - 考生
|
|
|
- * @param group
|
|
|
- * - 评卷分组
|
|
|
+ * @param student - 考生
|
|
|
+ * @param group - 评卷分组
|
|
|
*/
|
|
|
@Override
|
|
|
@Transactional
|
|
@@ -1378,8 +1243,7 @@ public class MarkServiceImpl implements MarkService {
|
|
|
/**
|
|
|
* 重置评卷分组的连带操作
|
|
|
*
|
|
|
- * @param group
|
|
|
- * - 评卷分组
|
|
|
+ * @param group - 评卷分组
|
|
|
*/
|
|
|
private void resetGroup(MarkGroup group) {
|
|
|
if (group.getStatus() == MarkStatus.FORMAL) {
|
|
@@ -1392,8 +1256,9 @@ 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());
|
|
@@ -1410,8 +1275,7 @@ public class MarkServiceImpl implements MarkService {
|
|
|
/**
|
|
|
* 计算并更新指定评卷员的评卷质量指标
|
|
|
*
|
|
|
- * @param marker
|
|
|
- * - 评卷员
|
|
|
+ * @param marker - 评卷员
|
|
|
*/
|
|
|
@Override
|
|
|
@Transactional
|
|
@@ -1430,8 +1294,9 @@ public class MarkServiceImpl implements MarkService {
|
|
|
if (library.getStatus() == LibraryStatus.MARKED || library.getStatus() == LibraryStatus.INSPECTED) {
|
|
|
validCount++;
|
|
|
}
|
|
|
- double score = library.getMarkerScore() != null && library.getMarkerScore() != UN_SELECTIVE_SCORE ? library
|
|
|
- .getMarkerScore() : 0;
|
|
|
+ double score = library.getMarkerScore() != null && library.getMarkerScore() != UN_SELECTIVE_SCORE ?
|
|
|
+ library.getMarkerScore() :
|
|
|
+ 0;
|
|
|
int spent = library.getMarkerSpent() != null ? library.getMarkerSpent() : 0;
|
|
|
|
|
|
sumScore += score;
|
|
@@ -1498,8 +1363,9 @@ public class MarkServiceImpl implements MarkService {
|
|
|
updateStudentGroupScore(library.getStudentId(), group.getExamId(), group.getSubjectCode(), group,
|
|
|
library.getMarkerScore(), library.getScoreList());
|
|
|
// 未分组的题目
|
|
|
- long unGroupQuestionCount = questionService.countByExamIdAndSubjectAndObjectiveAndGroupNumberIsNull(
|
|
|
- group.getExamId(), group.getSubjectCode(), false);
|
|
|
+ long unGroupQuestionCount = questionService
|
|
|
+ .countByExamIdAndSubjectAndObjectiveAndGroupNumberIsNull(group.getExamId(), group.getSubjectCode(),
|
|
|
+ false);
|
|
|
long groupCount = groupDao.countByExamIdAndSubjectCode(group.getExamId(), group.getSubjectCode());
|
|
|
checkStudentSubjective(library.getStudentId(), groupCount, unGroupQuestionCount);
|
|
|
}
|
|
@@ -1517,8 +1383,9 @@ public class MarkServiceImpl implements MarkService {
|
|
|
updateStudentGroupScore(studentId, group.getExamId(), group.getSubjectCode(), group, group.getMarkScore(),
|
|
|
group.getMarkScoreDetail());
|
|
|
// 未分组的题目
|
|
|
- long unGroupQuestionCount = questionService.countByExamIdAndSubjectAndObjectiveAndGroupNumberIsNull(
|
|
|
- group.getExamId(), group.getSubjectCode(), false);
|
|
|
+ long unGroupQuestionCount = questionService
|
|
|
+ .countByExamIdAndSubjectAndObjectiveAndGroupNumberIsNull(group.getExamId(), group.getSubjectCode(),
|
|
|
+ false);
|
|
|
long groupCount = groupDao.countByExamIdAndSubjectCode(group.getExamId(), group.getSubjectCode());
|
|
|
checkStudentSubjective(studentId, groupCount, unGroupQuestionCount);
|
|
|
} else {
|
|
@@ -1555,8 +1422,9 @@ public class MarkServiceImpl implements MarkService {
|
|
|
scoreDao.deleteByExamIdAndSubjectCodeAndGroupNumber(examId, subjectCode, groupNumber);
|
|
|
rejectHistoryDao.deleteByExamIdAndSubjectCodeAndGroupNumber(examId, subjectCode, groupNumber);
|
|
|
selectiveStudentDao.deleteByExamIdAndSubjectCode(examId, subjectCode);
|
|
|
- studentService.updateSubjectiveStatusAndScoreAndInspectorId(examId, subjectCode, SubjectiveStatus.UNMARK, 0,
|
|
|
- null, null, null);
|
|
|
+ studentService
|
|
|
+ .updateSubjectiveStatusAndScoreAndInspectorId(examId, subjectCode, SubjectiveStatus.UNMARK, 0, null,
|
|
|
+ null, null);
|
|
|
inspectHistoryService.deleteByExamIdAndSubjectCode(examId, subjectCode);
|
|
|
}
|
|
|
|
|
@@ -1574,10 +1442,10 @@ public class MarkServiceImpl implements MarkService {
|
|
|
private void updateStudentGroupScore(Integer studentId, Integer examId, String subjectCode, MarkGroup group,
|
|
|
double score, List<ScoreItem> scoreList) {
|
|
|
// scoreDao.deleteByStudentIdAndGroupNumber(studentId, groupNumber);
|
|
|
- List<ExamQuestion> questions = questionService.findByExamAndSubjectAndObjectiveAndGroupNumber(examId,
|
|
|
- subjectCode, false, group.getNumber());
|
|
|
- List<SubjectiveScore> subjectiveScores = scoreService.findByStudentIdAndGroupNumber(studentId,
|
|
|
- group.getNumber());
|
|
|
+ List<ExamQuestion> questions = questionService
|
|
|
+ .findByExamAndSubjectAndObjectiveAndGroupNumber(examId, subjectCode, false, group.getNumber());
|
|
|
+ List<SubjectiveScore> subjectiveScores = scoreService
|
|
|
+ .findByStudentIdAndGroupNumber(studentId, group.getNumber());
|
|
|
for (int i = 0; i < questions.size(); i++) {
|
|
|
ExamQuestion question = questions.get(i);
|
|
|
SubjectiveScore ss;
|
|
@@ -1608,8 +1476,9 @@ public class MarkServiceImpl implements MarkService {
|
|
|
ss.setUnansweredCount(0);
|
|
|
} else {
|
|
|
if (MarkStatus.TRIAL.equals(group.getStatus())) {
|
|
|
- ss.setUnansweredCount(trialTrackDao.countByStudentIdAndQuestionNumberAndUnanswered(studentId,
|
|
|
- question.getQuestionNumber(), true));
|
|
|
+ ss.setUnansweredCount(trialTrackDao
|
|
|
+ .countByStudentIdAndQuestionNumberAndUnanswered(studentId, question.getQuestionNumber(),
|
|
|
+ true));
|
|
|
} else {
|
|
|
ss.setUnansweredCount(trackDao.countByStudentIdAndQuestionNumberAndUnanswered(studentId,
|
|
|
question.getQuestionNumber(), true));
|
|
@@ -1683,8 +1552,9 @@ public class MarkServiceImpl implements MarkService {
|
|
|
Date now = new Date();
|
|
|
for (Integer groupNumber : map.keySet()) {
|
|
|
List<MarkLibrary> list = libraryDao.findByStudentIdAndGroupNumber(student.getId(), groupNumber);
|
|
|
- List<ExamQuestion> questions = questionService.findByExamAndSubjectAndObjectiveAndGroupNumber(
|
|
|
- student.getExamId(), student.getSubjectCode(), false, groupNumber);
|
|
|
+ List<ExamQuestion> questions = questionService
|
|
|
+ .findByExamAndSubjectAndObjectiveAndGroupNumber(student.getExamId(), student.getSubjectCode(),
|
|
|
+ false, groupNumber);
|
|
|
List<MarkStepDTO> qList = map.get(groupNumber);
|
|
|
MarkGroup group = groupDao.findOne(student.getExamId(), student.getSubjectCode(), groupNumber);
|
|
|
int count = 0;
|
|
@@ -1714,18 +1584,18 @@ public class MarkServiceImpl implements MarkService {
|
|
|
count++;
|
|
|
continue;
|
|
|
}
|
|
|
- if (library.getStatus().equals(LibraryStatus.MARKED)
|
|
|
- || library.getStatus().equals(LibraryStatus.INSPECTED)) {
|
|
|
+ if (library.getStatus().equals(LibraryStatus.MARKED) || library.getStatus()
|
|
|
+ .equals(LibraryStatus.INSPECTED)) {
|
|
|
List<ScoreItem> sList = library.getScoreList();
|
|
|
for (MarkStepDTO markStepDTO : qList) {
|
|
|
- trackDao.deleteByLibraryIdAndQuestionNumber(library.getId(), markStepDTO.getMainNumber() + "."
|
|
|
- + markStepDTO.getSubNumber());
|
|
|
+ trackDao.deleteByLibraryIdAndQuestionNumber(library.getId(),
|
|
|
+ markStepDTO.getMainNumber() + "." + markStepDTO.getSubNumber());
|
|
|
scoreDao.updateRejected(library.getStudentId(), markStepDTO.getMainNumber(),
|
|
|
markStepDTO.getSubNumber(), true);
|
|
|
for (int i = 0; i < questions.size(); i++) {
|
|
|
ExamQuestion question = questions.get(i);
|
|
|
- if (markStepDTO.getMainNumber() == question.getMainNumber()
|
|
|
- && markStepDTO.getSubNumber().equals(question.getSubNumber())) {
|
|
|
+ if (markStepDTO.getMainNumber() == question.getMainNumber() && markStepDTO.getSubNumber()
|
|
|
+ .equals(question.getSubNumber())) {
|
|
|
sList.remove(i);
|
|
|
sList.add(i, new ScoreItem(false));
|
|
|
}
|
|
@@ -1743,9 +1613,10 @@ public class MarkServiceImpl implements MarkService {
|
|
|
// markerScoreList.append(",");
|
|
|
// }
|
|
|
}
|
|
|
- if (libraryDao.updateMarkerResult(library.getId(), LibraryStatus.REJECTED, library.getMarkerId(),
|
|
|
- null, StringUtils.join(markerScoreList, ","), null, null, reason, userId, now,
|
|
|
- LibraryStatus.MARKED, LibraryStatus.INSPECTED) == 1) {
|
|
|
+ if (libraryDao
|
|
|
+ .updateMarkerResult(library.getId(), LibraryStatus.REJECTED, library.getMarkerId(), null,
|
|
|
+ StringUtils.join(markerScoreList, ","), null, null, reason, userId, now,
|
|
|
+ LibraryStatus.MARKED, LibraryStatus.INSPECTED) == 1) {
|
|
|
markerService.updateRejectCountById(library.getMarkerId());
|
|
|
history.setRejectScoreList(StringUtils.join(markerScoreList, ","));
|
|
|
rejectHistoryDao.save(history);
|
|
@@ -1756,8 +1627,9 @@ public class MarkServiceImpl implements MarkService {
|
|
|
if (count > 0) {
|
|
|
updateMarkedCount(group);
|
|
|
resetStudentGroup(student.getId(), student.getExamId(), student.getSubjectCode(), groupNumber);
|
|
|
- studentService.updateSubjectiveStatusAndTimeAndInspectorId(student.getId(), SubjectiveStatus.UNMARK,
|
|
|
- null, null);
|
|
|
+ studentService
|
|
|
+ .updateSubjectiveStatusAndTimeAndInspectorId(student.getId(), SubjectiveStatus.UNMARK, null,
|
|
|
+ null);
|
|
|
}
|
|
|
}
|
|
|
return true;
|
|
@@ -1770,8 +1642,8 @@ public class MarkServiceImpl implements MarkService {
|
|
|
return false;
|
|
|
}
|
|
|
for (ExamQuestion question : list) {
|
|
|
- SelectiveGroup selectiveGroup = selectiveGroupService.findOne(question.getExamId(),
|
|
|
- question.getSubjectCode(), question.getMainNumber());
|
|
|
+ SelectiveGroup selectiveGroup = selectiveGroupService
|
|
|
+ .findOne(question.getExamId(), question.getSubjectCode(), question.getMainNumber());
|
|
|
if (selectiveGroup != null) {
|
|
|
continue;
|
|
|
}
|
|
@@ -1782,9 +1654,9 @@ public class MarkServiceImpl implements MarkService {
|
|
|
String subjectCode = question.getSubjectCode();
|
|
|
boolean objective = question.isObjective();
|
|
|
ExamSubject subject = subjectService.find(examId, subjectCode);
|
|
|
- double totalScore = objective ? BigDecimalUtils.sub(subject.getObjectiveScore(),
|
|
|
- question.getTotalScore()) : BigDecimalUtils.sub(subject.getSubjectiveScore(),
|
|
|
- question.getTotalScore());
|
|
|
+ double totalScore = objective ?
|
|
|
+ BigDecimalUtils.sub(subject.getObjectiveScore(), question.getTotalScore()) :
|
|
|
+ BigDecimalUtils.sub(subject.getSubjectiveScore(), question.getTotalScore());
|
|
|
questionService.deleteById(question.getId());
|
|
|
if (objective) {
|
|
|
examService.updateObjectiveStatus(examId, ObjectiveStatus.WAITING);
|
|
@@ -1801,8 +1673,9 @@ public class MarkServiceImpl implements MarkService {
|
|
|
// subjectCode);
|
|
|
inspectHistoryService.deleteByExamIdAndSubjectCode(examId, subjectCode);
|
|
|
} else {
|
|
|
- List<Integer> studentList = studentService.findIdByExamIdAndSubjectCodeAndSubjectiveStatus(
|
|
|
- examId, subjectCode, SubjectiveStatus.UNMARK, SubjectiveStatus.MARKED);
|
|
|
+ List<Integer> studentList = studentService
|
|
|
+ .findIdByExamIdAndSubjectCodeAndSubjectiveStatus(examId, subjectCode,
|
|
|
+ SubjectiveStatus.UNMARK, SubjectiveStatus.MARKED);
|
|
|
for (Integer studentId : studentList) {
|
|
|
checkStudentSubjective(studentId, groupCount, unGroupQuestionCount);
|
|
|
}
|
|
@@ -1817,8 +1690,9 @@ public class MarkServiceImpl implements MarkService {
|
|
|
@Override
|
|
|
@Transactional
|
|
|
public boolean rejectLibrary(MarkLibrary library, MarkStepDTO[] questionList, Integer userId, String reason) {
|
|
|
- List<ExamQuestion> questions = questionService.findByExamAndSubjectAndObjectiveAndGroupNumber(
|
|
|
- library.getExamId(), library.getSubjectCode(), false, library.getGroupNumber());
|
|
|
+ List<ExamQuestion> questions = questionService
|
|
|
+ .findByExamAndSubjectAndObjectiveAndGroupNumber(library.getExamId(), library.getSubjectCode(), false,
|
|
|
+ library.getGroupNumber());
|
|
|
if (questionList.length == questions.size()) {
|
|
|
return rejectLibrary(library, userId, reason, false);
|
|
|
}
|
|
@@ -1833,14 +1707,14 @@ public class MarkServiceImpl implements MarkService {
|
|
|
Date now = new Date();
|
|
|
List<ScoreItem> sList = library.getScoreList();
|
|
|
for (MarkStepDTO markStepDTO : questionList) {
|
|
|
- trackDao.deleteByLibraryIdAndQuestionNumber(library.getId(), markStepDTO.getMainNumber() + "."
|
|
|
- + markStepDTO.getSubNumber());
|
|
|
+ trackDao.deleteByLibraryIdAndQuestionNumber(library.getId(),
|
|
|
+ markStepDTO.getMainNumber() + "." + markStepDTO.getSubNumber());
|
|
|
scoreDao.updateRejected(library.getStudentId(), markStepDTO.getMainNumber(), markStepDTO.getSubNumber(),
|
|
|
true);
|
|
|
for (int i = 0; i < questions.size(); i++) {
|
|
|
ExamQuestion question = questions.get(i);
|
|
|
- if (markStepDTO.getMainNumber() == question.getMainNumber()
|
|
|
- && markStepDTO.getSubNumber().equals(question.getSubNumber())) {
|
|
|
+ if (markStepDTO.getMainNumber() == question.getMainNumber() && markStepDTO.getSubNumber()
|
|
|
+ .equals(question.getSubNumber())) {
|
|
|
sList.remove(i);
|
|
|
sList.add(i, new ScoreItem(false));
|
|
|
}
|
|
@@ -1870,8 +1744,9 @@ public class MarkServiceImpl implements MarkService {
|
|
|
// 开启三评时,打回1,2任务则删除第3条任务
|
|
|
long count = libraryDao.countByStudentIdAndGroupNumber(library.getStudentId(), library.getGroupNumber());
|
|
|
if (library.getTaskNumber() != 3 && count == 3) {
|
|
|
- MarkLibrary third = libraryDao.findByStudentIdAndGroupNumberAndTaskNumber(library.getStudentId(),
|
|
|
- library.getGroupNumber(), 3);
|
|
|
+ MarkLibrary third = libraryDao
|
|
|
+ .findByStudentIdAndGroupNumberAndTaskNumber(library.getStudentId(), library.getGroupNumber(),
|
|
|
+ 3);
|
|
|
trackDao.deleteByLibraryId(third.getId());
|
|
|
specialTagDao.deleteByLibraryId(third.getId());
|
|
|
problemHistoryDao.deleteByLibraryId(third.getId());
|