1
0
ting.yin 1 год назад
Родитель
Сommit
19290242e5

+ 2 - 3
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/dao/ExamStudentDao.java

@@ -67,9 +67,8 @@ public interface ExamStudentDao extends PagingAndSortingRepository<ExamStudent,
     public List<String> findDistinctPackageCode(int examId);
 
     @Modifying
-    @Query("update ExamStudent s set s.subjectiveStatus=?2, s.subjectiveScore=?3, s.subjectiveScoreList=?4 ,s.inspectTime=?5,s.inspectorId=?6 where s.id=?1")
-    public void updateSubjectiveStatusAndScore(Integer id, SubjectiveStatus status, double score, String scoreList,
-            Date inspectTime, Integer inspectorId);
+    @Query("update ExamStudent s set s.subjectiveStatus=?2, s.subjectiveScore=?3, s.subjectiveScoreList=?4 where s.id=?1")
+    public void updateSubjectiveStatusAndScore(Integer id, SubjectiveStatus status, double score, String scoreList);
 
     @Modifying
     @Query("update ExamStudent s set s.subjectiveStatus=?3, s.subjectiveScore=?4, s.subjectiveScoreList=?5,s.inspectTime=?6,s.inspectorId=?7 where s.examId=?1 and s.subjectCode=?2")

+ 1 - 1
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/impl/ExamStudentServiceImpl.java

@@ -466,7 +466,7 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
     @Override
     @Transactional
     public void updateSubjectiveStatusAndScore(Integer id, SubjectiveStatus status, double score, String scoreList) {
-        studentDao.updateSubjectiveStatusAndScore(id, status, score, scoreList, null, null);
+        studentDao.updateSubjectiveStatusAndScore(id, status, score, scoreList);
     }
 
     @Override

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

@@ -42,7 +42,7 @@ public class InspectedServiceImpl extends BaseQueryService<ExamStudent> implemen
 
     @Autowired
     private ExamStudentService studentService;
-    
+
     @Autowired
     private ExamSubjectService examSubjectService;
 
