luoshi пре 4 година
родитељ
комит
3614dba8d6

+ 2 - 5
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/InspectedService.java

@@ -1,11 +1,11 @@
 package cn.com.qmth.stmms.biz.exam.service;
 
-import java.util.List;
-
 import cn.com.qmth.stmms.biz.exam.model.ExamStudent;
 import cn.com.qmth.stmms.biz.exam.query.ExamStudentSearchQuery;
 import cn.com.qmth.stmms.common.enums.SubjectiveStatus;
 
+import java.util.List;
+
 public interface InspectedService {
 
     List<ExamStudent> findByQuery(ExamStudentSearchQuery query, SubjectiveStatus status, Integer mainNumber,
@@ -14,8 +14,6 @@ public interface InspectedService {
     Integer countByQuery(ExamStudentSearchQuery query, SubjectiveStatus status, Integer mainNumber,
             Double mainStartScore, Double mainEndScore, Double questionScore);
 
-<<<<<<< HEAD
-=======
     void releaseByUserId(Integer examId, String subjectCode, Integer userId);
 
     void releaseByStudent(ExamStudent student);
@@ -30,5 +28,4 @@ public interface InspectedService {
      */
     boolean hasApplied(ExamStudent student, Integer userId);
 
->>>>>>> release_1.3.1
 }

+ 9 - 37
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/impl/InspectedServiceImpl.java

@@ -1,28 +1,23 @@
 package cn.com.qmth.stmms.biz.exam.service.impl;
 
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
-import javax.persistence.Query;
-
-import org.apache.commons.lang.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
 import cn.com.qmth.stmms.biz.common.BaseQueryService;
 import cn.com.qmth.stmms.biz.exam.model.ExamStudent;
 import cn.com.qmth.stmms.biz.exam.query.ExamStudentSearchQuery;
 import cn.com.qmth.stmms.biz.exam.service.ExamStudentService;
 import cn.com.qmth.stmms.biz.exam.service.InspectedService;
-<<<<<<< HEAD
-=======
 import cn.com.qmth.stmms.biz.user.service.UserService;
 import cn.com.qmth.stmms.biz.utils.TaskLock;
 import cn.com.qmth.stmms.biz.utils.TaskLockUtil;
->>>>>>> release_1.3.1
 import cn.com.qmth.stmms.common.enums.SubjectiveStatus;
+import org.apache.commons.lang.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.Query;
+import java.util.ArrayList;
+import java.util.List;
 
 @Service
 public class InspectedServiceImpl extends BaseQueryService<ExamStudent> implements InspectedService {
@@ -33,34 +28,20 @@ public class InspectedServiceImpl extends BaseQueryService<ExamStudent> implemen
     @Autowired
     private ExamStudentService studentService;
 
-<<<<<<< HEAD
-=======
     @Autowired
     private UserService userService;
 
->>>>>>> release_1.3.1
     @SuppressWarnings("unchecked")
     @Override
     public List<ExamStudent> findByQuery(ExamStudentSearchQuery query, SubjectiveStatus status, Integer mainNumber,
             Double mainStartScore, Double mainEndScore, Double questionScore) {
-<<<<<<< HEAD
-        StringBuilder dataSql = new StringBuilder("select distinct s.id "
-=======
         StringBuilder dataSql = new StringBuilder("select distinct s.id , s.inspect_time "
->>>>>>> release_1.3.1
                 + " from eb_exam_student s left join eb_subjective_score e on e.student_id = s.id ");
         StringBuilder limitSql = new StringBuilder(" limit :offset,:pageSize");
         Query dataQuery = getQuery(query, status, mainNumber, mainStartScore, mainEndScore, questionScore, dataSql,
                 limitSql);
         dataQuery.setParameter("offset", (query.getPageNumber() - 1) * query.getPageSize());
         dataQuery.setParameter("pageSize", query.getPageSize());
-<<<<<<< HEAD
-        List<Integer> list = dataQuery.getResultList();
-        List<ExamStudent> resultList = new ArrayList<ExamStudent>();
-        if (list != null && !list.isEmpty()) {
-            for (Integer id : list) {
-                ExamStudent e = studentService.findById(id);
-=======
         List<Object[]> list = dataQuery.getResultList();
         List<ExamStudent> resultList = new ArrayList<ExamStudent>();
         if (list != null && !list.isEmpty()) {
@@ -69,7 +50,6 @@ public class InspectedServiceImpl extends BaseQueryService<ExamStudent> implemen
                 if (e.getInspectorId() != null) {
                     e.setInspector(userService.findById(e.getInspectorId()));
                 }
->>>>>>> release_1.3.1
                 resultList.add(e);
             }
         }
@@ -111,13 +91,8 @@ public class InspectedServiceImpl extends BaseQueryService<ExamStudent> implemen
             whereSql.append(" and e.score = :questionScore");
         }
         dataSql.append(whereSql);
-<<<<<<< HEAD
-        // StringBuilder orderSql = new StringBuilder("order by s.id desc ");
-        // dataSql.append(orderSql);
-=======
         StringBuilder orderSql = new StringBuilder(" order by s.inspect_time desc ");
         dataSql.append(orderSql);
->>>>>>> release_1.3.1
         if (limitSql != null) {
             dataSql.append(limitSql);
         }
@@ -165,8 +140,6 @@ public class InspectedServiceImpl extends BaseQueryService<ExamStudent> implemen
         return count;
     }
 
-<<<<<<< HEAD
-=======
     @Override
     public void releaseByUserId(Integer examId, String subjectCode, Integer userId) {
         String key = examId + "_" + subjectCode;
@@ -206,5 +179,4 @@ public class InspectedServiceImpl extends BaseQueryService<ExamStudent> implemen
     private String getKey(ExamStudent student) {
         return student.getExamId() + "_" + student.getSubjectCode();
     }
->>>>>>> release_1.3.1
 }

+ 152 - 277
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/service/Impl/MarkServiceImpl.java

@@ -1,8 +1,9 @@
 package cn.com.qmth.stmms.biz.mark.service.Impl;
 
-<<<<<<< HEAD
 import cn.com.qmth.stmms.biz.exam.dao.*;
 import cn.com.qmth.stmms.biz.exam.model.*;
+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.mark.dao.*;
@@ -14,15 +15,6 @@ 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 java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-
->>>>>>> release_1.3.1
 import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -31,58 +23,8 @@ import org.springframework.data.domain.Sort;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-<<<<<<< HEAD
 import java.util.*;
 import java.util.concurrent.ConcurrentHashMap;
-=======
-import cn.com.qmth.stmms.biz.exam.dao.ExamQuestionDao;
-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.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.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.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.TrialHistoryDao;
-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.SubmitResult;
-import cn.com.qmth.stmms.biz.mark.model.TrialHistory;
-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.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;
->>>>>>> release_1.3.1
 
 /**
  * 与评卷相关的所有修改操作(非传播性的新增操作除外),全部汇总到这里进行集中控制
@@ -153,8 +95,7 @@ public class MarkServiceImpl implements MarkService {
     /**
      * 某个评卷分组已申请的评卷任务数量
      *
-     * @param group
-     *            - 评卷分组
+     * @param group - 评卷分组
      * @return int
      */
     @Override
@@ -173,8 +114,7 @@ public class MarkServiceImpl implements MarkService {
     /**
      * 某个评卷员已申请的评卷任务数量
      *
-     * @param marker
-     *            - 评卷员
+     * @param marker - 评卷员
      * @return int
      */
     @Override
@@ -198,8 +138,7 @@ public class MarkServiceImpl implements MarkService {
     /**
      * 某个评卷员已完成的评卷任务数量
      *
-     * @param marker
-     *            - 评卷员
+     * @param marker - 评卷员
      * @return long
      */
     @Override
@@ -212,8 +151,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,
+                        LibraryStatus.INSPECTED);
             }
         }
         return 0;
@@ -222,8 +161,7 @@ public class MarkServiceImpl implements MarkService {
     /**
      * 释放某个评卷分组的锁定任务
      *
-     * @param group
-     *            - 评卷分组
+     * @param group - 评卷分组
      */
     @Override
     public void releaseByGroup(MarkGroup group) {
@@ -239,8 +177,7 @@ public class MarkServiceImpl implements MarkService {
     /**
      * 重置某个评卷分组的所有评卷任务
      *
-     * @param group
-     *            - 评卷分组
+     * @param group - 评卷分组
      */
     @Override
     @Transactional
@@ -251,8 +188,7 @@ public class MarkServiceImpl implements MarkService {
     /**
      * 删除某个评卷分组
      *
-     * @param group
-     *            - 评卷分组
+     * @param group - 评卷分组
      */
     @Override
     @Transactional
@@ -279,8 +215,9 @@ public class MarkServiceImpl implements MarkService {
         markerDao.deleteByExamIdAndSubjectCodeAndGroupNumber(group.getExamId(), group.getSubjectCode(),
                 group.getNumber());
         // 小题数据
-        questionDao.resetByExamIdAndSubjectCodeAndObjectiveAndGroupNumber(group.getExamId(), group.getSubjectCode(),
-                false, group.getNumber());
+        questionDao
+                .resetByExamIdAndSubjectCodeAndObjectiveAndGroupNumber(group.getExamId(), group.getSubjectCode(), false,
+                        group.getNumber());
         // 考生分组状态与得分明细
         groupStudentDao.deleteByExamIdAndSubjectCodeAndGroupNumber(group.getExamId(), group.getSubjectCode(),
                 group.getNumber());
@@ -290,17 +227,18 @@ public class MarkServiceImpl implements MarkService {
         releaseByGroup(group);
         groupDao.delete(group);
         // 未分组的题目
-        long unGroupQuestionCount = questionDao.countByExamIdAndSubjectAndObjectiveAndGroupNumberIsNull(
-                group.getExamId(), group.getSubjectCode(), false);
+        long unGroupQuestionCount = questionDao
+                .countByExamIdAndSubjectAndObjectiveAndGroupNumberIsNull(group.getExamId(), group.getSubjectCode(),
+                        false);
         // 考生整体状态与总分更新
         long groupCount = groupDao.countByExamIdAndSubjectCode(group.getExamId(), group.getSubjectCode());
         if (groupCount == 0 || unGroupQuestionCount > 0) {
             studentService.updateSubjectiveStatusAndScoreAndInspectorId(group.getExamId(), group.getSubjectCode(),
                     SubjectiveStatus.UNMARK, 0, null, null, null);
         } else {
-            List<Integer> studentList = studentService.findIdByExamIdAndSubjectCodeAndSubjectiveStatus(
-                    group.getExamId(), group.getSubjectCode(), SubjectiveStatus.UNMARK, SubjectiveStatus.MARKED,
-                    SubjectiveStatus.INSPECTED);
+            List<Integer> studentList = studentService
+                    .findIdByExamIdAndSubjectCodeAndSubjectiveStatus(group.getExamId(), group.getSubjectCode(),
+                            SubjectiveStatus.UNMARK, SubjectiveStatus.MARKED, SubjectiveStatus.INSPECTED);
             for (Integer studentId : studentList) {
                 checkStudentSubjective(studentId, groupCount, unGroupQuestionCount);
             }
@@ -310,14 +248,14 @@ public class MarkServiceImpl implements MarkService {
     /**
      * 修改某个评卷分组给分步骤,并重置评卷任务
      *
-     * @param group
-     *            - 评卷分组
+     * @param group - 评卷分组
      */
     @Override
     @Transactional
     public void updateGroup(MarkGroup group, List<ExamQuestion> questionList, ScorePolicy policy, ThirdPolicy third) {
-        List<ExamQuestion> old = questionDao.findByExamIdAndSubjectCodeAndObjectiveAndGroupNumber(group.getExamId(),
-                group.getSubjectCode(), false, group.getNumber());
+        List<ExamQuestion> old = questionDao
+                .findByExamIdAndSubjectCodeAndObjectiveAndGroupNumber(group.getExamId(), group.getSubjectCode(), false,
+                        group.getNumber());
         for (ExamQuestion question : old) {
             question.setGroupNumber(null);
             questionDao.saveAndFlush(question);
@@ -349,10 +287,8 @@ public class MarkServiceImpl implements MarkService {
     /**
      * 评卷员申请领取某个正式评卷任务
      *
-     * @param library
-     *            - 正评任务
-     * @param marker
-     *            - 评卷员
+     * @param library - 正评任务
+     * @param marker  - 评卷员
      */
     @Override
     public boolean applyLibrary(MarkLibrary library, Marker marker) {
@@ -375,29 +311,21 @@ public class MarkServiceImpl implements MarkService {
     /**
      * 评卷员申请领取某个试评评卷任务
      *
-     * @param library
-     *            - 试评任务
-     * @param marker
-     *            - 评卷员
+     * @param library - 试评任务
+     * @param marker  - 评卷员
      * @return boolean
      */
     @Override
     public boolean applyLibrary(TrialLibrary library, Marker marker) {
         TaskLock taskLock = TaskLockUtil.getTrialTask(getGroupKey(marker));
-<<<<<<< HEAD
-        return taskLock.add(getApplyTaskId(library, marker), 1, marker.getId());
-=======
         return taskLock.add(library.getStudentId(), 1, marker.getId());
->>>>>>> release_1.3.1
     }
 
     /**
      * 评卷员是否已领取了某个正式评卷任务
      *
-     * @param library
-     *            - 正评任务
-     * @param marker
-     *            - 评卷员
+     * @param library - 正评任务
+     * @param marker  - 评卷员
      * @return boolean
      */
     @Override
@@ -409,29 +337,21 @@ public class MarkServiceImpl implements MarkService {
     /**
      * 评卷员是否已领取了某个试评评卷任务
      *
-     * @param library
-     *            - 试评任务
-     * @param marker
-     *            - 评卷员
+     * @param library - 试评任务
+     * @param marker  - 评卷员
      * @return boolean
      */
     @Override
     public boolean hasApplied(TrialLibrary library, Marker marker) {
         TaskLock taskLock = TaskLockUtil.getTrialTask(getGroupKey(marker));
-<<<<<<< HEAD
-        return taskLock.exist(getApplyTaskId(library, marker), 1, marker.getId());
-=======
         return taskLock.exist(library.getStudentId(), 1, marker.getId());
->>>>>>> release_1.3.1
     }
 
     /**
      * 释放某个评卷员已完成的评卷任务
      *
-     * @param result
-     *            - 评卷结果
-     * @param marker
-     *            - 评卷员
+     * @param result - 评卷结果
+     * @param marker - 评卷员
      */
     @Override
     public void releaseTask(SubmitResult result, Marker marker) {
@@ -442,36 +362,27 @@ public class MarkServiceImpl implements MarkService {
             taskLock.refresh(marker.getId());
         } else if (result.getTrialLibrary() != null) {
             TaskLock taskLock = TaskLockUtil.getTrialTask(getGroupKey(marker));
-<<<<<<< HEAD
-            taskLock.remove(getApplyTaskId(result.getTrialLibrary(), marker), 1, marker.getId());
-=======
             taskLock.remove(result.getTrialLibrary().getStudentId(), 1, marker.getId());
->>>>>>> release_1.3.1
         }
     }
 
     /**
      * 释放某个评卷员的所有锁定任务
      *
-     * @param marker
-     *            - 评卷员
+     * @param marker - 评卷员
      */
     @Override
     public void releaseByMarker(Marker marker) {
         TaskLock taskLock = TaskLockUtil.getFormalTask(getGroupKey(marker));
         taskLock.clear(marker.getId());
-<<<<<<< HEAD
-=======
         TaskLock lock = TaskLockUtil.getTrialTask(getGroupKey(marker));
         lock.clear(marker.getId());
->>>>>>> release_1.3.1
     }
 
     /**
      * 重置某个评卷员
      *
-     * @param marker
-     *            - 评卷员
+     * @param marker - 评卷员
      */
     @Override
     @Transactional
@@ -533,8 +444,7 @@ public class MarkServiceImpl implements MarkService {
     /**
      * 根据考生删除评卷任务
      *
-     * @param student
-     *            - 考生
+     * @param student - 考生
      */
     @Override
     @Transactional
@@ -559,10 +469,8 @@ public class MarkServiceImpl implements MarkService {
     /**
      * 评卷员提交评卷任务
      *
-     * @param result
-     *            - 评卷结果
-     * @param marker
-     *            - 评卷员
+     * @param result - 评卷结果
+     * @param marker - 评卷员
      * @return boolean
      */
     @Override
@@ -570,12 +478,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
-<<<<<<< HEAD
-                || group.getStatus().getValue() != result.getStatusValue()) {
-=======
-                || !group.getStatus().toString().equals(result.getStatusValue())) {
->>>>>>> release_1.3.1
+        if (group == null || group.getStatus() == MarkStatus.FINISH || !group.getStatus().toString()
+                .equals(result.getStatusValue())) {
             return SubmitResult.faile();
         }
 
@@ -590,39 +494,29 @@ public class MarkServiceImpl implements MarkService {
                         LibraryStatus.REJECTED) != 0) {
                     saveProblemHistory(result, library);
                     updateMarkedCount(group);
-<<<<<<< HEAD
-                    // releaseLibrary(library, marker);
-=======
                     // 未评完
                     resetStudentGroup(library.getStudentId(), library.getExamId(), library.getSubjectCode(),
                             library.getGroupNumber());
                     trackDao.deleteByLibraryId(library.getId());
                     specialTagDao.deleteByLibraryId(library.getId());
->>>>>>> release_1.3.1
                     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()
-                    && StringUtils.isNotBlank(result.getScoreList())) {
+            if (library != null && library.getExamId().equals(group.getExamId()) && library.getSubjectCode()
+                    .equals(group.getSubjectCode()) && library.getGroupNumber().equals(group.getNumber())
+                    && result.getMarkerScore() <= group.getTotalScore() && StringUtils
+                    .isNotBlank(result.getScoreList())) {
                 if (submitLibrary(library, marker, group, result)) {
                     updateMarkedCount(group);
-<<<<<<< HEAD
-                    // releaseLibrary(library, marker);
-=======
->>>>>>> release_1.3.1
                     return SubmitResult.success(library);
                 }
             }
         } 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.getMarkerScore() <= 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.getMarkerScore() <= group.getTotalScore() && StringUtils
+                    .isNotBlank(result.getScoreList())) {
                 TrialHistory history = new TrialHistory();
                 history.setExamId(library.getExamId());
                 history.setSubjectCode(library.getSubjectCode());
@@ -674,14 +568,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) {
         // 非本人领取的待评任务
@@ -690,20 +580,21 @@ 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;
         }
         // 尝试提交评卷结果
         Date now = new Date();
-        if (libraryDao.updateMarkerResult(library.getId(), LibraryStatus.MARKED, marker.getId(),
-                result.getMarkerScore(), result.getScoreList(), now, result.getSpent(), 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(), LibraryStatus.WAITING, LibraryStatus.MARKED,
+                        LibraryStatus.INSPECTED, LibraryStatus.REJECTED) == 0) {
             // 条件不符更新失败,直接返回
             return false;
         }
@@ -724,8 +615,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) {
                     // 本评卷任务或组长已打分,则跳过该任务
@@ -735,12 +627,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 {
@@ -821,8 +714,7 @@ public class MarkServiceImpl implements MarkService {
      * 管理员/组长打回某个评卷任务<br>
      * 暂时不用到BACKED状态,直接等同于重置该评卷任务
      *
-     * @param library
-     *            - 正评任务
+     * @param library - 正评任务
      */
     @Override
     @Transactional
@@ -837,13 +729,14 @@ public class MarkServiceImpl implements MarkService {
             specialTagDao.deleteByLibraryId(library.getId());
             resetStudentGroup(library.getStudentId(), library.getExamId(), library.getSubjectCode(),
                     library.getGroupNumber());
-            problemHistoryDao.resetByLibraryId(library.getId(), HistoryStatus.WAITING, userId, HistoryStatus.BACK,
-                    new Date());
+            problemHistoryDao
+                    .resetByLibraryId(library.getId(), HistoryStatus.WAITING, userId, HistoryStatus.BACK, new Date());
             // 开启三评时,打回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());
@@ -860,8 +753,7 @@ public class MarkServiceImpl implements MarkService {
     /**
      * 管理员/组长重置某个试评任务
      *
-     * @param library
-     *            - 试评任务
+     * @param library - 试评任务
      */
     @Override
     @Transactional
@@ -879,8 +771,7 @@ public class MarkServiceImpl implements MarkService {
     /**
      * 管理员/组长处理仲裁卷
      *
-     * @param history
-     *            - 仲裁卷
+     * @param history - 仲裁卷
      */
     @Override
     @Transactional
@@ -991,12 +882,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 {
@@ -1068,8 +959,7 @@ public class MarkServiceImpl implements MarkService {
     /**
      * 更新某个评卷分组已评任务数量
      *
-     * @param group
-     *            - 评卷分组
+     * @param group - 评卷分组
      */
     @Override
     @Transactional
@@ -1077,7 +967,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()));
@@ -1087,20 +978,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());
         }
@@ -1109,10 +1001,8 @@ public class MarkServiceImpl implements MarkService {
     /**
      * 更新某个科目所有评卷分组评卷任务数量
      *
-     * @param examId
-     *            - 考试ID
-     * @param subjectCode
-     *            - 科目代码
+     * @param examId      - 考试ID
+     * @param subjectCode - 科目代码
      */
     @Transactional
     @Override
@@ -1127,12 +1017,9 @@ public class MarkServiceImpl implements MarkService {
     /**
      * 根据考生、学习中心、评卷分组构造正式评卷任务
      *
-     * @param student
-     *            - 考生
-     * @param group
-     *            - 评卷分组
-     * @param subject
-     *            - 科目
+     * @param student - 考生
+     * @param group   - 评卷分组
+     * @param subject - 科目
      */
     @Override
     @Transactional
@@ -1158,14 +1045,15 @@ 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();
@@ -1190,10 +1078,8 @@ public class MarkServiceImpl implements MarkService {
     /**
      * 根据考生、学习中心、评卷分组构造试评评卷任务
      *
-     * @param student
-     *            - 考生
-     * @param group
-     *            - 评卷分组
+     * @param student - 考生
+     * @param group   - 评卷分组
      */
     @Override
     @Transactional
@@ -1211,25 +1097,6 @@ public class MarkServiceImpl implements MarkService {
         }
     }
 
-<<<<<<< HEAD
-    /**
-     * 领取试评评卷任务时,用来区分的唯一标识
-     *
-     * @param library
-     *            - 试评任务
-     */
-    private String getApplyTaskId(TrialLibrary library, Marker marker) {
-        return library.getId() + "_" + marker.getId();
-=======
-    private String getGroupKey(MarkGroup group) {
-        return group.getExamId() + "_" + group.getSubjectCode() + "_" + group.getNumber();
-    }
-
-    private String getGroupKey(Marker marker) {
-        return marker.getExamId() + "_" + marker.getSubjectCode() + "_" + marker.getGroupNumber();
->>>>>>> release_1.3.1
-    }
-
     private String getGroupKey(MarkGroup group) {
         return group.getExamId() + "_" + group.getSubjectCode() + "_" + group.getNumber();
     }
@@ -1241,8 +1108,7 @@ public class MarkServiceImpl implements MarkService {
     /**
      * 重置评卷分组的连带操作
      *
-     * @param group
-     *            - 评卷分组
+     * @param group - 评卷分组
      */
     private void resetGroup(MarkGroup group) {
         if (group.getStatus() == MarkStatus.FORMAL) {
@@ -1255,8 +1121,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());
@@ -1275,8 +1142,7 @@ public class MarkServiceImpl implements MarkService {
     /**
      * 计算并更新指定评卷员的评卷质量指标
      *
-     * @param marker
-     *            - 评卷员
+     * @param marker - 评卷员
      */
     @Override
     @Transactional
@@ -1367,8 +1233,9 @@ public class MarkServiceImpl implements MarkService {
             updateStudentGroupScore(studentId, group.getExamId(), group.getSubjectCode(), group.getNumber(),
                     group.getMarkScore(), group.getMarkScoreDetail());
             // 未分组的题目
-            long unGroupQuestionCount = questionDao.countByExamIdAndSubjectAndObjectiveAndGroupNumberIsNull(
-                    group.getExamId(), group.getSubjectCode(), false);
+            long unGroupQuestionCount = questionDao
+                    .countByExamIdAndSubjectAndObjectiveAndGroupNumberIsNull(group.getExamId(), group.getSubjectCode(),
+                            false);
             long groupCount = groupDao.countByExamIdAndSubjectCode(group.getExamId(), group.getSubjectCode());
             checkStudentSubjective(studentId, groupCount, unGroupQuestionCount);
         } else {
@@ -1403,8 +1270,9 @@ public class MarkServiceImpl implements MarkService {
         groupStudentDao.updateStatusByExamIdAndSubjectCodeAndGroupNumber(examId, subjectCode, groupNumber,
                 SubjectiveStatus.UNMARK);
         scoreDao.deleteByExamIdAndSubjectCodeAndGroupNumber(examId, subjectCode, groupNumber);
-        studentService.updateSubjectiveStatusAndScoreAndInspectorId(examId, subjectCode, SubjectiveStatus.UNMARK, 0,
-                null, null, null);
+        studentService
+                .updateSubjectiveStatusAndScoreAndInspectorId(examId, subjectCode, SubjectiveStatus.UNMARK, 0, null,
+                        null, null);
     }
 
     private void updateStudentGroupStatus(Integer studentId, Integer examId, String subjectCode, Integer groupNumber,
@@ -1421,8 +1289,8 @@ 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);
-        List<ExamQuestion> questions = questionDao.findByExamIdAndSubjectCodeAndObjectiveAndGroupNumber(examId,
-                subjectCode, false, groupNumber);
+        List<ExamQuestion> questions = questionDao
+                .findByExamIdAndSubjectCodeAndObjectiveAndGroupNumber(examId, subjectCode, false, groupNumber);
         for (int i = 0; i < scoreList.size(); i++) {
             ScoreItem item = scoreList.get(i);
             ExamQuestion question = questions.get(i);
@@ -1468,8 +1336,8 @@ public class MarkServiceImpl implements MarkService {
         if (count > 0) {
             updateMarkedCount(group);
             resetStudentGroup(student.getId(), group.getExamId(), group.getSubjectCode(), group.getNumber());
-            studentService.updateSubjectiveStatusAndTimeAndInspectorId(student.getId(), SubjectiveStatus.UNMARK, null,
-                    null);
+            studentService
+                    .updateSubjectiveStatusAndTimeAndInspectorId(student.getId(), SubjectiveStatus.UNMARK, null, null);
             return true;
         }
         return false;
@@ -1496,8 +1364,9 @@ public class MarkServiceImpl implements MarkService {
         }
         for (Integer groupNumber : map.keySet()) {
             List<MarkLibrary> list = libraryDao.findByStudentIdAndGroupNumber(student.getId(), groupNumber);
-            List<ExamQuestion> questions = questionDao.findByExamIdAndSubjectCodeAndObjectiveAndGroupNumber(
-                    student.getExamId(), student.getSubjectCode(), false, groupNumber);
+            List<ExamQuestion> questions = questionDao
+                    .findByExamIdAndSubjectCodeAndObjectiveAndGroupNumber(student.getExamId(), student.getSubjectCode(),
+                            false, groupNumber);
             List<MarkStepDTO> qList = map.get(groupNumber);
             MarkGroup group = groupDao.findOne(student.getExamId(), student.getSubjectCode(), groupNumber);
             int count = 0;
@@ -1522,12 +1391,12 @@ public class MarkServiceImpl implements MarkService {
                 if (library.getStatus().equals(LibraryStatus.MARKED)) {
                     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());
                         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));
                             }
@@ -1543,8 +1412,9 @@ public class MarkServiceImpl implements MarkService {
                             markerScoreList.append(",");
                         }
                     }
-                    if (libraryDao.updateMarkerResult(library.getId(), LibraryStatus.REJECTED, library.getMarkerId(),
-                            null, markerScoreList.toString(), null, null, LibraryStatus.MARKED) == 1) {
+                    if (libraryDao
+                            .updateMarkerResult(library.getId(), LibraryStatus.REJECTED, library.getMarkerId(), null,
+                                    markerScoreList.toString(), null, null, LibraryStatus.MARKED) == 1) {
                         count++;
                     }
                 }
@@ -1552,8 +1422,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;
@@ -1573,16 +1444,18 @@ public class MarkServiceImpl implements MarkService {
                 examService.updateObjectiveStatus(examId, ObjectiveStatus.WAITING);
             } else {
                 // 未分组的题目
-                long unGroupQuestionCount = questionDao.countByExamIdAndSubjectAndObjectiveAndGroupNumberIsNull(examId,
-                        subjectCode, false);
+                long unGroupQuestionCount = questionDao
+                        .countByExamIdAndSubjectAndObjectiveAndGroupNumberIsNull(examId, subjectCode, false);
                 // 考生整体状态与总分更新
                 long groupCount = groupDao.countByExamIdAndSubjectCode(examId, subjectCode);
                 if (groupCount == 0 || unGroupQuestionCount > 0) {
-                    studentService.updateSubjectiveStatusAndScoreAndInspectorId(examId, subjectCode,
-                            SubjectiveStatus.UNMARK, 0, null, null, null);
+                    studentService
+                            .updateSubjectiveStatusAndScoreAndInspectorId(examId, subjectCode, SubjectiveStatus.UNMARK,
+                                    0, null, null, null);
                 } else {
-                    List<Integer> studentList = studentService.findIdByExamIdAndSubjectCodeAndSubjectiveStatus(examId,
-                            subjectCode, SubjectiveStatus.UNMARK, SubjectiveStatus.MARKED, SubjectiveStatus.INSPECTED);
+                    List<Integer> studentList = studentService
+                            .findIdByExamIdAndSubjectCodeAndSubjectiveStatus(examId, subjectCode,
+                                    SubjectiveStatus.UNMARK, SubjectiveStatus.MARKED, SubjectiveStatus.INSPECTED);
                     for (Integer studentId : studentList) {
                         checkStudentSubjective(studentId, groupCount, unGroupQuestionCount);
                     }
@@ -1603,16 +1476,17 @@ public class MarkServiceImpl implements MarkService {
         if (group.getStatus() == MarkStatus.FINISH) {
             return false;
         }
-        List<ExamQuestion> questions = questionDao.findByExamIdAndSubjectCodeAndObjectiveAndGroupNumber(
-                library.getExamId(), library.getSubjectCode(), false, library.getGroupNumber());
+        List<ExamQuestion> questions = questionDao
+                .findByExamIdAndSubjectCodeAndObjectiveAndGroupNumber(library.getExamId(), library.getSubjectCode(),
+                        false, library.getGroupNumber());
         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());
             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));
                 }
@@ -1632,13 +1506,14 @@ public class MarkServiceImpl implements MarkService {
                 markerScoreList.toString(), null, null, LibraryStatus.MARKED) == 1) {
             resetStudentGroup(library.getStudentId(), library.getExamId(), library.getSubjectCode(),
                     library.getGroupNumber());
-            problemHistoryDao.resetByLibraryId(library.getId(), HistoryStatus.WAITING, userId, HistoryStatus.BACK,
-                    new Date());
+            problemHistoryDao
+                    .resetByLibraryId(library.getId(), HistoryStatus.WAITING, userId, HistoryStatus.BACK, new Date());
             // 开启三评时,打回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());

+ 0 - 3
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/utils/TaskLock.java

@@ -80,8 +80,6 @@ public class TaskLock {
         return false;
     }
 
-<<<<<<< HEAD
-=======
     public synchronized boolean remove(Object id, int number) {
         LockNode node = head.next;
         while (node != null) {
@@ -96,7 +94,6 @@ public class TaskLock {
         return false;
     }
 
->>>>>>> release_1.3.1
     public synchronized void clear() {
         head.next = null;
         count = 0;

+ 0 - 9
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/utils/TaskLockUtil.java

@@ -11,15 +11,12 @@ public class TaskLockUtil {
     // 试评任务并发处理互斥锁
     private static final Map<String, TaskLock> trialTaskMap = new HashMap<>();
 
-<<<<<<< HEAD
-=======
     // 复核整卷并发处理互斥锁
     private static final Map<String, TaskLock> inspectedStudentMap = new HashMap<>();
 
     // 复核评卷任务并发处理互斥锁
     private static final Map<String, TaskLock> inspectedLibraryMap = new HashMap<>();
 
->>>>>>> release_1.3.1
     public static void clearTimeoutTask(long timeoutMinute) {
         for (TaskLock taskLock : trialTaskMap.values()) {
             taskLock.expire(timeoutMinute);
@@ -27,15 +24,12 @@ public class TaskLockUtil {
         for (TaskLock taskLock : formalTaskMap.values()) {
             taskLock.expire(timeoutMinute);
         }
-<<<<<<< HEAD
-=======
         for (TaskLock taskLock : inspectedStudentMap.values()) {
             taskLock.expire(timeoutMinute);
         }
         for (TaskLock taskLock : inspectedLibraryMap.values()) {
             taskLock.expire(timeoutMinute);
         }
->>>>>>> release_1.3.1
     }
 
     public static TaskLock getTrialTask(String key) {
@@ -58,8 +52,6 @@ public class TaskLockUtil {
         return taskLock;
     }
 
-<<<<<<< HEAD
-=======
     public static TaskLock getInspectedStudentTask(String key) {
         TaskLock taskLock = inspectedStudentMap.get(key);
         if (taskLock == null) {
@@ -80,5 +72,4 @@ public class TaskLockUtil {
         return taskLock;
     }
 
->>>>>>> release_1.3.1
 }

+ 47 - 184
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/InspectedController.java

@@ -1,43 +1,11 @@
 package cn.com.qmth.stmms.admin.exam;
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-
-import javax.servlet.http.HttpServletRequest;
-
-import net.sf.json.JSONObject;
-
-import org.apache.commons.lang.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.Model;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.ResponseBody;
-import org.springframework.web.servlet.mvc.support.RedirectAttributes;
-
 import cn.com.qmth.stmms.admin.dto.RejectResult;
 import cn.com.qmth.stmms.biz.exam.model.Exam;
 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.query.ExamStudentSearchQuery;
-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;
-<<<<<<< HEAD
-import cn.com.qmth.stmms.biz.exam.service.InspectedService;
-import cn.com.qmth.stmms.biz.exam.service.MarkGroupService;
-import cn.com.qmth.stmms.biz.exam.service.SubjectiveScoreService;
-=======
-import cn.com.qmth.stmms.biz.exam.service.ExamSubjectService;
-import cn.com.qmth.stmms.biz.exam.service.InspectedService;
->>>>>>> release_1.3.1
+import cn.com.qmth.stmms.biz.exam.service.*;
 import cn.com.qmth.stmms.biz.file.service.FileService;
 import cn.com.qmth.stmms.biz.lock.LockService;
 import cn.com.qmth.stmms.biz.mark.model.Task;
@@ -46,12 +14,23 @@ import cn.com.qmth.stmms.biz.mark.service.TaskService;
 import cn.com.qmth.stmms.common.annotation.Logging;
 import cn.com.qmth.stmms.common.annotation.RoleRequire;
 import cn.com.qmth.stmms.common.domain.WebUser;
-import cn.com.qmth.stmms.common.enums.ExamType;
-import cn.com.qmth.stmms.common.enums.LockType;
-import cn.com.qmth.stmms.common.enums.LogType;
-import cn.com.qmth.stmms.common.enums.Role;
-import cn.com.qmth.stmms.common.enums.SubjectiveStatus;
+import cn.com.qmth.stmms.common.enums.*;
 import cn.com.qmth.stmms.common.utils.RequestUtils;
+import net.sf.json.JSONObject;
+import org.apache.commons.lang.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.servlet.mvc.support.RedirectAttributes;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
 
 @Controller("inspectedController")
 @RequestMapping("/admin/exam/inspected")
@@ -64,18 +43,6 @@ public class InspectedController extends BaseExamController {
 
     @Autowired
     private InspectedService inspectedService;
-<<<<<<< HEAD
-
-    @Autowired
-    private ExamQuestionService questionService;
-
-    @Autowired
-    private MarkTrackService markTrackService;
-
-    @Autowired
-    private MarkSpecialTagService markSpecialTagService;
-=======
->>>>>>> release_1.3.1
 
     @Autowired
     private ExamQuestionService questionService;
@@ -103,9 +70,9 @@ public class InspectedController extends BaseExamController {
 
     @RequestMapping
     public String list(Model model, HttpServletRequest request, ExamStudentSearchQuery query,
-            @RequestParam(required = false) SubjectiveStatus status,
-            @RequestParam(required = false) Integer mainNumber, @RequestParam(required = false) Double mainStartScore,
-            @RequestParam(required = false) Double mainEndScore, @RequestParam(required = false) Double questionScore) {
+            @RequestParam(required = false) SubjectiveStatus status, @RequestParam(required = false) Integer mainNumber,
+            @RequestParam(required = false) Double mainStartScore, @RequestParam(required = false) Double mainEndScore,
+            @RequestParam(required = false) Double questionScore) {
         int examId = getSessionExamId(request);
         Exam exam = examService.findById(examId);
         if (ExamType.MULTI_MEDIA.equals(exam.getType())) {
@@ -117,25 +84,16 @@ public class InspectedController extends BaseExamController {
         if (StringUtils.isBlank(query.getSubjectCode()) && !subjectList.isEmpty()) {
             query.setSubjectCode(subjectList.get(0).getCode());
         }
-        List<ExamStudent> list = inspectedService.findByQuery(query, status, mainNumber, mainStartScore, mainEndScore,
-                questionScore);
-<<<<<<< HEAD
-        Integer count = inspectedService.countByQuery(query, status, mainNumber, mainStartScore, mainEndScore,
-                questionScore);
-        query.setResult(list);
-        query.setTotalCount(count);
-        model.addAttribute("query", query);
-        model.addAttribute("inspectCount", count);
-=======
-        Integer totalCount = inspectedService.countByQuery(query, null, mainNumber, mainStartScore, mainEndScore,
-                questionScore);
-        Integer inspectCount = inspectedService.countByQuery(query, SubjectiveStatus.MARKED, mainNumber,
-                mainStartScore, mainEndScore, questionScore);
+        List<ExamStudent> list = inspectedService
+                .findByQuery(query, status, mainNumber, mainStartScore, mainEndScore, questionScore);
+        Integer totalCount = inspectedService
+                .countByQuery(query, null, mainNumber, mainStartScore, mainEndScore, questionScore);
+        Integer inspectCount = inspectedService
+                .countByQuery(query, SubjectiveStatus.MARKED, mainNumber, mainStartScore, mainEndScore, questionScore);
         query.setResult(list);
         query.setTotalCount(totalCount);
         model.addAttribute("query", query);
         model.addAttribute("inspectCount", inspectCount);
->>>>>>> release_1.3.1
         model.addAttribute("questionList",
                 questionService.findMainByExamAndSubjectAndObjective(examId, query.getSubjectCode(), false));
         model.addAttribute("mainNumber", mainNumber);
@@ -152,97 +110,12 @@ public class InspectedController extends BaseExamController {
     @Logging(menu = "开始考生复核", type = LogType.QUERY)
     @RequestMapping(value = "/getTask", method = RequestMethod.POST)
     @ResponseBody
-    public Task getTask(HttpServletRequest request, RedirectAttributes redirectAttributes,
-            ExamStudentSearchQuery query, @RequestParam(required = false) Integer mainNumber,
-            @RequestParam(required = false) Double mainStartScore, @RequestParam(required = false) Double mainEndScore,
-            @RequestParam(required = false) Double questionScore, @RequestParam(required = false) Integer studentId) {
+    public Task getTask(HttpServletRequest request, RedirectAttributes redirectAttributes, ExamStudentSearchQuery query,
+            @RequestParam(required = false) Integer mainNumber, @RequestParam(required = false) Double mainStartScore,
+            @RequestParam(required = false) Double mainEndScore, @RequestParam(required = false) Double questionScore,
+            @RequestParam(required = false) Integer studentId) {
         int examId = getSessionExamId(request);
         WebUser wu = RequestUtils.getWebUser(request);
-<<<<<<< HEAD
-        releaseByUser(wu.getUser().getId());
-        ModelAndView view = new ModelAndView("modules/exam/inspected");
-        query.setExamId(examId);
-        query.setPageNumber(1);
-        query.setPageSize(Integer.MAX_VALUE);
-        List<ExamSubject> subjectList = getExamSubject(examId, wu);
-        if (StringUtils.isBlank(query.getSubjectCode()) && !subjectList.isEmpty()) {
-            query.setSubjectCode(subjectList.get(0).getCode());
-        }
-        List<ExamStudent> list = inspectedService.findByQuery(query, SubjectiveStatus.MARKED, mainNumber,
-                mainStartScore, mainEndScore, questionScore);
-        List<Integer> ids = new ArrayList<Integer>();
-        if (!list.isEmpty()) {
-            for (ExamStudent student : list) {
-                ids.add(student.getId());
-            }
-        }
-        view.addObject("inspectCount", ids.size());
-        view.addObject("fileServer", fileService.getFileServer());
-        view.addObject("ids", StringUtils.join(ids, ","));
-        view.addObject("message", ids.size() > 0 ? "" : "没有待复核的任务");
-        return view;
-    }
-
-    @Logging(menu = "开始考生复核", type = LogType.QUERY)
-    @RequestMapping("/startById")
-    public ModelAndView startById(HttpServletRequest request, RedirectAttributes redirectAttributes,
-            @RequestParam Integer studentId) {
-        WebUser wu = RequestUtils.getWebUser(request);
-        releaseByUser(wu.getUser().getId());
-        ModelAndView view = new ModelAndView("modules/exam/inspected");
-        List<Integer> ids = new ArrayList<Integer>();
-        ExamStudent student = studentService.findById(studentId);
-        if (student != null && student.getSubjectiveStatus().equals(SubjectiveStatus.MARKED)) {
-            releaseTask(studentId);
-            ids.add(studentId);
-        }
-        view.addObject("inspectCount", ids.size());
-        view.addObject("fileServer", fileService.getFileServer());
-        view.addObject("ids", StringUtils.join(ids, ","));
-        view.addObject("studentId", studentId);
-        return view;
-    }
-
-    @RequestMapping("/info")
-    @ResponseBody
-    public Object info(HttpServletRequest request, @RequestParam Integer studentId) {
-        WebUser wu = RequestUtils.getWebUser(request);
-        ExamStudent student = studentService.findById(studentId);
-        JSONObject result = new JSONObject();
-        if (setCurrent(student.getId(), wu.getUser().getId())
-                && student.getSubjectiveStatus().equals(SubjectiveStatus.MARKED)) {
-            result.accumulate("id", student.getId());
-            result.accumulate("secretNumber", student.getSecretNumber());
-            result.accumulate("studentCode", student.getStudentCode());
-            result.accumulate("name", student.getName());
-            result.accumulate("subjectCode", student.getSubjectCode());
-            result.accumulate("subjectName", student.getSubjectName());
-            result.accumulate("totalScore", student.getTotalScore());
-
-            List<MarkGroup> groups = groupService.findByExamAndSubject(student.getExamId(), student.getSubjectCode());
-            JSONArray groupArray = new JSONArray();
-            Map<Integer, String> mainTitleMap = new HashMap<Integer, String>();
-            for (MarkGroup markGroup : groups) {
-                JSONObject group = new JSONObject();
-                group.accumulate("groupNumber", markGroup.getNumber());
-                List<SubjectiveScore> scores = scoreService.findByStudentIdAndGroupNumber(student.getId(),
-                        markGroup.getNumber());
-                JSONArray array = new JSONArray();
-                for (SubjectiveScore scoreItem : scores) {
-                    JSONObject obj = new JSONObject();
-                    String mainTitle = mainTitleMap.get(scoreItem.getMainNumber());
-                    if (mainTitle == null) {
-                        ExamQuestion q = questionService.findByExamAndSubjectAndObjectiveAndMainNumberAndSubNumber(
-                                student.getExamId(), student.getSubjectCode(), false, scoreItem.getMainNumber(),
-                                scoreItem.getSubNumber());
-                        mainTitleMap.put(scoreItem.getMainNumber(), mainTitle);
-                        mainTitle = q.getMainTitle();
-                    }
-                    obj.accumulate("mainTitle", mainTitle);
-                    obj.accumulate("questionNumber", scoreItem.getMainNumber() + "-" + scoreItem.getSubNumber());
-                    obj.accumulate("score", scoreItem.getScore());
-                    array.add(obj);
-=======
         Task task = null;
         if (studentId != null) {
             releaseStudent(studentId);
@@ -262,8 +135,9 @@ public class InspectedController extends BaseExamController {
             if (StringUtils.isBlank(query.getSubjectCode()) && !subjectList.isEmpty()) {
                 query.setSubjectCode(subjectList.get(0).getCode());
             }
-            list = inspectedService.findByQuery(query, SubjectiveStatus.MARKED, mainNumber, mainStartScore,
-                    mainEndScore, questionScore);
+            list = inspectedService
+                    .findByQuery(query, SubjectiveStatus.MARKED, mainNumber, mainStartScore, mainEndScore,
+                            questionScore);
             if (list.isEmpty()) {
                 break;
             }
@@ -271,22 +145,11 @@ public class InspectedController extends BaseExamController {
                 if (inspectedService.applyStudent(student, wu.getId())) {
                     task = taskService.build(student);
                     break;
->>>>>>> release_1.3.1
                 }
             }
-<<<<<<< HEAD
-            result.accumulate("groups", groupArray);
-            List<String> picUrls = fileService.getSliceUris(student.getExamId(), student.getSecretNumber(), 1,
-                    student.getSliceCount());
-            result.accumulate("picUrls", picUrls);
-            result.accumulate("success", true);
-        } else {
-            result.accumulate("success", false);
-=======
             if (task == null) {
                 retry++;
             }
->>>>>>> release_1.3.1
         }
         return task;
     }
@@ -299,11 +162,11 @@ public class InspectedController extends BaseExamController {
         ExamStudent student = studentService.findById(studentId);
         JSONObject obj = new JSONObject();
         try {
-            if (lockService.trylock(LockType.STUDENT, student.getId())
-                    && inspectedService.hasApplied(student, wu.getId())
-                    && SubjectiveStatus.MARKED.equals(student.getSubjectiveStatus())) {
-                studentService.updateSubjectiveStatusAndTimeAndInspectorId(studentId, SubjectiveStatus.INSPECTED,
-                        new Date(), wu.getUser().getId());
+            if (lockService.trylock(LockType.STUDENT, student.getId()) && inspectedService
+                    .hasApplied(student, wu.getId()) && SubjectiveStatus.MARKED.equals(student.getSubjectiveStatus())) {
+                studentService
+                        .updateSubjectiveStatusAndTimeAndInspectorId(studentId, SubjectiveStatus.INSPECTED, new Date(),
+                                wu.getUser().getId());
                 inspectedService.releaseByStudent(student);
                 obj.accumulate("success", true);
             } else {
@@ -350,8 +213,9 @@ public class InspectedController extends BaseExamController {
             if (subjectCheck(student.getSubjectCode(), wu)) {
                 try {
                     if (lockService.trylock(LockType.STUDENT, student.getId())) {
-                        studentService.updateSubjectiveStatusAndTimeAndInspectorId(student.getId(),
-                                SubjectiveStatus.MARKED, null, null);
+                        studentService
+                                .updateSubjectiveStatusAndTimeAndInspectorId(student.getId(), SubjectiveStatus.MARKED,
+                                        null, null);
                         obj.accumulate("success", true);
                     } else {
                         obj.accumulate("success", false);
@@ -383,9 +247,8 @@ public class InspectedController extends BaseExamController {
         JSONObject obj = new JSONObject();
         ExamStudent student = studentService.findById(rejectResult.getStudentId());
         WebUser wu = RequestUtils.getWebUser(request);
-        if (student != null
-                && (student.getSubjectiveStatus().equals(SubjectiveStatus.MARKED) || student.getSubjectiveStatus()
-                        .equals(SubjectiveStatus.INSPECTED))) {
+        if (student != null && (student.getSubjectiveStatus().equals(SubjectiveStatus.MARKED) || student
+                .getSubjectiveStatus().equals(SubjectiveStatus.INSPECTED))) {
             if (subjectCheck(student.getSubjectCode(), wu) && lockService.trylock(LockType.STUDENT, student.getId())) {
                 try {
                     lockService.watch(LockType.EXAM_SUBJECT, student.getExamId(), student.getSubjectCode());
@@ -417,8 +280,8 @@ public class InspectedController extends BaseExamController {
     @Logging(menu = "回看复核任务", type = LogType.QUERY)
     @RequestMapping(value = "/getHistory", method = RequestMethod.POST)
     @ResponseBody
-    public Object getHistory(HttpServletRequest request, @RequestParam String subjectCode,
-            @RequestParam int pageNumber, @RequestParam int pageSize) throws Exception {
+    public Object getHistory(HttpServletRequest request, @RequestParam String subjectCode, @RequestParam int pageNumber,
+            @RequestParam int pageSize) throws Exception {
         int examId = getSessionExamId(request);
         WebUser wu = RequestUtils.getWebUser(request);
         List<Task> list = new ArrayList<>();
@@ -447,8 +310,8 @@ public class InspectedController extends BaseExamController {
         JSONObject status = new JSONObject();
         int examId = getSessionExamId(request);
         query.setExamId(examId);
-        Integer totalCount = inspectedService.countByQuery(query, SubjectiveStatus.MARKED, mainNumber, mainStartScore,
-                mainEndScore, questionScore);
+        Integer totalCount = inspectedService
+                .countByQuery(query, SubjectiveStatus.MARKED, mainNumber, mainStartScore, mainEndScore, questionScore);
         status.accumulate("totalCount", totalCount);
         status.accumulate("valid", true);
         return status;