瀏覽代碼

全卷复核

xiatian 1 年之前
父節點
當前提交
071f668796
共有 21 個文件被更改,包括 299 次插入119 次删除
  1. 21 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/bean/SubjectInspectCountVo.java
  2. 12 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/dao/ExamStudentDao.java
  3. 2 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/dao/InspectHistoryDao.java
  4. 14 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/model/ExamStudent.java
  5. 41 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/query/ExamStudentSearchQuery.java
  6. 4 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/ExamStudentService.java
  7. 2 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/InspectHistoryService.java
  8. 3 3
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/InspectedService.java
  9. 69 22
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/impl/ExamStudentServiceImpl.java
  10. 4 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/impl/ExamSubjectServiceImpl.java
  11. 6 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/impl/InspectHistoryServiceImpl.java
  12. 39 34
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/impl/InspectedServiceImpl.java
  13. 1 1
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/service/Impl/MarkCronService.java
  14. 2 4
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/service/Impl/MarkServiceImpl.java
  15. 1 2
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/service/impl/ReportServiceImpl.java
  16. 1 1
      stmms-common/src/main/java/cn/com/qmth/stmms/common/enums/SubjectiveStatus.java
  17. 4 17
      stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/ImportQueryController.java
  18. 27 17
      stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/InspectedController.java
  19. 43 18
      stmms-web/src/main/webapp/WEB-INF/views/modules/exam/inspectedList.jsp
  20. 1 0
      stmms-web/src/main/webapp/sql/stmms_ft.sql
  21. 2 0
      stmms-web/src/main/webapp/sql/upgrade/1.3.14.sql

+ 21 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/bean/SubjectInspectCountVo.java

@@ -0,0 +1,21 @@
+package cn.com.qmth.stmms.biz.exam.bean;
+
+import java.math.BigInteger;
+
+public class SubjectInspectCountVo {
+	private String subjectCode;
+	private BigInteger dataCount;
+	public String getSubjectCode() {
+		return subjectCode;
+	}
+	public void setSubjectCode(String subjectCode) {
+		this.subjectCode = subjectCode;
+	}
+	public BigInteger getDataCount() {
+		return dataCount;
+	}
+	public void setDataCount(BigInteger dataCount) {
+		this.dataCount = dataCount;
+	}
+	
+}

+ 12 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/dao/ExamStudentDao.java

@@ -244,4 +244,16 @@ public interface ExamStudentDao extends PagingAndSortingRepository<ExamStudent,
     @Query("update ExamStudent s set s.scoreVerifyUser=?1,s.scoreVerifyTime=?2,s.scoreVerifyFlagged=?3 where s.id=?4 ")
     public void scoreVerifyTag(Integer userId,Date time,Boolean tag,Integer studentId);
 
+    @Modifying
+    @Query("update ExamStudent s set s.inspected=0,s.inspectTime=null ,s.inspectorId=null where s.examId=?1 and s.subjectCode=?2 and s.inspected=1")
+	public void cancelInspect(int examId, String subjectCode);
+    
+    @Modifying
+    @Query("update ExamStudent s set s.inspected=1, s.inspectTime=?2 ,s.inspectorId=?3 where s.id=?1 ")
+    public void inspect(Integer studentId, Date inspectTime, Integer inspectorId);
+
+    @Modifying
+    @Query("update ExamStudent s set s.inspected=0, s.inspectTime=null ,s.inspectorId=null where s.id=?1 ")
+	public void cancelInspect(Integer studentId);
+
 }

+ 2 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/dao/InspectHistoryDao.java

@@ -28,4 +28,6 @@ public interface InspectHistoryDao extends PagingAndSortingRepository<InspectHis
 
 	InspectHistory findByStudentIdAndInspectRound(Integer studentId, Integer inspectRound);
 
+	void deleteByStudentIdAndInspectRound(Integer studentId, Integer inspectRound);
+
 }

+ 14 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/model/ExamStudent.java

@@ -284,6 +284,12 @@ public class ExamStudent implements Serializable {
     @Column(name = "inspect_count", nullable = true)
     private Integer inspectCount;
     
+    /**
+     * 当前轮次是否已复核
+     */
+    @Column(name = "inspected", nullable = false)
+    private boolean inspected;
+    
     /**
      * 成绩校验人ID
      */
@@ -955,4 +961,12 @@ public class ExamStudent implements Serializable {
 		this.scoreVerifyFlagged = scoreVerifyFlagged;
 	}
 
+	public boolean getInspected() {
+		return inspected;
+	}
+
+	public void setInspected(boolean inspected) {
+		this.inspected = inspected;
+	}
+
 }

+ 41 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/query/ExamStudentSearchQuery.java