@@ -53,7 +53,7 @@ public class InspectedServiceImpl extends BaseQueryService<ExamStudent> implemen
     @Override
     public List<ExamStudentVo> findByQuery(InspectQuery query, SubjectiveStatus status, Integer mainNumber,
             Double mainStartScore, Double mainEndScore, SelectiveStatus selectiveStatus) {
-    	int offset=(query.getPageNumber() - 1) * query.getPageSize();
+        int offset = (query.getPageNumber() - 1) * query.getPageSize();
         StringBuilder sql = new StringBuilder();
         sql.append(" select s.id,s.exam_id examId,s.school_id schoolId,s.subject_code subjectCode,");
         sql.append(" s.subject_name subjectName,s.paper_type paperType,s.exam_number examNumber,s.secret_number secretNumber,");
@@ -67,10 +67,10 @@ public class InspectedServiceImpl extends BaseQueryService<ExamStudent> implemen
         sql.append(" s.score_verify_time scoreVerifyTime,s.score_verify_flagged scoreVerifyFlagged,s.inspect_time inspectTime,");
         sql.append(" s.inspector_id inspectorId,s.inspected ");
         sql.append(" from eb_exam_student s left join eb_exam_subject es on s.exam_id=es.exam_id and s.subject_code=es.code ");
-        String whereSql = getWhereSql(query, status, mainNumber, mainStartScore, mainEndScore,selectiveStatus);
+        String whereSql = getWhereSql(query, status, mainNumber, mainStartScore, mainEndScore, selectiveStatus);
         sql.append(whereSql).append(" order by s.inspect_time desc ");
-        if(!query.isExport()) {
-        	sql.append(" limit "+offset+","+query.getPageSize());
+        if (!query.isExport()) {
+            sql.append(" limit " + offset + "," + query.getPageSize());
         }
         Query dataQuery = entityManager.createNativeQuery(sql.toString());
         dataQuery.unwrap(SQLQuery.class).setResultTransformer(Transformers.aliasToBean(ExamStudentVo.class));
@@ -79,25 +79,27 @@ public class InspectedServiceImpl extends BaseQueryService<ExamStudent> implemen
 
     }
 
-    private String getWhereSql(InspectQuery query, SubjectiveStatus status, Integer mainNumber,
-            Double mainStartScore, Double mainEndScore, SelectiveStatus selectiveStatus) {
+    private String getWhereSql(InspectQuery query, SubjectiveStatus status, Integer mainNumber, Double mainStartScore,
+            Double mainEndScore, SelectiveStatus selectiveStatus) {
         StringBuilder whereSql = new StringBuilder(" WHERE s.is_upload = 1 and s.is_absent = 0 and s.is_breach = 0 ");
         if (query.getExamId() != null) {
-            whereSql.append(" and s.exam_id ="+query.getExamId());
+            whereSql.append(" and s.exam_id =" + query.getExamId());
         }
         if (StringUtils.isNotBlank(query.getSubjectCode())) {
-            whereSql.append(" and s.subject_code ='"+query.getSubjectCode()+"'");
+            whereSql.append(" and s.subject_code ='" + query.getSubjectCode() + "'");
         }
         if (query.getSelective() != null) {
-            whereSql.append(" and es.selective ="+(query.getSelective()?1:0));
+            whereSql.append(" and es.selective =" + (query.getSelective() ? 1 : 0));
         }
         if (StringUtils.isNotBlank(query.getInspectorName())) {
             whereSql.append(" and exists (select 1 from eb_inspect_history ei left join b_user bu on ei.inspector_id=bu.id "
-            		+" where ei.student_id = s.id and (bu.login_name like '"+query.getInspectorName()+"%' or bu.name like '"+
-            		query.getInspectorName()+"%'))");
+                    + " where ei.student_id = s.id and (bu.login_name like '"
+                    + query.getInspectorName()
+                    + "%' or bu.name like '" + query.getInspectorName() + "%'))");
         }
-        if (query.getInspectUnrepeated()!=null&&query.getInspectUnrepeated()) {
-            whereSql.append(" and not exists (select 1 from eb_inspect_history ei where ei.student_id = s.id and ei.inspector_id="+query.getInspectorId()+")");
+        if (query.getInspectUnrepeated() != null && query.getInspectUnrepeated()) {
+            whereSql.append(" and not exists (select 1 from eb_inspect_history ei where ei.student_id = s.id and ei.inspector_id="
+                    + query.getInspectorId() + ")");
         }
         if (StringUtils.isNotBlank(query.getSubjectCodeIn())) {
             String[] subjectCodeIn = query.getSubjectCodeIn().split(",");
@@ -105,96 +107,101 @@ public class InspectedServiceImpl extends BaseQueryService<ExamStudent> implemen
             for (String code : subjectCodeIn) {
                 in.add(code);
             }
-            whereSql.append(" and s.subject_code in ('"+StringUtils.join(in, "','")+"') ");
+            whereSql.append(" and s.subject_code in ('" + StringUtils.join(in, "','") + "') ");
         }
-    	whereSql.append(" and s.subjective_status ='MARKED'");
+        whereSql.append(" and s.subjective_status ='MARKED'");
         if (query.getInspected() != null) {
-            whereSql.append(" and s.inspected ="+(query.getInspected()?1:0));
+            whereSql.append(" and s.inspected =" + (query.getInspected() ? 1 : 0));
         }
         if (query.getStartScore() != null) {
-            whereSql.append(
-                    " and (cast(s.objective_score as decimal(10,3))+cast(s.subjective_score as decimal(10,3))) >="+query.getStartScore());
+            whereSql.append(" and (cast(s.objective_score as decimal(10,3))+cast(s.subjective_score as decimal(10,3))) >="
+                    + query.getStartScore());
         }
         if (query.getEndScore() != null) {
-            whereSql.append(
-                    " and (cast(s.objective_score as decimal(10,3))+cast(s.subjective_score as decimal(10,3))) <="+query.getEndScore());
+            whereSql.append(" and (cast(s.objective_score as decimal(10,3))+cast(s.subjective_score as decimal(10,3))) <="
+                    + query.getEndScore());
         }
         if (StringUtils.isNotBlank(query.getSecretNumber())) {
-            whereSql.append(" and s.secret_number ='"+query.getSecretNumber()+"'");
+            whereSql.append(" and s.secret_number ='" + query.getSecretNumber() + "'");
         }
-        Double questionScore=query.getQuestionScore();
+        Double questionScore = query.getQuestionScore();
         if (mainNumber != null || mainStartScore != null || mainEndScore != null || questionScore != null) {
             whereSql.append(" and exists (select e.student_id from eb_subjective_score e where e.student_id = s.id ");
             if (mainNumber != null) {
-                whereSql.append(" and e.main_number ="+mainNumber);
+                whereSql.append(" and e.main_number =" + mainNumber);
             }
             if (mainStartScore != null) {
-                whereSql.append(" and e.main_score >="+mainStartScore);
+                whereSql.append(" and e.main_score >=" + mainStartScore);
             }
             if (mainEndScore != null) {
-                whereSql.append(" and e.main_score <="+mainEndScore);
+                whereSql.append(" and e.main_score <=" + mainEndScore);
             }
             if (questionScore != null) {
-                if(questionScore!=0) {
-                	whereSql.append(" and e.score ="+questionScore);
-                }else {
-            		if(query.getQuestionScoreEmpty()!=null) {
-            			if(query.getQuestionScoreEmpty()) {
-                			whereSql.append(" and e.score =0 and e.unanswered_count >0");
-                		}else {
-                			whereSql.append(" and e.score =0 and (e.unanswered_count is null or e.unanswered_count =0)");
-                		}
-            		}else {
-            			whereSql.append(" and e.score =0");
-            		}
+                if (questionScore != 0) {
+                    whereSql.append(" and e.score =" + questionScore);
+                } else {
+                    if (query.getQuestionScoreEmpty() != null) {
+                        if (query.getQuestionScoreEmpty()) {
+                            whereSql.append(" and e.score =0 and e.unanswered_count >0");
+                        } else {
+                            whereSql.append(" and e.score =0 and (e.unanswered_count is null or e.unanswered_count =0)");
+                        }
+                    } else {
+                        whereSql.append(" and e.score =0");
+                    }
                 }
             }
             whereSql.append(" ) ");
         }
         // 全部选做题为未选做
-//        List<MarkGroup> groups = groupService
-//                .findByExamAndSubjectAndSelective(query.getExamId(), query.getSubjectCode(), true);
-//        List<SelectiveGroup> selectiveGroups = selectiveGroupService
-//                .findByExamIdAndSubjectCode(query.getExamId(), query.getSubjectCode());
-//        if (selectiveStatus != null && SelectiveStatus.UN_SELECTIVE.equals(selectiveStatus) && !groups.isEmpty()
-//                && !selectiveGroups.isEmpty()) {
-//            List<Integer> groupNumbers = new ArrayList<Integer>();
-//            for (int i = 0; i < groups.size(); i++) {
-//                groupNumbers.add(groups.get(i).getNumber());
-//            }
-//            whereSql.append(
-//            " and not exists (select e.student_id from eb_subjective_score e where e.student_id = s.id and e.group_number in ("
-//            +StringUtils.join(groupNumbers,",")+") and e.group_score != -1 )");
-//        }
+        // List<MarkGroup> groups = groupService
+        // .findByExamAndSubjectAndSelective(query.getExamId(),
+        // query.getSubjectCode(), true);
+        // List<SelectiveGroup> selectiveGroups = selectiveGroupService
+        // .findByExamIdAndSubjectCode(query.getExamId(),
+        // query.getSubjectCode());
+        // if (selectiveStatus != null &&
+        // SelectiveStatus.UN_SELECTIVE.equals(selectiveStatus) &&
+        // !groups.isEmpty()
+        // && !selectiveGroups.isEmpty()) {
+        // List<Integer> groupNumbers = new ArrayList<Integer>();
+        // for (int i = 0; i < groups.size(); i++) {
+        // groupNumbers.add(groups.get(i).getNumber());
+        // }
+        // whereSql.append(
+        // " and not exists (select e.student_id from eb_subjective_score e where e.student_id = s.id and e.group_number in ("
+        // +StringUtils.join(groupNumbers,",")+") and e.group_score != -1 )");
+        // }
         if (SelectiveStatus.UN_SELECTIVE.equals(selectiveStatus)) {
-          whereSql.append(
-          " and not exists (select 1 from eb_subjective_score e left join eb_mark_group mg "
-          + " on e.exam_id=mg.exam_id and e.subject_code=mg.subject_code and e.group_number=mg.number"
-          + " where e.student_id = s.id  and e.group_score != -1 and mg.is_selective=1)"
-          +" and es.selective=1");
+            whereSql.append(" and not exists (select 1 from eb_subjective_score e left join eb_mark_group mg "
+                    + " on e.exam_id=mg.exam_id and e.subject_code=mg.subject_code and e.group_number=mg.number"
+                    + " where e.student_id = s.id  and e.group_score != -1 and mg.is_selective=1)"
+                    + " and es.selective=1");
         }
         // 选做题多选做
-//        if (selectiveStatus != null && SelectiveStatus.MUTI_SELECTIVE.equals(selectiveStatus) && !groups.isEmpty()
-//                && !selectiveGroups.isEmpty()) {
+        // if (selectiveStatus != null &&
+        // SelectiveStatus.MUTI_SELECTIVE.equals(selectiveStatus) &&
+        // !groups.isEmpty()
+        // && !selectiveGroups.isEmpty()) {
         if (SelectiveStatus.MUTI_SELECTIVE.equals(selectiveStatus)) {
-            whereSql.append(
-                    " and exists (select ss.student_id from eb_selective_student ss where ss.student_id = s.id and ss.muti_selective=1)");
+            whereSql.append(" and exists (select ss.student_id from eb_selective_student ss where ss.student_id = s.id and ss.muti_selective=1)");
         }
         // 选做题少选做
-//        if (selectiveStatus != null && SelectiveStatus.LESS_SELECTIVE.equals(selectiveStatus) && !groups.isEmpty()
-//                && !selectiveGroups.isEmpty()) {
+        // if (selectiveStatus != null &&
+        // SelectiveStatus.LESS_SELECTIVE.equals(selectiveStatus) &&
+        // !groups.isEmpty()
+        // && !selectiveGroups.isEmpty()) {
         if (SelectiveStatus.LESS_SELECTIVE.equals(selectiveStatus)) {
-            whereSql.append(
-                    " and exists (select ss.student_id from eb_selective_student ss where ss.student_id = s.id and ss.less_selective=1) ");
+            whereSql.append(" and exists (select ss.student_id from eb_selective_student ss where ss.student_id = s.id and ss.less_selective=1) ");
         }
         return whereSql.toString();
     }
 
     @Override
-    public Integer countByQuery(InspectQuery query, SubjectiveStatus status, Integer mainNumber,
-            Double mainStartScore, Double mainEndScore,SelectiveStatus selectiveStatus) {
+    public Integer countByQuery(InspectQuery query, SubjectiveStatus status, Integer mainNumber, Double mainStartScore,
+            Double mainEndScore, SelectiveStatus selectiveStatus) {
         StringBuilder countSql = new StringBuilder("select count(s.id) from eb_exam_student s  "
-            +" left join eb_exam_subject es on s.exam_id=es.exam_id and s.subject_code=es.code ");
+                + " left join eb_exam_subject es on s.exam_id=es.exam_id and s.subject_code=es.code ");
         String whereSql = getWhereSql(query, status, mainNumber, mainStartScore, mainEndScore, selectiveStatus);
         countSql.append(whereSql);
         Query countQuery = entityManager.createNativeQuery(countSql.toString());
@@ -202,15 +209,16 @@ public class InspectedServiceImpl extends BaseQueryService<ExamStudent> implemen
         Integer count = singleResult == null ? 0 : Integer.valueOf(singleResult.toString());
         return count;
     }
-    
+
     @Override
-    public Integer needInspectCount(InspectQuery query, Integer mainNumber,
-            Double mainStartScore, Double mainEndScore,SelectiveStatus selectiveStatus) {
-    	Boolean inspected=query.getInspected();
-    	query.setInspected(false);
-    	StringBuilder countSql = new StringBuilder("select count(s.id) from eb_exam_student s "
-            +" left join eb_exam_subject es on s.exam_id=es.exam_id and s.subject_code=es.code ");
-        String whereSql = getWhereSql(query, SubjectiveStatus.MARKED, mainNumber, mainStartScore, mainEndScore,selectiveStatus);
+    public Integer needInspectCount(InspectQuery query, Integer mainNumber, Double mainStartScore, Double mainEndScore,
+            SelectiveStatus selectiveStatus) {
+        Boolean inspected = query.getInspected();
+        query.setInspected(false);
+        StringBuilder countSql = new StringBuilder("select count(s.id) from eb_exam_student s "
+                + " left join eb_exam_subject es on s.exam_id=es.exam_id and s.subject_code=es.code ");
+        String whereSql = getWhereSql(query, SubjectiveStatus.MARKED, mainNumber, mainStartScore, mainEndScore,
+                selectiveStatus);
         countSql.append(whereSql);
         Query countQuery = entityManager.createNativeQuery(countSql.toString());
         Object singleResult = countQuery.getResultList().get(0);
@@ -254,10 +262,11 @@ public class InspectedServiceImpl extends BaseQueryService<ExamStudent> implemen
         TaskLock taskLock = TaskLockUtil.getInspectedStudentTask(getKey(student));
         return taskLock.exist(student.getId(), 1, userId);
     }
-    
+
     private String getKey(ExamStudentVo student) {
         return student.getExamId() + "_" + student.getSubjectCode();
     }
+
     private String getKey(ExamStudent student) {
         return student.getExamId() + "_" + student.getSubjectCode();
     }
@@ -266,17 +275,17 @@ public class InspectedServiceImpl extends BaseQueryService<ExamStudent> implemen
     @Override
     public boolean inspect(ExamStudent student, Integer userId) {
         if (this.hasApplied(student, userId) && SubjectiveStatus.MARKED.equals(student.getSubjectiveStatus())) {
-        	if (!SubjectiveStatus.MARKED.equals(student.getSubjectiveStatus())
-        			||student.getInspected()) {
-        		return false;
-        	}
-        	ExamSubject subject=examSubjectService.find(student.getExamId(), student.getSubjectCode());
-        	InspectHistory old=inspectHistoryService.findByStudentIdAndInspectRound(student.getId(),subject.getInspectRound());
-        	if(old!=null) {
-        		return false;
-        	}
+            if (!SubjectiveStatus.MARKED.equals(student.getSubjectiveStatus()) || student.getInspected()) {
+                return false;
+            }
+            ExamSubject subject = examSubjectService.find(student.getExamId(), student.getSubjectCode());
+            InspectHistory old = inspectHistoryService.findByStudentIdAndInspectRound(student.getId(),
+                    subject.getInspectRound());
+            if (old != null) {
+                return false;
+            }
             Date now = new Date();
-            studentService.inspect(student.getId(), now,userId);
+            studentService.inspect(student.getId(), now, userId);
             InspectHistory i = new InspectHistory();
             i.setExamId(student.getExamId());
             i.setStudentId(student.getId());
@@ -286,62 +295,59 @@ public class InspectedServiceImpl extends BaseQueryService<ExamStudent> implemen
             i.setInspectRound(subject.getInspectRound());
             inspectHistoryService.save(i);
             studentService.updateInspectCount(student.getId(), inspectHistoryService.countByStudentId(student.getId()));
-            //this.releaseByStudent(student);
+            // this.releaseByStudent(student);
             return true;
         }
         return false;
     }
 
     /**
-     *清除当前轮的复核,以及复核状态
+     * 清除当前轮的复核,以及复核状态
      */
     @Transactional
     @Override
     public boolean cancel(Integer studentId) {
         ExamStudent student = studentService.findById(studentId);
-        ExamSubject sub=examSubjectService.find(student.getExamId(), student.getSubjectCode());
+        ExamSubject sub = examSubjectService.find(student.getExamId(), student.getSubjectCode());
         if (student.getInspected()) {
             studentService.cancelInspect(studentId);
-            inspectHistoryService.deleteByStudentIdAndInspectRound(studentId,sub.getInspectRound());
+            inspectHistoryService.deleteByStudentIdAndInspectRound(studentId, sub.getInspectRound());
             return true;
         }
         return false;
     }
-    
+
     @Transactional
     @Override
     public void clear(Integer studentId) {
-        ExamStudent student = studentService.findById(studentId);
-        if (student.getInspected()) {
-            studentService.cancelInspect(studentId);
-            inspectHistoryService.deleteByStudentId(studentId);
-        }
+        studentService.cancelInspect(studentId);
+        inspectHistoryService.deleteByStudentId(studentId);
     }
 
-	@Override
-	public void fillInspectHistoryMap(List<ExamStudentVo> list, int maxInspectRound) {
-		List<Integer> sids=list.stream().map(e->e.getId()).collect(Collectors.toList());
-		List<InspectHistory> ihs=inspectHistoryService.findByStudentIdIn(sids);
-		if(ihs==null||ihs.size()==0) {
-			return;
-		}
-		Map<Integer,Map<String,InspectHistory>> map=new HashMap<>();
-		for(InspectHistory ih:ihs) {
-			Map<String,InspectHistory> tem=map.get(ih.getStudentId());
-			if(tem==null) {
-				tem=new HashMap<>();
-				map.put(ih.getStudentId(),tem);
-			}
-			tem.put(ih.getInspectRound().toString(),ih);
-		}
-		for(ExamStudentVo es:list) {
-			es.setInspectHistoryMap(map.get(es.getId()));
-		}
-	}
+    @Override
+    public void fillInspectHistoryMap(List<ExamStudentVo> list, int maxInspectRound) {
+        List<Integer> sids = list.stream().map(e -> e.getId()).collect(Collectors.toList());
+        List<InspectHistory> ihs = inspectHistoryService.findByStudentIdIn(sids);
+        if (ihs == null || ihs.size() == 0) {
+            return;
+        }
+        Map<Integer, Map<String, InspectHistory>> map = new HashMap<>();
+        for (InspectHistory ih : ihs) {
+            Map<String, InspectHistory> tem = map.get(ih.getStudentId());
+            if (tem == null) {
+                tem = new HashMap<>();
+                map.put(ih.getStudentId(), tem);
+            }
+            tem.put(ih.getInspectRound().toString(), ih);
+        }
+        for (ExamStudentVo es : list) {
+            es.setInspectHistoryMap(map.get(es.getId()));
+        }
+    }
 
-	@Override
-	public boolean inspectFinish(Integer examId, String subjectCode, Integer inspectRound) {
-		ExamStudentSearchQuery sQuery = new ExamStudentSearchQuery();
+    @Override
+    public boolean inspectFinish(Integer examId, String subjectCode, Integer inspectRound) {
+        ExamStudentSearchQuery sQuery = new ExamStudentSearchQuery();
         sQuery.setExamId(examId);
         sQuery.setUpload(true);
         sQuery.setAbsent(false);
@@ -349,14 +355,14 @@ public class InspectedServiceImpl extends BaseQueryService<ExamStudent> implemen
         sQuery.setSubjectCode(subjectCode);
         long totalPaperCount = studentService.countByQuery(sQuery);
         StringBuilder countSql = new StringBuilder("select count(s.id) from eb_exam_student s  where s.exam_id ="
-        +examId+" and s.subject_code ='"+subjectCode+"'");
+                + examId + " and s.subject_code ='" + subjectCode + "'");
         countSql.append(" and s.inspected=1");
-//        countSql.append(" and exists(select 1 from eb_inspect_history h "
-//                +" left join eb_exam_subject sub on h.exam_id=sub.exam_id and h.subject_code=sub.code "
-//                +" where s.id=h.student_id and h.inspect_round="+inspectRound+") ");
+        // countSql.append(" and exists(select 1 from eb_inspect_history h "
+        // +" left join eb_exam_subject sub on h.exam_id=sub.exam_id and h.subject_code=sub.code "
+        // +" where s.id=h.student_id and h.inspect_round="+inspectRound+") ");
         Query countQuery = entityManager.createNativeQuery(countSql.toString());
         Object singleResult = countQuery.getResultList().get(0);
         Integer count = singleResult == null ? 0 : Integer.valueOf(singleResult.toString());
-		return totalPaperCount==count;
-	}
+        return totalPaperCount == count;
+    }
 }

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

@@ -534,6 +534,7 @@ public class MarkServiceImpl implements MarkService {
                 updateStudentGroupStatus(library.getStudentId(), library.getExamId(), library.getSubjectCode(),
                         library.getGroupNumber(), SubjectiveStatus.UNMARK);
                 studentService.updateSubjectiveStatusAndScore(library.getStudentId(), SubjectiveStatus.UNMARK, 0, null);
+                inspectedService.cancel(library.getStudentId());
                 lockService.unlock(LockType.STUDENT, library.getStudentId());
             }
             markerDao.resetById(marker.getId());
@@ -574,7 +575,7 @@ public class MarkServiceImpl implements MarkService {
         selectiveStudentDao.deleteByStudentId(student.getId());
         updateAllCount(student.getExamId(), student.getSubjectCode());
         // 复核记录
-        inspectHistoryService.deleteByStudentId(student.getId());
+        inspectedService.clear(student.getId());
         // 打回记录
         rejectHistoryDao.deleteByStudentId(student.getId());
     }
@@ -1444,6 +1445,7 @@ public class MarkServiceImpl implements MarkService {
             scoreCalculate(studentId);
         } else {
             studentService.updateSubjectiveStatusAndScore(studentId, SubjectiveStatus.UNMARK, 0, null);
+            inspectedService.cancel(studentId);
         }
     }
 
@@ -1486,6 +1488,7 @@ public class MarkServiceImpl implements MarkService {
             updateStudentGroupStatus(studentId, group.getExamId(), group.getSubjectCode(), group.getNumber(),
                     SubjectiveStatus.UNMARK);
             studentService.updateSubjectiveStatusAndScore(studentId, SubjectiveStatus.UNMARK, 0, null);
+            inspectedService.cancel(studentId);
         }
     }
 
@@ -1499,7 +1502,6 @@ public class MarkServiceImpl implements MarkService {
      */
     private void resetStudentGroup(Integer studentId, Integer examId, String subjectCode, Integer groupNumber) {
         updateStudentGroupStatus(studentId, examId, subjectCode, groupNumber, SubjectiveStatus.UNMARK);
-        // scoreDao.deleteByStudentIdAndGroupNumber(studentId, groupNumber);
         studentService.updateSubjectiveStatusAndScore(studentId, SubjectiveStatus.UNMARK, 0, null);
     }