Bläddra i källkod

试评相关bug修改

luoshi 6 år sedan
förälder
incheckning
9ca7ad0cbb
48 ändrade filer med 965 tillägg och 1025 borttagningar
  1. 5 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/dao/ExamQuestionDao.java
  2. 0 19
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/dao/ExamSubjectDao.java
  3. 4 3
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/dao/MarkGroupDao.java
  4. 0 15
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/model/ExamSubject.java
  5. 3 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/ExamQuestionService.java
  6. 0 16
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/ExamSubjectService.java
  7. 7 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/impl/ExamQuestionServiceImpl.java
  8. 0 3
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/impl/ExamStudentServiceImpl.java
  9. 0 68
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/impl/ExamSubjectServiceImpl.java
  10. 1 1
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/impl/MarkGroupServiceImpl.java
  11. 0 11
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/query/ExamSubjectSearchQuery.java
  12. 3 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/dao/MarkLibraryDao.java
  13. 1 1
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/dao/TrialHistoryDao.java
  14. 2 2
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/dao/TrialLibraryDao.java
  15. 3 3
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/model/MarkResult.java
  16. 4 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/model/SpecialTagDTO.java
  17. 4 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/model/TrackDTO.java
  18. 1 1
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/model/TrialHistoryPK.java
  19. 37 1
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/service/Impl/MarkServiceImpl.java
  20. 8 4
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/service/Impl/TaskServiceImpl.java
  21. 1 1
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/service/Impl/TrialServiceImpl.java
  22. 8 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/service/MarkService.java
  23. 130 136
      stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/BaseExamController.java
  24. 16 12
      stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/LibraryController.java
  25. 5 4
      stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/MarkGroupController.java
  26. 2 6
      stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/MarkerController.java
  27. 3 5
      stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/PaperController.java
  28. 5 2
      stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/TrialController.java
  29. 1 1
      stmms-web/src/main/java/cn/com/qmth/stmms/admin/thread/ScoreCalculateThread.java
  30. 209 203
      stmms-web/src/main/java/cn/com/qmth/stmms/common/controller/LoginController.java
  31. 3 5
      stmms-web/src/main/java/cn/com/qmth/stmms/mark/MarkController.java
  32. 1 6
      stmms-web/src/main/java/cn/com/qmth/stmms/mark/MarkLeaderController.java
  33. 1 1
      stmms-web/src/main/webapp/WEB-INF/application.properties
  34. 18 11
      stmms-web/src/main/webapp/WEB-INF/views/include/trialDetail.jsp
  35. 6 3
      stmms-web/src/main/webapp/WEB-INF/views/modules/exam/arbitrateList.jsp
  36. 1 1
      stmms-web/src/main/webapp/WEB-INF/views/modules/exam/groupEditFull.jsp
  37. 1 1
      stmms-web/src/main/webapp/WEB-INF/views/modules/exam/groupEditSimple.jsp
  38. 5 5
      stmms-web/src/main/webapp/WEB-INF/views/modules/exam/groupList.jsp
  39. 6 3
      stmms-web/src/main/webapp/WEB-INF/views/modules/exam/libraryList.jsp
  40. 3 3
      stmms-web/src/main/webapp/WEB-INF/views/modules/exam/markerList.jsp
  41. 60 58
      stmms-web/src/main/webapp/WEB-INF/views/modules/exam/paperDetail.jsp
  42. 104 104
      stmms-web/src/main/webapp/WEB-INF/views/modules/exam/scanInfo.jsp
  43. 82 82
      stmms-web/src/main/webapp/WEB-INF/views/modules/exam/scanPackage.jsp
  44. 182 198
      stmms-web/src/main/webapp/WEB-INF/views/modules/exam/studentList.jsp
  45. 5 2
      stmms-web/src/main/webapp/WEB-INF/views/modules/exam/trialList.jsp
  46. 10 12
      stmms-web/src/main/webapp/static/mark-new/js/mark-control.js
  47. 1 1
      stmms-web/src/main/webapp/static/mark-new/js/modules/mark-status.js
  48. 13 11
      stmms-web/src/main/webapp/static/mark-track/js/mark-control.js

+ 5 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/dao/ExamQuestionDao.java

@@ -22,6 +22,11 @@ public interface ExamQuestionDao
     public List<ExamQuestion> findByExamIdAndSubjectCodeAndPaperTypeAndObjective(int examId, String subjectCode,
     public List<ExamQuestion> findByExamIdAndSubjectCodeAndPaperTypeAndObjective(int examId, String subjectCode,
             String paperType, boolean objective);
             String paperType, boolean objective);
 
 
+    @Query("select q from ExamQuestion q where q.pk.examId=?1 and q.pk.subjectCode=?2 "
+            + "and q.pk.objective=?3 and q.pk.mainNumber=?4 order by q.pk.subNumber")
+    public List<ExamQuestion> findByExamIdAndSubjectCodeAndObjectiveAndMainNumber(int examId, String subjectCode,
+            boolean objective, int mainNumber);
+
     @Query("select q from ExamQuestion q where q.pk.examId=?1 and q.pk.subjectCode=?2 and q.pk.paperType=?3 "
     @Query("select q from ExamQuestion q where q.pk.examId=?1 and q.pk.subjectCode=?2 and q.pk.paperType=?3 "
             + "and q.pk.objective=?4 and q.pk.mainNumber=?5 order by q.pk.subNumber")
             + "and q.pk.objective=?4 and q.pk.mainNumber=?5 order by q.pk.subNumber")
     public List<ExamQuestion> findByExamIdAndSubjectCodeAndPaperTypeAndObjectiveAndMainNumber(int examId,
     public List<ExamQuestion> findByExamIdAndSubjectCodeAndPaperTypeAndObjectiveAndMainNumber(int examId,

+ 0 - 19
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/dao/ExamSubjectDao.java

@@ -1,7 +1,6 @@
 package cn.com.qmth.stmms.biz.exam.dao;
 package cn.com.qmth.stmms.biz.exam.dao;
 
 
 import java.util.List;
 import java.util.List;
-import java.util.Set;
 
 
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.jpa.repository.Modifying;
 import org.springframework.data.jpa.repository.Modifying;
@@ -10,7 +9,6 @@ import org.springframework.data.repository.PagingAndSortingRepository;
 
 
 import cn.com.qmth.stmms.biz.exam.model.ExamSubject;
 import cn.com.qmth.stmms.biz.exam.model.ExamSubject;
 import cn.com.qmth.stmms.biz.exam.model.ExamSubjectPK;
 import cn.com.qmth.stmms.biz.exam.model.ExamSubjectPK;
-import cn.com.qmth.stmms.common.enums.ExamSubjectStatus;
 
 
 public interface ExamSubjectDao
 public interface ExamSubjectDao
         extends PagingAndSortingRepository<ExamSubject, ExamSubjectPK>, JpaSpecificationExecutor<ExamSubject> {
         extends PagingAndSortingRepository<ExamSubject, ExamSubjectPK>, JpaSpecificationExecutor<ExamSubject> {
@@ -33,23 +31,6 @@ public interface ExamSubjectDao
     @Query("select s from ExamSubject s where s.pk.examId=?1 and s.uploadCount>?2")
     @Query("select s from ExamSubject s where s.pk.examId=?1 and s.uploadCount>?2")
     public List<ExamSubject> findByExamIdAndUploadCountGt(int examId, int uploadCount);
     public List<ExamSubject> findByExamIdAndUploadCountGt(int examId, int uploadCount);
 
 
-    @Query("select s from ExamSubject s where s.pk.examId=?1 and s.status=?2 and s.uploadCount>?3")
-    public List<ExamSubject> findByExamIdAndStatusAndUploadCountGt(int examId, ExamSubjectStatus status,
-            int uploadCount);
-
-    @Query("select s from ExamSubject s where s.pk.examId=?1 and s.status in ?2")
-    public List<ExamSubject> findByExamIdAndStatus(int examId, Set<ExamSubjectStatus> status);
-
-    @Query("select s from ExamSubject s where s.status in ?1")
-    public List<ExamSubject> findByStatus(Set<ExamSubjectStatus> status);
-
-    @Query("select count(s) from ExamSubject s where s.pk.examId=?1 and s.status in ?2")
-    public long countByExamIdAndStatus(int examId, Set<ExamSubjectStatus> status);
-
-    @Modifying
-    @Query("update ExamSubject s set s.status=?2 where s.pk.examId=?1")
-    public void updateStatusByExamId(int examId, ExamSubjectStatus status);
-
     @Modifying
     @Modifying
     @Query("update ExamSubject s set s.totalScore=s.objectiveScore+s.subjectiveScore where s.pk.examId=?1")
     @Query("update ExamSubject s set s.totalScore=s.objectiveScore+s.subjectiveScore where s.pk.examId=?1")
     public void updateTotalScoreByExamId(int examId);
     public void updateTotalScoreByExamId(int examId);

+ 4 - 3
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/dao/MarkGroupDao.java

@@ -44,11 +44,12 @@ public interface MarkGroupDao
             + "and q.status in (?3) order by q.pk.number")
             + "and q.status in (?3) order by q.pk.number")
     List<MarkGroup> findByExamIdAndSubjectCodeAndStatus(Integer examId, String subjectCode, MarkStatus... status);
     List<MarkGroup> findByExamIdAndSubjectCodeAndStatus(Integer examId, String subjectCode, MarkStatus... status);
 
 
-    @Query("select q from MarkGroup q where q.pk.examId=?1 and q.pk.subjectCode=?2 "
+    @Query("select q from MarkGroup q where q.pk.examId=?1 and q.pk.subjectCode=?2 and q.status in (?3)"
             + "and q.doubleRate!=null and q.doubleRate>0 order by q.pk.number")
             + "and q.doubleRate!=null and q.doubleRate>0 order by q.pk.number")
-    List<MarkGroup> findByExamIdAndSubjectCodeWithDouble(Integer examId, String subjectCode);
+    List<MarkGroup> findByExamIdAndSubjectCodeAndStatusWithDouble(Integer examId, String subjectCode,
+            MarkStatus... status);
 
 
-    @Query("select q.examId from MarkGroup q where q.status in (?1)")
+    @Query("select q.pk.examId from MarkGroup q where q.status in (?1)")
     List<Integer> findExamIdByStatus(MarkStatus... status);
     List<Integer> findExamIdByStatus(MarkStatus... status);
 
 
     @Query("select count(q) from MarkGroup q where q.pk.examId=?1")
     @Query("select count(q) from MarkGroup q where q.pk.examId=?1")

+ 0 - 15
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/model/ExamSubject.java

@@ -5,14 +5,11 @@ import java.io.Serializable;
 import javax.persistence.Column;
 import javax.persistence.Column;
 import javax.persistence.EmbeddedId;
 import javax.persistence.EmbeddedId;
 import javax.persistence.Entity;
 import javax.persistence.Entity;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
 import javax.persistence.Table;
 import javax.persistence.Table;
 import javax.persistence.Transient;
 import javax.persistence.Transient;
 
 
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.lang.StringUtils;
 
 
-import cn.com.qmth.stmms.common.enums.ExamSubjectStatus;
 import cn.com.qmth.stmms.common.utils.PictureUrlBuilder;
 import cn.com.qmth.stmms.common.utils.PictureUrlBuilder;
 
 
 @Entity
 @Entity
@@ -33,10 +30,6 @@ public class ExamSubject implements Serializable {
     @Column(name = "category")
     @Column(name = "category")
     private String category;
     private String category;
 
 
-    @Enumerated(EnumType.ORDINAL)
-    @Column(name = "status")
-    private ExamSubjectStatus status;
-
     @Column(name = "objective_score")
     @Column(name = "objective_score")
     private Double objectiveScore;
     private Double objectiveScore;
 
 
@@ -95,14 +88,6 @@ public class ExamSubject implements Serializable {
         this.name = name;
         this.name = name;
     }
     }
 
 
-    public ExamSubjectStatus getStatus() {
-        return status;
-    }
-
-    public void setStatus(ExamSubjectStatus status) {
-        this.status = status;
-    }
-
     public Double getObjectiveScore() {
     public Double getObjectiveScore() {
         return objectiveScore;
         return objectiveScore;
     }
     }

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

@@ -46,4 +46,7 @@ public interface ExamQuestionService {
     double sumScoreByExamAndSubjectAndPaperTypeAndObjective(int examId, String subjectCode, String paperType,
     double sumScoreByExamAndSubjectAndPaperTypeAndObjective(int examId, String subjectCode, String paperType,
             boolean objective);
             boolean objective);
 
 
+    List<ExamQuestion> findByExamAndSubjectAndObjectiveAndMainNumber(int examId, String subjectCode, boolean objective,
+            int mainNumber);
+
 }
 }

+ 0 - 16
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/ExamSubjectService.java

@@ -1,11 +1,9 @@
 package cn.com.qmth.stmms.biz.exam.service;
 package cn.com.qmth.stmms.biz.exam.service;
 
 
 import java.util.List;
 import java.util.List;
-import java.util.Set;
 
 
 import cn.com.qmth.stmms.biz.exam.model.ExamSubject;
 import cn.com.qmth.stmms.biz.exam.model.ExamSubject;
 import cn.com.qmth.stmms.biz.exam.service.query.ExamSubjectSearchQuery;
 import cn.com.qmth.stmms.biz.exam.service.query.ExamSubjectSearchQuery;
-import cn.com.qmth.stmms.common.enums.ExamSubjectStatus;
 
 
 public interface ExamSubjectService {
 public interface ExamSubjectService {
 
 
@@ -15,32 +13,18 @@ public interface ExamSubjectService {
 
 
     List<ExamSubject> list(int examId);
     List<ExamSubject> list(int examId);
 
 
-    List<ExamSubject> list(int examId, ExamSubjectStatus status);
-
-    List<ExamSubject> list(int examId, Set<ExamSubjectStatus> statusSet);
-
     void delete(ExamSubject markSubject);
     void delete(ExamSubject markSubject);
 
 
-    List<ExamSubject> list(Set<ExamSubjectStatus> statusSet);
-
     long count(int examId);
     long count(int examId);
 
 
-    long count(int examId, Set<ExamSubjectStatus> statusSet);
-
-    long count(int examId, ExamSubjectStatus status);
-
     ExamSubjectSearchQuery findByQuery(ExamSubjectSearchQuery query);
     ExamSubjectSearchQuery findByQuery(ExamSubjectSearchQuery query);
 
 
     long countByQuery(ExamSubjectSearchQuery query);
     long countByQuery(ExamSubjectSearchQuery query);
 
 
-    void changeStatus(int examId, ExamSubjectStatus status);
-
     void deleteByExamId(int examId);
     void deleteByExamId(int examId);
 
 
     List<ExamSubject> list(int examId, int uploadCountGt);
     List<ExamSubject> list(int examId, int uploadCountGt);
 
 
-    List<ExamSubject> list(int examId, ExamSubjectStatus status, int uploadCountGt);
-
     List<String> listLevel(int examId);
     List<String> listLevel(int examId);
 
 
     List<String> listCategory(int examId);
     List<String> listCategory(int examId);

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

@@ -98,6 +98,13 @@ public class ExamQuestionServiceImpl extends BaseQueryService<ExamQuestion> impl
                 objective);
                 objective);
     }
     }
 
 
