浏览代码

新增打回原因;放开评卷管理必选分组;新增批量取消复核

ting.yin 3 年之前
父节点
当前提交
53a2eae410
共有 18 个文件被更改,包括 219 次插入86 次删除
  1. 2 2
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/dao/MarkLibraryDao.java
  2. 11 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/model/MarkLibrary.java
  3. 13 3
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/query/MarkLibrarySearchQuery.java
  4. 4 1
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/service/Impl/MarkLibraryServiceImpl.java
  5. 48 42
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/service/Impl/MarkServiceImpl.java
  6. 5 3
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/service/MarkService.java
  7. 10 0
      stmms-web/src/main/java/cn/com/qmth/stmms/admin/dto/RejectResult.java
  8. 0 3
      stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/ArbitrateController.java
  9. 27 1
      stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/InspectedController.java
  10. 9 7
      stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/LibraryController.java
  11. 1 4
      stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/MarkQualityController.java
  12. 7 2
      stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/MarkerController.java
  13. 0 5
      stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/TrialController.java
  14. 4 2
      stmms-web/src/main/webapp/WEB-INF/views/modules/exam/arbitrateList.jsp
  15. 37 2
      stmms-web/src/main/webapp/WEB-INF/views/modules/exam/inspectedList.jsp
  16. 32 5
      stmms-web/src/main/webapp/WEB-INF/views/modules/exam/libraryList.jsp
  17. 4 2
      stmms-web/src/main/webapp/WEB-INF/views/modules/exam/qualityList.jsp
  18. 5 2
      stmms-web/src/main/webapp/WEB-INF/views/modules/exam/trialList.jsp

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