@@ -103,8 +103,17 @@ public class ExamStudentSearchQuery extends BaseQuery<ExamStudent> {
     private List<Integer> studentIds;
 
     private Integer inspectorId;
+    
+    private String inspectorName;
 
     private Integer sheetCount;
+    
+    //是否已复核
+    private Boolean inspected;
+    
+    private Double questionScore;
+    
+    private Boolean questionScoreEmpty;
 
     public ExamStudentSearchQuery() {
         super();
@@ -495,4 +504,36 @@ public class ExamStudentSearchQuery extends BaseQuery<ExamStudent> {
         this.sheetCount = sheetCount;
     }
 
+	public Boolean getInspected() {
+		return inspected;
+	}
+
+	public void setInspected(Boolean inspected) {
+		this.inspected = inspected;
+	}
+
+	public String getInspectorName() {
+		return inspectorName;
+	}
+
+	public void setInspectorName(String inspectorName) {
+		this.inspectorName = inspectorName;
+	}
+
+	public Double getQuestionScore() {
+		return questionScore;
+	}
+
+	public void setQuestionScore(Double questionScore) {
+		this.questionScore = questionScore;
+	}
+
+	public Boolean getQuestionScoreEmpty() {
+		return questionScoreEmpty;
+	}
+
+	public void setQuestionScoreEmpty(Boolean questionScoreEmpty) {
+		this.questionScoreEmpty = questionScoreEmpty;
+	}
+
 }

+ 4 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/ExamStudentService.java

@@ -149,6 +149,8 @@ public interface ExamStudentService {
 
     public void updateSubjectiveStatusAndTimeAndInspectorId(Integer studentId, SubjectiveStatus status,
             Date inspectTime, Integer inspectorId);
+    
+    public void inspect(Integer studentId,Date inspectTime, Integer inspectorId);
 
     public List<ExamStudent> findByExamIdAndStudentCodeAndSubjectCode(int examId, String studentCode, String subjectCode);
 
@@ -182,4 +184,6 @@ public interface ExamStudentService {
 
 	void scoreVerifyTag(Integer userId, Integer studentId, Boolean tag);
 
+	void cancelInspect(Integer studentId);
+
 }

+ 2 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/InspectHistoryService.java

@@ -18,4 +18,6 @@ public interface InspectHistoryService {
 
 	List<InspectHistory> findByStudentIdIn(List<Integer> sids);
 
+	void deleteByStudentIdAndInspectRound(Integer studentId, Integer inspectRound);
+
 }

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

@@ -10,10 +10,10 @@ import java.util.List;
 public interface InspectedService {
 
 	List<ExamStudent> findByQuery(ExamStudentSearchQuery query, SubjectiveStatus status, Integer mainNumber,
-			Double mainStartScore, Double mainEndScore, Double questionScore, SelectiveStatus selectiveStatus);
+			Double mainStartScore, Double mainEndScore, SelectiveStatus selectiveStatus);
 
 	Integer countByQuery(ExamStudentSearchQuery query, SubjectiveStatus status, Integer mainNumber,
-			Double mainStartScore, Double mainEndScore, Double questionScore, SelectiveStatus selectiveStatus);
+			Double mainStartScore, Double mainEndScore, SelectiveStatus selectiveStatus);
 
 	void releaseByUserId(Integer examId, String subjectCode, Integer userId);
 
@@ -43,7 +43,7 @@ public interface InspectedService {
 	boolean cancel(Integer studentId);
 
 	Integer needInspectCount(ExamStudentSearchQuery query, Integer mainNumber, Double mainStartScore,
-			Double mainEndScore, Double questionScore, SelectiveStatus selectiveStatus);
+			Double mainEndScore, SelectiveStatus selectiveStatus);
 
 	void fillInspectHistoryMap(List<ExamStudent> list, int maxInspectRound);
 

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

@@ -1,19 +1,24 @@
 package cn.com.qmth.stmms.biz.exam.service.impl;
 
-import cn.com.qmth.stmms.biz.common.BaseQueryService;
-import cn.com.qmth.stmms.biz.exam.dao.ExamStudentDao;
-import cn.com.qmth.stmms.biz.exam.model.*;
-import cn.com.qmth.stmms.biz.exam.query.ExamStudentSearchQuery;
-import cn.com.qmth.stmms.biz.exam.service.*;
-import cn.com.qmth.stmms.biz.mark.model.*;
-import cn.com.qmth.stmms.biz.mark.service.MarkLibraryService;
-import cn.com.qmth.stmms.biz.mark.service.MarkSpecialTagService;
-import cn.com.qmth.stmms.biz.mark.service.MarkTrackService;
-import cn.com.qmth.stmms.biz.utils.OriginTag;
-import cn.com.qmth.stmms.biz.utils.PictureConfigTransform;
-import cn.com.qmth.stmms.biz.utils.PictureTag;
-import cn.com.qmth.stmms.biz.utils.ScoreItem;
-import cn.com.qmth.stmms.common.enums.SubjectiveStatus;
+import java.math.BigDecimal;
+import java.text.DecimalFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Expression;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
 
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.lang.math.RandomUtils;
@@ -25,16 +30,42 @@ import org.springframework.data.jpa.domain.Specification;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import javax.persistence.criteria.*;
-
-import java.math.BigDecimal;
-import java.text.DecimalFormat;
-import java.util.*;
-import java.util.Map.Entry;
+import cn.com.qmth.stmms.biz.common.BaseQueryService;
+import cn.com.qmth.stmms.biz.exam.dao.ExamStudentDao;
+import cn.com.qmth.stmms.biz.exam.model.AnswerCard;
+import cn.com.qmth.stmms.biz.exam.model.Exam;
+import cn.com.qmth.stmms.biz.exam.model.ExamPackage;
+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.query.ExamStudentSearchQuery;
+import cn.com.qmth.stmms.biz.exam.service.AnswerCardService;
+import cn.com.qmth.stmms.biz.exam.service.CheckStudentService;
+import cn.com.qmth.stmms.biz.exam.service.ExamPackageService;
+import cn.com.qmth.stmms.biz.exam.service.ExamQuestionService;
+import cn.com.qmth.stmms.biz.exam.service.ExamService;
+import cn.com.qmth.stmms.biz.exam.service.ExamStudentService;
+import cn.com.qmth.stmms.biz.exam.service.ExamSubjectService;
+import cn.com.qmth.stmms.biz.exam.service.MarkGroupService;
+import cn.com.qmth.stmms.biz.mark.model.MarkConfigItem;
+import cn.com.qmth.stmms.biz.mark.model.MarkLibrary;
+import cn.com.qmth.stmms.biz.mark.model.MarkSpecialTag;
+import cn.com.qmth.stmms.biz.mark.model.MarkTrack;
+import cn.com.qmth.stmms.biz.mark.model.PictureConfigItem;
+import cn.com.qmth.stmms.biz.mark.service.MarkLibraryService;
+import cn.com.qmth.stmms.biz.mark.service.MarkSpecialTagService;
+import cn.com.qmth.stmms.biz.mark.service.MarkTrackService;
+import cn.com.qmth.stmms.biz.utils.OriginTag;
+import cn.com.qmth.stmms.biz.utils.PictureConfigTransform;
+import cn.com.qmth.stmms.biz.utils.PictureTag;
+import cn.com.qmth.stmms.biz.utils.ScoreItem;
+import cn.com.qmth.stmms.common.enums.SubjectiveStatus;
 
 @Service
 public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implements ExamStudentService {
-
+	@PersistenceContext
+	private EntityManager entityManager;
     @Autowired
     private ExamStudentDao studentDao;
 
@@ -585,6 +616,9 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
                 if (query.getUpload() != null) {
                     predicates.add(cb.equal(root.get("upload"), query.getUpload()));
                 }
+                if (query.getInspected() != null) {
+                    predicates.add(cb.equal(root.get("inspected"), query.getInspected()));
+                }
                 if (query.getAbsent() != null) {
                     if (query.getAbsent()) {// 缺考=缺考+ 未上传
                         predicates.add(cb.or(cb.equal(root.get("absent"), true), cb.equal(root.get("upload"), false)));
@@ -1161,8 +1195,9 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
 
     @Override
     public Set<String> findSubjectUnInspectedByExamId(int examId) {
-        return studentDao.findSubjectUnInspectedByExamId(examId, SubjectiveStatus.MARKED);
+    	return studentDao.findSubjectUnInspectedByExamId(examId, SubjectiveStatus.MARKED);
     }
+    
 
     @Override
     public List<String> findDistinctCollege(int examId) {
@@ -1275,4 +1310,16 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
     public void scoreVerifyTag(Integer userId,Integer studentId,Boolean tag) {
     	studentDao.scoreVerifyTag(userId, new Date(), tag, studentId);
     }
+
+    @Transactional
+	@Override
+	public void inspect(Integer studentId, Date inspectTime, Integer inspectorId) {
+		studentDao.inspect(studentId, inspectTime, inspectorId);
+	}
+    
+    @Transactional
+	@Override
+	public void cancelInspect(Integer studentId) {
+		studentDao.cancelInspect(studentId);
+	}
 }

+ 4 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/impl/ExamSubjectServiceImpl.java

@@ -20,6 +20,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import cn.com.qmth.stmms.biz.common.BaseQueryService;
+import cn.com.qmth.stmms.biz.exam.dao.ExamStudentDao;
 import cn.com.qmth.stmms.biz.exam.dao.ExamSubjectDao;
 import cn.com.qmth.stmms.biz.exam.model.ExamSubject;
 import cn.com.qmth.stmms.biz.exam.service.ExamSubjectService;
@@ -31,6 +32,8 @@ public class ExamSubjectServiceImpl extends BaseQueryService<ExamSubject> implem
 
     @Autowired
     private ExamSubjectDao subjectDao;
+    @Autowired
+    private ExamStudentDao examStudentDao;
     @PersistenceContext
     private EntityManager entityManager;
     @Transactional
@@ -224,6 +227,7 @@ public class ExamSubjectServiceImpl extends BaseQueryService<ExamSubject> implem
 	@Override
 	public void nextInspectRound(int examId, String subjectCode) {
 		subjectDao.nextInspectRound(examId,subjectCode);
+		examStudentDao.cancelInspect(examId,subjectCode);
 	}
 
 }

+ 6 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/impl/InspectHistoryServiceImpl.java

@@ -76,4 +76,10 @@ public class InspectHistoryServiceImpl extends BaseQueryService<InspectHistory>
 		return  query.getResultList();
 	}
 
+	@Transactional
+	@Override
+	public void deleteByStudentIdAndInspectRound(Integer studentId, Integer inspectRound) {
+		inspectHistoryDao.deleteByStudentIdAndInspectRound(studentId,  inspectRound);
+	}
+
 }

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

@@ -62,11 +62,10 @@ public class InspectedServiceImpl extends BaseQueryService<ExamStudent> implemen
     @SuppressWarnings("unchecked")
     @Override
     public List<ExamStudent> findByQuery(ExamStudentSearchQuery query, SubjectiveStatus status, Integer mainNumber,
-            Double mainStartScore, Double mainEndScore, Double questionScore, SelectiveStatus selectiveStatus) {
+            Double mainStartScore, Double mainEndScore, SelectiveStatus selectiveStatus) {
     	int offset=(query.getPageNumber() - 1) * query.getPageSize();
         StringBuilder dataSql = new StringBuilder("select s.id from eb_exam_student s ");
-        String whereSql = getWhereSql(query, status, mainNumber, mainStartScore, mainEndScore, questionScore,
-                selectiveStatus);
+        String whereSql = getWhereSql(query, status, mainNumber, mainStartScore, mainEndScore,selectiveStatus);
         dataSql.append(whereSql).append(" order by s.inspect_time desc ").append(" limit "+offset+","+query.getPageSize());
         Query dataQuery = entityManager.createNativeQuery(dataSql.toString());
         List<Integer> list = dataQuery.getResultList();
@@ -85,7 +84,7 @@ public class InspectedServiceImpl extends BaseQueryService<ExamStudent> implemen
     }
 
     private String getWhereSql(ExamStudentSearchQuery query, SubjectiveStatus status, Integer mainNumber,
-            Double mainStartScore, Double mainEndScore, Double questionScore, SelectiveStatus selectiveStatus) {
+            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());
@@ -93,6 +92,10 @@ public class InspectedServiceImpl extends BaseQueryService<ExamStudent> implemen
         if (StringUtils.isNotBlank(query.getSubjectCode())) {
             whereSql.append(" and s.subject_code ='"+query.getSubjectCode()+"'");
         }
+        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()+"%')");
+        }
         if (StringUtils.isNotBlank(query.getSubjectCodeIn())) {
             String[] subjectCodeIn = query.getSubjectCodeIn().split(",");
             List<String> in = new ArrayList<String>();
@@ -101,18 +104,9 @@ public class InspectedServiceImpl extends BaseQueryService<ExamStudent> implemen
             }
             whereSql.append(" and s.subject_code in ('"+StringUtils.join(in, "','")+"') ");
         }