+    @Override
+    public List<ExamQuestion> findByExamAndSubjectAndObjectiveAndMainNumber(int examId, String subjectCode,
+            boolean objective, int mainNumber) {
+        return questionDao.findByExamIdAndSubjectCodeAndObjectiveAndMainNumber(examId, subjectCode, objective,
+                mainNumber);
+    }
+
     @Override
     @Override
     public List<ExamQuestion> findByExamAndSubjectAndPaperTypeAndObjectiveAndMainNumber(int examId, String subjectCode,
     public List<ExamQuestion> findByExamAndSubjectAndPaperTypeAndObjectiveAndMainNumber(int examId, String subjectCode,
             String paperType, boolean objective, int mainNumber) {
             String paperType, boolean objective, int mainNumber) {

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

@@ -54,7 +54,6 @@ import cn.com.qmth.stmms.biz.utils.OriginTag;
 import cn.com.qmth.stmms.biz.utils.PictureConfigTransform;
 import cn.com.qmth.stmms.biz.utils.PictureConfigTransform;
 import cn.com.qmth.stmms.biz.utils.PictureTag;
 import cn.com.qmth.stmms.biz.utils.PictureTag;
 import cn.com.qmth.stmms.biz.utils.ScoreItem;
 import cn.com.qmth.stmms.biz.utils.ScoreItem;
-import cn.com.qmth.stmms.common.enums.ExamSubjectStatus;
 
 
 @Service
 @Service
 public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implements ExamStudentService {
 public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implements ExamStudentService {
@@ -141,7 +140,6 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
                 subject.setName(es.getName());
                 subject.setName(es.getName());
                 subject.setLevel(es.getLevel());
                 subject.setLevel(es.getLevel());
                 subject.setCategory(es.getCategory());
                 subject.setCategory(es.getCategory());
-                subject.setStatus(ExamSubjectStatus.MARKING);
                 subject.setObjectiveScore(0d);
                 subject.setObjectiveScore(0d);
                 subject.setSubjectiveScore(0d);
                 subject.setSubjectiveScore(0d);
                 subject.setTotalScore(0d);
                 subject.setTotalScore(0d);
@@ -198,7 +196,6 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
             subject.setName(student.getSubjectName());
             subject.setName(student.getSubjectName());
             subject.setLevel(StringUtils.trimToNull(student.getSubjectLevel()));
             subject.setLevel(StringUtils.trimToNull(student.getSubjectLevel()));
             subject.setCategory(StringUtils.trimToNull(student.getSubjectCategory()));
             subject.setCategory(StringUtils.trimToNull(student.getSubjectCategory()));
-            subject.setStatus(ExamSubjectStatus.MARKING);
             subject.setObjectiveScore(0d);
             subject.setObjectiveScore(0d);
             subject.setSubjectiveScore(0d);
             subject.setSubjectiveScore(0d);
             subject.setTotalScore(0d);
             subject.setTotalScore(0d);

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

@@ -1,9 +1,7 @@
 package cn.com.qmth.stmms.biz.exam.service.impl;
 package cn.com.qmth.stmms.biz.exam.service.impl;
 
 
-import java.util.HashSet;
 import java.util.LinkedList;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.List;
-import java.util.Set;
 
 
 import javax.persistence.criteria.CriteriaBuilder;
 import javax.persistence.criteria.CriteriaBuilder;
 import javax.persistence.criteria.CriteriaQuery;
 import javax.persistence.criteria.CriteriaQuery;
@@ -22,7 +20,6 @@ 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.model.ExamSubject;
 import cn.com.qmth.stmms.biz.exam.service.ExamSubjectService;
 import cn.com.qmth.stmms.biz.exam.service.ExamSubjectService;
 import cn.com.qmth.stmms.biz.exam.service.query.ExamSubjectSearchQuery;
 import cn.com.qmth.stmms.biz.exam.service.query.ExamSubjectSearchQuery;
-import cn.com.qmth.stmms.common.enums.ExamSubjectStatus;
 
 
 @Service("examSubjectService")
 @Service("examSubjectService")
 public class ExamSubjectServiceImpl extends BaseQueryService<ExamSubject> implements ExamSubjectService {
 public class ExamSubjectServiceImpl extends BaseQueryService<ExamSubject> implements ExamSubjectService {
@@ -67,65 +64,11 @@ public class ExamSubjectServiceImpl extends BaseQueryService<ExamSubject> implem
         return subjectDao.findByExamIdAndUploadCountGt(examId, uploadCountGt);
         return subjectDao.findByExamIdAndUploadCountGt(examId, uploadCountGt);
     }
     }
 
 
-    @Override
-    public List<ExamSubject> list(int examId, ExamSubjectStatus status, int uploadCountGt) {
-        return subjectDao.findByExamIdAndStatusAndUploadCountGt(examId, status, uploadCountGt);
-    }
-
-    @Override
-    public List<ExamSubject> list(int examId, ExamSubjectStatus status) {
-        if (status != null) {
-            Set<ExamSubjectStatus> statusSet = new HashSet<ExamSubjectStatus>();
-            statusSet.add(status);
-            return subjectDao.findByExamIdAndStatus(examId, statusSet);
-        } else {
-            return list(examId);
-        }
-    }
-
-    @Override
-    public List<ExamSubject> list(int examId, Set<ExamSubjectStatus> statusSet) {
-        if (statusSet != null && statusSet.size() > 0) {
-            return subjectDao.findByExamIdAndStatus(examId, statusSet);
-        } else {
-            return list(examId);
-        }
-    }
-
-    @Override
-    public List<ExamSubject> list(Set<ExamSubjectStatus> statusSet) {
-        if (statusSet != null && statusSet.size() > 0) {
-            return subjectDao.findByStatus(statusSet);
-        } else {
-            return new LinkedList<ExamSubject>();
-        }
-    }
-
     @Override
     @Override
     public long count(int examId) {
     public long count(int examId) {
         return subjectDao.countByExamId(examId);
         return subjectDao.countByExamId(examId);
     }
     }
 
 
-    @Override
-    public long count(int examId, Set<ExamSubjectStatus> statusSet) {
-        if (statusSet != null && statusSet.size() > 0) {
-            return subjectDao.countByExamIdAndStatus(examId, statusSet);
-        } else {
-            return subjectDao.countByExamId(examId);
-        }
-    }
-
-    @Override
-    public long count(int examId, ExamSubjectStatus status) {
-        if (status != null) {
-            Set<ExamSubjectStatus> statusSet = new HashSet<ExamSubjectStatus>();
-            statusSet.add(status);
-            return subjectDao.countByExamIdAndStatus(examId, statusSet);
-        } else {
-            return subjectDao.countByExamId(examId);
-        }
-    }
-
     @Override
     @Override
     public ExamSubjectSearchQuery findByQuery(ExamSubjectSearchQuery query) {
     public ExamSubjectSearchQuery findByQuery(ExamSubjectSearchQuery query) {
         checkQuery(query);
         checkQuery(query);
@@ -155,14 +98,6 @@ public class ExamSubjectServiceImpl extends BaseQueryService<ExamSubject> implem
         subjectDao.deleteByExamId(examId);
         subjectDao.deleteByExamId(examId);
     }
     }
 
 
-    @Transactional
-    @Override
-    // @CacheEvict(value = "exam_subject_cache", beforeInvocation = true,
-    // allEntries = true)
-    public void changeStatus(int examId, ExamSubjectStatus status) {
-        subjectDao.updateStatusByExamId(examId, status);
-    }
-
     @Transactional
     @Transactional
     @Override
     @Override
     // @CacheEvict(value = "exam_subject_cache", beforeInvocation = true,
     // @CacheEvict(value = "exam_subject_cache", beforeInvocation = true,
@@ -202,9 +137,6 @@ public class ExamSubjectServiceImpl extends BaseQueryService<ExamSubject> implem
                 if (StringUtils.isNotBlank(query.getCategory())) {
                 if (StringUtils.isNotBlank(query.getCategory())) {
                     predicates.add(cb.equal(root.get("category"), query.getCategory()));
                     predicates.add(cb.equal(root.get("category"), query.getCategory()));
                 }
                 }
-                if (query.getStatus() != null) {
-                    predicates.add(cb.equal(root.get("status"), query.getStatus()));
-                }
                 if (query.getTotalScoreNotEqual() != null) {
                 if (query.getTotalScoreNotEqual() != null) {
                     predicates.add(cb.notEqual(root.get("totalScore"), query.getTotalScoreNotEqual()));
                     predicates.add(cb.notEqual(root.get("totalScore"), query.getTotalScoreNotEqual()));
                 }
                 }

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

@@ -133,7 +133,7 @@ public class MarkGroupServiceImpl extends BaseQueryService<MarkGroup> implements
 
 
     @Override
     @Override
     public List<MarkGroup> findByExamAndSubjectWithDouble(int examId, String code) {
     public List<MarkGroup> findByExamAndSubjectWithDouble(int examId, String code) {
-        return groupDao.findByExamIdAndSubjectCodeWithDouble(examId, code);
+        return groupDao.findByExamIdAndSubjectCodeAndStatusWithDouble(examId, code, MarkStatus.FORMAL);
     }
     }
 
 
     @Override
     @Override

+ 0 - 11
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/query/ExamSubjectSearchQuery.java

@@ -2,7 +2,6 @@ package cn.com.qmth.stmms.biz.exam.service.query;
 
 
 import cn.com.qmth.stmms.biz.common.BaseQuery;
 import cn.com.qmth.stmms.biz.common.BaseQuery;
 import cn.com.qmth.stmms.biz.exam.model.ExamSubject;
 import cn.com.qmth.stmms.biz.exam.model.ExamSubject;
-import cn.com.qmth.stmms.common.enums.ExamSubjectStatus;
 
 
 public class ExamSubjectSearchQuery extends BaseQuery<ExamSubject> {
 public class ExamSubjectSearchQuery extends BaseQuery<ExamSubject> {
 
 
@@ -14,8 +13,6 @@ public class ExamSubjectSearchQuery extends BaseQuery<ExamSubject> {
 
 
     private String category;
     private String category;
 
 
-    private ExamSubjectStatus status;
-
     private Double totalScoreNotEqual;
     private Double totalScoreNotEqual;
 
 
     private Double subjectiveScoreNotEqual;
     private Double subjectiveScoreNotEqual;
@@ -40,14 +37,6 @@ public class ExamSubjectSearchQuery extends BaseQuery<ExamSubject> {
         this.code = code;
         this.code = code;
     }
     }
 
 
-    public ExamSubjectStatus getStatus() {
-        return status;
-    }
-
-    public void setStatus(ExamSubjectStatus status) {
-        this.status = status;
-    }
-
     public Double getTotalScoreNotEqual() {
     public Double getTotalScoreNotEqual() {
         return totalScoreNotEqual;
         return totalScoreNotEqual;
     }
     }

+ 3 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/dao/MarkLibraryDao.java

@@ -85,6 +85,9 @@ public interface MarkLibraryDao extends JpaRepository<MarkLibrary, Integer>, Jpa
     @Query("select f.markerId, count(*) as markerCount from MarkLibrary f where f.examId=?1 and f.subjectCode=?2 and f.status=?3 group by f.markerId")
     @Query("select f.markerId, count(*) as markerCount from MarkLibrary f where f.examId=?1 and f.subjectCode=?2 and f.status=?3 group by f.markerId")
     List<Object[]> countByMarkerAndStatus(Integer examId, String subjectCode, LibraryStatus status);
     List<Object[]> countByMarkerAndStatus(Integer examId, String subjectCode, LibraryStatus status);
 
 
+    @Query("select count(*) from MarkLibrary f where f.markerId=?1 and f.status in (?2)")
+    long countByMarkerAndStatus(Integer markerId, LibraryStatus... status);
+
     @Modifying
     @Modifying
     @Query("delete MarkLibrary m where m.examId=?1 and m.subjectCode=?2 and m.groupNumber=?3")
     @Query("delete MarkLibrary m where m.examId=?1 and m.subjectCode=?2 and m.groupNumber=?3")
     void deleteByExamIdAndSubjectCodeAndGroupNumber(Integer examId, String subjectCode, Integer groupNumber);
     void deleteByExamIdAndSubjectCodeAndGroupNumber(Integer examId, String subjectCode, Integer groupNumber);

+ 1 - 1
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/dao/TrialHistoryDao.java

@@ -16,7 +16,7 @@ public interface TrialHistoryDao extends JpaRepository<TrialHistory, Integer>, J
 
 
     TrialHistory findByPkLibraryIdAndPkMarkerId(Integer libraryId, Integer markerId);
     TrialHistory findByPkLibraryIdAndPkMarkerId(Integer libraryId, Integer markerId);
 
 
-    List<TrialHistory> findByExamIdAndSubjectCodeAndGroupNumberAndMarkerId(Integer examId, String subjectCode,
+    List<TrialHistory> findByExamIdAndSubjectCodeAndGroupNumberAndPkMarkerId(Integer examId, String subjectCode,
             Integer groupNumber, Integer markerId, Pageable page);
             Integer groupNumber, Integer markerId, Pageable page);
 
 
     @Query("select count(*) from TrialHistory f where f.pk.libraryId=?1")
     @Query("select count(*) from TrialHistory f where f.pk.libraryId=?1")

+ 2 - 2
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/dao/TrialLibraryDao.java

@@ -18,11 +18,11 @@ public interface TrialLibraryDao extends JpaRepository<TrialLibrary, Integer>, J
             Pageable page);
             Pageable page);
 
 
     @Query("select l1 from TrialLibrary l1 where l1.examId=?1 and l1.subjectCode=?2 and l1.groupNumber=?3 "
     @Query("select l1 from TrialLibrary l1 where l1.examId=?1 and l1.subjectCode=?2 and l1.groupNumber=?3 "
-            + "and not exists (select l2 from TrialHistory l2 where l2.libraryId=l1.id and l2.markerId=?4)")
+            + "and not exists (select l2.pk.libraryId from TrialHistory l2 where l2.pk.libraryId=l1.id and l2.pk.markerId=?4)")
     List<TrialLibrary> findUnMarked(Integer examId, String subjectCode, Integer groupNumber, Integer markerId,
     List<TrialLibrary> findUnMarked(Integer examId, String subjectCode, Integer groupNumber, Integer markerId,
             Pageable page);
             Pageable page);
 
 
-    @Query("select l1 from TrialLibrary l where l.examId=?1 and l.subjectCode=?2 and l.groupNumber=?3 and l.markCount>0")
+    @Query("select count(l) from TrialLibrary l where l.examId=?1 and l.subjectCode=?2 and l.groupNumber=?3 and l.markCount>0")
     long countMarked(Integer examId, String subjectCode, Integer groupNumber);
     long countMarked(Integer examId, String subjectCode, Integer groupNumber);
 
 
     @Query("select l from TrialLibrary l where l.studentId=?1 order by l.groupNumber ")
     @Query("select l from TrialLibrary l where l.studentId=?1 order by l.groupNumber ")

+ 3 - 3
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/model/MarkResult.java

@@ -51,7 +51,7 @@ public class MarkResult {
     /**
     /**
      * 所花时间
      * 所花时间
      */
      */
-    private long spent;
+    private int spent;
 
 
     public int getStatusValue() {
     public int getStatusValue() {
         return statusValue;
         return statusValue;
@@ -101,11 +101,11 @@ public class MarkResult {
         this.tagList = tagList;
         this.tagList = tagList;
     }
     }
 
 
-    public long getSpent() {
+    public int getSpent() {
         return spent;
         return spent;
     }
     }
 
 
-    public void setSpent(long spent) {
+    public void setSpent(int spent) {
         this.spent = spent;
         this.spent = spent;
     }
     }
 
 

+ 4 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/model/SpecialTagDTO.java

@@ -12,6 +12,10 @@ public class SpecialTagDTO implements Serializable {
 
 
     private Double positionY;
     private Double positionY;
 
 
+    public SpecialTagDTO() {
+
+    }
+
     public MarkSpecialTag transform(MarkLibrary library) {
     public MarkSpecialTag transform(MarkLibrary library) {
         MarkSpecialTag markSpecialTag = new MarkSpecialTag();
         MarkSpecialTag markSpecialTag = new MarkSpecialTag();
         markSpecialTag.setLibraryId(library.getId());
         markSpecialTag.setLibraryId(library.getId());

+ 4 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/model/TrackDTO.java

@@ -22,6 +22,10 @@ public class TrackDTO implements Serializable {
 
 
     private double positionY;
     private double positionY;
 
 
+    public TrackDTO() {
+
+    }
+
     public TrackDTO(MarkTrack track) {
     public TrackDTO(MarkTrack track) {
         setQuestionNumber(track.getQuestionNumber());
         setQuestionNumber(track.getQuestionNumber());
         setNumber(track.getNumber());
         setNumber(track.getNumber());

+ 1 - 1
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/model/TrialHistoryPK.java

@@ -13,7 +13,7 @@ public class TrialHistoryPK implements Serializable {
     @Column(name = "library_id", nullable = false)
     @Column(name = "library_id", nullable = false)
     private Integer libraryId;
     private Integer libraryId;
 
 
-    @Column(name = "number", nullable = false)
+    @Column(name = "marker_id", nullable = false)
     private Integer markerId;
     private Integer markerId;
 
 
     public Integer getLibraryId() {
     public Integer getLibraryId() {

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

@@ -117,11 +117,47 @@ public class MarkServiceImpl implements MarkService {
      * 某个评卷员已申请的评卷任务数量
      * 某个评卷员已申请的评卷任务数量
      * 
      * 
      * @param marker
      * @param marker
+     * @param status
      * @return
      * @return
      */
      */
     @Override
     @Override
     public int applyCount(Marker marker) {
     public int applyCount(Marker marker) {
-        return FormalTaskUtil.count(marker);
+        MarkGroup group = marker.getGroup();
+        if (group == null) {
+            group = groupDao.findOne(marker.getExamId(), marker.getSubjectCode(), marker.getGroupNumber());
+        }
+        if (group != null) {
+            if (group.getStatus() == MarkStatus.FORMAL) {
+                return FormalTaskUtil.count(marker);
+            } else if (group.getStatus() == MarkStatus.TRIAL) {
+                return TrialTaskUtil.count(marker);
+            }
+        }
+        return 0;
+    }
+
+    /**
+     * 某个评卷员已完成的评卷任务数量
+     * 
+     * @param marker
+     * @param status
+     * @return
+     */
+    @Override
+    public long markedCount(Marker marker) {
+        MarkGroup group = marker.getGroup();
+        if (group == null) {
+            group = groupDao.findOne(marker.getExamId(), marker.getSubjectCode(), marker.getGroupNumber());
+        }
+        if (group != null) {
+            if (group.getStatus() == MarkStatus.TRIAL) {
+                return trialHistoryDao.countByMarkerId(marker.getId());
+            } else {
+                return libraryDao.countByMarkerAndStatus(marker.getId(), LibraryStatus.MARKED,
+                        LibraryStatus.ARBITRATED);
+            }
+        }
+        return 0;
     }
     }
 
 
     /**
     /**

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

@@ -139,6 +139,8 @@ public class TaskServiceImpl implements TaskService {
         task.setStatusValue(MarkStatus.FORMAL.getValue());
         task.setStatusValue(MarkStatus.FORMAL.getValue());
         task.setStudentId(library.getStudentId());
         task.setStudentId(library.getStudentId());
         task.setLibraryId(library.getId());
         task.setLibraryId(library.getId());
+        // 正评显示考生编号
+        task.setStudentNumber(library.getStudentId().toString());
         task.setMarkStepList(buildMarkStep(group, library.getId()));
         task.setMarkStepList(buildMarkStep(group, library.getId()));
         task.setPictureUrls(PictureUrlBuilder.getSliceUrls(library.getExamId(), library.getCampusId(),
         task.setPictureUrls(PictureUrlBuilder.getSliceUrls(library.getExamId(), library.getCampusId(),
                 library.getSubjectCode(), library.getExamNumber(), student.getSliceCount()));
                 library.getSubjectCode(), library.getExamNumber(), student.getSliceCount()));
@@ -172,6 +174,8 @@ public class TaskServiceImpl implements TaskService {
         task.setExist(true);
         task.setExist(true);
         task.setStatusValue(MarkStatus.TRIAL.getValue());
         task.setStatusValue(MarkStatus.TRIAL.getValue());
         task.setStatusName(MarkStatus.TRIAL.getName());
         task.setStatusName(MarkStatus.TRIAL.getName());
+        // 试评显示考生编号
+        task.setStudentNumber(library.getStudentId().toString());
         task.setStudentId(library.getStudentId());
         task.setStudentId(library.getStudentId());
         task.setLibraryId(library.getId());
         task.setLibraryId(library.getId());
         task.setMarkStepList(buildTrialStep(group, history));
         task.setMarkStepList(buildTrialStep(group, history));
@@ -194,8 +198,8 @@ public class TaskServiceImpl implements TaskService {
 
 
     private List<MarkStepDTO> buildMarkStep(MarkGroup group, Integer libraryId) {
     private List<MarkStepDTO> buildMarkStep(MarkGroup group, Integer libraryId) {
         List<MarkStepDTO> list = new LinkedList<MarkStepDTO>();
         List<MarkStepDTO> list = new LinkedList<MarkStepDTO>();
-        List<ExamQuestion> sList = questionService.findByExamAndSubjectAndPaperTypeAndObjectiveAndMainNumber(
-                group.getExamId(), group.getSubjectCode(), null, false, group.getNumber());
+        List<ExamQuestion> sList = questionService.findByExamAndSubjectAndObjectiveAndMainNumber(group.getExamId(),
+                group.getSubjectCode(), false, group.getNumber());
         int number = 0;
         int number = 0;
         for (ExamQuestion question : sList) {
         for (ExamQuestion question : sList) {
             number++;
             number++;
@@ -218,8 +222,8 @@ public class TaskServiceImpl implements TaskService {
 
 
     private List<MarkStepDTO> buildTrialStep(MarkGroup group, TrialHistory history) {
     private List<MarkStepDTO> buildTrialStep(MarkGroup group, TrialHistory history) {
         List<MarkStepDTO> list = new LinkedList<MarkStepDTO>();
         List<MarkStepDTO> list = new LinkedList<MarkStepDTO>();
-        List<ExamQuestion> sList = questionService.findByExamAndSubjectAndPaperTypeAndObjectiveAndMainNumber(
-                group.getExamId(), group.getSubjectCode(), null, false, group.getNumber());
+        List<ExamQuestion> sList = questionService.findByExamAndSubjectAndObjectiveAndMainNumber(group.getExamId(),
+                group.getSubjectCode(), false, group.getNumber());
         int number = 0;
         int number = 0;
         for (ExamQuestion question : sList) {
         for (ExamQuestion question : sList) {
             number++;
             number++;

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

@@ -84,7 +84,7 @@ public class TrialServiceImpl extends BaseQueryService<TrialLibrary> implements
         query.setPageNumber(pageNumber);
         query.setPageNumber(pageNumber);
         query.setPageSize(pageSize);
         query.setPageSize(pageSize);
         query.setSort(new Sort(Direction.DESC, "markerTime"));
         query.setSort(new Sort(Direction.DESC, "markerTime"));
-        return historyDao.findByExamIdAndSubjectCodeAndGroupNumberAndMarkerId(examId, subjectCode, groupNumber,
+        return historyDao.findByExamIdAndSubjectCodeAndGroupNumberAndPkMarkerId(examId, subjectCode, groupNumber,
                 markerId, query);
                 markerId, query);
     }
     }
 
 

+ 8 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/service/MarkService.java

@@ -215,4 +215,12 @@ public interface MarkService {
      */
      */
     boolean resetLibrary(TrialLibrary library);
     boolean resetLibrary(TrialLibrary library);
 
 
+    /**
+     * 某个评卷员已完成的评卷任务数量
+     * 
+     * @param marker
+     * @return
+     */
+    long markedCount(Marker marker);
+
 }
 }

+ 130 - 136
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/BaseExamController.java

@@ -1,136 +1,130 @@
-package cn.com.qmth.stmms.admin.exam;
-
-import java.util.LinkedList;
-import java.util.List;
-
-import javax.servlet.http.HttpServletRequest;
-
-import org.apache.commons.beanutils.BeanUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.servlet.mvc.support.RedirectAttributes;
-
-import cn.com.qmth.stmms.admin.utils.SessionExamUtils;
-import cn.com.qmth.stmms.biz.common.BaseQuery;
-import cn.com.qmth.stmms.biz.exam.model.Exam;
-import cn.com.qmth.stmms.biz.exam.model.ExamSubject;
-import cn.com.qmth.stmms.biz.exam.service.ExamService;
-import cn.com.qmth.stmms.biz.exam.service.ExamSubjectService;
-import cn.com.qmth.stmms.biz.exam.service.query.ExamSubjectSearchQuery;
-import cn.com.qmth.stmms.biz.mark.service.MarkLibraryService;
-import cn.com.qmth.stmms.common.controller.BaseController;
-import cn.com.qmth.stmms.common.domain.WebUser;
-import cn.com.qmth.stmms.common.enums.ExamStatus;
-import cn.com.qmth.stmms.common.enums.ExamSubjectStatus;
-
-public class BaseExamController extends BaseController {
-
-    public static final int EXAM_SELECT_COUNT = 5;
-
-    protected static Logger log = LoggerFactory.getLogger(BaseExamController.class);
-
-    @Autowired
-    private MarkLibraryService libraryService;
-
-    @Autowired
-    private ExamSubjectService subjectService;
-
-    @Autowired
-    private ExamService examService;
-
-    protected int getSessionExamId(HttpServletRequest request) {
-        return SessionExamUtils.getExamId(request);
-    }
-
-    protected boolean isFinish(int examId) {
-        Exam exam = examService.findById(examId);
-        return exam != null ? exam.getStatus() == ExamStatus.FINISH : false;
-    }
-
-    protected boolean isMarking(int examId, String subjectCode) {
-        ExamSubject subject = subjectService.find(examId, subjectCode);
-        return subject != null && subject.getStatus() == ExamSubjectStatus.MARKING;
-    }
-
-    /**
-     * 添加Flash消息
-     * 
-     * @param messages
-     *            消息
-     */
-    protected void addMessage(RedirectAttributes redirectAttributes, String... messages) {
-        StringBuilder sb = new StringBuilder();
-        for (String message : messages) {
-            sb.append(message).append(messages.length > 1 ? "<br/>" : "");
-        }
-        redirectAttributes.addFlashAttribute("message", sb.toString());
-    }
-
-    protected List<ExamSubject> getExamSubject(int examId, WebUser wu) {
-        List<ExamSubject> list = new LinkedList<ExamSubject>();
-        if (wu.isSchoolAdmin() || wu.isSchoolViewer()) {
-            list = subjectService.list(examId);
-        } else if (wu.isSubjectHeader()) {
-            ExamSubject subject = subjectService.find(examId, wu.getUser().getSubjectCode());
-            if (subject != null) {
-                list.add(subject);
-            }
-        }
-        return list;
-    }
-
-    protected List<ExamSubject> getUploadExamSubject(int examId, WebUser wu) {
-        List<ExamSubject> list = new LinkedList<ExamSubject>();
-        if (wu.isSchoolAdmin()) {
-            list = subjectService.list(examId, 0);
-        } else if (wu.isSubjectHeader()) {
-            ExamSubject subject = subjectService.find(examId, wu.getUser().getSubjectCode());
-            if (subject != null && subject.getUploadCount() > 0) {
-                list.add(subject);
-            }
-        }
-        return list;
-    }
-
-    protected List<ExamSubject> getTagSubject(int examId, WebUser wu) {
-        List<ExamSubject> list = new LinkedList<ExamSubject>();
-        List<String> codes = libraryService.findTagSubjectCode(examId);
-        for (String code : codes) {
-            ExamSubject subject = subjectService.find(examId, code);
-            if (subject != null) {
-                if (wu.isSubjectHeader() && subject.getCode().equals(wu.getUser().getSubjectCode())) {
-                    list.add(subject);
-                } else if (wu.isSchoolAdmin()) {
-                    list.add(subject);
-                }
-            }
-        }
-        return list;
-    }
-
-    @SuppressWarnings("rawtypes")
-    protected BaseQuery subjectFilter(BaseQuery query, WebUser wu) {
-        if (wu.isSubjectHeader()) {
-            if (query instanceof ExamSubjectSearchQuery) {
-                ((ExamSubjectSearchQuery) query).setCode(wu.getUser().getSubjectCode());
-            } else {
-                try {
-                    BeanUtils.setProperty(query, "subjectCode", wu.getUser().getSubjectCode());
-                } catch (Exception e) {
-
-                }
-            }
-        }
-        return query;
-    }
-
-    protected boolean subjectCheck(String subjectCode, WebUser wu) {
-        if (wu.isSubjectHeader()) {
-            return subjectCode.equals(wu.getUser().getSubjectCode());
-        } else {
-            return true;
-        }
-    }
-
-}
+package cn.com.qmth.stmms.admin.exam;
+
+import java.util.LinkedList;
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.apache.commons.beanutils.BeanUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.servlet.mvc.support.RedirectAttributes;
+
+import cn.com.qmth.stmms.admin.utils.SessionExamUtils;
+import cn.com.qmth.stmms.biz.common.BaseQuery;
+import cn.com.qmth.stmms.biz.exam.model.Exam;
+import cn.com.qmth.stmms.biz.exam.model.ExamSubject;
+import cn.com.qmth.stmms.biz.exam.service.ExamService;
+import cn.com.qmth.stmms.biz.exam.service.ExamSubjectService;
+import cn.com.qmth.stmms.biz.exam.service.query.ExamSubjectSearchQuery;
+import cn.com.qmth.stmms.biz.mark.service.MarkLibraryService;
+import cn.com.qmth.stmms.common.controller.BaseController;
+import cn.com.qmth.stmms.common.domain.WebUser;
+import cn.com.qmth.stmms.common.enums.ExamStatus;
+
+public class BaseExamController extends BaseController {
+
+    public static final int EXAM_SELECT_COUNT = 5;
+
+    protected static Logger log = LoggerFactory.getLogger(BaseExamController.class);
+
+    @Autowired
+    private MarkLibraryService libraryService;
+
+    @Autowired
+    private ExamSubjectService subjectService;
+
+    @Autowired
+    private ExamService examService;
+
+    protected int getSessionExamId(HttpServletRequest request) {
+        return SessionExamUtils.getExamId(request);
+    }
+
+    protected boolean isFinish(int examId) {
+        Exam exam = examService.findById(examId);
+        return exam != null ? exam.getStatus() == ExamStatus.FINISH : false;
+    }
+
+    /**
+     * 添加Flash消息
+     * 
+     * @param messages
+     *            消息
+     */
+    protected void addMessage(RedirectAttributes redirectAttributes, String... messages) {
+        StringBuilder sb = new StringBuilder();
+        for (String message : messages) {
+            sb.append(message).append(messages.length > 1 ? "<br/>" : "");
+        }
+        redirectAttributes.addFlashAttribute("message", sb.toString());
+    }
+
+    protected List<ExamSubject> getExamSubject(int examId, WebUser wu) {
+        List<ExamSubject> list = new LinkedList<ExamSubject>();
+        if (wu.isSchoolAdmin() || wu.isSchoolViewer()) {
+            list = subjectService.list(examId);
+        } else if (wu.isSubjectHeader()) {
+            ExamSubject subject = subjectService.find(examId, wu.getUser().getSubjectCode());
+            if (subject != null) {
+                list.add(subject);
+            }
+        }
+        return list;
+    }
+
+    protected List<ExamSubject> getUploadExamSubject(int examId, WebUser wu) {
+        List<ExamSubject> list = new LinkedList<ExamSubject>();
+        if (wu.isSchoolAdmin()) {
+            list = subjectService.list(examId, 0);
+        } else if (wu.isSubjectHeader()) {
+            ExamSubject subject = subjectService.find(examId, wu.getUser().getSubjectCode());
+            if (subject != null && subject.getUploadCount() > 0) {
+                list.add(subject);
+            }
+        }
+        return list;
+    }
+
+    protected List<ExamSubject> getTagSubject(int examId, WebUser wu) {
+        List<ExamSubject> list = new LinkedList<ExamSubject>();
+        List<String> codes = libraryService.findTagSubjectCode(examId);
+        for (String code : codes) {
+            ExamSubject subject = subjectService.find(examId, code);
+            if (subject != null) {
+                if (wu.isSubjectHeader() && subject.getCode().equals(wu.getUser().getSubjectCode())) {
+                    list.add(subject);
+                } else if (wu.isSchoolAdmin()) {
+                    list.add(subject);
+                }
+            }
+        }
+        return list;
+    }
+
+    @SuppressWarnings("rawtypes")
+    protected BaseQuery subjectFilter(BaseQuery query, WebUser wu) {
+        if (wu.isSubjectHeader()) {
+            if (query instanceof ExamSubjectSearchQuery) {
+                ((ExamSubjectSearchQuery) query).setCode(wu.getUser().getSubjectCode());
+            } else {
+                try {
+                    BeanUtils.setProperty(query, "subjectCode", wu.getUser().getSubjectCode());
+                } catch (Exception e) {
+
+                }
+            }
+        }
+        return query;
+    }
+
+    protected boolean subjectCheck(String subjectCode, WebUser wu) {
+        if (wu.isSubjectHeader()) {
+            return subjectCode.equals(wu.getUser().getSubjectCode());
+        } else {
+            return true;
+        }
+    }
+
+}

+ 16 - 12
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/LibraryController.java

@@ -26,6 +26,7 @@ import cn.com.qmth.stmms.biz.mark.service.MarkService;
 import cn.com.qmth.stmms.common.auth.annotation.RoleRequire;
 import cn.com.qmth.stmms.common.auth.annotation.RoleRequire;
 import cn.com.qmth.stmms.common.domain.WebUser;
 import cn.com.qmth.stmms.common.domain.WebUser;
 import cn.com.qmth.stmms.common.enums.LibraryStatus;
 import cn.com.qmth.stmms.common.enums.LibraryStatus;
+import cn.com.qmth.stmms.common.enums.MarkStatus;
 import cn.com.qmth.stmms.common.enums.Role;
 import cn.com.qmth.stmms.common.enums.Role;
 import cn.com.qmth.stmms.common.utils.RequestUtils;
 import cn.com.qmth.stmms.common.utils.RequestUtils;
 import net.sf.json.JSONObject;
 import net.sf.json.JSONObject;
@@ -58,25 +59,28 @@ public class LibraryController extends BaseExamController {
             return "redirect:/admin/exam/mark";
             return "redirect:/admin/exam/mark";
         }
         }
         query.setExamId(examId);
         query.setExamId(examId);
+        if (status != null) {
+            query.addStatus(status);
+        }
         if (query.getSubjectCode() == null && !subjectList.isEmpty()) {
         if (query.getSubjectCode() == null && !subjectList.isEmpty()) {
             query.setSubjectCode(subjectList.get(0).getCode());
             query.setSubjectCode(subjectList.get(0).getCode());
         }
         }
         subjectFilter(query, wu);
         subjectFilter(query, wu);
-        List<MarkGroup> groupList = groupService.findByExamAndSubject(examId, query.getSubjectCode());
+        List<MarkGroup> groupList = groupService.findByExamAndSubjectAndStatus(examId, query.getSubjectCode(),
+                MarkStatus.FORMAL);
         // if (groupList.isEmpty()) {
         // if (groupList.isEmpty()) {
         // return "redirect:/admin/exam/mark";
         // return "redirect:/admin/exam/mark";
         // }
         // }
-        if (query.getGroupNumber() == 0 && !groupList.isEmpty()) {
-            query.setGroupNumber(groupList.get(0).getNumber());
-        }
-        if (status != null) {
-            query.addStatus(status);
-        }
-        query.orderById();
-        query = libraryService.findByQuery(query);
-        for (MarkLibrary library : query.getResult()) {
-            if (library.getMarkerId() != null) {
-                library.setMarker(markerService.findById(library.getMarkerId()));
+        if (!groupList.isEmpty()) {
+            if (query.getGroupNumber() == 0 && !groupList.isEmpty()) {
+                query.setGroupNumber(groupList.get(0).getNumber());
+            }
+            query.orderById();
+            query = libraryService.findByQuery(query);
+            for (MarkLibrary library : query.getResult()) {
+                if (library.getMarkerId() != null) {
+                    library.setMarker(markerService.findById(library.getMarkerId()));
+                }
             }
             }
         }
         }
         model.addAttribute("query", query);
         model.addAttribute("query", query);

+ 5 - 4
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/MarkGroupController.java

@@ -91,8 +91,8 @@ public class MarkGroupController extends BaseExamController {
         }
         }
         List<MarkGroup> list = groupService.findByExamAndSubject(examId, subjectCode);
         List<MarkGroup> list = groupService.findByExamAndSubject(examId, subjectCode);
         for (MarkGroup group : list) {
         for (MarkGroup group : list) {
-            group.setScoreList(questionService.findByExamAndSubjectAndPaperTypeAndObjectiveAndMainNumber(examId,
-                    subjectCode, null, false, group.getNumber()));
+            group.setScoreList(questionService.findByExamAndSubjectAndObjectiveAndMainNumber(examId, subjectCode, false,
+                    group.getNumber()));
             group.setMarkerCount(markerService.countByExamAndSubjectAndGroup(examId, subjectCode, group.getNumber()));
             group.setMarkerCount(markerService.countByExamAndSubjectAndGroup(examId, subjectCode, group.getNumber()));
             group.setCurrentCount(markService.applyCount(group));
             group.setCurrentCount(markService.applyCount(group));
             int percent = group.getLibraryCount() > 0
             int percent = group.getLibraryCount() > 0
@@ -109,12 +109,13 @@ public class MarkGroupController extends BaseExamController {
     @RequestMapping("/query")
     @RequestMapping("/query")
     @ResponseBody
     @ResponseBody
     public JSONArray query(HttpServletRequest request, @RequestParam String subjectCode,
     public JSONArray query(HttpServletRequest request, @RequestParam String subjectCode,
-            @RequestParam(required = false) Boolean withDouble) {
+            @RequestParam(required = false) Boolean withDouble, @RequestParam(required = false) MarkStatus status) {
         int examId = getSessionExamId(request);
         int examId = getSessionExamId(request);
         JSONArray array = new JSONArray();
         JSONArray array = new JSONArray();
         List<MarkGroup> list = withDouble != null && withDouble
         List<MarkGroup> list = withDouble != null && withDouble
                 ? groupService.findByExamAndSubjectWithDouble(examId, subjectCode)
                 ? groupService.findByExamAndSubjectWithDouble(examId, subjectCode)
-                : groupService.findByExamAndSubject(examId, subjectCode);
+                : (status != null ? groupService.findByExamAndSubjectAndStatus(examId, subjectCode, status)
+                        : groupService.findByExamAndSubject(examId, subjectCode));
         for (MarkGroup group : list) {
         for (MarkGroup group : list) {
             JSONObject obj = new JSONObject();
             JSONObject obj = new JSONObject();
             obj.accumulate("number", group.getNumber());
             obj.accumulate("number", group.getNumber());

+ 2 - 6
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/MarkerController.java

@@ -36,7 +36,6 @@ import cn.com.qmth.stmms.biz.exam.query.MarkerSearchQuery;
 import cn.com.qmth.stmms.biz.exam.service.ExamSubjectService;
 import cn.com.qmth.stmms.biz.exam.service.ExamSubjectService;
 import cn.com.qmth.stmms.biz.exam.service.MarkGroupService;
 import cn.com.qmth.stmms.biz.exam.service.MarkGroupService;
 import cn.com.qmth.stmms.biz.exam.service.MarkerService;
 import cn.com.qmth.stmms.biz.exam.service.MarkerService;
-import cn.com.qmth.stmms.biz.mark.service.MarkLibraryService;
 import cn.com.qmth.stmms.biz.mark.service.MarkService;
 import cn.com.qmth.stmms.biz.mark.service.MarkService;
 import cn.com.qmth.stmms.common.auth.annotation.RoleRequire;
 import cn.com.qmth.stmms.common.auth.annotation.RoleRequire;
 import cn.com.qmth.stmms.common.domain.WebUser;
 import cn.com.qmth.stmms.common.domain.WebUser;
@@ -65,9 +64,6 @@ public class MarkerController extends BaseExamController {
     @Autowired
     @Autowired
     private MarkGroupService groupService;
     private MarkGroupService groupService;
 
 
-    @Autowired
-    private MarkLibraryService libraryService;
-
     @Autowired
     @Autowired
     private MarkService markService;
     private MarkService markService;
 
 
@@ -85,7 +81,7 @@ public class MarkerController extends BaseExamController {
         for (Marker marker : query.getResult()) {
         for (Marker marker : query.getResult()) {
             marker.setSubject(subjectService.find(marker.getExamId(), marker.getSubjectCode()));
             marker.setSubject(subjectService.find(marker.getExamId(), marker.getSubjectCode()));
             marker.setGroup(groupService.findOne(examId, marker.getSubjectCode(), marker.getGroupNumber()));
             marker.setGroup(groupService.findOne(examId, marker.getSubjectCode(), marker.getGroupNumber()));
-            marker.setMarkedCount(libraryService.countByMarker(marker.getId()));
+            marker.setMarkedCount(markService.markedCount(marker));
             marker.setCurrentCount(markService.applyCount(marker));
             marker.setCurrentCount(markService.applyCount(marker));
         }
         }
         model.addAttribute("query", query);
         model.addAttribute("query", query);
@@ -168,7 +164,7 @@ public class MarkerController extends BaseExamController {
     @RoleRequire(Role.SCHOOL_ADMIN)
     @RoleRequire(Role.SCHOOL_ADMIN)
     public String delete(@RequestParam Integer id, Model model, RedirectAttributes redirectAttributes) {
     public String delete(@RequestParam Integer id, Model model, RedirectAttributes redirectAttributes) {
         Marker marker = markerService.findById(id);
         Marker marker = markerService.findById(id);
-        if (marker != null && !isMarking(marker.getExamId(), marker.getSubjectCode())) {
+        if (marker != null) {
             markService.resetMarker(marker);
             markService.resetMarker(marker);
         }
         }
         redirectAttributes.addAttribute("subjectCode", marker.getSubjectCode());
         redirectAttributes.addAttribute("subjectCode", marker.getSubjectCode());

+ 3 - 5
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/PaperController.java

@@ -82,7 +82,7 @@ public class PaperController extends BaseExamController {
 
 
     @RequestMapping("/detail")
     @RequestMapping("/detail")
     public String detail(Model model, HttpServletRequest request, @RequestParam String subjectCode,
     public String detail(Model model, HttpServletRequest request, @RequestParam String subjectCode,
-            @RequestParam(required = false) String paperType, @RequestParam(required = false) Boolean objective) {
+            @RequestParam(required = false) Boolean objective) {
         WebUser wu = RequestUtils.getWebUser(request);
         WebUser wu = RequestUtils.getWebUser(request);
         int examId = getSessionExamId(request);
         int examId = getSessionExamId(request);
         if (wu.isSubjectHeader() && !subjectCode.equals(wu.getUser().getSubjectCode())) {
         if (wu.isSubjectHeader() && !subjectCode.equals(wu.getUser().getSubjectCode())) {
@@ -92,12 +92,10 @@ public class PaperController extends BaseExamController {
         if (subject != null) {
         if (subject != null) {
             List<ExamQuestion> list = new LinkedList<ExamQuestion>();
             List<ExamQuestion> list = new LinkedList<ExamQuestion>();
             if (objective == null || objective.booleanValue() == true) {
             if (objective == null || objective.booleanValue() == true) {
-                list.addAll(questionService.findByExamAndSubjectAndPaperTypeAndObjective(examId, subjectCode, paperType,
-                        true));
+                list.addAll(questionService.findByExamAndSubjectAndObjective(examId, subjectCode, true));
             }
             }
             if (objective == null || objective.booleanValue() == false) {
             if (objective == null || objective.booleanValue() == false) {
-                list.addAll(questionService.findByExamAndSubjectAndPaperTypeAndObjective(examId, subjectCode, paperType,
-                        false));
+                list.addAll(questionService.findByExamAndSubjectAndObjective(examId, subjectCode, false));
             }
             }
             model.addAttribute("questionList", list);
             model.addAttribute("questionList", list);
             model.addAttribute("subject", subject);
             model.addAttribute("subject", subject);

+ 5 - 2
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/TrialController.java

@@ -31,6 +31,7 @@ import cn.com.qmth.stmms.biz.mark.service.TrialService;
 import cn.com.qmth.stmms.common.auth.annotation.RoleRequire;
 import cn.com.qmth.stmms.common.auth.annotation.RoleRequire;
 import cn.com.qmth.stmms.common.domain.WebUser;
 import cn.com.qmth.stmms.common.domain.WebUser;
 import cn.com.qmth.stmms.common.enums.LibraryStatus;
 import cn.com.qmth.stmms.common.enums.LibraryStatus;
+import cn.com.qmth.stmms.common.enums.MarkStatus;
 import cn.com.qmth.stmms.common.enums.Role;
 import cn.com.qmth.stmms.common.enums.Role;
 import cn.com.qmth.stmms.common.utils.DateUtils;
 import cn.com.qmth.stmms.common.utils.DateUtils;
 import cn.com.qmth.stmms.common.utils.PictureUrlBuilder;
 import cn.com.qmth.stmms.common.utils.PictureUrlBuilder;
@@ -76,7 +77,8 @@ public class TrialController extends BaseExamController {
             query.setSubjectCode(subjectList.get(0).getCode());
             query.setSubjectCode(subjectList.get(0).getCode());
         }
         }
         subjectFilter(query, wu);
         subjectFilter(query, wu);
-        List<MarkGroup> groupList = groupService.findByExamAndSubject(examId, query.getSubjectCode());
+        List<MarkGroup> groupList = groupService.findByExamAndSubjectAndStatus(examId, query.getSubjectCode(),
+                MarkStatus.TRIAL);
         if (!groupList.isEmpty()) {
         if (!groupList.isEmpty()) {
             if (query.getGroupNumber() == null) {
             if (query.getGroupNumber() == null) {
                 query.setGroupNumber(groupList.get(0).getNumber());
                 query.setGroupNumber(groupList.get(0).getNumber());
@@ -143,7 +145,8 @@ public class TrialController extends BaseExamController {
                 for (TrialHistory history : list) {
                 for (TrialHistory history : list) {
                     Marker marker = markerService.findById(history.getMarkerId());
                     Marker marker = markerService.findById(history.getMarkerId());
                     JSONObject item = new JSONObject();
                     JSONObject item = new JSONObject();
-                    item.accumulate("name", marker != null ? marker.getLoginName() : "");
+                    item.accumulate("loginName", marker != null ? marker.getLoginName() : "");
+                    item.accumulate("name", marker != null ? marker.getName() : "");
                     item.accumulate("score", format.format(history.getMarkerScore()));
                     item.accumulate("score", format.format(history.getMarkerScore()));
                     item.accumulate("time", DateUtils.formatDateTime(history.getMarkerTime()));
                     item.accumulate("time", DateUtils.formatDateTime(history.getMarkerTime()));
                     array.add(item);
                     array.add(item);

+ 1 - 1
stmms-web/src/main/java/cn/com/qmth/stmms/admin/thread/ScoreCalculateThread.java

@@ -214,7 +214,7 @@ public class ScoreCalculateThread implements Runnable {
         } else {
         } else {
             List<ExamQuestion> list = subjectiveMap.get(subjectCode);
             List<ExamQuestion> list = subjectiveMap.get(subjectCode);
             if (list == null) {
             if (list == null) {
-                list = questionService.findByExamAndSubjectAndPaperTypeAndObjective(examId, subjectCode, null, false);
+                list = questionService.findByExamAndSubjectAndObjective(examId, subjectCode, false);
                 subjectiveMap.put(subjectCode, list);
                 subjectiveMap.put(subjectCode, list);
             }
             }
             return list;
             return list;

+ 209 - 203
stmms-web/src/main/java/cn/com/qmth/stmms/common/controller/LoginController.java

@@ -1,203 +1,209 @@
-package cn.com.qmth.stmms.common.controller;
-
-import java.util.Date;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.commons.lang.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-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.servlet.ModelAndView;
-
-import cn.com.qmth.stmms.biz.exam.model.ExamSubject;
-import cn.com.qmth.stmms.biz.exam.model.Marker;
-import cn.com.qmth.stmms.biz.exam.service.ExamSubjectService;
-import cn.com.qmth.stmms.biz.exam.service.MarkerService;
-import cn.com.qmth.stmms.biz.user.model.User;
-import cn.com.qmth.stmms.biz.user.service.UserService;
-import cn.com.qmth.stmms.common.domain.WebUser;
-import cn.com.qmth.stmms.common.enums.ExamSubjectStatus;
-import cn.com.qmth.stmms.common.enums.Role;
-import cn.com.qmth.stmms.common.session.model.StmmsSession;
-import cn.com.qmth.stmms.common.utils.Md5EncryptUtils;
-import cn.com.qmth.stmms.common.utils.RequestUtils;
-
-@Controller
-public class LoginController {
-
-    @Autowired
-    private UserService userService;
-
-    @Autowired
-    private MarkerService markerService;
-
-    @Autowired
-    private ExamSubjectService examSubjectService;
-
-    @RequestMapping("/")
-    public ModelAndView index(HttpServletRequest request) {
-        return new ModelAndView("index");
-    }
-
-    @RequestMapping(value = "/admin-login", method = RequestMethod.GET)
-    public ModelAndView adminIndex(HttpServletRequest request) {
-        // StmmsSession session = RequestUtils.getSession(request);
-        // if (StringUtils.isNotBlank(session.getParameter("userId"))) {
-        // return new ModelAndView("modules/sys/examIndex");
-        // } else {
-        return new ModelAndView("modules/sys/sysLogin");
-        // }
-    }
-
-    /**
-     * 登录
-     * 
-     * @param user
-     * @param request
-     * @param response
-     * @return
-     */
-    @RequestMapping(value = "/admin-login", method = RequestMethod.POST)
-    public ModelAndView adminLogin(User user, HttpServletRequest request, HttpServletResponse response) {
-        User u = userService.findByLoginName(user.getLoginName());
-        if (u != null) {
-            if (u.getPassword().equals(Md5EncryptUtils.md5(user.getPassword()))) {
-                u.setLastLoginTime(new Date());
-                u.setLastLoginIp(request.getRemoteAddr());
-                userService.save(u);
-
-                StmmsSession session = RequestUtils.getSession(request);
-                new WebUser(u.getId(), u.getRole()).writeToSession(session);
-
-                if (u.getRole() == Role.SYS_ADMIN || u.getRole() == Role.SCHOOL_ADMIN
-                        || u.getRole() == Role.SUBJECT_HEADER || u.getRole() == Role.SCHOOL_VIEWER) {
-                    ModelAndView modelAndView = new ModelAndView("redirect:admin/home");
-                    return modelAndView;
-                } else {
-                    ModelAndView view = new ModelAndView("modules/sys/sysLogin");
-                    view.addObject("message", "用户没有访问权限");
-                    return view;
-                }
-            } else {
-                ModelAndView modelAndView = new ModelAndView("modules/sys/sysLogin");
-                modelAndView.addObject("message", "密码错误");
-                return modelAndView;
-            }
-        } else {
-            ModelAndView modelAndView = new ModelAndView("modules/sys/sysLogin");
-            modelAndView.addObject("message", "无此用户");
-            return modelAndView;
-        }
-    }
-
-    /**
-     * 登出
-     * 
-     * @param user
-     * @param request
-     * @param response
-     * @return
-     */
-    @RequestMapping("/admin-logout")
-    public ModelAndView adminLogout(HttpServletRequest request, HttpServletResponse response) {
-        RequestUtils.getSession(request).setInvalid(true);
-        return new ModelAndView("redirect:/admin-login");
-    }
-
-    /**
-     * 评卷员登录初始化
-     * 
-     * @param request
-     * @return
-     */
-    @RequestMapping(value = "/mark-login", method = RequestMethod.GET)
-    public ModelAndView loginInit(HttpServletRequest request, @RequestParam(required = false) String message) {
-        ModelAndView modelAndView = new ModelAndView("modules/sys/markLogin");
-        modelAndView.addObject("message", StringUtils.trimToNull(message));
-        return modelAndView;
-    }
-
-    /**
-     * 评卷员登录
-     * 
-     * @param request
-     * @param loginType
-     * @param examId
-     * @param code
-     * @param password
-     * @return
-     */
-    @RequestMapping(value = "/mark-login", method = RequestMethod.POST)
-    public ModelAndView login(HttpServletRequest request, @RequestParam String loginName,
-            @RequestParam String password) {
-        Marker marker = markerService.findByLoginName(loginName);
-        if (marker != null) {
-            return markerLogin(request, marker, password);
-        }
-
-        ModelAndView view = new ModelAndView("modules/sys/markLogin");
-        view.addObject("message", "帐号不存在");
-        return view;
-    }
-
-    /**
-     * 评卷员登录
-     * 
-     * @param marker
-     * @param request
-     * @param response
-     * @return
-     */
-    public ModelAndView markerLogin(HttpServletRequest request, Marker marker, String password) {
-        ModelAndView modelAndView = new ModelAndView("modules/sys/markLogin");
-        if (!marker.getPassword().equals(password)) {
-            modelAndView.addObject("message", "密码错误");
-            return modelAndView;
-        }
-        if (marker.isEnable() == false) {
-            modelAndView.addObject("message", "帐号已禁用");
-            return modelAndView;
-        }
-        ExamSubject subject = examSubjectService.find(marker.getExamId(), marker.getSubjectCode());
-        if (subject == null) {
-            modelAndView.addObject("message", "科目不存在");
-            return modelAndView;
-        }
-        if (subject.getStatus() == ExamSubjectStatus.PAUSE) {
-            modelAndView.addObject("message", "当前科目暂停评卷");
-            return modelAndView;
-        }
-        if (subject.getStatus() == ExamSubjectStatus.FINISH) {
-            modelAndView.addObject("message", "当前科目评卷已结束");
-            return modelAndView;
-        }
-
-        new WebUser(marker.getId(), Role.MARKER).writeToSession(RequestUtils.getSession(request));
-
-        if (marker.getLastLoginTime() == null) {
-            return new ModelAndView("redirect:/mark/reset");
-        } else {
-            marker.setLastLoginTime(new Date());
-            marker.setLastLoginIp(request.getRemoteAddr());
-            markerService.save(marker);
-        }
-        return new ModelAndView("redirect:/mark/index");
-    }
-
-    /**
-     * 评卷员登出
-     * 
-     * @param request
-     * @param response
-     * @return
-     */
-    @RequestMapping("/mark-logout")
-    public ModelAndView markerLogout(HttpServletRequest request, HttpServletResponse response) {
-        RequestUtils.getSession(request).setInvalid(true);
-        return new ModelAndView("redirect:/mark-login");
-    }
-}
+package cn.com.qmth.stmms.common.controller;
+
+import java.util.Date;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.lang.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+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.servlet.ModelAndView;
+
+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.Marker;
+import cn.com.qmth.stmms.biz.exam.service.ExamSubjectService;
+import cn.com.qmth.stmms.biz.exam.service.MarkGroupService;
+import cn.com.qmth.stmms.biz.exam.service.MarkerService;
+import cn.com.qmth.stmms.biz.user.model.User;
+import cn.com.qmth.stmms.biz.user.service.UserService;
+import cn.com.qmth.stmms.common.domain.WebUser;
+import cn.com.qmth.stmms.common.enums.MarkStatus;
+import cn.com.qmth.stmms.common.enums.Role;
+import cn.com.qmth.stmms.common.session.model.StmmsSession;
+import cn.com.qmth.stmms.common.utils.Md5EncryptUtils;
+import cn.com.qmth.stmms.common.utils.RequestUtils;
+
+@Controller
+public class LoginController {
+
+    @Autowired
+    private UserService userService;
+
+    @Autowired
+    private MarkerService markerService;
+
+    @Autowired
+    private ExamSubjectService examSubjectService;
+
+    @Autowired
+    private MarkGroupService groupService;
+
+    @RequestMapping("/")
+    public ModelAndView index(HttpServletRequest request) {
+        return new ModelAndView("index");
+    }
+
+    @RequestMapping(value = "/admin-login", method = RequestMethod.GET)
+    public ModelAndView adminIndex(HttpServletRequest request) {
+        // StmmsSession session = RequestUtils.getSession(request);
+        // if (StringUtils.isNotBlank(session.getParameter("userId"))) {
+        // return new ModelAndView("modules/sys/examIndex");
+        // } else {
+        return new ModelAndView("modules/sys/sysLogin");
+        // }
+    }
+
+    /**
+     * 登录
+     * 
+     * @param user
+     * @param request
+     * @param response
+     * @return
+     */
+    @RequestMapping(value = "/admin-login", method = RequestMethod.POST)
+    public ModelAndView adminLogin(User user, HttpServletRequest request, HttpServletResponse response) {
+        User u = userService.findByLoginName(user.getLoginName());
+        if (u != null) {
+            if (u.getPassword().equals(Md5EncryptUtils.md5(user.getPassword()))) {
+                u.setLastLoginTime(new Date());
+                u.setLastLoginIp(request.getRemoteAddr());
+                userService.save(u);
+
+                StmmsSession session = RequestUtils.getSession(request);
+                new WebUser(u.getId(), u.getRole()).writeToSession(session);
+
+                if (u.getRole() == Role.SYS_ADMIN || u.getRole() == Role.SCHOOL_ADMIN
+                        || u.getRole() == Role.SUBJECT_HEADER || u.getRole() == Role.SCHOOL_VIEWER) {
+                    ModelAndView modelAndView = new ModelAndView("redirect:admin/home");
+                    return modelAndView;
+                } else {
+                    ModelAndView view = new ModelAndView("modules/sys/sysLogin");
+                    view.addObject("message", "用户没有访问权限");
+                    return view;
+                }
+            } else {
+                ModelAndView modelAndView = new ModelAndView("modules/sys/sysLogin");
+                modelAndView.addObject("message", "密码错误");
+                return modelAndView;
+            }
+        } else {
+            ModelAndView modelAndView = new ModelAndView("modules/sys/sysLogin");
+            modelAndView.addObject("message", "无此用户");
+            return modelAndView;
+        }
+    }
+
+    /**
+     * 登出
+     * 
+     * @param user
+     * @param request
+     * @param response
+     * @return
+     */
+    @RequestMapping("/admin-logout")
+    public ModelAndView adminLogout(HttpServletRequest request, HttpServletResponse response) {
+        RequestUtils.getSession(request).setInvalid(true);
+        return new ModelAndView("redirect:/admin-login");
+    }
+
+    /**
+     * 评卷员登录初始化
+     * 
+     * @param request
+     * @return
+     */
+    @RequestMapping(value = "/mark-login", method = RequestMethod.GET)
+    public ModelAndView loginInit(HttpServletRequest request, @RequestParam(required = false) String message) {
+        ModelAndView modelAndView = new ModelAndView("modules/sys/markLogin");
+        modelAndView.addObject("message", StringUtils.trimToNull(message));
+        return modelAndView;
+    }
+
+    /**
+     * 评卷员登录
+     * 
+     * @param request
+     * @param loginType
+     * @param examId
+     * @param code
+     * @param password
+     * @return
+     */
+    @RequestMapping(value = "/mark-login", method = RequestMethod.POST)
+    public ModelAndView login(HttpServletRequest request, @RequestParam String loginName,
+            @RequestParam String password) {
+        Marker marker = markerService.findByLoginName(loginName);
+        if (marker != null) {
+            return markerLogin(request, marker, password);
+        }
+
+        ModelAndView view = new ModelAndView("modules/sys/markLogin");
+        view.addObject("message", "帐号不存在");
+        return view;
+    }
+
+    /**
+     * 评卷员登录
+     * 
+     * @param marker
+     * @param request
+     * @param response
+     * @return
+     */
+    public ModelAndView markerLogin(HttpServletRequest request, Marker marker, String password) {
+        ModelAndView modelAndView = new ModelAndView("modules/sys/markLogin");
+        if (!marker.getPassword().equals(password)) {
+            modelAndView.addObject("message", "密码错误");
+            return modelAndView;
+        }
+        if (marker.isEnable() == false) {
+            modelAndView.addObject("message", "帐号已禁用");
+            return modelAndView;
+        }
+        ExamSubject subject = examSubjectService.find(marker.getExamId(), marker.getSubjectCode());
+        if (subject == null) {
+            modelAndView.addObject("message", "科目不存在");
+            return modelAndView;
+        }
+        MarkGroup group = groupService.findOne(marker.getExamId(), marker.getSubjectCode(), marker.getGroupNumber());
+        if (group == null) {
+            modelAndView.addObject("message", "大题不存在");
+            return modelAndView;
+        }
+        if (group.getStatus() == MarkStatus.FINISH) {
+            modelAndView.addObject("message", "评卷已结束");
+            return modelAndView;
+        }
+
+        new WebUser(marker.getId(), Role.MARKER).writeToSession(RequestUtils.getSession(request));
+
+        if (marker.getLastLoginTime() == null) {
+            return new ModelAndView("redirect:/mark/reset");
+        } else {
+            marker.setLastLoginTime(new Date());
+            marker.setLastLoginIp(request.getRemoteAddr());
+            markerService.save(marker);
+        }
+        return new ModelAndView("redirect:/mark/index");
+    }
+
+    /**
+     * 评卷员登出
+     * 
+     * @param request
+     * @param response
+     * @return
+     */
+    @RequestMapping("/mark-logout")
+    public ModelAndView markerLogout(HttpServletRequest request, HttpServletResponse response) {
+        RequestUtils.getSession(request).setInvalid(true);
+        return new ModelAndView("redirect:/mark-login");
+    }
+}

+ 3 - 5
stmms-web/src/main/java/cn/com/qmth/stmms/mark/MarkController.java

@@ -41,7 +41,6 @@ import cn.com.qmth.stmms.biz.mark.service.TaskService;
 import cn.com.qmth.stmms.biz.mark.service.TrialService;
 import cn.com.qmth.stmms.biz.mark.service.TrialService;
 import cn.com.qmth.stmms.biz.mark.service.Impl.MarkLockService;
 import cn.com.qmth.stmms.biz.mark.service.Impl.MarkLockService;
 import cn.com.qmth.stmms.common.controller.BaseController;
 import cn.com.qmth.stmms.common.controller.BaseController;
-import cn.com.qmth.stmms.common.enums.ExamSubjectStatus;
 import cn.com.qmth.stmms.common.enums.LibraryStatus;
 import cn.com.qmth.stmms.common.enums.LibraryStatus;
 import cn.com.qmth.stmms.common.enums.MarkMode;
 import cn.com.qmth.stmms.common.enums.MarkMode;
 import cn.com.qmth.stmms.common.enums.MarkStatus;
 import cn.com.qmth.stmms.common.enums.MarkStatus;
@@ -200,8 +199,7 @@ public class MarkController extends BaseController {
         Marker marker = RequestUtils.getWebUser(request).getMarker();
         Marker marker = RequestUtils.getWebUser(request).getMarker();
         ExamSubject subject = subjectService.find(marker.getExamId(), marker.getSubjectCode());
         ExamSubject subject = subjectService.find(marker.getExamId(), marker.getSubjectCode());
         MarkGroup group = groupService.findOne(marker.getExamId(), marker.getSubjectCode(), marker.getGroupNumber());
         MarkGroup group = groupService.findOne(marker.getExamId(), marker.getSubjectCode(), marker.getGroupNumber());
-        if (subject == null || subject.getStatus() != ExamSubjectStatus.MARKING || group == null
-                || group.getStatus() == MarkStatus.FINISH) {
+        if (subject == null || group == null || group.getStatus() == MarkStatus.FINISH) {
             status.accumulate("valid", false);
             status.accumulate("valid", false);
             return status;
             return status;
         }
         }
@@ -233,7 +231,7 @@ public class MarkController extends BaseController {
         } else if (group.getStatus() == MarkStatus.TRIAL) {
         } else if (group.getStatus() == MarkStatus.TRIAL) {
             totalCount = trialService.countLibrary(group.getExamId(), group.getSubjectCode(), group.getNumber());
             totalCount = trialService.countLibrary(group.getExamId(), group.getSubjectCode(), group.getNumber());
             personCount = trialService.countMarkerHistory(marker.getId());
             personCount = trialService.countMarkerHistory(marker.getId());
-            markedCount = trialService.countMarkedLibrary(group.getExamId(), group.getSubjectCode(), group.getNumber());
+            markedCount = personCount;
         }
         }
         status.accumulate("personCount", personCount);
         status.accumulate("personCount", personCount);
         status.accumulate("totalCount", totalCount);
         status.accumulate("totalCount", totalCount);
@@ -249,7 +247,7 @@ public class MarkController extends BaseController {
     public Task getTask(HttpServletRequest request) {
     public Task getTask(HttpServletRequest request) {
         Marker marker = RequestUtils.getWebUser(request).getMarker();
         Marker marker = RequestUtils.getWebUser(request).getMarker();
         lockService.waitUnlockMarker(marker.getId());
         lockService.waitUnlockMarker(marker.getId());
-        MarkGroup group = groupService.findOne(marker.getExamId(), marker.getSubjectCode(), marker.getNumber());
+        MarkGroup group = groupService.findOne(marker.getExamId(), marker.getSubjectCode(), marker.getGroupNumber());
         Task task = null;
         Task task = null;
         if (group == null) {
         if (group == null) {
             task = new Task();
             task = new Task();

+ 1 - 6
stmms-web/src/main/java/cn/com/qmth/stmms/mark/MarkLeaderController.java

@@ -1,7 +1,5 @@
 package cn.com.qmth.stmms.mark;
 package cn.com.qmth.stmms.mark;
 
 
-import java.util.Date;
-
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletRequest;
 
 
 import org.slf4j.Logger;
 import org.slf4j.Logger;
@@ -25,7 +23,6 @@ import cn.com.qmth.stmms.biz.mark.model.Task;
 import cn.com.qmth.stmms.biz.mark.service.TaskService;
 import cn.com.qmth.stmms.biz.mark.service.TaskService;
 import cn.com.qmth.stmms.common.controller.BaseController;
 import cn.com.qmth.stmms.common.controller.BaseController;
 import cn.com.qmth.stmms.common.domain.WebUser;
 import cn.com.qmth.stmms.common.domain.WebUser;
-import cn.com.qmth.stmms.common.enums.ExamSubjectStatus;
 import cn.com.qmth.stmms.common.utils.RequestUtils;
 import cn.com.qmth.stmms.common.utils.RequestUtils;
 import net.sf.json.JSONObject;
 import net.sf.json.JSONObject;
 
 
@@ -96,7 +93,7 @@ public class MarkLeaderController extends BaseController {
         } else {
         } else {
             ExamStudent student = studentService.findById(studentId);
             ExamStudent student = studentService.findById(studentId);
             ExamSubject subject = subjectService.find(student.getExamId(), student.getSubjectCode());
             ExamSubject subject = subjectService.find(student.getExamId(), student.getSubjectCode());
-            if (subject == null || subject.getStatus() != ExamSubjectStatus.MARKING) {
+            if (subject == null) {
                 status.accumulate("valid", false);
                 status.accumulate("valid", false);
                 return status;
                 return status;
             }
             }
@@ -132,7 +129,6 @@ public class MarkLeaderController extends BaseController {
      */
      */
     private void setTaskParameter(Task task, WebUser marker) {
     private void setTaskParameter(Task task, WebUser marker) {
         task.setHeaderId(marker.getId());
         task.setHeaderId(marker.getId());
-        task.setSpent(new Date().getTime());
     }
     }
 
 
     private Task getTask(WebUser marker, Integer studentId) {
     private Task getTask(WebUser marker, Integer studentId) {
@@ -146,7 +142,6 @@ public class MarkLeaderController extends BaseController {
     public JSONObject saveTask(HttpServletRequest request, @RequestBody Task task) {
     public JSONObject saveTask(HttpServletRequest request, @RequestBody Task task) {
         JSONObject result = new JSONObject();
         JSONObject result = new JSONObject();
         try {
         try {
-            task.setSpent((new Date().getTime() - task.getSpent()) / 1000);
             if (taskService.submitByStudent(task)) {
             if (taskService.submitByStudent(task)) {
                 result.accumulate("success", true);
                 result.accumulate("success", true);
                 result.accumulate("status", status(request, null));
                 result.accumulate("status", status(request, null));

+ 1 - 1
stmms-web/src/main/webapp/WEB-INF/application.properties

@@ -42,4 +42,4 @@ mark.cleanTaskSchedule=0 0/10 6-23 * * ?
 mark.cleanLockSchedule=0 0 3 * * ?
 mark.cleanLockSchedule=0 0 3 * * ?
 
 
 marker.showBtnImportAndBtnUpdateImport=false
 marker.showBtnImportAndBtnUpdateImport=false
-marker.forceMode=track
+marker.forceMode=

+ 18 - 11
stmms-web/src/main/webapp/WEB-INF/views/include/trialDetail.jsp

@@ -3,14 +3,16 @@
 <script type="text/javascript" src="${ctxStatic}/jBox/Source/jBox.min.js"></script>
 <script type="text/javascript" src="${ctxStatic}/jBox/Source/jBox.min.js"></script>
 
 
 <div id="trial-detail-content" class="container-fluid" style="display:none">
 <div id="trial-detail-content" class="container-fluid" style="display:none">
-    <div id="trial-left-div" class="span6" style="overflow:scroll">
-        <canvas id="trial-canvas"></canvas>
+<div class="row-fluid">
+    <div id="trial-left-div" class="span7">
+        <canvas id="trial-canvas" style="width:100%"></canvas>
     </div>
     </div>
-    <div id="trial-right-div" class="span6">
+    <div id="trial-right-div" class="span5">
         <table id="contentTable" class="table table-striped table-bordered table-condensed">
         <table id="contentTable" class="table table-striped table-bordered table-condensed">
             <thead>
             <thead>
                 <tr>
                 <tr>
                     <th>评卷员</th>
                     <th>评卷员</th>
+                    <th>姓名</th>
                     <th>给分</th>
                     <th>给分</th>
                     <th>时间</th>
                     <th>时间</th>
                 </tr>
                 </tr>
@@ -20,12 +22,13 @@
         </table>
         </table>
     </div>
     </div>
 </div>
 </div>
+</div>
 
 
 <script type="text/javascript">
 <script type="text/javascript">
 var trailDetailModal = new jBox('Modal');
 var trailDetailModal = new jBox('Modal');
 
 
 $(document).ready(function() {
 $(document).ready(function() {
-    $('#trial-detail-left').height($(window).height()*0.83);
+    //$('#trial-left-div').height($(window).height()*0.83);
 });
 });
 
 
 function initTrialDetailPopover(title, libraryId) {
 function initTrialDetailPopover(title, libraryId) {
@@ -38,7 +41,6 @@ function initTrialDetailPopover(title, libraryId) {
 
 
 function initTrialDetailContent(libraryId){
 function initTrialDetailContent(libraryId){
 	$('#trial-history').empty();
 	$('#trial-history').empty();
-	$('#trial-canvas').hide();
 	$.ajax({
 	$.ajax({
         type:"GET",
         type:"GET",
         url:'${ctx}/admin/exam/trial/detail?libraryId='+libraryId,  
         url:'${ctx}/admin/exam/trial/detail?libraryId='+libraryId,  
@@ -47,13 +49,13 @@ function initTrialDetailContent(libraryId){
 	        if(data.success==true) {
 	        if(data.success==true) {
 	            for (var i = 0; i < data.historyList.length; i++) {
 	            for (var i = 0; i < data.historyList.length; i++) {
 	                var history = data.historyList[i];
 	                var history = data.historyList[i];
-	                $('#trial-history').append('<tr><td>'+history.name+'</td><td>'+history.score+'</td><td>'+history.time+'</td></tr>');
+	                $('#trial-history').append('<tr><td>'+history.loginName+'</td><td>'+history.name+'</td><td>'+history.score+'</td><td>'+history.time+'</td></tr>');
 	            }
 	            }
 	            var canvas = document.getElementById('trial-canvas');
 	            var canvas = document.getElementById('trial-canvas');
 	            var ctx = canvas.getContext('2d');
 	            var ctx = canvas.getContext('2d');
-	            buildImages(data.imageServer, data.urls, data.pictureConfig, canvas, ctx);
-	            $('#trial-canvas').show();
-	            trailDetailModal.setContent('#trial-detail-content');
+	            buildImages(data.imageServer, data.urls, data.pictureConfig, canvas, ctx, function(){
+	                trailDetailModal.setContent($('#trial-detail-content'));
+	            });
 	        }else {
 	        }else {
 	            trailDetailModal.setTitle('加载失败')
 	            trailDetailModal.setTitle('加载失败')
 	        }
 	        }
@@ -61,14 +63,14 @@ function initTrialDetailContent(libraryId){
     });
     });
 }
 }
 
 
-function buildImages(imageServer, picUrls, config, canvas, ctx) {
+function buildImages(imageServer, picUrls, config, canvas, ctx, callback) {
     var indexSet = {};
     var indexSet = {};
     for(var i=0;i<config.length;i++){
     for(var i=0;i<config.length;i++){
         indexSet[config[i].i-1] = true;
         indexSet[config[i].i-1] = true;
     }
     }
     //调用图片预加载函数,实现回调函数
     //调用图片预加载函数,实现回调函数
     var imageObjects = [];
     var imageObjects = [];
-    loadImages(imageObjects, imageServer, indexSet, picUrls, 0,function(images) {
+    loadImages(imageObjects, imageServer, indexSet, picUrls, 0, function(images) {
         var maxWidth = 0;
         var maxWidth = 0;
         var totalHeight = 0;
         var totalHeight = 0;
         for (var i = 0; i < config.length; i++) {
         for (var i = 0; i < config.length; i++) {
@@ -95,7 +97,11 @@ function buildImages(imageServer, picUrls, config, canvas, ctx) {
                 ctx.drawImage(image, config[i].x, config[i].y, config[i].w, config[i].h, 0, height, config[i].w, config[i].h);
                 ctx.drawImage(image, config[i].x, config[i].y, config[i].w, config[i].h, 0, height, config[i].w, config[i].h);
                 height += config[i].h;
                 height += config[i].h;
             }
             }
+        }else {
+            canvas.width=1;
+            canvas.height=1;
         }
         }
+        callback();
     });
     });
 }
 }
 
 
@@ -107,6 +113,7 @@ function loadImages(images, imageServer, indexSet, urls, number, callback) {
                 images.push(img);
                 images.push(img);
                 loadImages(images, imageServer, indexSet, urls, number + 1, callback);
                 loadImages(images, imageServer, indexSet, urls, number + 1, callback);
             }
             }
+            img.crossOrigin = '';
             img.src = imageServer + urls[number] + '?' + new Date().getTime();
             img.src = imageServer + urls[number] + '?' + new Date().getTime();
         }else {
         }else {
             images.push({});
             images.push({});

+ 6 - 3
stmms-web/src/main/webapp/WEB-INF/views/modules/exam/arbitrateList.jsp

@@ -11,8 +11,8 @@
     <ul class="nav nav-tabs">
     <ul class="nav nav-tabs">
         <li><a href="${ctx}/admin/exam/group?subjectCode=${query.subjectCode}">大题管理</a></li>
         <li><a href="${ctx}/admin/exam/group?subjectCode=${query.subjectCode}">大题管理</a></li>
         <li><a href="${ctx}/admin/exam/marker?subjectCode=${query.subjectCode}">评卷员管理</a></li>
         <li><a href="${ctx}/admin/exam/marker?subjectCode=${query.subjectCode}">评卷员管理</a></li>
-        <li><a href="${ctx}/admin/exam/library?subjectCode=${query.subjectCode}">评卷任务管理</a></li>
         <li><a href="${ctx}/admin/exam/trial?subjectCode=${query.subjectCode}">试评管理</a></li>
         <li><a href="${ctx}/admin/exam/trial?subjectCode=${query.subjectCode}">试评管理</a></li>
+        <li><a href="${ctx}/admin/exam/library?subjectCode=${query.subjectCode}">正评管理</a></li>
         <li class="active"><a href="##">仲裁管理</a></li>
         <li class="active"><a href="##">仲裁管理</a></li>
     </ul>
     </ul>
 	<form id="searchForm" action="${ctx}/admin/exam/arbitrate" method="post" class="breadcrumb form-search">
 	<form id="searchForm" action="${ctx}/admin/exam/arbitrate" method="post" class="breadcrumb form-search">
@@ -42,8 +42,11 @@
             <input type="text" name="examNumber" value="${query.examNumber}" maxlength="10" class="input-medium"/>
             <input type="text" name="examNumber" value="${query.examNumber}" maxlength="10" class="input-medium"/>
 			&nbsp;
 			&nbsp;
 			<input id="btnSubmit" class="btn btn-primary" type="button" value="查询" onclick="goSearch()"/>
 			<input id="btnSubmit" class="btn btn-primary" type="button" value="查询" onclick="goSearch()"/>
+			
+			<c:if test="${query.totalCount>0}">
 			&nbsp;
 			&nbsp;
             <a href="##" class="btn" id="batch-process-link" target="_blank">批量处理</a>
             <a href="##" class="btn" id="batch-process-link" target="_blank">批量处理</a>
+            </c:if>
 		</div>
 		</div>
 	</form>
 	</form>
 	<tags:message content="${message}"/>
 	<tags:message content="${message}"/>
@@ -113,11 +116,11 @@ $('.back-link').click(function(){
 $('#batch-process-link').click(function(){
 $('#batch-process-link').click(function(){
     var subjectCode = $('#subject-select').val();
     var subjectCode = $('#subject-select').val();
     var groupNumber = $('#group-select').val();
     var groupNumber = $('#group-select').val();
-    if(subjectCode=='') {
+    if(subjectCode==undefined || subjectCode=='') {
         alert('请选择科目')
         alert('请选择科目')
         return false;
         return false;
     }
     }
-    if(groupNumber=='') {
+    if(groupNumber==undefined || groupNumber=='') {
         alert('请选择大题')
         alert('请选择大题')
         return false;
         return false;
     }
     }

+ 1 - 1
stmms-web/src/main/webapp/WEB-INF/views/modules/exam/groupEditFull.jsp

@@ -70,7 +70,7 @@
 				<form:input path="title" htmlEscape="false" maxlength="30" class="required"/>
 				<form:input path="title" htmlEscape="false" maxlength="30" class="required"/>
 			</div>
 			</div>
 		</div>
 		</div>
-		<c:if test="${group.status==TRIAL}">
+		<c:if test="${group.status.value==1}">
         <div class="control-group">
         <div class="control-group">
             <label class="control-label">试评数量</label>
             <label class="control-label">试评数量</label>
             <div class="controls">
             <div class="controls">

+ 1 - 1
stmms-web/src/main/webapp/WEB-INF/views/modules/exam/groupEditSimple.jsp

@@ -66,7 +66,7 @@
 				<form:input path="title" htmlEscape="false" maxlength="30" class="required"/>
 				<form:input path="title" htmlEscape="false" maxlength="30" class="required"/>
 			</div>
 			</div>
 		</div>
 		</div>
-		<c:if test="${group.status==TRIAL}">
+		<c:if test="${group.status.value==1}">
 		<div class="control-group">
 		<div class="control-group">
             <label class="control-label">试评数量</label>
             <label class="control-label">试评数量</label>
             <div class="controls">
             <div class="controls">

+ 5 - 5
stmms-web/src/main/webapp/WEB-INF/views/modules/exam/groupList.jsp

@@ -11,8 +11,8 @@
     <ul class="nav nav-tabs">
     <ul class="nav nav-tabs">
         <li class="active"><a href="##">大题管理</a></li>
         <li class="active"><a href="##">大题管理</a></li>
         <li><a href="${ctx}/admin/exam/marker?subjectCode=${subject.code}">评卷员管理</a></li>
         <li><a href="${ctx}/admin/exam/marker?subjectCode=${subject.code}">评卷员管理</a></li>
-        <li><a href="${ctx}/admin/exam/library?subjectCode=${subject.code}">评卷任务管理</a></li>
         <li><a href="${ctx}/admin/exam/trial?subjectCode=${subject.code}">试评管理</a></li>
         <li><a href="${ctx}/admin/exam/trial?subjectCode=${subject.code}">试评管理</a></li>
+        <li><a href="${ctx}/admin/exam/library?subjectCode=${subject.code}">正评管理</a></li>
         <li><a href="${ctx}/admin/exam/arbitrate?subjectCode=${subject.code}">仲裁管理</a></li>
         <li><a href="${ctx}/admin/exam/arbitrate?subjectCode=${subject.code}">仲裁管理</a></li>
     </ul>
     </ul>
 	<form id="searchForm" action="${ctx}/admin/exam/group" method="post" class="breadcrumb form-search">
 	<form id="searchForm" action="${ctx}/admin/exam/group" method="post" class="breadcrumb form-search">
@@ -67,11 +67,11 @@
 				<td>${result.percent}%</td>
 				<td>${result.percent}%</td>
 				<td>${result.status.name}</td>
 				<td>${result.status.name}</td>
 				<td>
 				<td>
-				    <c:if test="${web_user.schoolAdmin==true && result.status!=FINISH}">
-				    <c:if test="${result.status==TRIAL}">
+				    <c:if test="${web_user.schoolAdmin==true && result.status.value!=3}">
+				    <c:if test="${result.status.value==1}">
                     <a href="${ctx}/admin/exam/group/changeStatus?subjectCode=${result.subjectCode}&number=${result.number}&status=FORMAL" data-number="${result.number}" class="edit-button">开始正评</a>
                     <a href="${ctx}/admin/exam/group/changeStatus?subjectCode=${result.subjectCode}&number=${result.number}&status=FORMAL" data-number="${result.number}" class="edit-button">开始正评</a>
                     </c:if>
                     </c:if>
-				    <c:if test="${result.status==FORMAL}">
+				    <c:if test="${result.status.value==2 && result.leftCount==0}">
                     <a href="${ctx}/admin/exam/group/changeStatus?subjectCode=${result.subjectCode}&number=${result.number}&status=FINISH" data-number="${result.number}" class="edit-button">结束</a>
                     <a href="${ctx}/admin/exam/group/changeStatus?subjectCode=${result.subjectCode}&number=${result.number}&status=FINISH" data-number="${result.number}" class="edit-button">结束</a>
                     </c:if>
                     </c:if>
 					<c:if test="${result.currentCount>0}">
 					<c:if test="${result.currentCount>0}">
@@ -84,7 +84,7 @@
 					<a href="${ctx}/admin/exam/group/delete?subjectCode=${result.subjectCode}&number=${result.number}" data-number="${result.number}" class="delete-button">删除</a>
 					<a href="${ctx}/admin/exam/group/delete?subjectCode=${result.subjectCode}&number=${result.number}" data-number="${result.number}" class="delete-button">删除</a>
 					</c:if>
 					</c:if>
 					
 					
-					<c:if test="${web_user.schoolAdmin==true && result.status==FINISH}">
+					<c:if test="${web_user.schoolAdmin==true && result.status.value==3}">
 					<a href="${ctx}/admin/exam/group/changeStatus?subjectCode=${result.subjectCode}&number=${result.number}&status=FORMAL" data-number="${result.number}" class="edit-button">开始正评</a>
 					<a href="${ctx}/admin/exam/group/changeStatus?subjectCode=${result.subjectCode}&number=${result.number}&status=FORMAL" data-number="${result.number}" class="edit-button">开始正评</a>
 					</c:if>
 					</c:if>
 				</td>
 				</td>

+ 6 - 3
stmms-web/src/main/webapp/WEB-INF/views/modules/exam/libraryList.jsp

@@ -11,8 +11,8 @@
     <ul class="nav nav-tabs">
     <ul class="nav nav-tabs">
         <li><a href="${ctx}/admin/exam/group?subjectCode=${query.subjectCode}">大题管理</a></li>
         <li><a href="${ctx}/admin/exam/group?subjectCode=${query.subjectCode}">大题管理</a></li>
         <li><a href="${ctx}/admin/exam/marker?subjectCode=${query.subjectCode}">评卷员管理</a></li>
         <li><a href="${ctx}/admin/exam/marker?subjectCode=${query.subjectCode}">评卷员管理</a></li>
-        <li class="active"><a href="##">评卷任务管理</a></li>
         <li><a href="${ctx}/admin/exam/trial?subjectCode=${query.subjectCode}">试评管理</a></li>
         <li><a href="${ctx}/admin/exam/trial?subjectCode=${query.subjectCode}">试评管理</a></li>
+        <li class="active"><a href="##">正评管理</a></li>
         <li><a href="${ctx}/admin/exam/arbitrate?subjectCode=${query.subjectCode}">仲裁管理</a></li>
         <li><a href="${ctx}/admin/exam/arbitrate?subjectCode=${query.subjectCode}">仲裁管理</a></li>
     </ul>
     </ul>
 	<form id="searchForm" action="${ctx}/admin/exam/library" method="post" class="breadcrumb form-search">
 	<form id="searchForm" action="${ctx}/admin/exam/library" method="post" class="breadcrumb form-search">
@@ -47,8 +47,11 @@
             </select>
             </select>
             <br/><br/>
             <br/><br/>
             <label>准考证号</label>
             <label>准考证号</label>
-            <input type="text" name="examNumber" value="${query.examNumber}" maxlength="10" class="input-medium"/>
+            <input type="text" name="examNumber" value="${query.examNumber}" maxlength="20" class="input-medium"/>
 			&nbsp;
 			&nbsp;
+			<label>考生编号</label>
+            <input type="text" name="studentId" value="${query.studentId}" maxlength="20" class="input-medium"/>
+            &nbsp;
 			<input id="btnSubmit" class="btn btn-primary" type="button" value="查询" onclick="goSearch()"/>
 			<input id="btnSubmit" class="btn btn-primary" type="button" value="查询" onclick="goSearch()"/>
 		</div>
 		</div>
 	</form>
 	</form>
@@ -146,7 +149,7 @@ $('#subject-select').change(function(){
         $('#group-select').val('').trigger('change');
         $('#group-select').val('').trigger('change');
         return;
         return;
     }
     }
-    $.post('${ctx}/admin/exam/group/query', {subjectCode: code}, function(result){
+    $.post('${ctx}/admin/exam/group/query', {subjectCode: code, status: 'FORMAL'}, function(result){
         var parent = $('#group-select');
         var parent = $('#group-select');
         var first = '';
         var first = '';
         for(var i=0;i<result.length;i++){
         for(var i=0;i<result.length;i++){

+ 3 - 3
stmms-web/src/main/webapp/WEB-INF/views/modules/exam/markerList.jsp

@@ -80,8 +80,8 @@
     <ul class="nav nav-tabs">
     <ul class="nav nav-tabs">
         <li><a href="${ctx}/admin/exam/group?subjectCode=${query.subjectCode}">大题管理</a></li>
         <li><a href="${ctx}/admin/exam/group?subjectCode=${query.subjectCode}">大题管理</a></li>
         <li class="active"><a href="##">评卷员管理</a></li>
         <li class="active"><a href="##">评卷员管理</a></li>
-        <li><a href="${ctx}/admin/exam/library?subjectCode=${query.subjectCode}">评卷任务管理</a></li>
         <li><a href="${ctx}/admin/exam/trial?subjectCode=${query.subjectCode}">试评管理</a></li>
         <li><a href="${ctx}/admin/exam/trial?subjectCode=${query.subjectCode}">试评管理</a></li>
+        <li><a href="${ctx}/admin/exam/library?subjectCode=${query.subjectCode}">正评管理</a></li>
         <li><a href="${ctx}/admin/exam/arbitrate?subjectCode=${query.subjectCode}">仲裁管理</a></li>
         <li><a href="${ctx}/admin/exam/arbitrate?subjectCode=${query.subjectCode}">仲裁管理</a></li>
     </ul>
     </ul>
     <div id="importBox" class="hide">
     <div id="importBox" class="hide">
@@ -107,13 +107,13 @@
 		<input type="hidden" id="pageSize" name="pageSize" value="${query.pageSize}"/>
 		<input type="hidden" id="pageSize" name="pageSize" value="${query.pageSize}"/>
 		<div>
 		<div>
 			<label>科目</label>
 			<label>科目</label>
-			<select id="subject-select" name="subjectCode">
+			<select class="input-large" id="subject-select" name="subjectCode">
 				<c:forEach items="${subjectList}" var="subject">
 				<c:forEach items="${subjectList}" var="subject">
 				<option value="${subject.code}" <c:if test="${subject.code==query.subjectCode}">selected</c:if>>${subject.code}-${subject.name}</option>
 				<option value="${subject.code}" <c:if test="${subject.code==query.subjectCode}">selected</c:if>>${subject.code}-${subject.name}</option>
 				</c:forEach>
 				</c:forEach>
 			</select>
 			</select>
 			<label>大题</label>
 			<label>大题</label>
-            <select id="group-select" name="groupNumber">
+            <select class="input-medium" id="group-select" name="groupNumber">
             </select>
             </select>
 			<label>登录名</label>
 			<label>登录名</label>
 			<input type="text" name="loginName" value="${query.loginName}"  maxlength="10" class="input-small"/>
 			<input type="text" name="loginName" value="${query.loginName}"  maxlength="10" class="input-small"/>

+ 60 - 58
stmms-web/src/main/webapp/WEB-INF/views/modules/exam/paperDetail.jsp

@@ -1,59 +1,61 @@
-<%@ page contentType="text/html;charset=UTF-8" %>
-<%@ include file="/WEB-INF/views/include/taglib.jsp"%>
-<html>
-<head>
-	<title>试题列表</title>
-	<meta name="decorator" content="default"/>
-	<%@include file="/WEB-INF/views/include/head.jsp" %>
-	<style type="text/css">.sort{color:#0663A2;cursor:pointer;}</style>
-</head>
-<body>
-	<%-- <%@include file="/WEB-INF/views/include/examInfoNavTabs.jsp" %> --%>
-	<form id="searchForm" action="${ctx}/admin/exam/paper/detail" method="post" class="breadcrumb form-search">
-		<input name="subjectCode" value="${subject.code}" type="hidden"/>
-		<div>
-			<label>科目:${subject.code}-${subject.name}</label>
-			<label>客观总分:${subject.objectiveScore}</label>
-			<label>主观总分:${subject.subjectiveScore}</label>
-			<label>试卷总分:${subject.totalScore}</label>
-			&nbsp;
-			<select id="type-select" name="objective" class="input-small">
-				<option value="">不限</option>
-				<option value="true" <c:if test="${objective!=null && objective==true}">selected</c:if>>客观题</option>
-				<option value="false" <c:if test="${objective!=null && objective==false}">selected</c:if>>主观题</option>
-			</select>
-			&nbsp;		
-			<a class="btn" href="${ctx}/admin/exam/paper">返回</a>
-		</div>
-	</form>
-	<table id="contentTable" class="table table-striped table-bordered table-condensed">
-		<thead>
-			<tr>
-				<th>大题名称</th>
-				<th>大题号</th>
-				<th>小题号</th>
-				<th>满分</th>
-				<th>间隔分</th>
-				<th>答案</th>
-			</tr>
-		</thead>
-		<tbody>
-		<c:forEach items="${questionList}" var="question">
-			<tr>
-				<td>${question.mainTitle}</td>
-				<td>${question.mainNumber}</td>
-				<td>${question.subNumber}</td>
-				<td>${question.totalScore}</td>
-				<td>${question.intervalScore}</td>
-				<td>${question.answer}</td>
-			</tr>
-		</c:forEach>
-		</tbody>
-	</table>
-<script type="text/javascript">
-$('#type-select').change(function(){
-	$('#searchForm').submit();
-});
-</script>	
-</body>
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/WEB-INF/views/include/taglib.jsp"%>
+<html>
+<head>
+	<title>试题列表</title>
+	<meta name="decorator" content="default"/>
+	<%@include file="/WEB-INF/views/include/head.jsp" %>
+	<style type="text/css">.sort{color:#0663A2;cursor:pointer;}</style>
+</head>
+<body>
+	<%-- <%@include file="/WEB-INF/views/include/examInfoNavTabs.jsp" %> --%>
+	<form id="searchForm" action="${ctx}/admin/exam/paper/detail" method="post" class="breadcrumb form-search">
+		<input name="subjectCode" value="${subject.code}" type="hidden"/>
+		<div>
+			<label>科目:${subject.code}-${subject.name}</label>
+			<label>客观总分:${subject.objectiveScore}</label>
+			<label>主观总分:${subject.subjectiveScore}</label>
+			<label>试卷总分:${subject.totalScore}</label>
+			&nbsp;
+			<select id="type-select" name="objective" class="input-small">
+				<option value="">不限</option>
+				<option value="true" <c:if test="${objective!=null && objective==true}">selected</c:if>>客观题</option>
+				<option value="false" <c:if test="${objective!=null && objective==false}">selected</c:if>>主观题</option>
+			</select>
+			&nbsp;		
+			<a class="btn" href="${ctx}/admin/exam/paper">返回</a>
+		</div>
+	</form>
+	<table id="contentTable" class="table table-striped table-bordered table-condensed">
+		<thead>
+			<tr>
+			    <th>试卷类型</th>
+				<th>大题名称</th>
+				<th>大题号</th>
+				<th>小题号</th>
+				<th>满分</th>
+				<th>间隔分</th>
+				<th>答案</th>
+			</tr>
+		</thead>
+		<tbody>
+		<c:forEach items="${questionList}" var="question">
+			<tr>
+			    <td>${question.paperType}</td>
+				<td>${question.mainTitle}</td>
+				<td>${question.mainNumber}</td>
+				<td>${question.subNumber}</td>
+				<td>${question.totalScore}</td>
+				<td>${question.intervalScore}</td>
+				<td>${question.answer}</td>
+			</tr>
+		</c:forEach>
+		</tbody>
+	</table>
+<script type="text/javascript">
+$('#type-select').change(function(){
+	$('#searchForm').submit();
+});
+</script>	
+</body>
 </html>
 </html>

+ 104 - 104
stmms-web/src/main/webapp/WEB-INF/views/modules/exam/scanInfo.jsp

@@ -1,105 +1,105 @@
-<%@ page contentType="text/html;charset=UTF-8" %>
-<%@ include file="/WEB-INF/views/include/taglib.jsp"%>
-<html>
-<head>
-	<title>扫描进度</title>
-	<meta name="decorator" content="default"/>
-	<%@include file="/WEB-INF/views/include/head.jsp" %>
-	<style type="text/css">.sort{color:#0663A2;cursor:pointer;}</style>
-</head>
-<body>
-	<ul class="nav nav-tabs">
-		<li <c:if test="${type=='subject'}">class="active"</c:if>><a href="${ctx}/admin/exam/scan/subject">按科目统计</a></li>
-		<li <c:if test="${type=='campus'}">class="active"</c:if>><a href="${ctx}/admin/exam/scan/campus">按学习中心统计</a></li>
-		<li><a href="${ctx}/admin/exam/scan/package">统计签到表</a></li>
-	</ul>
-	<form id="searchForm" action="${ctx}/admin/exam/scan/${type}" method="post" class="breadcrumb form-search">
-		<input type="hidden" id="pageNumber" name="pageNumber" value="${query.pageNumber }"/>
-		<input type="hidden" id="pageSize" name="pageSize" value="${query.pageSize }"/>
-		
-		<c:if test="${subjectList!=null}">
-		<label>科目</label>
-		<select class="input-large" name="code">
-			<option value="">全部</option>
-			<c:forEach items="${subjectList}" var="subject">
-			<option value="${subject.code}" <c:if test="${subject.code==query.code}">selected</c:if>>${subject.code}-${subject.name}</option>
-			</c:forEach>
-		</select>
-		</c:if>
-		
-		<c:if test="${levelList!=null}">
-		<label>层次</label>
-		<select class="input-small" name="level">
-			<option value="">全部</option>
-			<c:forEach items="${levelList}" var="level">
-			<option value="${level}" <c:if test="${level==query.level}">selected</c:if>>${level}</option>
-			</c:forEach>
-		</select>
-		</c:if>
-		
-		<c:if test="${categoryList!=null}">
-		<label>专业类型</label>
-		<select class="input-small" name="category">
-			<option value="">全部</option>
-			<c:forEach items="${categoryList}" var="category">
-			<option value="${category}" <c:if test="${category==query.category}">selected</c:if>>${category}</option>
-			</c:forEach>
-		</select>
-		</c:if>
-		
-		<c:if test="${campusList!=null}">
-		<select class="input-large" name="campusName">
-			<option value="">全部</option>
-			<c:forEach items="${campusList}" var="campus">
-			<option value="${campus}" <c:if test="${campus==query.campusName}">selected</c:if>>${campus}</option>
-			</c:forEach>
-		</select>
-		</c:if>
-		&nbsp;
-		<input id="btnSubmit" class="btn btn-primary" type="button" value="查询" onclick="goSearch()"/>
-			
-	</form>
-	<table id="contentTable" class="table table-striped table-bordered table-condensed">
-		<thead>
-			<tr>
-				<th>名称</th>
-				<th>考生总数</th>
-				<th>已扫人数</th>
-				<th>进度</th>
-			</tr>
-		</thead>
-		<tbody>
-		<c:forEach items="${infoList}" var="info">
-			<tr>
-				<td>${info.name}</td>
-				<td>${info.totalCount}</td>
-				<td>${info.scanCount}</td>
-				<td>
-					<c:if test="${info.totalCount==0}">
-						0%
-					</c:if>
-					<c:if test="${info.totalCount>0}">
-						<fmt:formatNumber type="PERCENT" value="${info.scanCount/info.totalCount}"/>
-					</c:if>
-				</td>
-			</tr>
-		</c:forEach>
-		</tbody>
-	</table>
-	<div class="pagination">${query}</div>
-<script type="text/javascript">
-function page(n,s){
-	$("#pageNumber").val(n);
-	$("#pageSize").val(s);
-	$("#searchForm").submit();
-	return false;
-}
-function goSearch(){
-	$("#pageNumber").val(1);
-	$("#pageSize").val('${query.pageSize}');
-	$("#searchForm").submit();
-	return false;
-}
-</script>	
-</body>
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/WEB-INF/views/include/taglib.jsp"%>
+<html>
+<head>
+	<title>扫描进度</title>
+	<meta name="decorator" content="default"/>
+	<%@include file="/WEB-INF/views/include/head.jsp" %>
+	<style type="text/css">.sort{color:#0663A2;cursor:pointer;}</style>
+</head>
+<body>
+	<ul class="nav nav-tabs">
+		<li <c:if test="${type=='subject'}">class="active"</c:if>><a href="${ctx}/admin/exam/scan/subject">按科目统计</a></li>
+		<!--<li <c:if test="${type=='campus'}">class="active"</c:if>><a href="${ctx}/admin/exam/scan/campus">按学习中心统计</a></li>-->
+		<li><a href="${ctx}/admin/exam/scan/package">统计签到表</a></li>
+	</ul>
+	<form id="searchForm" action="${ctx}/admin/exam/scan/${type}" method="post" class="breadcrumb form-search">
+		<input type="hidden" id="pageNumber" name="pageNumber" value="${query.pageNumber }"/>
+		<input type="hidden" id="pageSize" name="pageSize" value="${query.pageSize }"/>
+		
+		<c:if test="${subjectList!=null}">
+		<label>科目</label>
+		<select class="input-large" name="code">
+			<option value="">全部</option>
+			<c:forEach items="${subjectList}" var="subject">
+			<option value="${subject.code}" <c:if test="${subject.code==query.code}">selected</c:if>>${subject.code}-${subject.name}</option>
+			</c:forEach>
+		</select>
+		</c:if>
+		
+		<c:if test="${levelList!=null}">
+		<label>层次</label>
+		<select class="input-small" name="level">
+			<option value="">全部</option>
+			<c:forEach items="${levelList}" var="level">
+			<option value="${level}" <c:if test="${level==query.level}">selected</c:if>>${level}</option>
+			</c:forEach>
+		</select>
+		</c:if>
+		
+		<c:if test="${categoryList!=null}">
+		<label>专业类型</label>
+		<select class="input-small" name="category">
+			<option value="">全部</option>
+			<c:forEach items="${categoryList}" var="category">
+			<option value="${category}" <c:if test="${category==query.category}">selected</c:if>>${category}</option>
+			</c:forEach>
+		</select>
+		</c:if>
+		
+		<c:if test="${campusList!=null}">
+		<select class="input-large" name="campusName">
+			<option value="">全部</option>
+			<c:forEach items="${campusList}" var="campus">
+			<option value="${campus}" <c:if test="${campus==query.campusName}">selected</c:if>>${campus}</option>
+			</c:forEach>
+		</select>
+		</c:if>
+		&nbsp;
+		<input id="btnSubmit" class="btn btn-primary" type="button" value="查询" onclick="goSearch()"/>
+			
+	</form>
+	<table id="contentTable" class="table table-striped table-bordered table-condensed">
+		<thead>
+			<tr>
+				<th>名称</th>
+				<th>考生总数</th>
+				<th>已扫人数</th>
+				<th>进度</th>
+			</tr>
+		</thead>
+		<tbody>
+		<c:forEach items="${infoList}" var="info">
+			<tr>
+				<td>${info.name}</td>
+				<td>${info.totalCount}</td>
+				<td>${info.scanCount}</td>
+				<td>
+					<c:if test="${info.totalCount==0}">
+						0%
+					</c:if>
+					<c:if test="${info.totalCount>0}">
+						<fmt:formatNumber type="PERCENT" value="${info.scanCount/info.totalCount}"/>
+					</c:if>
+				</td>
+			</tr>
+		</c:forEach>
+		</tbody>
+	</table>
+	<div class="pagination">${query}</div>
+<script type="text/javascript">
+function page(n,s){
+	$("#pageNumber").val(n);
+	$("#pageSize").val(s);
+	$("#searchForm").submit();
+	return false;
+}
+function goSearch(){
+	$("#pageNumber").val(1);
+	$("#pageSize").val('${query.pageSize}');
+	$("#searchForm").submit();
+	return false;
+}
+</script>	
+</body>
 </html>
 </html>

+ 82 - 82
stmms-web/src/main/webapp/WEB-INF/views/modules/exam/scanPackage.jsp

@@ -1,83 +1,83 @@
-<%@ page contentType="text/html;charset=UTF-8" %>
-<%@ include file="/WEB-INF/views/include/taglib.jsp"%>
-<html>
-<head>
-	<title>扫描进度</title>
-	<meta name="decorator" content="default"/>
-	<%@include file="/WEB-INF/views/include/head.jsp" %>
-	<style type="text/css">.sort{color:#0663A2;cursor:pointer;}</style>
-</head>
-<body>
-	<ul class="nav nav-tabs">
-		<li><a href="${ctx}/admin/exam/scan/subject">按科目统计</a></li>
-		<li><a href="${ctx}/admin/exam/scan/campus">按学习中心统计</a></li>
-		<li class="active"><a href="${ctx}/admin/exam/scan/package">统计签到表</a></li>
-	</ul>
-	<form id="searchForm" action="${ctx}/admin/exam/scan/package" method="post" class="breadcrumb form-search">
-		<input type="hidden" id="pageNumber" name="pageNumber" value="${query.pageNumber }"/>
-		<input type="hidden" id="pageSize" name="pageSize" value="${query.pageSize }"/>
-
-		<label>编号</label>
-		<input type="text" name="code" value="${query.code}" class="input-medium"/>
-		&nbsp;
-		<label>状态</label>
-		<select name="upload" class="input-small">
-			<option value="">不限</option>
-			<option value="false" <c:if test="${query.upload!=null && query.upload==false}">selected</c:if>>未上传</option>
-			<option value="true" <c:if test="${query.upload!=null && query.upload==true}">selected</c:if>>已上传</option>
-		</select>
-		&nbsp;
-		<input id="btnSubmit" class="btn btn-primary" type="button" value="查询" onclick="goSearch()"/>
-		&nbsp;
-		<input id="btnTotalCount" class="btn" type="button" value="总数:${totalCount}"/>
-	</form>
-	<table id="contentTable" class="table table-striped table-bordered table-condensed">
-		<thead>
-			<tr>
-				<th>签到表编号</th>
-				<th>图片数量</th>
-				<th>查看图片</th>
-			</tr>
-		</thead>
-		<tbody>
-		<c:forEach items="${packageList}" var="pac">
-			<tr>
-				<td>${pac.code}</td>
-				<td>${pac.picCount}</td>
-				<td>
-				<a class="view-link" href="##" data-image-url="${pac.urlString}" data-title="${pac.code}">查看</a>
-				</td>
-			</tr>
-		</c:forEach>
-		</tbody>
-	</table>
-	<div class="pagination">${query}</div>
-	<%@include file="/WEB-INF/views/include/imageView.jsp" %>
-<script type="text/javascript">
-$(document).ready(function() {
-    /* new jBox('Image', {
-    	imageFade: 0,
-    	delayOpen: 0,
-    	delayClose: 0,
-    	maxHeight: $(window).height()*0.88
-    }); */
-    $('.view-link').click(function(){
-    	initImagePopover($(this).attr('data-title'), '${packageServer}', $(this).attr('data-image-url'));
-    	return false;
-    });
-});
-function page(n,s){
-	$("#pageNumber").val(n);
-	$("#pageSize").val(s);
-	$("#searchForm").submit();
-	return false;
-}
-function goSearch(){
-	$("#pageNumber").val(1);
-	$("#pageSize").val('${query.pageSize}');
-	$("#searchForm").submit();
-	return false;
-}
-</script>	
-</body>
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/WEB-INF/views/include/taglib.jsp"%>
+<html>
+<head>
+	<title>扫描进度</title>
+	<meta name="decorator" content="default"/>
+	<%@include file="/WEB-INF/views/include/head.jsp" %>
+	<style type="text/css">.sort{color:#0663A2;cursor:pointer;}</style>
+</head>
+<body>
+	<ul class="nav nav-tabs">
+		<li><a href="${ctx}/admin/exam/scan/subject">按科目统计</a></li>
+		<!--<li><a href="${ctx}/admin/exam/scan/campus">按学习中心统计</a></li>-->
+		<li class="active"><a href="${ctx}/admin/exam/scan/package">统计签到表</a></li>
+	</ul>
+	<form id="searchForm" action="${ctx}/admin/exam/scan/package" method="post" class="breadcrumb form-search">
+		<input type="hidden" id="pageNumber" name="pageNumber" value="${query.pageNumber }"/>
+		<input type="hidden" id="pageSize" name="pageSize" value="${query.pageSize }"/>
+
+		<label>编号</label>
+		<input type="text" name="code" value="${query.code}" class="input-medium"/>
+		&nbsp;
+		<label>状态</label>
+		<select name="upload" class="input-small">
+			<option value="">不限</option>
+			<option value="false" <c:if test="${query.upload!=null && query.upload==false}">selected</c:if>>未上传</option>
+			<option value="true" <c:if test="${query.upload!=null && query.upload==true}">selected</c:if>>已上传</option>
+		</select>
+		&nbsp;
+		<input id="btnSubmit" class="btn btn-primary" type="button" value="查询" onclick="goSearch()"/>
+		&nbsp;
+		<input id="btnTotalCount" class="btn" type="button" value="总数:${totalCount}"/>
+	</form>
+	<table id="contentTable" class="table table-striped table-bordered table-condensed">
+		<thead>
+			<tr>
+				<th>签到表编号</th>
+				<th>图片数量</th>
+				<th>查看图片</th>
+			</tr>
+		</thead>
+		<tbody>
+		<c:forEach items="${packageList}" var="pac">
+			<tr>
+				<td>${pac.code}</td>
+				<td>${pac.picCount}</td>
+				<td>
+				<a class="view-link" href="##" data-image-url="${pac.urlString}" data-title="${pac.code}">查看</a>
+				</td>
+			</tr>
+		</c:forEach>
+		</tbody>
+	</table>
+	<div class="pagination">${query}</div>
+	<%@include file="/WEB-INF/views/include/imageView.jsp" %>
+<script type="text/javascript">
+$(document).ready(function() {
+    /* new jBox('Image', {
+    	imageFade: 0,
+    	delayOpen: 0,
+    	delayClose: 0,
+    	maxHeight: $(window).height()*0.88
+    }); */
+    $('.view-link').click(function(){
+    	initImagePopover($(this).attr('data-title'), '${packageServer}', $(this).attr('data-image-url'));
+    	return false;
+    });
+});
+function page(n,s){
+	$("#pageNumber").val(n);
+	$("#pageSize").val(s);
+	$("#searchForm").submit();
+	return false;
+}
+function goSearch(){
+	$("#pageNumber").val(1);
+	$("#pageSize").val('${query.pageSize}');
+	$("#searchForm").submit();
+	return false;
+}
+</script>	
+</body>
 </html>
 </html>

+ 182 - 198
stmms-web/src/main/webapp/WEB-INF/views/modules/exam/studentList.jsp

@@ -1,199 +1,183 @@
-<%@ page contentType="text/html;charset=UTF-8" %>
-<%@ include file="/WEB-INF/views/include/taglib.jsp"%>
-<html>
-<head>
-	<title>考生管理</title>
-	<meta name="decorator" content="default"/>
-	<%@include file="/WEB-INF/views/include/head.jsp" %>
-	<style type="text/css">.sort{color:#0663A2;cursor:pointer;}</style>
-</head>
-<body>
-	<div id="importBox" class="hide">
-		<form id="importForm" action="${ctx}/admin/exam/student/import" method="post" enctype="multipart/form-data"
-			style="padding-left:20px;text-align:center;" class="form-search" onsubmit="loading('正在导入,请稍等...');"><br/>
-			<input id="uploadFile" name="file" type="file" style="width:330px"/><br/><br/>  
-			<input id="btnImportSubmit" class="btn btn-primary" type="submit" value="   导    入   "/>
-			<a href="${ctx}/admin/exam/student/template">下载模板</a>
-		</form>
-	</div>
-	<form id="searchForm"  action="${ctx}/admin/exam-param/student" method="post" class="breadcrumb form-search">
-		<input type="hidden" id="pageNumber" name="pageNumber" value="${query.pageNumber }"/>
-		<input type="hidden" id="pageSize" name="pageSize" value="${query.pageSize}"/>
-		<div>
-			<label>姓名</label>
-			<input type="text" name="name" value="${query.name}"  maxlength="10" class="input-mini"/>
-			<label>准考证号</label>
-			<input type="text" name="examNumber" value="${query.examNumber}" maxlength="50" class="input-small"/>
-			<label>学号</label>
-			<input type="text" name="studentCode" value="${query.studentCode}" maxlength="30" class="input-small"/>		
-			<label>学习中心</label>
-			<select class="input-large" id="campusName" name="campusName">
-				<option value="">请选择</option>
-				<c:forEach items="${campusList }" var="campus">
-					<option value="${campus}" <c:if test="${query.campusName eq campus }">selected</c:if>>${campus}</option>
-				</c:forEach>
-			</select>
-			<label>科目</label>
-			<select class="input-large" id="subjectCode" name="subjectCode">
-				<option value="">请选择</option>
-				<c:forEach items="${subjectList }" var="subject">
-					<option value="${subject.code }" <c:if test="${query.subjectCode eq subject.code }">selected</c:if>>${subject.code}-${subject.name}</option>
-				</c:forEach>
-			</select>
-			<br><br>
-			<label>层次</label>
-			<select class="input-small" id="subjectLevel" name="subjectLevel">
-				<option value="">请选择</option>
-				<c:forEach items="${levelList }" var="level">
-					<option value="${level}" <c:if test="${query.subjectLevel eq level }">selected</c:if>>${level}</option>
-				</c:forEach>
-			</select>
-			<label>专业类型</label>
-			<select class="input-small" id="subjectCategory" name="subjectCategory">
-				<option value="">请选择</option>
-				<c:forEach items="${categoryList }" var="category">
-					<option value="${category}" <c:if test="${query.subjectCategory eq category }">selected</c:if>>${category}</option>
-				</c:forEach>
-			</select>
-			
-			<label>状态</label>
-			<select id="upload" name="upload" class="input-small">
-				<option value="">不限</option>
-				<option value="1" <c:if test="${query.upload!=null && query.upload==true}">selected</c:if>>已上传</option>
-				<option value="0" <c:if test="${query.upload!=null && query.upload==false}">selected</c:if>>未上传</option>
-			</select>
-			<select id="absent" name="absent" class="input-small">
-				<option value="">不限</option>
-				<option value="1" <c:if test="${query.absent!=null && query.absent==true}">selected</c:if>>缺考</option>
-				<option value="0" <c:if test="${query.absent!=null && query.absent==false}">selected</c:if>>正常</option>
-			</select>
-			<label>签到表编号</label>
-			<input type="text" name="packageCode" value="${query.packageCode}" maxlength="30" class="input-small"/>
-			<label>批次编号</label>
-			<input type="text" name="batchCode" value="${query.batchCode}" maxlength="30" class="input-small"/>
-			<br><br>
-			&nbsp;<input id="btnSubmit" class="btn btn-primary" type="button" value="查询" onclick="goSearch()"/>
-			<c:if test="${web_user.schoolAdmin==true}">
-			&nbsp;<a href="${ctx}/admin/exam/student/add" class="btn btn-primary">添加</a>
-			&nbsp;<input id="btnImport" class="btn" type="button" value="导入"/>
-			</c:if>
-			<c:if test="${query.totalCount>0 && query.totalCount<=10000}">
-			&nbsp;<input id="export-button" class="btn" type="button" value="导出"/>
-			</c:if>
-		</div>
-	</form>
-	<tags:message content="${message}"/>
-	<table id="contentTable" class="table table-striped table-bordered table-condensed">
-		<thead>
-			<tr>
-				<th>准考证号</th>
-				<th>姓名</th>
-				<th>学号</th>
-				<th>科目</th>
-				<th>层次</th>
-				<th>专业类型</th>
-				<th>学习中心</th>
-				<th>状态</th>
-				<th>批次编号</th>
-				<th>签到表编号</th>
-				<th>考试备注信息</th>
-				<th>操作</th>
-			</tr>
-		</thead>
-		<tbody>
-		<c:forEach items="${studentList}" var="student">
-			<tr>
-				<td>${student.examNumber}</td>
-				<td>${student.name}</td>
-				<td>${student.studentCode}</td>
-				<td>
-				    <c:if test="${web_user.schoolAdmin==true}">
-				    <a href="${ctx}/admin/exam/subject/edit?code=${student.subjectCode}">
-				    ${student.subjectCode}-${student.subject.name}&nbsp;${student.subject.remark}
-				    </a>
-				    </c:if>
-				    <c:if test="${web_user.schoolAdmin==false}">
-                    ${student.subjectCode}-${student.subject.name}&nbsp;${student.subject.remark}
-                    </c:if>
-				</td>
-				<td>${student.subject.level}</td>
-				<td>${student.subject.category}</td>
-				<td>${student.campusName}</td>
-				<td>
-				<c:if test="${student.upload==true}">
-				<a class="sheet-link" href="##" data-sheet-url="${student.sheetUrlString}" data-answer-url="<c:if test="${student.answerUrl!=null}">${cardServer}${student.answerUrl}</c:if>" data-title="${student.examNumber}&nbsp;&nbsp;${student.name}&nbsp;&nbsp;客观总分${student.objectiveScoreString}&nbsp;&nbsp;主观总分${student.subjectiveScoreString}&nbsp;&nbsp;全卷总分${student.totalScoreString}">已上传</a>
-				&nbsp;
-				<c:if test="${student.manualAbsent==true}">
-				人工指定
-				</c:if>
-				<c:if test="${student.absent==true}">
-				缺考
-				</c:if>
-				<c:if test="${student.absent==false}">
-				正常
-				</c:if>
-				</c:if>
-				
-				<c:if test="${student.upload==false}">
-				未上传
-				</c:if>
-				
-				</td>
-				<td>${student.batchCode}</td>
-				<td>
-				<a id="packageCode" href="${ctx}/admin/exam/scan/package?code=${student.packageCode}">${student.packageCode}</a>
-				</td>
-				<td>${student.examSite}&nbsp;${student.examRoom}</td>
-				<td>
-				    <c:if test="${web_user.schoolAdmin==true}">
-    				<a href="${ctx}/admin/exam/student/update?id=${student.id}">修改</a>
-					&nbsp;
-    				<a href="${ctx}/admin/exam/student/delete?id=${student.id}" onclick="return confirmx('确认要删除该考生吗?', this.href)">删除</a>
-					</c:if>
-				</td>
-			</tr>
-		</c:forEach>
-		</tbody>
-	</table>
-	<div class="pagination">${query}</div>
-	<%@include file="/WEB-INF/views/include/sheetView.jsp" %>
-	<%@include file="/WEB-INF/views/include/imageView.jsp" %>
-<script type="text/javascript">
-
-$(document).ready(function() {
-    $('.sheet-link').click(function(){
-    	initSheetPopover($(this).attr('data-title'), '${imageServer}', $(this).attr('data-sheet-url'), $(this).attr('data-answer-url'));
-    	return false;
-    });
-});
-
-$('#packageCode').click(function(){
-	console.log(1111);
-	$('#collapse1 > div > ul > li:nth-child(5)').addClass('active');
-});
-
-$("#btnImport").click(function(){
-	$.jBox($("#importBox").html(), {title:"导入数据", buttons:{"关闭":true}, 
-		bottomText:"导入文件不能超过5M,仅允许导入“xls”或“xlsx”格式文件!"});
-});
-$("#export-button").click(function(){
-	$("#searchForm").attr("action","${ctx}/admin/exam/student/export");
-	$("#searchForm").submit();
-});
-function page(n,s){
-	$("#pageNumber").val(n);
-	$("#pageSize").val(s);
-	$("#searchForm").attr("action","${ctx}/admin/exam/student");
-	$("#searchForm").submit();
-	return false;
-}
-function goSearch(){
-	$("#pageNumber").val(1);
-	$("#pageSize").val('${query.pageSize}');
-	$("#searchForm").attr("action","${ctx}/admin/exam/student");
-	$("#searchForm").submit();
-	return false;
-}
-</script>	
-</body>
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/WEB-INF/views/include/taglib.jsp"%>
+<html>
+<head>
+	<title>考生管理</title>
+	<meta name="decorator" content="default"/>
+	<%@include file="/WEB-INF/views/include/head.jsp" %>
+	<style type="text/css">.sort{color:#0663A2;cursor:pointer;}</style>
+</head>
+<body>
+	<div id="importBox" class="hide">
+		<form id="importForm" action="${ctx}/admin/exam/student/import" method="post" enctype="multipart/form-data"
+			style="padding-left:20px;text-align:center;" class="form-search" onsubmit="loading('正在导入,请稍等...');"><br/>
+			<input id="uploadFile" name="file" type="file" style="width:330px"/><br/><br/>  
+			<input id="btnImportSubmit" class="btn btn-primary" type="submit" value="   导    入   "/>
+			<a href="${ctx}/admin/exam/student/template">下载模板</a>
+		</form>
+	</div>
+	<form id="searchForm"  action="${ctx}/admin/exam-param/student" method="post" class="breadcrumb form-search">
+		<input type="hidden" id="pageNumber" name="pageNumber" value="${query.pageNumber }"/>
+		<input type="hidden" id="pageSize" name="pageSize" value="${query.pageSize}"/>
+		<div>
+			<label>姓名</label>
+			<input type="text" name="name" value="${query.name}"  maxlength="10" class="input-mini"/>
+			<label>准考证号</label>
+			<input type="text" name="examNumber" value="${query.examNumber}" maxlength="50" class="input-small"/>
+			<label>学号</label>
+			<input type="text" name="studentCode" value="${query.studentCode}" maxlength="30" class="input-small"/>
+			<label>科目</label>
+			<select class="input-large" id="subjectCode" name="subjectCode">
+				<option value="">请选择</option>
+				<c:forEach items="${subjectList }" var="subject">
+					<option value="${subject.code }" <c:if test="${query.subjectCode eq subject.code }">selected</c:if>>${subject.code}-${subject.name}</option>
+				</c:forEach>
+			</select>
+			<br><br>
+			<label>层次</label>
+			<select class="input-small" id="subjectLevel" name="subjectLevel">
+				<option value="">请选择</option>
+				<c:forEach items="${levelList }" var="level">
+					<option value="${level}" <c:if test="${query.subjectLevel eq level }">selected</c:if>>${level}</option>
+				</c:forEach>
+			</select>
+			<label>专业类型</label>
+			<select class="input-small" id="subjectCategory" name="subjectCategory">
+				<option value="">请选择</option>
+				<c:forEach items="${categoryList }" var="category">
+					<option value="${category}" <c:if test="${query.subjectCategory eq category }">selected</c:if>>${category}</option>
+				</c:forEach>
+			</select>
+			
+			<label>状态</label>
+			<select id="upload" name="upload" class="input-small">
+				<option value="">不限</option>
+				<option value="1" <c:if test="${query.upload!=null && query.upload==true}">selected</c:if>>已上传</option>
+				<option value="0" <c:if test="${query.upload!=null && query.upload==false}">selected</c:if>>未上传</option>
+			</select>
+			<select id="absent" name="absent" class="input-small">
+				<option value="">不限</option>
+				<option value="1" <c:if test="${query.absent!=null && query.absent==true}">selected</c:if>>缺考</option>
+				<option value="0" <c:if test="${query.absent!=null && query.absent==false}">selected</c:if>>正常</option>
+			</select>
+			<label>签到表编号</label>
+			<input type="text" name="packageCode" value="${query.packageCode}" maxlength="30" class="input-small"/>
+			<label>批次编号</label>
+			<input type="text" name="batchCode" value="${query.batchCode}" maxlength="30" class="input-small"/>
+			<br><br>
+			&nbsp;<input id="btnSubmit" class="btn btn-primary" type="button" value="查询" onclick="goSearch()"/>
+			<c:if test="${web_user.schoolAdmin==true}">
+			&nbsp;<a href="${ctx}/admin/exam/student/add" class="btn btn-primary">添加</a>
+			&nbsp;<input id="btnImport" class="btn" type="button" value="导入"/>
+			</c:if>
+			<c:if test="${query.totalCount>0 && query.totalCount<=10000}">
+			&nbsp;<input id="export-button" class="btn" type="button" value="导出"/>
+			</c:if>
+		</div>
+	</form>
+	<tags:message content="${message}"/>
+	<table id="contentTable" class="table table-striped table-bordered table-condensed">
+		<thead>
+			<tr>
+				<th>准考证号</th>
+				<th>姓名</th>
+				<th>学号</th>
+				<th>科目</th>
+				<th>试卷类型</th>
+				<th>层次</th>
+				<th>专业类型</th>
+				<th>状态</th>
+				<th>批次编号</th>
+				<th>签到表编号</th>
+				<th>考试备注信息</th>
+				<th>操作</th>
+			</tr>
+		</thead>
+		<tbody>
+		<c:forEach items="${studentList}" var="student">
+			<tr>
+				<td>${student.examNumber}</td>
+				<td>${student.name}</td>
+				<td>${student.studentCode}</td>
+				<td>${student.subjectCode}-${student.subjectName}</td>
+				<td>${student.paperType}</td>
+				<td>${student.subject.level}</td>
+				<td>${student.subject.category}</td>
+				<td>
+				<c:if test="${student.upload==true}">
+				<a class="sheet-link" href="##" data-sheet-url="${student.sheetUrlString}" data-answer-url="<c:if test="${student.answerUrl!=null}">${cardServer}${student.answerUrl}</c:if>" data-title="${student.examNumber}&nbsp;&nbsp;${student.name}&nbsp;&nbsp;客观总分${student.objectiveScoreString}&nbsp;&nbsp;主观总分${student.subjectiveScoreString}&nbsp;&nbsp;全卷总分${student.totalScoreString}">已上传</a>
+				&nbsp;
+				<c:if test="${student.manualAbsent==true}">
+				人工指定
+				</c:if>
+				<c:if test="${student.absent==true}">
+				缺考
+				</c:if>
+				<c:if test="${student.absent==false}">
+				正常
+				</c:if>
+				</c:if>
+				
+				<c:if test="${student.upload==false}">
+				未上传
+				</c:if>
+				
+				</td>
+				<td>${student.batchCode}</td>
+				<td>
+				<a id="packageCode" href="${ctx}/admin/exam/scan/package?code=${student.packageCode}">${student.packageCode}</a>
+				</td>
+				<td>${student.examSite}&nbsp;${student.examRoom}</td>
+				<td>
+				    <c:if test="${web_user.schoolAdmin==true}">
+    				<a href="${ctx}/admin/exam/student/update?id=${student.id}">修改</a>
+					&nbsp;
+    				<a href="${ctx}/admin/exam/student/delete?id=${student.id}" onclick="return confirmx('确认要删除该考生吗?', this.href)">删除</a>
+					</c:if>
+				</td>
+			</tr>
+		</c:forEach>
+		</tbody>
+	</table>
+	<div class="pagination">${query}</div>
+	<%@include file="/WEB-INF/views/include/sheetView.jsp" %>
+	<%@include file="/WEB-INF/views/include/imageView.jsp" %>
+<script type="text/javascript">
+
+$(document).ready(function() {
+    $('.sheet-link').click(function(){
+    	initSheetPopover($(this).attr('data-title'), '${imageServer}', $(this).attr('data-sheet-url'), $(this).attr('data-answer-url'));
+    	return false;
+    });
+});
+
+$('#packageCode').click(function(){
+	console.log(1111);
+	$('#collapse1 > div > ul > li:nth-child(5)').addClass('active');
+});
+
+$("#btnImport").click(function(){
+	$.jBox($("#importBox").html(), {title:"导入数据", buttons:{"关闭":true}, 
+		bottomText:"导入文件不能超过5M,仅允许导入“xls”或“xlsx”格式文件!"});
+});
+$("#export-button").click(function(){
+	$("#searchForm").attr("action","${ctx}/admin/exam/student/export");
+	$("#searchForm").submit();
+});
+function page(n,s){
+	$("#pageNumber").val(n);
+	$("#pageSize").val(s);
+	$("#searchForm").attr("action","${ctx}/admin/exam/student");
+	$("#searchForm").submit();
+	return false;
+}
+function goSearch(){
+	$("#pageNumber").val(1);
+	$("#pageSize").val('${query.pageSize}');
+	$("#searchForm").attr("action","${ctx}/admin/exam/student");
+	$("#searchForm").submit();
+	return false;
+}
+</script>	
+</body>
 </html>
 </html>

+ 5 - 2
stmms-web/src/main/webapp/WEB-INF/views/modules/exam/trialList.jsp

@@ -11,8 +11,8 @@
     <ul class="nav nav-tabs">
     <ul class="nav nav-tabs">
         <li><a href="${ctx}/admin/exam/group?subjectCode=${query.subjectCode}">大题管理</a></li>
         <li><a href="${ctx}/admin/exam/group?subjectCode=${query.subjectCode}">大题管理</a></li>
         <li><a href="${ctx}/admin/exam/marker?subjectCode=${query.subjectCode}">评卷员管理</a></li>
         <li><a href="${ctx}/admin/exam/marker?subjectCode=${query.subjectCode}">评卷员管理</a></li>
-        <li><a href="${ctx}/admin/exam/library?subjectCode=${query.subjectCode}">评卷任务管理</a></li>
         <li class="active"><a href="##">试评管理</a></li>
         <li class="active"><a href="##">试评管理</a></li>
+        <li><a href="${ctx}/admin/exam/library?subjectCode=${query.subjectCode}">正评管理</a></li>
         <li><a href="${ctx}/admin/exam/arbitrate?subjectCode=${query.subjectCode}">仲裁管理</a></li>
         <li><a href="${ctx}/admin/exam/arbitrate?subjectCode=${query.subjectCode}">仲裁管理</a></li>
     </ul>
     </ul>
 	<form id="searchForm" action="${ctx}/admin/exam/trial" method="post" class="breadcrumb form-search">
 	<form id="searchForm" action="${ctx}/admin/exam/trial" method="post" class="breadcrumb form-search">
@@ -32,8 +32,11 @@
                 </c:forEach>
                 </c:forEach>
             </select>
             </select>
             <label>准考证号</label>
             <label>准考证号</label>
-            <input type="text" name="examNumber" value="${query.examNumber}" maxlength="10" class="input-medium"/>
+            <input type="text" name="examNumber" value="${query.examNumber}" maxlength="20" class="input-medium"/>
 			&nbsp;
 			&nbsp;
+			<label>考生编号</label>
+            <input type="text" name="studentId" value="${query.studentId}" maxlength="20" class="input-medium"/>
+            &nbsp;
 			<input id="btnSubmit" class="btn btn-primary" type="button" value="查询" onclick="goSearch()"/>
 			<input id="btnSubmit" class="btn btn-primary" type="button" value="查询" onclick="goSearch()"/>
 		</div>
 		</div>
 	</form>
 	</form>

+ 10 - 12
stmms-web/src/main/webapp/static/mark-new/js/mark-control.js

@@ -510,18 +510,16 @@ MarkControl.prototype.submitTask = function(submitUrl) {
         	}
         	}
         }
         }
         
         
-        var submitObj = $.extend(true, {}, task);
-        submitObj.markStepList = undefined;
-        submitObj.pictureUrls = undefined;
-        submitObj.pictureConfig = undefined;
-        submitObj.sheetUrls = undefined;
-        submitObj.paperUrl = undefined;
-        submitObj.answerUrl = undefined;
-        submitObj.imageData = undefined;
-        submitObj.markFinish = undefined;
-        submitObj.markTime = undefined;
-        submitObj.arbitrationList = undefined;
-        submitObj.spent = new Date().getTime() - submitObj.spent;
+        var submitObj = {
+        	statusValue: task.statusValue,
+        	studentId: task.studentId,
+        	libraryId: task.libraryId,
+        	totalScore: task.totalScore,
+        	scoreList: task.scoreList,
+        	trackList: task.trackList,
+        	tagList: task.tagList,
+        	spent: new Date().getTime() - task.spent
+        }
 
 
         this.trigger('task.submit.before');
         this.trigger('task.submit.before');
         
         

+ 1 - 1
stmms-web/src/main/webapp/static/mark-new/js/modules/mark-status.js

@@ -148,7 +148,7 @@ MarkStatus.prototype.render = function(status) {
 
 
 MarkStatus.prototype.status_dom = '<p class="text">\
 MarkStatus.prototype.status_dom = '<p class="text">\
 <i id="subject-title" style="cursor:pointer"><em id="subject-name"></em></i>\
 <i id="subject-title" style="cursor:pointer"><em id="subject-name"></em></i>\
-<i id="status-name"></i>\
+<i id="status-title"><em id="status-name"></em></i>\
 <i id="library-title" style="display:none">任务编号<em id="library-number"></em></i>\
 <i id="library-title" style="display:none">任务编号<em id="library-number"></em></i>\
 <i id="student-title" style="display:none">考生编号<em id="student-number"></em></i>\
 <i id="student-title" style="display:none">考生编号<em id="student-number"></em></i>\
 <i id="objective-area" style="display:none">客观得分<em id="objective-score"></em></i>\
 <i id="objective-area" style="display:none">客观得分<em id="objective-score"></em></i>\

+ 13 - 11
stmms-web/src/main/webapp/static/mark-track/js/mark-control.js

@@ -186,6 +186,9 @@ MarkControl.prototype.initTriggers = function(option) {
     });
     });
     this.on('task.load.finish', this, function(event, context, eventObject) {
     this.on('task.load.finish', this, function(event, context, eventObject) {
         self.container.centerNavbar.find('a:first').trigger('click');
         self.container.centerNavbar.find('a:first').trigger('click');
+        if(context.task!=undefined){
+        	context.task.spent = new Date().getTime();
+        }
     });
     });
     this.on('task.get.finish', this, function(event, context, eventObject) {
     this.on('task.get.finish', this, function(event, context, eventObject) {
         context.prefetchCallback = undefined;
         context.prefetchCallback = undefined;
@@ -517,17 +520,16 @@ MarkControl.prototype.submitTask = function(submitUrl) {
         	}
         	}
         }
         }
         
         
-        var submitObj = $.extend(true, {}, task);
-        submitObj.markStepList = undefined;
-        submitObj.pictureUrls = undefined;
-        submitObj.pictureConfig = undefined;
-        submitObj.sheetUrls = undefined;
-        submitObj.paperUrl = undefined;
-        submitObj.answerUrl = undefined;
-        submitObj.imageData = undefined;
-        submitObj.markFinish = undefined;
-        submitObj.markTime = undefined;
-        submitObj.arbitrationList = undefined;
+        var submitObj = {
+        	statusValue: task.statusValue,
+        	studentId: task.studentId,
+        	libraryId: task.libraryId,
+        	totalScore: task.totalScore,
+        	scoreList: task.scoreList,
+        	trackList: task.trackList,
+        	tagList: task.tagList,
+        	spent: new Date().getTime() - task.spent
+        }
         
         
         this.trigger('task.submit.before');
         this.trigger('task.submit.before');
         this.trigger('mark.specialTag.before');
         this.trigger('mark.specialTag.before');