浏览代码

新增复核时间;串联复核流程

ting.yin 4 年之前
父节点
当前提交
0c45728f3a

+ 11 - 8
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/dao/ExamStudentDao.java

@@ -2,6 +2,7 @@ package cn.com.qmth.stmms.biz.exam.dao;
 
 import cn.com.qmth.stmms.biz.exam.model.ExamStudent;
 import cn.com.qmth.stmms.common.enums.SubjectiveStatus;
+
 import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.jpa.repository.Modifying;
@@ -11,8 +12,8 @@ import org.springframework.data.repository.PagingAndSortingRepository;
 import java.util.Date;
 import java.util.List;
 
-public interface ExamStudentDao
-        extends PagingAndSortingRepository<ExamStudent, Integer>, JpaSpecificationExecutor<ExamStudent> {
+public interface ExamStudentDao extends PagingAndSortingRepository<ExamStudent, Integer>,
+        JpaSpecificationExecutor<ExamStudent> {
 
     public List<ExamStudent> findByExamId(int examId, Pageable pageable);
 
@@ -69,8 +70,8 @@ public interface ExamStudentDao
 
     @Modifying
     @Query("update ExamStudent s set s.subjectiveStatus=?3, s.subjectiveScore=?4, s.subjectiveScoreList=?5 where s.examId=?1 and s.subjectCode=?2")
-    public void updateSubjectiveStatusAndScore(Integer examId, String subjetCode, SubjectiveStatus status, double score,
-            String scoreList);
+    public void updateSubjectiveStatusAndScore(Integer examId, String subjetCode, SubjectiveStatus status,
+            double score, String scoreList);
 
     @Modifying
     @Query("update ExamStudent s set s.subjectiveStatus=?3 where s.examId=?1 and s.subjectCode=?2 and not exists "
@@ -141,8 +142,7 @@ public interface ExamStudentDao
 
     @Query("select s from ExamStudent s where s.examId=?1 and s.subjectCode=?2 and s.upload=true and s.absent=false and s.breach=false and s.uploadTime!=null "
             + "and not exists (select l.id from MarkLibrary l where l.studentId=s.id and l.groupNumber=?3)")
-    public List<ExamStudent> findUnLibraryStudent(Integer examId, String subjectCode, Integer groupNumber,
-            Pageable page);
+    public List<ExamStudent> findUnLibraryStudent(Integer examId, String subjectCode, Integer groupNumber, Pageable page);
 
     @Query("select s from ExamStudent s where s.examId=?1 and s.subjectCode=?2 and s.upload=true and s.absent=false and s.breach=false and s.uploadTime!=null and s.uploadTime>=?4 "
             + "and not exists (select l.id from MarkLibrary l where l.studentId=s.id and l.groupNumber=?3)")
@@ -169,8 +169,7 @@ public interface ExamStudentDao
     public List<String> findDistinctClassName(Integer examId, String subjectCode);
 
     @Query(value = "select s.objective_score+s.subjective_score from eb_exam_student s where s.exam_id=?1 and s.subject_code=?2 and s.is_upload =true and s.is_absent=false and s.is_breach=false order by s.objective_score+s.subjective_score desc limit ?3 ", nativeQuery = true)
-    public List<Double> findHighCountTotalSocreByExamIdAndSubjectCode(Integer examId, String subjectCode,
-            int highCount);
+    public List<Double> findHighCountTotalSocreByExamIdAndSubjectCode(Integer examId, String subjectCode, int highCount);
 
     @Query(value = "select s.objective_score+s.subjective_score from eb_exam_student s where s.exam_id=?1 and s.subject_code=?2 and s.is_upload =true and s.is_absent=false and s.is_breach=false order by s.objective_score+s.subjective_score asc limit ?3 ", nativeQuery = true)
     public List<Double> findLowCountTotalSocreByExamIdAndSubjectCode(Integer examId, String subjectCode, int lowCount);
@@ -190,4 +189,8 @@ public interface ExamStudentDao
     @Query("select s.className from ExamStudent s where s.examId=?1 group by s.className")
     public List<String> findDistinctClassName(Integer examId);
 
+    @Modifying
+    @Query("update ExamStudent s set s.subjectiveStatus=?2, s.inspectTime=?3 where s.id=?1 ")
+    public void updateSubjectiveStatusAndTime(Integer studentId, SubjectiveStatus status, Date inspectTime);
+
 }

+ 17 - 2
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/model/ExamStudent.java

@@ -4,10 +4,12 @@ import cn.com.qmth.stmms.biz.mark.model.ProblemType;
 import cn.com.qmth.stmms.biz.utils.ScoreItem;
 import cn.com.qmth.stmms.common.annotation.ExcelField;
 import cn.com.qmth.stmms.common.enums.SubjectiveStatus;
+
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.lang.math.RandomUtils;
 
 import javax.persistence.*;
+
 import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Date;
@@ -203,6 +205,7 @@ public class ExamStudent implements Serializable {
     /**
      * 主观题状态
      */
+    @Enumerated(EnumType.STRING)
     @Column(name = "subjective_status", length = 16, nullable = false)
     private SubjectiveStatus subjectiveStatus;
 
@@ -253,6 +256,10 @@ public class ExamStudent implements Serializable {
     @Column(name = "teacher", length = 64, nullable = false)
     private String teacher;
 
+    @Temporal(TemporalType.TIMESTAMP)
+    @Column(name = "inspect_time", nullable = true)
+    private Date inspectTime;
+
     /**
      * 科目备注信息
      */
@@ -784,8 +791,16 @@ public class ExamStudent implements Serializable {
     }
 
     public void randomSecretNumber() {
-        secretNumber = String.valueOf(
-                (int) (RandomUtils.nextDouble() * (SECRET_NUMBER_END - SECRET_NUMBER_START)) + SECRET_NUMBER_START);
+        secretNumber = String.valueOf((int) (RandomUtils.nextDouble() * (SECRET_NUMBER_END - SECRET_NUMBER_START))
+                + SECRET_NUMBER_START);
+    }
+
+    public Date getInspectTime() {
+        return inspectTime;
+    }
+
+    public void setInspectTime(Date inspectTime) {
+        this.inspectTime = inspectTime;
     }
 
 }

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

@@ -101,8 +101,7 @@ public interface ExamStudentService {
     public Long countByExamIdAndSubjectCodeAndCampus(Integer examId, String code, String campusName, boolean upload,
             boolean absent);
 
-    public long countByNoAbsentAndBreach(int examId, String subjectCode, boolean upload, boolean absent,
-            boolean breach);
+    public long countByNoAbsentAndBreach(int examId, String subjectCode, boolean upload, boolean absent, boolean breach);
 
     public long countByAbsentAndBreach(int examId, String subjectCode, Boolean absent, Boolean breach);
 
@@ -140,4 +139,6 @@ public interface ExamStudentService {
     public List<ExamStudent> findBySchoolIdAndStudentCodeAndName(Integer schoolId, String studentCode, String name);
 
     public List<String> findDistinctClassName(Integer examId);
+
+    public void updateSubjectiveStatusAndTime(Integer studentId, SubjectiveStatus inspected, Date inspectTime);
 }

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

@@ -17,6 +17,7 @@ import cn.com.qmth.stmms.biz.utils.PictureConfigTransform;
 import cn.com.qmth.stmms.biz.utils.PictureTag;
 import cn.com.qmth.stmms.biz.utils.ScoreItem;
 import cn.com.qmth.stmms.common.enums.SubjectiveStatus;
+
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.lang.math.RandomUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -28,6 +29,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.persistence.criteria.*;
+
 import java.text.DecimalFormat;
 import java.util.*;
 
@@ -155,8 +157,7 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
             if (student.getSecretNumber() == null) {
                 student.randomSecretNumber();
                 while (secretNumberSet.contains(student.getSecretNumber())
-                        || studentDao.countByExamIdAndSecretNumber(student.getExamId(), student.getSecretNumber())
-                        > 0) {
+                        || studentDao.countByExamIdAndSecretNumber(student.getExamId(), student.getSecretNumber()) > 0) {
                     student.randomSecretNumber();
                 }
             }
@@ -376,10 +377,9 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
     @Transactional
     public boolean updateScanInfo(ExamStudent student) {
         student.setUploadTime(new Date());
-        return studentDao
-                .updateScanInfo(student.getId(), student.getSheetCount(), student.getSliceCount(), student.getAnswers(),
-                        student.getBatchCode(), student.getPaperType(), student.isAbsent(), student.getUploadTime(),
-                        student.getObjectiveScore(), student.getObjectiveScoreList()) > 0;
+        return studentDao.updateScanInfo(student.getId(), student.getSheetCount(), student.getSliceCount(),
+                student.getAnswers(), student.getBatchCode(), student.getPaperType(), student.isAbsent(),
+                student.getUploadTime(), student.getObjectiveScore(), student.getObjectiveScoreList()) > 0;
     }
 
     @Override
@@ -446,14 +446,14 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
             @Override
             public Predicate toPredicate(Root<ExamStudent> root, CriteriaQuery<?> cQuery, CriteriaBuilder cb) {
                 List<Predicate> predicates = new LinkedList<Predicate>();
-                Expression<Double> evaluationItemSum = cb
-                        .sum(root.get("objectiveScore").as(Double.class), root.get("subjectiveScore").as(Double.class));
+                Expression<Double> evaluationItemSum = cb.sum(root.get("objectiveScore").as(Double.class),
+                        root.get("subjectiveScore").as(Double.class));
                 if (query.getStartScroe() != null) {
                     Predicate predicate1 = cb.ge(evaluationItemSum, query.getStartScroe());
                     Predicate predicate2 = cb.le(evaluationItemSum, query.getEndScroe());
                     if (query.getStartScroe() == 0) {
-                        Predicate predicate = cb
-                                .or(cb.equal(root.get("absent"), true), cb.equal(root.get("breach"), true));
+                        Predicate predicate = cb.or(cb.equal(root.get("absent"), true),
+                                cb.equal(root.get("breach"), true));
                         Predicate predicate3 = cb.and(predicate1, predicate2);
                         predicates.add(cb.or(predicate, predicate3));
                     } else {
@@ -481,7 +481,7 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
                     }
                     predicates.add(root.get("id").in(list));
                 }
-                if (query.getStudentIds() != null) {
+                if (query.getStudentIds() != null && query.getStudentIds().size() > 0) {
                     predicates.add(root.get("id").in(query.getStudentIds()));
                 }
                 if (StringUtils.isNotBlank(query.getExamNumber())) {
@@ -626,9 +626,8 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
                 if (StringUtils.isNotBlank(query.getTeacher())) {
                     predicates.add(cb.equal(root.get("teacher"), query.getTeacher()));
                 }
-                return predicates.isEmpty() ?
-                        cb.conjunction() :
-                        cb.and(predicates.toArray(new Predicate[predicates.size()]));
+                return predicates.isEmpty() ? cb.conjunction() : cb.and(predicates.toArray(new Predicate[predicates
+                        .size()]));
             }
         };
     }
@@ -647,8 +646,8 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
     @Override
     public ExamStudent findBySchoolIdAndSubjectCodeAndStudentCodeAndRemark(Integer schoolId, String subjectCode,
             String studentCode, String examSeqCode) {
-        return studentDao
-                .findBySchoolIdAndSubjectCodeAndStudentCodeAndRemark(schoolId, subjectCode, studentCode, examSeqCode);
+        return studentDao.findBySchoolIdAndSubjectCodeAndStudentCodeAndRemark(schoolId, subjectCode, studentCode,
+                examSeqCode);
     }
 
     @Override
@@ -687,9 +686,9 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
         query.setPageNumber(1);
         query.setPageSize(1);
         query.setSort(new Sort(Direction.ASC, "uploadTime", "id"));
-        List<ExamStudent> list = minUploadTime != null ?
-                studentDao.findUnLibraryStudent(examId, subjectCode, groupNumber, minUploadTime, query) :
-                studentDao.findUnLibraryStudent(examId, subjectCode, groupNumber, query);
+        List<ExamStudent> list = minUploadTime != null ? studentDao.findUnLibraryStudent(examId, subjectCode,
+                groupNumber, minUploadTime, query) : studentDao.findUnLibraryStudent(examId, subjectCode, groupNumber,
+                query);
         return list.isEmpty() ? null : list.get(0);
     }
 
@@ -728,8 +727,7 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
         return countByQuery(query);
     }
 
-    public long countByNoAbsentAndBreach(int examId, String subjectCode, boolean upload, boolean absent,
-            boolean breach) {
+    public long countByNoAbsentAndBreach(int examId, String subjectCode, boolean upload, boolean absent, boolean breach) {
         ExamStudentSearchQuery query = new ExamStudentSearchQuery();
         query.setExamId(examId);
         query.setSubjectCode(subjectCode);
@@ -822,8 +820,8 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
     @Override
     public Map<MarkGroup, List<OriginTag>> getSliceTags(ExamStudent student) {
         Map<MarkGroup, List<OriginTag>> tagMap = new HashMap<MarkGroup, List<OriginTag>>();
-        List<ExamQuestion> questions = questionService
-                .findByExamAndSubjectAndObjective(student.getExamId(), student.getSubjectCode(), false);
+        List<ExamQuestion> questions = questionService.findByExamAndSubjectAndObjective(student.getExamId(),
+                student.getSubjectCode(), false);
         List<ScoreItem> scoreList = student.getScoreList(false);
         List<MarkGroup> markGroups = groupService.findByExamAndSubject(student.getExamId(), student.getSubjectCode());
         for (MarkGroup group : markGroups) {
@@ -845,14 +843,13 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
         List<String> lines = new LinkedList<>();
         lines.add("成绩明细");
         // 总分得分明细
-        lines.add("总分 (客观+主观) | " + format.format(student.getTotalScore()) + "=" + format
-                .format(student.getObjectiveScore() != null ? student.getObjectiveScore() : 0) + "+" + format
-                .format(student.getSubjectiveScore() != null ? student.getSubjectiveScore() : 0));
+        lines.add("总分 (客观+主观) | " + format.format(student.getTotalScore()) + "="
+                + format.format(student.getObjectiveScore() != null ? student.getObjectiveScore() : 0) + "+"
+                + format.format(student.getSubjectiveScore() != null ? student.getSubjectiveScore() : 0));
         // 客观题得分明细
         List<String> objectives = new LinkedList<>();
-        List<ExamQuestion> questions = questionService
-                .findByExamAndSubjectAndObjectiveAndPaperType(student.getExamId(), student.getSubjectCode(), true,
-                        student.getPaperType());
+        List<ExamQuestion> questions = questionService.findByExamAndSubjectAndObjectiveAndPaperType(
+                student.getExamId(), student.getSubjectCode(), true, student.getPaperType());
         List<ScoreItem> scoreList = student.getScoreList(true);
         List<String> details = new ArrayList<>();
         int i = 0;
@@ -940,8 +937,8 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
             // 添加轨迹分
             List<MarkTrack> tracks = trackService.findByLibraryId(selected.getId());
             for (MarkTrack markTrack : tracks) {
-                originTags.add(new OriginTag(format.format(markTrack.getScore()), markTrack.getOffsetIndex(),
-                        markTrack.getOffsetX(), markTrack.getOffsetY()));
+                originTags.add(new OriginTag(format.format(markTrack.getScore()), markTrack.getOffsetIndex(), markTrack
+                        .getOffsetX(), markTrack.getOffsetY()));
             }
             // 添加特殊标记
             List<MarkSpecialTag> specialTags = specialTagService.findByLibraryId(selected.getId());
@@ -990,4 +987,10 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
     public List<String> findDistinctClassName(Integer examId) {
         return studentDao.findDistinctClassName(examId);
     }
+
+    @Transactional
+    @Override
+    public void updateSubjectiveStatusAndTime(Integer studentId, SubjectiveStatus status, Date inspectTime) {
+        studentDao.updateSubjectiveStatusAndTime(studentId, status, inspectTime);
+    }
 }

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

@@ -20,9 +20,9 @@ public enum SubjectiveStatus {
     }
 
     public static SubjectiveStatus findByText(String text) {
-        for (SubjectiveStatus status : SubjectiveStatus.values()) {
-            if (status.name.equalsIgnoreCase(text)) {
-                return status;
+        for (SubjectiveStatus c : SubjectiveStatus.values()) {
+            if (c.toString().equalsIgnoreCase(text)) {
+                return c;
             }
         }
         return null;

+ 24 - 8
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/InspectedController.java

@@ -1,6 +1,7 @@
 package cn.com.qmth.stmms.admin.exam;
 
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
@@ -27,6 +28,7 @@ import org.springframework.web.servlet.mvc.support.RedirectAttributes;
 
 import cn.com.qmth.stmms.biz.exam.model.ExamStudent;
 import cn.com.qmth.stmms.biz.exam.model.ExamSubject;
+import cn.com.qmth.stmms.biz.exam.model.MarkGroup;
 import cn.com.qmth.stmms.biz.exam.query.ExamStudentSearchQuery;
 import cn.com.qmth.stmms.biz.exam.query.SubjectiveScoreSearchQuery;
 import cn.com.qmth.stmms.biz.exam.service.ExamQuestionService;
@@ -100,6 +102,9 @@ public class InspectedController extends BaseExamController {
         int examId = getSessionExamId(request);
         WebUser wu = RequestUtils.getWebUser(request);
         query.setExamId(examId);
+        query.setUpload(true);
+        query.setAbsent(false);
+        query.setBreach(false);
         List<ExamSubject> subjectList = getExamSubject(examId, wu);
         if (query.getSubjectCode() == null && !subjectList.isEmpty()) {
             query.setSubjectCode(subjectList.get(0).getCode());
@@ -117,7 +122,17 @@ public class InspectedController extends BaseExamController {
             query.setStudentIds(studentIds);
         }
         query = studentService.findByQuery(query);
+        List<MarkGroup> groupList = groupService.findByExamAndSubject(examId, query.getSubjectCode());
+        for (MarkGroup group : groupList) {
+            group.setQuestionList(questionService.findByExamAndSubjectAndObjectiveAndGroupNumber(examId,
+                    group.getSubjectCode(), false, group.getNumber()));
+        }
         model.addAttribute("query", query);
+        model.addAttribute("groupList", groupList);
+        model.addAttribute("groupNumber", groupNumber);
+        model.addAttribute("groupStartScore", groupStartScore);
+        model.addAttribute("groupEndScore", groupEndScore);
+        model.addAttribute("questionScore", questionScore);
         model.addAttribute("subjectList", subjectList);
         model.addAttribute("statusList", SubjectiveStatus.getOptionList());
         return "modules/exam/inspectedList";
@@ -135,6 +150,9 @@ public class InspectedController extends BaseExamController {
         releaseByUser(wu.getUser().getId());
         ModelAndView view = new ModelAndView("modules/exam/inspected");
         query.setExamId(examId);
+        query.setUpload(true);
+        query.setAbsent(false);
+        query.setBreach(false);
         List<ExamSubject> subjectList = getExamSubject(examId, wu);
         if (query.getSubjectCode() == null && !subjectList.isEmpty()) {
             query.setSubjectCode(subjectList.get(0).getCode());
@@ -208,9 +226,8 @@ public class InspectedController extends BaseExamController {
     @ResponseBody
     public Object save(HttpServletRequest request, @RequestParam Integer studentId) {
         ExamStudent student = studentService.findById(studentId);
-        if (student != null && student.getSubjectiveStatus().equals(SubjectiveStatus.INSPECTED)) {
-            studentService.updateSubjectiveStatusAndScore(studentId, SubjectiveStatus.INSPECTED,
-                    student.getTotalScore(), student.getSubjectiveScoreList());
+        if (student != null && student.getSubjectiveStatus().equals(SubjectiveStatus.MARKED)) {
+            studentService.updateSubjectiveStatusAndTime(studentId, SubjectiveStatus.INSPECTED, new Date());
             return true;
         } else {
             return false;
@@ -238,12 +255,11 @@ public class InspectedController extends BaseExamController {
         JSONObject obj = new JSONObject();
         ExamStudent student = studentService.findById(id);
         WebUser wu = RequestUtils.getWebUser(request);
-        if (studentService != null) {
+        if (student != null && student.getSubjectiveStatus().equals(SubjectiveStatus.INSPECTED)) {
             if (subjectCheck(student.getSubjectCode(), wu)) {
                 try {
                     if (lockService.trylock(LockType.STUDENT, student.getId())) {
-                        studentService.updateSubjectiveStatusAndScore(id, SubjectiveStatus.MARKED,
-                                student.getTotalScore(), student.getSubjectiveScoreList());
+                        studentService.updateSubjectiveStatusAndTime(student.getId(), SubjectiveStatus.MARKED, null);
                         obj.accumulate("success", true);
                     } else {
                         obj.accumulate("success", false);
@@ -252,7 +268,7 @@ public class InspectedController extends BaseExamController {
                 } catch (Exception e) {
                     obj.accumulate("success", false);
                     obj.accumulate("message", "取消复核失败");
-                    log.error("back library error", e);
+                    log.error("back inspected error", e);
                 } finally {
                     lockService.unlock(LockType.STUDENT, student.getId());
                 }
@@ -262,7 +278,7 @@ public class InspectedController extends BaseExamController {
             }
         } else {
             obj.accumulate("success", false);
-            obj.accumulate("message", "该阩不存在");
+            obj.accumulate("message", "无法取消复核");
         }
         return obj;
     }

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

@@ -11,7 +11,7 @@
     }</style>
 </head>
 <body>
-<form id="searchForm" action="${ctx}/admin/exam/problem/history" method="post" class="breadcrumb form-search">
+<form id="searchForm" action="${ctx}/admin/exam/inspected" 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>
@@ -26,34 +26,35 @@
         <select class="input-medium" id="group-select" name="groupNumber">
             <option value="">请选择</option>
             <c:forEach items="${groupList}" var="item">
-                <option value="${item.number}" >${item.number}-${item.title}</option>
+                <option value="${item.number}" <c:if test="${item.number==groupNumber}">selected</c:if>>${item.number}-${item.title}</option>
             </c:forEach>
         </select>
+        &nbsp;
         <label>状态</label>
-        <select class="input-medium" name="subjectiveScoreList">
+        <select class="input-medium" name="subjectiveStatus">
             <option value="">请选择</option>
             <c:forEach items="${statusList}" var="status">
-                <option value="${status}">${status.name}</option>
+                <option value="${status}" <c:if test="${status==query.subjectiveStatus}">selected</c:if>>${status.name}</option>
             </c:forEach>
         </select>
-        &nbsp;
+        &nbsp;<br/><br/>
         <label>试卷总分:从</label>
         <input type="text" number="true" id="startScroe" name="startScroe" value="${query.startScroe}" class="input-mini"/>
         <label> 到&nbsp;&nbsp;&nbsp;</label>
         <input type="text" number="true" id="endScroe" name="endScroe" value="${query.endScroe}" class="input-mini"/>
         &nbsp;
-        
         <label>大题得分:从</label>
-        <input type="text" number="true" name="groupScore" id="groupStartScore" value="" class="input-mini"/>
+        <input type="text" number="true" name="groupScore" id="groupStartScore" value="${groupStartScore }" class="input-mini"/>
         <label> 到&nbsp;&nbsp;&nbsp;</label>
-        <input type="text" number="true" id="endScroe" name="groupEndScroe" value="" class="input-mini"/>
+        <input type="text" number="true" id="endScroe" name="groupEndScroe" value="${groupEndScroe }" class="input-mini"/>
         &nbsp;
         
         <label>小题得分</label>
-        <input type="text" number="true" name="questionScore" id="questionScore" value="" class="input-mini"/>
+        <input type="text" number="true" name="questionScore" id="questionScore" value="${questionScore }" class="input-mini"/>
         &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()"/>
+        &nbsp;
+        <input id="btnSubmit" class="btn" type="button" value="批量复核:${query.totalCount }" onclick="goSearch()"/>
     </div>
 </form>
 <tags:message content="${message}"/>
@@ -77,16 +78,16 @@
             <td>${result.subjectiveStatus.name}</td>
             <td>${result.totalScore}</td>
             <td>${result.subjectiveScoreList}</td>
-            <td>${result.uploadTime}</td>
+            <td>${result.inspectTime}</td>
             <td>
                 <c:if test="${examType=='MULTI_MEDIA'}">
                     <a class="json-link" href="${ctx}/admin/exam/library/getJson?studentId=${result.id}" target="_blank">原图</a>
                 </c:if>
                 <c:if test="${examType!='MULTI_MEDIA'}">
-                    <a class="track-link" href="#" data-image-url="${ctx}/admin/exam/track/byLibrary?libraryId=${result.libraryId}" data-title="${result.examNumber}">阅卷轨迹</a>
+                    <a href="${ctx}/admin/exam/track/student/${result.id}" target="_blank">轨迹图</a>
                 </c:if>
                 <c:if test="${result.subjectiveStatus=='MARKED'}">
-	                <a class="json-link" href="${ctx}/admin/">进入复核</a>
+	                <a class="json-link" href="${ctx}/admin/inspected/start">进入复核</a>
                 </c:if>
                 <c:if test="${result.subjectiveStatus=='INSPECTED'}">
                 <a class="back-link" href="#" data-id="${result.id}">取消复核</a>
@@ -107,10 +108,10 @@
             maxHeight: $(window).height()*0.88
         }); */
         $('.back-link').click(function () {
-            if (!confirm('确定要打回该评卷任务吗?')) {
+            if (!confirm('确定要取消复核吗?')) {
                 return;
             }
-            $.post('${ctx}/admin/exam/inspacted/back', {id: $(this).attr('data-id')}, function (result) {
+            $.post('${ctx}/admin/exam/inspected/back', {id: $(this).attr('data-id')}, function (result) {
                 if (result.success == true) {
                     alert('取消成功');
                     $("#searchForm").submit();
@@ -149,14 +150,14 @@
 
     function page(n, s) {
         $("#pageNumber").val(n);
-        $("#searchForm").attr('action', '${ctx}/admin/exam/inspacted');
+        $("#searchForm").attr('action', '${ctx}/admin/exam/inspected');
         $("#searchForm").submit();
         return false;
     }
 
     function goSearch() {
         $("#pageNumber").val(1);
-        $("#searchForm").attr('action', '${ctx}/admin/exam/inspacted');
+        $("#searchForm").attr('action', '${ctx}/admin/exam/inspected');
         $("#searchForm").submit();
         return false;
     }

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

@@ -231,6 +231,7 @@ CREATE TABLE `eb_exam_student`
     `is_breach`             tinyint(1)  NOT NULL COMMENT '是否违纪',
     `is_exception`          tinyint(1)  NOT NULL COMMENT '是否数据异常',
     `upload_time`           datetime     DEFAULT NULL COMMENT '上传时间',
+    `inspect_time`          datetime     DEFAULT NULL COMMENT '复核时间',
     `objective_score`       double       DEFAULT NULL COMMENT '客观总分',
     `objective_score_list`  text COMMENT '客观得分明细',
     `subjective_status`     varchar(16) NOT NULL COMMENT '主观题状态',