-        whereSql.append(" and s.subjective_status IN ('MARKED','INSPECTED')");
-        if (status != null) {
-            if(SubjectiveStatus.MARKED.equals(status)) {
-            	whereSql.append(" and not 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=sub.inspect_round) ");
-            }
-            if(SubjectiveStatus.INSPECTED.equals(status)) {
-            	whereSql.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=sub.inspect_round) ");
-            }
+    	whereSql.append(" and s.subjective_status ='MARKED'");
+        if (query.getInspected() != null) {
+            whereSql.append(" and s.inspected ="+(query.getInspected()?1:0));
         }
         if (query.getStartScore() != null) {
             whereSql.append(
@@ -125,6 +119,7 @@ public class InspectedServiceImpl extends BaseQueryService<ExamStudent> implemen
         if (StringUtils.isNotBlank(query.getSecretNumber())) {
             whereSql.append(" and s.secret_number ='"+query.getSecretNumber()+"'");
         }
+        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) {
@@ -137,7 +132,19 @@ public class InspectedServiceImpl extends BaseQueryService<ExamStudent> implemen
                 whereSql.append(" and e.main_score <="+mainEndScore);
             }
             if (questionScore != null) {
-                whereSql.append(" and e.score ="+questionScore);
+                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(" ) ");
         }
@@ -173,10 +180,9 @@ public class InspectedServiceImpl extends BaseQueryService<ExamStudent> implemen
 
     @Override
     public Integer countByQuery(ExamStudentSearchQuery query, SubjectiveStatus status, Integer mainNumber,
-            Double mainStartScore, Double mainEndScore, Double questionScore, SelectiveStatus selectiveStatus) {
+            Double mainStartScore, Double mainEndScore,SelectiveStatus selectiveStatus) {
         StringBuilder countSql = new StringBuilder("select count(s.id) from eb_exam_student s ");
-        String whereSql = getWhereSql(query, status, mainNumber, mainStartScore, mainEndScore, questionScore,
-                selectiveStatus);
+        String whereSql = getWhereSql(query, status, mainNumber, mainStartScore, mainEndScore, selectiveStatus);
         countSql.append(whereSql);
         Query countQuery = entityManager.createNativeQuery(countSql.toString());
         Object singleResult = countQuery.getResultList().get(0);
@@ -186,11 +192,9 @@ public class InspectedServiceImpl extends BaseQueryService<ExamStudent> implemen
     
     @Override
     public Integer needInspectCount(ExamStudentSearchQuery query, Integer mainNumber,
-            Double mainStartScore, Double mainEndScore, Double questionScore, 
-            SelectiveStatus selectiveStatus) {
+            Double mainStartScore, Double mainEndScore,SelectiveStatus selectiveStatus) {
     	StringBuilder countSql = new StringBuilder("select count(s.id) from eb_exam_student s ");
-        String whereSql = getWhereSql(query, SubjectiveStatus.MARKED, mainNumber, mainStartScore, mainEndScore, questionScore,
-                selectiveStatus);
+        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);
@@ -243,7 +247,7 @@ public class InspectedServiceImpl extends BaseQueryService<ExamStudent> implemen
     public boolean inspect(ExamStudent student, Integer userId) {
         if (this.hasApplied(student, userId) && SubjectiveStatus.MARKED.equals(student.getSubjectiveStatus())) {
         	if (!SubjectiveStatus.MARKED.equals(student.getSubjectiveStatus())
-        			&&!SubjectiveStatus.INSPECTED.equals(student.getSubjectiveStatus())) {
+        			||student.getInspected()) {
         		return false;
         	}
         	ExamSubject subject=examSubjectService.find(student.getExamId(), student.getSubjectCode());
@@ -252,8 +256,7 @@ public class InspectedServiceImpl extends BaseQueryService<ExamStudent> implemen
         		return false;
         	}
             Date now = new Date();
-            studentService.updateSubjectiveStatusAndTimeAndInspectorId(student.getId(), SubjectiveStatus.INSPECTED, now,
-                    userId);
+            studentService.inspect(student.getId(), now,userId);
             InspectHistory i = new InspectHistory();
             i.setExamId(student.getExamId());
             i.setStudentId(student.getId());
@@ -269,12 +272,14 @@ public class InspectedServiceImpl extends BaseQueryService<ExamStudent> implemen
         return false;
     }
 
+    @Transactional
     @Override
     public boolean cancel(Integer studentId) {
         ExamStudent student = studentService.findById(studentId);
-        if (student.getSubjectiveStatus().equals(SubjectiveStatus.INSPECTED)) {
-            studentService
-                    .updateSubjectiveStatusAndTimeAndInspectorId(student.getId(), SubjectiveStatus.MARKED, null, null);
+        ExamSubject sub=examSubjectService.find(student.getExamId(), student.getSubjectCode());
+        if (student.getInspected()) {
+            studentService.cancelInspect(studentId);
+            inspectHistoryService.deleteByStudentIdAndInspectRound(studentId,sub.getInspectRound());
             return true;
         }
         return false;
@@ -312,10 +317,10 @@ public class InspectedServiceImpl extends BaseQueryService<ExamStudent> implemen
         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+"'");
-        countSql.append(" and s.subjective_status IN ('MARKED','INSPECTED')");
-        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 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+") ");
         Query countQuery = entityManager.createNativeQuery(countSql.toString());
         Object singleResult = countQuery.getResultList().get(0);
         Integer count = singleResult == null ? 0 : Integer.valueOf(singleResult.toString());

+ 1 - 1
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/service/Impl/MarkCronService.java

@@ -191,7 +191,7 @@ public class MarkCronService {
             List<MarkGroup> groups = groupService.findByExamAndSubjectAndStatus(subject.getExamId(), subject.getCode(),
                     MarkStatus.TRIAL);
             long trialCount = studentService.countByExamIdAndSubjectCodeAndStatus(examId, subject.getCode(),
-                    SubjectiveStatus.TRIAL, SubjectiveStatus.MARKED, SubjectiveStatus.INSPECTED);
+                    SubjectiveStatus.TRIAL, SubjectiveStatus.MARKED);
             if (!groups.isEmpty() && trialCount < subject.getTrialCount()) {
                 while (trialCount < subject.getTrialCount()) {
                     // 取一个的考生

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

@@ -310,8 +310,7 @@ public class MarkServiceImpl implements MarkService {
             inspectHistoryService.deleteByExamIdAndSubjectCode(group.getExamId(), group.getSubjectCode());
         } else {
             List<Integer> studentList = studentService.findIdByExamIdAndSubjectCodeAndSubjectiveStatus(
-                    group.getExamId(), group.getSubjectCode(), SubjectiveStatus.UNMARK, SubjectiveStatus.MARKED,
-                    SubjectiveStatus.INSPECTED);
+                    group.getExamId(), group.getSubjectCode(), SubjectiveStatus.UNMARK, SubjectiveStatus.MARKED);
             for (Integer studentId : studentList) {
                 checkStudentSubjective(studentId, groupCount, unGroupQuestionCount);
             }
@@ -1802,8 +1801,7 @@ public class MarkServiceImpl implements MarkService {
                         inspectHistoryService.deleteByExamIdAndSubjectCode(examId, subjectCode);
                     } else {
                         List<Integer> studentList = studentService.findIdByExamIdAndSubjectCodeAndSubjectiveStatus(
-                                examId, subjectCode, SubjectiveStatus.UNMARK, SubjectiveStatus.MARKED,
-                                SubjectiveStatus.INSPECTED);
+                                examId, subjectCode, SubjectiveStatus.UNMARK, SubjectiveStatus.MARKED);
                         for (Integer studentId : studentList) {
                             checkStudentSubjective(studentId, groupCount, unGroupQuestionCount);
                         }

+ 1 - 2
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/service/impl/ReportServiceImpl.java

@@ -235,8 +235,7 @@ public class ReportServiceImpl implements ReportService {
     }
 
     private void statistic(ExamStudent student) {
-        if (SubjectiveStatus.MARKED.equals(student.getSubjectiveStatus())
-                || SubjectiveStatus.INSPECTED.equals(student.getSubjectiveStatus())) {
+        if (SubjectiveStatus.MARKED.equals(student.getSubjectiveStatus())) {
             student.setSubject(findExamSubject(student.getExamId(), student.getSubjectCode()));
             student.setObjectiveQuestionList(findQuestionList(student.getExamId(), student.getSubjectCode(),
                     student.getPaperType(), true));

+ 1 - 1
stmms-common/src/main/java/cn/com/qmth/stmms/common/enums/SubjectiveStatus.java

@@ -5,7 +5,7 @@ import java.util.List;
 
 public enum SubjectiveStatus {
 
-    UNMARK("未评完"), TRIAL("试评"), MARKED("已评完"), INSPECTED("已复核");
+    UNMARK("未评完"), TRIAL("试评"), MARKED("已评完");
 
     private String name;
 

+ 4 - 17
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/ImportQueryController.java

@@ -9,8 +9,6 @@ import java.util.Set;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
-import net.sf.json.JSONObject;
-
 import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -24,6 +22,8 @@ import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.servlet.mvc.support.RedirectAttributes;
 
+import com.google.common.collect.Lists;
+
 import cn.com.qmth.stmms.admin.utils.PageUtil;
 import cn.com.qmth.stmms.admin.vo.InspectedStudentVO;
 import cn.com.qmth.stmms.admin.vo.TagStudentVO;
@@ -31,12 +31,9 @@ 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.ImportQuery;
 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;
 import cn.com.qmth.stmms.biz.exam.service.ImportQueryService;
-import cn.com.qmth.stmms.biz.exam.service.MarkGroupService;
-import cn.com.qmth.stmms.biz.exam.service.SubjectiveScoreService;
 import cn.com.qmth.stmms.biz.file.service.FileService;
 import cn.com.qmth.stmms.biz.mark.model.Task;
 import cn.com.qmth.stmms.biz.mark.service.TaskService;
@@ -48,8 +45,7 @@ import cn.com.qmth.stmms.common.enums.SubjectiveStatus;
 import cn.com.qmth.stmms.common.utils.ExportExcel;
 import cn.com.qmth.stmms.common.utils.ImportExcel;
 import cn.com.qmth.stmms.common.utils.RequestUtils;
-
-import com.google.common.collect.Lists;
+import net.sf.json.JSONObject;
 
 @Controller("importQueryController")
 @RequestMapping("/admin/exam/inspected/import")
@@ -66,14 +62,6 @@ public class ImportQueryController extends BaseExamController {
     @Autowired
     private FileService fileService;
 
-    @Autowired
-    private MarkGroupService groupService;
-
-    @Autowired
-    private SubjectiveScoreService scoreService;
-
-    @Autowired
-    private ExamQuestionService questionService;
 
     @Autowired
     private TaskService taskService;
@@ -160,8 +148,7 @@ public class ImportQueryController extends BaseExamController {
                         studentVO.getStudentCode(), studentVO.getSubjectCode());
                 if (!studentList.isEmpty()) {
                     for (ExamStudent examStudent : studentList) {
-                        if (SubjectiveStatus.MARKED.equals(examStudent.getSubjectiveStatus())
-                                || SubjectiveStatus.INSPECTED.equals(examStudent.getSubjectiveStatus())) {
+                        if (SubjectiveStatus.MARKED.equals(examStudent.getSubjectiveStatus())) {
                             successStudent.add(examStudent.getId());
                             successNum++;
                         } else {

+ 27 - 17
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/InspectedController.java

@@ -95,7 +95,7 @@ public class InspectedController extends BaseExamController {
             @RequestParam(required = false) SubjectiveStatus status,
             @RequestParam(required = false) SelectiveStatus selectiveStatus,
             @RequestParam(required = false) Integer mainNumber, @RequestParam(required = false) Double mainStartScore,
-            @RequestParam(required = false) Double mainEndScore, @RequestParam(required = false) Double questionScore) {
+            @RequestParam(required = false) Double mainEndScore) {
         int examId = getSessionExamId(request);
         Exam exam = examService.findById(examId);
         if (ExamType.MULTI_MEDIA.equals(exam.getType())) {
@@ -110,7 +110,7 @@ public class InspectedController extends BaseExamController {
             query.setSubjectCodeIn(StringUtils.join(subjectCodeIn, ","));
         }
         List<ExamStudent> list = inspectedService
-                .findByQuery(query, status, mainNumber, mainStartScore, mainEndScore, questionScore, selectiveStatus);
+                .findByQuery(query, status, mainNumber, mainStartScore, mainEndScore,  selectiveStatus);
         for (ExamStudent e : list) {
             e.setSubjectiveScoreList(e.getSubjectiveScoreList().replace(UN_SELECTIVE_SCORE, "/"));
 //            e.setInspectHistoryList(inspectHistoryService.findByStudentIdLimit3(e.getId()));
@@ -121,11 +121,13 @@ public class InspectedController extends BaseExamController {
         	maxInspectRound=subjectService.findMaxInspectRound(examId,subjectCodes);
         	inspectedService.fillInspectHistoryMap(list,maxInspectRound);
         }
+        Boolean inspected=query.getInspected();
+        query.setInspected(null);
         Integer totalCount = inspectedService
-                .countByQuery(query, status, mainNumber, mainStartScore, mainEndScore, questionScore, selectiveStatus);
+                .countByQuery(query, status, mainNumber, mainStartScore, mainEndScore,  selectiveStatus);
+        query.setInspected(false);
         Integer inspectCount = inspectedService
-                .needInspectCount(query,mainNumber, mainStartScore, mainEndScore, questionScore,
-                        selectiveStatus);
+                .needInspectCount(query,mainNumber, mainStartScore, mainEndScore,  selectiveStatus);
         query.setResult(list);
         query.setTotalCount(totalCount);
         model.addAttribute("query", query);
@@ -136,7 +138,6 @@ public class InspectedController extends BaseExamController {
         model.addAttribute("mainNumber", mainNumber);
         model.addAttribute("mainStartScore", mainStartScore);
         model.addAttribute("mainEndScore", mainEndScore);
-        model.addAttribute("questionScore", questionScore);
         model.addAttribute("subjectList", subjectList);
         model.addAttribute("statusList", SubjectiveStatus.getOptionList());
         model.addAttribute("selectiveStatusList", SelectiveStatus.getOptionList());
@@ -149,6 +150,7 @@ public class InspectedController extends BaseExamController {
         		model.addAttribute("showNextInspect", true);
         	}
         }
+        query.setInspected(inspected);
         return "modules/exam/inspectedList";
     }
 
@@ -191,9 +193,9 @@ public class InspectedController extends BaseExamController {
             if (StringUtils.isBlank(query.getSubjectCode()) && !subjectList.isEmpty()) {
                 query.setSubjectCode(subjectList.get(0).getCode());
             }
+            query.setInspected(false);
             list = inspectedService
-                    .findByQuery(query, SubjectiveStatus.MARKED, mainNumber, mainStartScore, mainEndScore,
-                            questionScore, selectiveStatus);
+                    .findByQuery(query, SubjectiveStatus.MARKED, mainNumber, mainStartScore, mainEndScore,selectiveStatus);
             if (list.isEmpty()) {
                 break;
             }
@@ -312,9 +314,8 @@ public class InspectedController extends BaseExamController {
             obj.accumulate("message", "无法打回");
             return obj;
         }
-        if ((inspectedService.hasApplied(student, wu.getId()) && (student.getSubjectiveStatus()
-                .equals(SubjectiveStatus.MARKED))) || student.getSubjectiveStatus()
-                .equals(SubjectiveStatus.INSPECTED)) {
+        if (inspectedService.hasApplied(student, wu.getId()) && (student.getSubjectiveStatus()
+                .equals(SubjectiveStatus.MARKED))) {
             if (subjectCheck(student.getSubjectCode(), wu) && lockService.trylock(LockType.STUDENT, student.getId())) {
                 try {
                     lockService.watch(LockType.EXAM_SUBJECT, student.getExamId(), student.getSubjectCode());
@@ -354,7 +355,7 @@ public class InspectedController extends BaseExamController {
         query.setExamId(examId);
         query.setSubjectCode(subjectCode);
         query.setInspectorId(wu.getId());
-        query.addStatus(SubjectiveStatus.INSPECTED);
+        query.setInspected(true);
         query.setPageNumber(pageNumber);
         query.setPageSize(pageSize);
         query.orderByInspectTimeDesc();
@@ -377,8 +378,7 @@ public class InspectedController extends BaseExamController {
         int examId = getSessionExamId(request);
         query.setExamId(examId);
         Integer totalCount = inspectedService
-                .countByQuery(query, SubjectiveStatus.MARKED, mainNumber, mainStartScore, mainEndScore, questionScore,
-                        selectiveStatus);
+                .countByQuery(query, SubjectiveStatus.MARKED, mainNumber, mainStartScore, mainEndScore, selectiveStatus);
         status.accumulate("totalCount", totalCount);
         status.accumulate("valid", true);
         return status;
@@ -499,10 +499,11 @@ public class InspectedController extends BaseExamController {
             sQuery.setSubjectCode(subject.getCode());
             long totalPaperCount = studentService.countByQuery(sQuery);
             vo.setTotalPaperCount(totalPaperCount);
-            sQuery.addStatus(SubjectiveStatus.INSPECTED);
+            sQuery.setInspected(true);
             long inspectedCount = studentService.countByQuery(sQuery);
             vo.setInspectedCount(inspectedCount);
             sQuery.addStatus(SubjectiveStatus.MARKED);
+            sQuery.setInspected(null);
             long totalCount = studentService.countByQuery(sQuery);
             vo.setTotalCount(totalCount);
             vo.setLeftCount(totalCount - inspectedCount);
@@ -510,7 +511,15 @@ public class InspectedController extends BaseExamController {
                     (new DecimalFormat("####.###").format(inspectedCount * 100.0 / totalCount) + "%") :
                     "100%";
             vo.setPercent(percent);
-            vo.setFinishCount(studentService.findMinInspectCountByExamIdAndSubjectCode(examId, subject.getCode()));
+            if(unFinishSet.contains(vo.getSubject().getCode())) {
+            	vo.setFinishCount(vo.getSubject().getInspectRound()-1);
+            }else {
+            	if(totalCount==0) {
+            		vo.setFinishCount(vo.getSubject().getInspectRound()-1);
+            	}else {
+            		vo.setFinishCount(vo.getSubject().getInspectRound());
+            	}
+            }
             list.add(vo);
         }
         ExamStudentSearchQuery sQuery = new ExamStudentSearchQuery();
@@ -518,8 +527,9 @@ public class InspectedController extends BaseExamController {
         sQuery.setUpload(true);
         sQuery.setAbsent(false);
         sQuery.setBreach(false);
-        sQuery.addStatus(SubjectiveStatus.INSPECTED);
+        sQuery.setInspected(true);
         long markedCount = studentService.countByQuery(sQuery);
+        sQuery.setInspected(null);
         sQuery.addStatus(SubjectiveStatus.MARKED);
         long total = studentService.countByQuery(sQuery);
         model.addAttribute("unMarkedCount", total - markedCount);

+ 43 - 18
stmms-web/src/main/webapp/WEB-INF/views/modules/exam/inspectedList.jsp

@@ -37,12 +37,11 @@
         </select>
         &nbsp;
         <label>状态</label>
-        <select class="input-medium" name="status">
-            <option value="">请选择</option>
-            <c:forEach items="${statusList}" var="result">
-                <option value="${result}" <c:if test="${status==result}">selected</c:if>>${result.name}</option>
-            </c:forEach>
-        </select>
+        <select class="input-small" name="inspected">
+				<option value="" <c:if test="${null==query.inspected}">selected</c:if>>请选择</option>
+				<option value="1" <c:if test="${query.inspected!=null &&query.inspected}">selected</c:if>>已复核</option>
+				<option value="0" <c:if test="${query.inspected!=null &&!query.inspected}">selected</c:if>>未复核</option>
+			</select>
          &nbsp;
         <label>试卷总分:从</label>
         <input type="text" number="true" id="startScore" name="startScore" value="${query.startScore}" class="input-mini"/>
@@ -56,6 +55,8 @@
                 <option value="${result.value}" <c:if test="${result==selectiveStatus}">selected</c:if>>${result.name}</option>
             	</c:forEach>
             </select>
+         <label>复核人</label>
+        <input type="text" name="inspectorName" id="inspectorName" value="${query.inspectorName}" class="input-medium"/>
         <br/><br/>
 		<label>大题</label>
         <select class="input-medium" id="question-select" name="mainNumber">
@@ -71,8 +72,14 @@
         <input type="text" number="true" id="mainEndScore" name="mainEndScore" value="${mainEndScore }" class="input-mini"/>
         
         <label>小题得分</label>
-        <input type="text" number="true" name="questionScore" id="questionScore" value="${questionScore }" class="input-mini"/>
-
+        <input type="text" number="true" name="questionScore" id="questionScore" value="${query.questionScore }" class="input-mini"/>
+		<span id="questionScoreEmptySpan" hidden="true">
+			<select class="input-small" id="questionScoreEmpty" name="questionScoreEmpty">
+				<option value="" <c:if test="${null==query.questionScoreEmpty}">selected</c:if>>请选择</option>
+				<option value="1" <c:if test="${query.questionScoreEmpty!=null &&query.questionScoreEmpty}">selected</c:if>>空</option>
+				<option value="0" <c:if test="${query.questionScoreEmpty!=null &&!query.questionScoreEmpty}">selected</c:if>>0</option>
+			</select>
+		</span>	
         <label>密号</label>
         <input type="text" name="secretNumber" id="secretNumber" value="${query.secretNumber}" class="input-medium"/>
         &nbsp;
@@ -105,11 +112,12 @@
         <th>主观分</th>
         <th>试卷总分</th>
         <th>得分明细</th>
+        <th>操作</th>
         <c:forEach begin="1" end="${maxInspectRound}" step="1" varStatus="status">
         <th>复核人${status.index}</th>
         <th>复核时间${status.index}</th>
         </c:forEach>
-        <th>操作</th>
+        
     </tr>
     </thead>
     <tbody>
@@ -121,6 +129,15 @@
             <td>${result.subjectiveScoreString}</td>
             <td><fmt:formatNumber pattern="###.###" value="${result.totalScore}"/></td>
             <td>${result.subjectiveScoreList}</td>
+            <td>
+            	 <a href="${ctx}/web/admin/exam/track/student?studentId=${result.id}&subjectCode=${result.subjectCode}" target="_blank">轨迹图</a>
+                <c:if test="${result.subjectiveStatus=='MARKED'&&!result.inspected}">
+	                <a target="_blank" href="${ctx}/web/admin/exam/inspected/start?studentId=${result.id}&subjectCode=${result.subjectCode}">进入复核</a>
+                </c:if>
+                <c:if test="${result.inspected}">
+                <a class="cancel-link" href="#" data-id="${result.id}">取消复核</a>
+                </c:if>
+            </td>
             <c:if test="${!empty result.inspectHistoryMap}">
 	            <c:forEach begin="1" end="${maxInspectRound}" step="1" varStatus="status">
 	            	<c:set var="inspectHistory" value="${result.inspectHistoryMap.get(fn:trim(status.index))}" />
@@ -147,15 +164,7 @@
              		<td></td>
 	            </c:forEach>
             </c:if>
-            <td>
-            	 <a href="${ctx}/web/admin/exam/track/student?studentId=${result.id}&subjectCode=${result.subjectCode}" target="_blank">轨迹图</a>
-                <c:if test="${result.subjectiveStatus=='MARKED'}">
-	                <a target="_blank" href="${ctx}/web/admin/exam/inspected/start?studentId=${result.id}&subjectCode=${result.subjectCode}">进入复核</a>
-                </c:if>
-                <c:if test="${result.subjectiveStatus=='INSPECTED'}">
-                <a class="cancel-link" href="#" data-id="${result.id}">取消复核</a>
-                </c:if>
-            </td>
+            
         </tr>
     </c:forEach>
     </tbody>
@@ -240,6 +249,7 @@
                 bottomText: "导入文件不能超过1000行,仅允许导入“xls”或“xlsx”格式文件!"
             });
         });
+        $("#questionScore").trigger('change');
     });
 
     function page(n, s) {
@@ -310,6 +320,21 @@
         	$(".ids").attr("checked", false);
         }
     });
+    $("#questionScore").change(function () {
+    	var scoreStr=$("#questionScore").val();
+    	if(!scoreStr){
+    		$("#questionScoreEmpty").val('').trigger('change');
+    		$("#questionScoreEmptySpan").hide();
+    	}else{
+    		var scoreNum= parseFloat(scoreStr);
+    		if(scoreNum==0){
+    			$("#questionScoreEmptySpan").show();
+    		}else{
+    			$("#questionScoreEmpty").val('').trigger('change');
+        		$("#questionScoreEmptySpan").hide();
+    		}
+    	}
+    });
     
     $(".ids").change(function () {
     	var all = true;

+ 1 - 0
stmms-web/src/main/webapp/sql/stmms_ft.sql

@@ -332,6 +332,7 @@ CREATE TABLE `eb_exam_student`
     `score_verify_user` 			int (11) 	DEFAULT NULL COMMENT '成绩校验人ID',
     `score_verify_time`          datetime     DEFAULT NULL COMMENT '成绩校验时间',
     `score_verify_flagged`             tinyint(1)  DEFAULT NULL COMMENT '成绩校验标记结果',
+    `inspected`	tinyint(1) NOT NULL COMMENT '当前轮次是否已审核';
     PRIMARY KEY (`id`),
     UNIQUE KEY `index1` (`exam_id`, `exam_number`),
     UNIQUE KEY `index2` (`exam_id`, `secret_number`),

+ 2 - 0
stmms-web/src/main/webapp/sql/upgrade/1.3.14.sql

@@ -1,8 +1,10 @@
 USE `stmms_ft`;
 
+ALTER TABLE eb_exam_student ADD COLUMN `inspected`	tinyint(1) NOT NULL COMMENT '当前轮次是否已审核';
 ALTER TABLE eb_exam_student ADD COLUMN `score_verify_user`	int(11) DEFAULT NULL COMMENT '成绩校验人ID';
 ALTER TABLE eb_exam_student ADD COLUMN `score_verify_time`	datetime DEFAULT NULL COMMENT '成绩校验时间';
 ALTER TABLE eb_exam_student ADD COLUMN `score_verify_flagged`	tinyint(1) DEFAULT NULL COMMENT '成绩校验标记结果';
+UPDATE eb_exam_student set inspected=1,subjective_status='MARKED' where subjective_status='INSPECTED';
 
 ALTER TABLE eb_exam_subject ADD COLUMN `inspect_round` 	int(11) NOT NULL DEFAULT 1 COMMENT '复核轮数';
 ALTER TABLE eb_inspect_history ADD COLUMN `inspect_round` 	int(11) NOT NULL COMMENT '复核轮数';