@@ -124,9 +124,9 @@ public interface MarkLibraryDao extends JpaRepository<MarkLibrary, Integer>, Jpa
 
     @Modifying(clearAutomatically = true)
     @Query("update MarkLibrary l set l.status=?2, l.markerId=?3, l.markerScore=?4, l.markerScoreList=?5, l.markerTime=?6, "
-            + "l.markerSpent=?7 where l.id=?1 and l.status in (?8) and (l.markerId=null or l.markerId=?3)")
+            + "l.markerSpent=?7 ,l.rejectReason=?8 where l.id=?1 and l.status in (?9) and (l.markerId=null or l.markerId=?3)")
     int updateMarkerResult(Integer id, LibraryStatus newStatus, Integer markerId, Double markerScore,
-            String markerScoreList, Date markerTime, Integer spent, LibraryStatus... previousStatus);
+            String markerScoreList, Date markerTime, Integer spent, String resson, LibraryStatus... previousStatus);
 
     @Query("select m.markerScore ,count(m) from MarkLibrary m where m.examId=?1 and m.subjectCode=?2 and m.groupNumber=?3 and m.markerId=?4 and m.status in (?5) group by m.markerScore ")
     List<Object[]> findScoreCount(int examId, String subjectCode, Integer groupNumber, Integer markerId,

+ 11 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/model/MarkLibrary.java

@@ -129,6 +129,9 @@ public class MarkLibrary implements Serializable {
     @Column(name = "unanswered_count", nullable = true)
     private Integer unansweredCount;
 
+    @Column(name = "reject_reason", nullable = true)
+    private Integer rejectReason;
+
     @Transient
     private String markerLoginName;
 
@@ -322,4 +325,12 @@ public class MarkLibrary implements Serializable {
         this.unansweredCount = unansweredCount;
     }
 
+    public Integer getRejectReason() {
+        return rejectReason;
+    }
+
+    public void setRejectReason(Integer rejectReason) {
+        this.rejectReason = rejectReason;
+    }
+
 }

+ 13 - 3
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/query/MarkLibrarySearchQuery.java

@@ -27,7 +27,7 @@ public class MarkLibrarySearchQuery extends BaseQuery<MarkLibrary> {
 
     private int markerId;
 
-    private int groupNumber;
+    private Integer groupNumber;
 
     private Double markerScore;
 
@@ -41,6 +41,8 @@ public class MarkLibrarySearchQuery extends BaseQuery<MarkLibrary> {
 
     private Integer headerId;
 
+    private String rejectReason;
+
     public MarkLibrarySearchQuery() {
         super();
         this.statusSet = new HashSet<>();
@@ -118,11 +120,11 @@ public class MarkLibrarySearchQuery extends BaseQuery<MarkLibrary> {
         this.campusId = campusId;
     }
 
-    public int getGroupNumber() {
+    public Integer getGroupNumber() {
         return groupNumber;
     }
 
-    public void setGroupNumber(int groupNumber) {
+    public void setGroupNumber(Integer groupNumber) {
         this.groupNumber = groupNumber;
     }
 
@@ -186,4 +188,12 @@ public class MarkLibrarySearchQuery extends BaseQuery<MarkLibrary> {
         this.endScore = endScore;
     }
 
+    public String getRejectReason() {
+        return rejectReason;
+    }
+
+    public void setRejectReason(String rejectReason) {
+        this.rejectReason = rejectReason;
+    }
+
 }

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

@@ -108,7 +108,7 @@ public class MarkLibraryServiceImpl extends BaseQueryService<MarkLibrary> implem
                 if (query.getCampusId() > 0) {
                     predicates.add(cb.equal(root.get("campusId"), query.getCampusId()));
                 }
-                if (query.getGroupNumber() > 0) {
+                if (query.getGroupNumber() != null) {
                     predicates.add(cb.equal(root.get("groupNumber"), query.getGroupNumber()));
                 }
                 if (StringUtils.isNotBlank(query.getExamNumber())) {
@@ -161,6 +161,9 @@ public class MarkLibraryServiceImpl extends BaseQueryService<MarkLibrary> implem
                 if (query.getHeaderId() != null) {
                     predicates.add(cb.equal(root.get("headerId"), query.getHeaderId()));
                 }
+                if (StringUtils.isNotBlank(query.getRejectReason())) {
+                    predicates.add(cb.like(root.get("rejectReason").as(String.class), query.getRejectReason() + ":%"));
+                }
                 return predicates.isEmpty() ? cb.conjunction() : cb.and(predicates.toArray(new Predicate[predicates
                         .size()]));
             }

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

@@ -625,7 +625,7 @@ public class MarkServiceImpl implements MarkService {
         // 尝试提交评卷结果
         Date now = new Date();
         if (libraryDao.updateMarkerResult(library.getId(), LibraryStatus.MARKED, marker.getId(),
-                result.getMarkerScore(), result.getScoreList(), now, result.getSpent(), LibraryStatus.WAITING,
+                result.getMarkerScore(), result.getScoreList(), now, result.getSpent(), null, LibraryStatus.WAITING,
                 LibraryStatus.MARKED, LibraryStatus.INSPECTED, LibraryStatus.REJECTED) == 0) {
             // 条件不符更新失败,直接返回
             return false;
@@ -1427,44 +1427,51 @@ public class MarkServiceImpl implements MarkService {
         }
     }
 
-    @Override
-    @Transactional
-    public boolean backStudentByGroup(ExamStudent student, Integer groupNumber, Integer userId) {
-        MarkGroup group = groupDao.findOne(student.getExamId(), student.getSubjectCode(), groupNumber);
-        if (group.getStatus() == MarkStatus.FINISH) {
-            return false;
-        }
-        List<MarkLibrary> list = libraryDao.findByStudentIdAndGroupNumber(student.getId(), groupNumber);
-        int count = 0;
-        for (MarkLibrary library : list) {
-            if (libraryDao.resetById(library.getId(), null, LibraryStatus.REJECTED, LibraryStatus.MARKED,
-                    LibraryStatus.PROBLEM, LibraryStatus.INSPECTED) > 0) {
-                count++;
-                trackDao.deleteByLibraryId(library.getId());
-                specialTagDao.deleteByLibraryId(library.getId());
-                problemHistoryDao.resetByLibraryId(library.getId(), HistoryStatus.WAITING, userId, HistoryStatus.BACK,
-                        new Date());
-                if (library.getTaskNumber() == 3) {
-                    // 出现三评时删除第三条任务
-                    problemHistoryDao.deleteByLibraryId(library.getId());
-                    libraryDao.delete(library);
-                    updateLibraryCount(group);
-                }
-            }
-        }
-        if (count > 0) {
-            updateMarkedCount(group);
-            resetStudentGroup(student.getId(), group.getExamId(), group.getSubjectCode(), group.getNumber());
-            studentService.updateSubjectiveStatusAndTimeAndInspectorId(student.getId(), SubjectiveStatus.UNMARK, null,
-                    null);
-            return true;
-        }
-        return false;
-    }
+    // @Override
+    // @Transactional
+    // public boolean backStudentByGroup(ExamStudent student, Integer
+    // groupNumber, Integer userId) {
+    // MarkGroup group = groupDao.findOne(student.getExamId(),
+    // student.getSubjectCode(), groupNumber);
+    // if (group.getStatus() == MarkStatus.FINISH) {
+    // return false;
+    // }
+    // List<MarkLibrary> list =
+    // libraryDao.findByStudentIdAndGroupNumber(student.getId(), groupNumber);
+    // int count = 0;
+    // for (MarkLibrary library : list) {
+    // if (libraryDao.resetById(library.getId(), null, LibraryStatus.REJECTED,
+    // LibraryStatus.MARKED,
+    // LibraryStatus.PROBLEM, LibraryStatus.INSPECTED) > 0) {
+    // count++;
+    // trackDao.deleteByLibraryId(library.getId());
+    // specialTagDao.deleteByLibraryId(library.getId());
+    // problemHistoryDao.resetByLibraryId(library.getId(),
+    // HistoryStatus.WAITING, userId, HistoryStatus.BACK,
+    // new Date());
+    // if (library.getTaskNumber() == 3) {
+    // // 出现三评时删除第三条任务
+    // problemHistoryDao.deleteByLibraryId(library.getId());
+    // libraryDao.delete(library);
+    // updateLibraryCount(group);
+    // }
+    // }
+    // }
+    // if (count > 0) {
+    // updateMarkedCount(group);
+    // resetStudentGroup(student.getId(), group.getExamId(),
+    // group.getSubjectCode(), group.getNumber());
+    // studentService.updateSubjectiveStatusAndTimeAndInspectorId(student.getId(),
+    // SubjectiveStatus.UNMARK, null,
+    // null);
+    // return true;
+    // }
+    // return false;
+    // }
 
     @Override
     @Transactional
-    public boolean rejectedStudent(ExamStudent student, MarkStepDTO[] markStepDTOs, Integer userId) {
+    public boolean rejectedStudent(ExamStudent student, MarkStepDTO[] markStepDTOs, Integer userId, String reason) {
         Map<Integer, List<MarkStepDTO>> map = new HashMap<Integer, List<MarkStepDTO>>();
 
         for (MarkStepDTO markStepDTO : markStepDTOs) {
@@ -1534,10 +1541,9 @@ public class MarkServiceImpl implements MarkService {
                             markerScoreList.append(",");
                         }
                     }
-                    if (libraryDao
-                            .updateMarkerResult(library.getId(), LibraryStatus.REJECTED, library.getMarkerId(), null,
-                                    markerScoreList.toString(), null, null, LibraryStatus.MARKED,
-                                    LibraryStatus.INSPECTED) == 1) {
+                    if (libraryDao.updateMarkerResult(library.getId(), LibraryStatus.REJECTED, library.getMarkerId(),
+                            null, markerScoreList.toString(), null, null, reason, LibraryStatus.MARKED,
+                            LibraryStatus.INSPECTED) == 1) {
                         count++;
                     }
                 }
@@ -1596,7 +1602,7 @@ public class MarkServiceImpl implements MarkService {
 
     @Override
     @Transactional
-    public boolean rejectLibrary(MarkLibrary library, MarkStepDTO[] questionList, Integer userId) {
+    public boolean rejectLibrary(MarkLibrary library, MarkStepDTO[] questionList, Integer userId, String reason) {
         List<ExamQuestion> questions = questionService.findByExamAndSubjectAndObjectiveAndGroupNumber(
                 library.getExamId(), library.getSubjectCode(), false, library.getGroupNumber());
         if (questionList.length == questions.size()) {
@@ -1632,7 +1638,7 @@ public class MarkServiceImpl implements MarkService {
             }
         }
         if (libraryDao.updateMarkerResult(library.getId(), LibraryStatus.REJECTED, library.getMarkerId(), null,
-                markerScoreList.toString(), null, null, LibraryStatus.MARKED, LibraryStatus.INSPECTED) == 1) {
+                markerScoreList.toString(), null, null, reason, LibraryStatus.MARKED, LibraryStatus.INSPECTED) == 1) {
             resetStudentGroup(library.getStudentId(), library.getExamId(), library.getSubjectCode(),
                     library.getGroupNumber());
             problemHistoryDao.resetByLibraryId(library.getId(), HistoryStatus.WAITING, userId, HistoryStatus.BACK,

+ 5 - 3
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/service/MarkService.java

@@ -237,7 +237,8 @@ public interface MarkService {
      * @param library
      * @return
      */
-    boolean backStudentByGroup(ExamStudent student, Integer groupNumber, Integer userId);
+    // boolean backStudentByGroup(ExamStudent student, Integer groupNumber,
+    // Integer userId);
 
     /**
      * 管理员/组长打回某个学生的指定题目
@@ -245,9 +246,10 @@ public interface MarkService {
      * @param student
      * @param questionList
      * @param userId
+     * @param resson
      * @return
      */
-    boolean rejectedStudent(ExamStudent student, MarkStepDTO[] questionList, Integer userId);
+    boolean rejectedStudent(ExamStudent student, MarkStepDTO[] questionList, Integer userId, String resson);
 
     /**
      * 删除某个小题
@@ -264,5 +266,5 @@ public interface MarkService {
      * @param userId
      * @return
      */
-    boolean rejectLibrary(MarkLibrary library, MarkStepDTO[] questionList, Integer userId);
+    boolean rejectLibrary(MarkLibrary library, MarkStepDTO[] questionList, Integer userId, String resson);
 }

+ 10 - 0
stmms-web/src/main/java/cn/com/qmth/stmms/admin/dto/RejectResult.java

@@ -13,6 +13,8 @@ public class RejectResult {
 
     private MarkStepDTO[] questionList;
 
+    private String reason;
+
     public Integer getStudentId() {
         return studentId;
     }
@@ -37,4 +39,12 @@ public class RejectResult {
         this.libraryId = libraryId;
     }
 
+    public String getReason() {
+        return reason;
+    }
+
+    public void setReason(String reason) {
+        this.reason = reason;
+    }
+
 }

+ 0 - 3
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/ArbitrateController.java

@@ -129,9 +129,6 @@ public class ArbitrateController extends BaseExamController {
                 group.setQuestionList(questionService.findByExamAndSubjectAndObjectiveAndGroupNumber(query.getExamId(),
                         group.getSubjectCode(), false, group.getNumber()));
             }
-            if (query.getGroupNumber() == null && groupList.size() > 0) {
-                query.setGroupNumber(groupList.get(0).getNumber());
-            }
             query.orderByIdDesc();
             query = arbitrateService.findByQuery(query);
             for (ArbitrateHistory history : query.getResult()) {

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

@@ -291,7 +291,8 @@ public class InspectedController extends BaseExamController {
             if (subjectCheck(student.getSubjectCode(), wu) && lockService.trylock(LockType.STUDENT, student.getId())) {
                 try {
                     lockService.watch(LockType.EXAM_SUBJECT, student.getExamId(), student.getSubjectCode());
-                    if (markService.rejectedStudent(student, rejectResult.getQuestionList(), wu.getId())) {
+                    if (markService.rejectedStudent(student, rejectResult.getQuestionList(), wu.getId(),
+                            rejectResult.getReason())) {
                         inspectedService.releaseByStudent(student);
                         obj.accumulate("success", true);
                     } else {
@@ -411,4 +412,29 @@ public class InspectedController extends BaseExamController {
             lockService.unlock(LockType.STUDENT, studentId);
         }
     }
+
+    @Logging(menu = "取消复核", type = LogType.UPDATE)
+    @RequestMapping(value = "/batchCancel", method = RequestMethod.POST)
+    @RoleRequire({ Role.SCHOOL_ADMIN, Role.SUBJECT_HEADER, Role.INSPECTOR })
+    public String batchCancel(HttpServletRequest request, @RequestParam Integer[] ids) {
+        WebUser wu = RequestUtils.getWebUser(request);
+        for (Integer id : ids) {
+            ExamStudent student = studentService.findById(id);
+            if (student != null && student.getSubjectiveStatus().equals(SubjectiveStatus.INSPECTED)) {
+                if (subjectCheck(student.getSubjectCode(), wu)) {
+                    try {
+                        if (lockService.trylock(LockType.STUDENT, student.getId())) {
+                            studentService.updateSubjectiveStatusAndTimeAndInspectorId(student.getId(),
+                                    SubjectiveStatus.MARKED, null, null);
+                        }
+                    } catch (Exception e) {
+                        log.error("back inspected error", e);
+                    } finally {
+                        lockService.unlock(LockType.STUDENT, student.getId());
+                    }
+                }
+            }
+        }
+        return "redirect:/admin/exam/inspected";
+    }
 }

+ 9 - 7
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/LibraryController.java

@@ -28,6 +28,7 @@ import cn.com.qmth.stmms.biz.exam.model.ExamStudent;
 import cn.com.qmth.stmms.biz.exam.model.ExamSubject;
 import cn.com.qmth.stmms.biz.exam.model.MarkGroup;
 import cn.com.qmth.stmms.biz.exam.model.Marker;
+import cn.com.qmth.stmms.biz.exam.query.MarkerSearchQuery;
 import cn.com.qmth.stmms.biz.exam.service.ExamQuestionService;
 import cn.com.qmth.stmms.biz.exam.service.ExamService;
 import cn.com.qmth.stmms.biz.exam.service.ExamStudentService;
@@ -112,9 +113,6 @@ public class LibraryController extends BaseExamController {
         List<MarkGroup> groupList = groupService.findByExamAndSubjectAndStatus(examId, query.getSubjectCode(),
                 MarkStatus.FORMAL);
         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()) {
@@ -129,7 +127,7 @@ public class LibraryController extends BaseExamController {
             }
         }
         long inspectedCount = 0;
-        if (query.getGroupNumber() != 0 && (LibraryStatus.MARKED.equals(status) || status == null)) {
+        if (LibraryStatus.MARKED.equals(status) || status == null) {
             query.addStatus(LibraryStatus.MARKED);
             inspectedCount = libraryService.countByQuery(query);
         }
@@ -139,8 +137,12 @@ public class LibraryController extends BaseExamController {
         model.addAttribute("groupList", groupList);
         model.addAttribute("statusList", LibraryStatus.getOptionList());
         model.addAttribute("status", status);
-        List<Marker> markerList = markerService.findByExamAndSubjectAndGroup(examId, query.getSubjectCode(),
-                query.getGroupNumber());
+        MarkerSearchQuery mQuery = new MarkerSearchQuery();
+        mQuery.setExamId(examId);
+        mQuery.setSubjectCode(query.getSubjectCode());
+        mQuery.setGroupNumber(query.getGroupNumber());
+        mQuery.setPageSize(Integer.MAX_VALUE);
+        List<Marker> markerList = markerService.findByQuery(mQuery).getResult();
         for (Marker marker : markerList) {
             marker.setLoginName(userService.findById(marker.getUserId()).getLoginName());
         }
@@ -351,7 +353,7 @@ public class LibraryController extends BaseExamController {
                     if (((libraryService.hasApplied(library, wu.getId())
                             && (library.getStatus().equals(LibraryStatus.MARKED)) || library.getStatus().equals(
                             LibraryStatus.INSPECTED)) && markService.rejectLibrary(library,
-                            rejectResult.getQuestionList(), wu.getId()))) {
+                            rejectResult.getQuestionList(), wu.getId(), rejectResult.getReason()))) {
                         libraryService.releaseByLibrary(library);
                         obj.accumulate("success", true);
                     } else {

+ 1 - 4
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/MarkQualityController.java

@@ -110,10 +110,7 @@ public class MarkQualityController extends BaseExamController {
             query.setSubjectCode(subjectList.get(0).getCode());
         }
         List<MarkGroup> groupList = groupService.findByExamAndSubject(examId, query.getSubjectCode());
-        if (query.getGroupNumber() == null && groupList.size() > 0) {
-            query.setGroupNumber(groupList.get(0).getNumber());
-        }
-        if (query.getSubjectCode() != null && query.getGroupNumber() != null) {
+        if (query.getSubjectCode() != null) {
             query = markerService.findByQuery(query);
             model.addAttribute(
                     "running",

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

@@ -118,10 +118,15 @@ public class MarkerController extends BaseExamController {
     @RequestMapping("/query")
     @ResponseBody
     public JSONArray query(HttpServletRequest request, @RequestParam String subjectCode,
-            @RequestParam Integer groupNumber) {
+            @RequestParam(required = false) Integer groupNumber) {
         int examId = getSessionExamId(request);
         JSONArray array = new JSONArray();
-        List<Marker> list = markerService.findByExamAndSubjectAndGroup(examId, subjectCode, groupNumber);
+        MarkerSearchQuery query = new MarkerSearchQuery();
+        query.setExamId(examId);
+        query.setSubjectCode(subjectCode);
+        query.setGroupNumber(groupNumber);
+        query.setPageSize(Integer.MAX_VALUE);
+        List<Marker> list = markerService.findByQuery(query).getResult();
         for (Marker marker : list) {
             JSONObject obj = new JSONObject();
             obj.accumulate("id", marker.getId());

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

@@ -105,9 +105,6 @@ public class TrialController extends BaseExamController {
         List<MarkGroup> groupList = groupService.findByExamAndSubjectAndStatus(examId, query.getSubjectCode(),
                 MarkStatus.TRIAL);
         if (!groupList.isEmpty()) {
-            if (query.getGroupNumber() == null) {
-                query.setGroupNumber(groupList.get(0).getNumber());
-            }
             query.orderById();
             query = trialService.findLibrary(query);
             for (TrialLibrary library : query.getResult()) {
@@ -120,8 +117,6 @@ public class TrialController extends BaseExamController {
                 group.setQuestionList(questionService.findByExamAndSubjectAndObjectiveAndGroupNumber(examId,
                         group.getSubjectCode(), false, group.getNumber()));
             }
-            model.addAttribute("group",
-                    groupService.findOne(query.getExamId(), query.getSubjectCode(), query.getGroupNumber()));
         }
         model.addAttribute("query", query);
         model.addAttribute("subjectList", getExamSubject(examId, wu));

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

@@ -29,6 +29,7 @@
 			</select>
 			<label>分组</label>
             <select class="input-medium" id="group-select" name="groupNumber">
+            	<option  value="" <c:if test="${query.groupNumber==null}">selected</c:if>>不限</option>
                 <c:forEach items="${groupList}" var="item">
                 <option value="${item.number}" <c:if test="${item.number==query.groupNumber}">selected</c:if>>${item.number}-${item.title}</option>
                 </c:forEach>
@@ -153,12 +154,13 @@ $('#subject-select').change(function(){
     $.post('${ctx}/admin/exam/group/query', {subjectCode: code, withDouble: true}, function(result){
         var parent = $('#group-select');
         var first = '';
+        $('<option value="">不限</option>').appendTo(parent);
         for(var i=0;i<result.length;i++){
             var group = result[i];
             $('<option value="'+group.number+'">'+group.number+'-'+group.title+'</option>').appendTo(parent);
-            if(i==0){
+           /*  if(i==0){
                 first = group.number;
-            }
+            } */
         }
         parent.val(first).trigger('change');
     });

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

@@ -77,16 +77,19 @@
         <input id="btnStart" class="btn" type="button" value="批量复核:${inspectCount }" onclick="goStart()"/>
         </c:if>
         &nbsp;
+         <input id="btnCancel" class="btn" type="button" value="取消复核" onclick="goCancel()"/>
+          &nbsp;
         <c:if test="${exam.status=='FINISH' && web_user.schoolAdmin==true}">
        	<input id="btnImport" class="btn" type="button" value="导入"/>
        	</c:if>
     </div>
 </form>
 <tags:message content="${message}"/>
+<form id="cancelForm" action="${ctx}/admin/exam/inspected/batchCancel" method="post" class="breadcrumb form-search">
 <table id="contentTable" class="table table-striped table-bordered table-condensed">
     <thead>
     <tr>
-        <th>科目</th>
+        <th><input type="checkbox" id="ids">科目</th>
         <th>考生编号</th>
         <th>状态</th>
         <th>客观分</th>
@@ -101,7 +104,7 @@
     <tbody>
     <c:forEach items="${query.result}" var="result">
         <tr>
-            <td>${result.subjectCode}-${result.subjectName}</td>
+            <td><input type="checkbox" class="ids" name="ids" value="${result.id}">${result.subjectCode}-${result.subjectName}</td>
             <td>${result.secretNumber}</td>
             <td>${result.subjectiveStatus.name}</td>
             <td>${result.objectiveScoreString}</td>
@@ -121,6 +124,7 @@
                 </c:if>
             </td>
             <td>
+            	 <a href="${ctx}/web/admin/exam/track/student?studentId=${result.id}&subjectCode=${result.subjectCode}" target="_blank">轨迹图</a>
                 <c:if test="${result.subjectiveStatus=='MARKED'}">
 	                <a target="_blank" href="${ctx}/web/admin/exam/inspected/start?studentId=${result.id}&subjectCode=${result.subjectCode}">进入复核</a>
                 </c:if>
@@ -132,6 +136,7 @@
     </c:forEach>
     </tbody>
 </table>
+</form>
 <div class="pagination">${query}</div>
 <%@include file="/WEB-INF/views/include/trackView.jsp" %>
 <script type="text/javascript">
@@ -247,6 +252,36 @@
     	window.open(url, '_blank');
         return false;
     }
+    
+    $("#ids").change(function () {
+        if ($("#ids").is(':checked')) {
+            $(".ids").attr("checked", true);
+        } else {
+        	$(".ids").attr("checked", false);
+        }
+    });
+    
+    $(".ids").change(function () {
+    	var all = true;
+    	$("input[name='ids']").each(function(){
+    		if(!$(this).is(':checked')){
+    			all = false;
+    		}
+    	})
+		 $("#ids").attr("checked", all);
+    });
+    function goCancel() {
+    	var check_list = []
+    	$("input[name='ids']:checked").each(function(){
+    		check_list.push($(this).val())
+    	})
+        if(check_list.length==0) {
+            alert('请选择');
+            return false;
+        }
+        $("#cancelForm").submit();
+        return false;
+    }
 </script>
 </body>
 </html>

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

@@ -32,6 +32,7 @@
         </select>
         <label>分组</label>
         <select class="input-medium" id="group-select" name="groupNumber">
+        	<option value="" <c:if test="${query.groupNumber==null}">selected</c:if>>不限</option>
             <c:forEach items="${groupList}" var="item">
                 <option value="${item.number}" <c:if test="${item.number==query.groupNumber}">selected</c:if>>${item.number}-${item.title}</option>
             </c:forEach>
@@ -43,6 +44,16 @@
                 <option value="${item.value}" <c:if test="${item.value==status.value}">selected</c:if>>${item.name}</option>
             </c:forEach>
         </select>
+        <span id="reasonSpan" <c:if test="${status.value!=2}">class="hide"</c:if>>
+        <label>打回原因</label>
+        <select class="input-small" id="reason-select" name="rejectReason">
+            <option value="">不限</option>
+            <option value="给分较高" <c:if test="${query.rejectReason=='给分较高'}">selected</c:if>>给分较高</option>
+            <option value="给分较低" <c:if test="${query.rejectReason=='给分较低'}">selected</c:if>>给分较低</option>
+            <option value="判分错误" <c:if test="${query.rejectReason=='判分错误'}">selected</c:if>>判分错误</option>
+            <option value="其他" <c:if test="${query.rejectReason=='其他'}">selected</c:if>>其他</option>
+        </select>
+        </span>
         <label>评卷员</label>
         <select class="input-medium" id="marker-select" name="markerId">
             <option value="0">不限</option>
@@ -50,12 +61,13 @@
                 <option value="${item.id}" <c:if test="${item.id==query.markerId}">selected</c:if>>${item.loginName}</option>
             </c:forEach>
         </select>
+        <br/><br/>
         <label>选做题</label>
         <select class="input-small"  name="unselective">
             <option value="false"<c:if test="${!query.unselective}">selected</c:if>>不限</option>
 	        <option value="true" <c:if test="${query.unselective}">selected</c:if>>未选做</option>
         </select>
-        <br/><br/>
+        
         <c:if test="${web_user.schoolAdmin==true || forbiddenScore==false}">
         <label>准考证号</label>
         <input type="text" name="examNumber" value="${query.examNumber}" maxlength="20" class="input-medium"/>
@@ -68,7 +80,7 @@
         <input type="number" id="startScore" name="startScore" value="${query.startScore}" class="input-mini"/>
         <label> 到&nbsp;&nbsp;&nbsp;</label>
         <input type="number" id="endScore" name="endScore" value="${query.endScore}" class="input-mini"/>
-        &nbsp;
+        <br/><br/>
         <label>小题得分</label>
         <input type="text" number="true" name="questionScore" id="questionScore" value="${query.questionScore }" class="input-mini"/>
         &nbsp;
@@ -89,6 +101,7 @@
         <th>准考证号</th>
         <th>考生编号</th>
         <th>状态</th>
+        <th>打回原因</th>
         <th>评卷员</th>
         <th>评卷总分</th>
         <th>给分明细</th>
@@ -111,6 +124,11 @@
             </td>
             <td>${result.secretNumber}</td>
             <td>${result.status.name}</td>
+            <td><span title="${result.rejectReason}">
+            	<c:if test="${result.rejectReason.length>10}">${result.rejectReason.substring(0,10)+"..." }</c:if>
+            	<c:if test="${result.rejectReason.length<=10}">${result.rejectReason}</c:if>
+            	</span>
+            </td>
             <td>${result.markerLoginName}</td>
             <td>
                 <c:if test="${result.markerScore!=null}">
@@ -181,12 +199,13 @@
         $.post('${ctx}/admin/exam/group/query', {subjectCode: code, status: 'FORMAL'}, function (result) {
             var parent = $('#group-select');
             var first = '';
+            $('<option value="">不限</option>').appendTo(parent);
             for (var i = 0; i < result.length; i++) {
                 var group = result[i];
                 $('<option value="' + group.number + '">' + group.number + '-' + group.title + '</option>').appendTo(parent);
-                if (i == 0) {
+                /* if (i == 0) {
                     first = group.number;
-                }
+                } */
             }
             parent.val(first).trigger('change');
         });
@@ -197,7 +216,7 @@
         $('#marker-select').empty();
         $('#marker-select').append('<option value="0">不限</option>');
         $('#marker-select').val('0').trigger('change');
-        if (subjectCode == '' || groupNumber == '' || groupNumber == null) {
+        if (subjectCode == '') {
             return;
         }
         $.post('${ctx}/admin/exam/marker/query', {subjectCode: subjectCode, groupNumber: groupNumber}, function (result) {
@@ -214,6 +233,14 @@
         });
     });
 
+    $('#status-select').change(function () {
+    	var status = $(this).val();
+    	if(status==2){
+    		 $('#reasonSpan').show();
+    	}else{
+    		 $('#reasonSpan').hide();
+    	}
+    });
     function page(n, s) {
         $("#pageNumber").val(n);
         $("#pageSize").val(s);

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

@@ -30,6 +30,7 @@
 			</select>
 			<label>分组</label>
             <select class="input-medium" id="group-select" name="groupNumber">
+            <option  value="" <c:if test="${query.groupNumber==null}">selected</c:if>>不限</option>
             </select>
 			&nbsp;
 			<input id="btnSubmit" class="btn btn-primary" type="button" value="查询" onclick="goSearch()"/>
@@ -90,6 +91,7 @@ $('#subject-select').change(function(){
     $('#group-select').empty();
     $.post('${ctx}/admin/exam/group/query', {subjectCode: code}, function(result){
         var parent = $('#group-select');
+        $('<option value="">不限</option>').appendTo(parent);
         for(var i=0;i<result.length;i++){
             var group = result[i];
             var dom = $('<option value="'+group.number+'">'+group.number+'-'+group.title+'</option>').appendTo(parent);
@@ -118,11 +120,11 @@ $('#chart-button').click(function(){
     var subjectCode = $('#subject-select').val();
     var groupNumber = $('#group-select').val();
     if(subjectCode=='') {
-        alert('请选择科目');
+        alert('请选择对应的科目及分组,再查看给分曲线。');
         return false;
     }
     if(groupNumber=='') {
-        alert('请选择分组');
+        alert('请选择对应的科目及分组,再查看给分曲线。');
         return false;
     }
     $(this).attr('href','${ctx}/admin/exam/quality/chart?subjectCode='+subjectCode+'&groupNumber='+groupNumber);

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

@@ -32,6 +32,7 @@
         </select>
         <label>分组</label>
         <select class="input-medium" id="group-select" name="groupNumber">
+        	<option value="" <c:if test="${query.groupNumber==null}">selected</c:if>>不限</option>
             <c:forEach items="${groupList}" var="item">
                 <option value="${item.number}" <c:if test="${item.number==query.groupNumber}">selected</c:if>>${item.number}-${item.title}</option>
             </c:forEach>
@@ -140,14 +141,16 @@
             return;
         }
         $.post('${ctx}/admin/exam/group/query', {subjectCode: code, status: 'TRIAL'}, function (result) {
+        	debugger;
             var parent = $('#group-select');
             var first = '';
+            $('<option value="">不限</option>').appendTo(parent);
             for (var i = 0; i < result.length; i++) {
                 var group = result[i];
                 $('<option value="' + group.number + '">' + group.number + '-' + group.title + '</option>').appendTo(parent);
-                if (i == 0) {
+               /*  if (i == 0) {
                     first = group.number;
-                }
+                } */
             }
             parent.val(first).trigger('change');
         });