ting.yin 2 年之前
父节点
当前提交
a68a5e503b

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

@@ -125,7 +125,7 @@ public interface MarkLibraryDao extends JpaRepository<MarkLibrary, Integer>, Jpa
 
 
     @Modifying(clearAutomatically = true)
     @Modifying(clearAutomatically = true)
     @Query("update MarkLibrary l set l.status=?2, l.markerId=?3, l.markerScore=?4, l.markerScoreList=?5, l.markerTime=?6, "
     @Query("update MarkLibrary l set l.status=?2, l.markerId=?3, l.markerScore=?4, l.markerScoreList=?5, l.markerTime=?6, "
-            + "l.markerSpent=?7 ,l.rejectReason=?8 ,l.headerId=?9,l.headerTime=?10,  where l.id=?1 and l.status in (?11) and (l.markerId=null or l.markerId=?3)")
+            + "l.markerSpent=?7, l.rejectReason=?8, l.headerId=?9, l.headerTime=?10  where l.id=?1 and l.status in (?11) and (l.markerId=null or l.markerId=?3)")
     int updateMarkerResult(Integer id, LibraryStatus newStatus, Integer markerId, Double markerScore,
     int updateMarkerResult(Integer id, LibraryStatus newStatus, Integer markerId, Double markerScore,
             String markerScoreList, Date markerTime, Integer spent, String resson, Integer rejecterId, Date rejectTime,
             String markerScoreList, Date markerTime, Integer spent, String resson, Integer rejecterId, Date rejectTime,
             LibraryStatus... previousStatus);
             LibraryStatus... previousStatus);

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

@@ -22,4 +22,7 @@ public interface RejectHistoryDao extends JpaRepository<RejectHistory, Integer>,
 
 
     List<RejectHistory> findByLibraryIdOrderByIdDesc(Integer libraryId);
     List<RejectHistory> findByLibraryIdOrderByIdDesc(Integer libraryId);
 
 
+    @Query("select distinct s.userId from RejectHistory s where s.examId=?1 and s.subjectCode=?2")
+    List<Integer> getUserIdByExamIdAndSubjectCode(Integer examId, String subjectCode);
+
 }
 }

+ 26 - 5
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/model/MarkLibrary.java

@@ -1,15 +1,25 @@
 package cn.com.qmth.stmms.biz.mark.model;
 package cn.com.qmth.stmms.biz.mark.model;
 
 
-import cn.com.qmth.stmms.biz.utils.ScoreItem;
-import cn.com.qmth.stmms.common.enums.LibraryStatus;
-import org.apache.commons.lang.StringUtils;
-
-import javax.persistence.*;
 import java.io.Serializable;
 import java.io.Serializable;
 import java.util.Date;
 import java.util.Date;
 import java.util.LinkedList;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.List;
 
 
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import javax.persistence.Transient;
+
+import org.apache.commons.lang.StringUtils;
+
+import cn.com.qmth.stmms.biz.exam.model.ExamSubject;
+import cn.com.qmth.stmms.biz.utils.ScoreItem;
+import cn.com.qmth.stmms.common.enums.LibraryStatus;
+
 @Entity
 @Entity
 @Table(name = "m_library")
 @Table(name = "m_library")
 public class MarkLibrary implements Serializable {
 public class MarkLibrary implements Serializable {
@@ -141,6 +151,9 @@ public class MarkLibrary implements Serializable {
     @Transient
     @Transient
     private String headerLoginName;
     private String headerLoginName;
 
 
+    @Transient
+    private ExamSubject subject;
+
     public Integer getId() {
     public Integer getId() {
         return id;
         return id;
     }
     }
@@ -355,4 +368,12 @@ public class MarkLibrary implements Serializable {
         this.headerLoginName = headerLoginName;
         this.headerLoginName = headerLoginName;
     }
     }
 
 
+    public ExamSubject getSubject() {
+        return subject;
+    }
+
+    public void setSubject(ExamSubject subject) {
+        this.subject = subject;
+    }
+
 }
 }

+ 43 - 10
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/model/RejectHistory.java

@@ -14,7 +14,7 @@ import javax.persistence.Transient;
 
 
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.lang.StringUtils;
 
 
-import cn.com.qmth.stmms.biz.user.model.User;
+import cn.com.qmth.stmms.biz.exam.model.ExamSubject;
 import cn.com.qmth.stmms.biz.utils.ScoreItem;
 import cn.com.qmth.stmms.biz.utils.ScoreItem;
 
 
 /**
 /**
@@ -112,7 +112,16 @@ public class RejectHistory implements Serializable {
     private Date createTime;
     private Date createTime;
 
 
     @Transient
     @Transient
-    private User user;
+    private String markerLoginName;
+
+    @Transient
+    private String title;
+
+    @Transient
+    private String headerLoginName;
+
+    @Transient
+    private ExamSubject subject;
 
 
     public RejectHistory() {
     public RejectHistory() {
     }
     }
@@ -211,14 +220,6 @@ public class RejectHistory implements Serializable {
         this.createTime = createTime;
         this.createTime = createTime;
     }
     }
 
 
-    public User getUser() {
-        return user;
-    }
-
-    public void setUser(User user) {
-        this.user = user;
-    }
-
     public Integer getGroupNumber() {
     public Integer getGroupNumber() {
         return groupNumber;
         return groupNumber;
     }
     }
@@ -287,4 +288,36 @@ public class RejectHistory implements Serializable {
         return scoreItems;
         return scoreItems;
     }
     }
 
 
+    public String getMarkerLoginName() {
+        return markerLoginName;
+    }
+
+    public void setMarkerLoginName(String markerLoginName) {
+        this.markerLoginName = markerLoginName;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public String getHeaderLoginName() {
+        return headerLoginName;
+    }
+
+    public void setHeaderLoginName(String headerLoginName) {
+        this.headerLoginName = headerLoginName;
+    }
+
+    public ExamSubject getSubject() {
+        return subject;
+    }
+
+    public void setSubject(ExamSubject subject) {
+        this.subject = subject;
+    }
+
 }
 }

+ 28 - 19
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/query/RejectHistorySearchQuery.java

@@ -5,7 +5,6 @@ import org.springframework.data.domain.Sort.Direction;
 
 
 import cn.com.qmth.stmms.biz.common.BaseQuery;
 import cn.com.qmth.stmms.biz.common.BaseQuery;
 import cn.com.qmth.stmms.biz.mark.model.RejectHistory;
 import cn.com.qmth.stmms.biz.mark.model.RejectHistory;
-import cn.com.qmth.stmms.common.enums.HistoryStatus;
 
 
 public class RejectHistorySearchQuery extends BaseQuery<RejectHistory> {
 public class RejectHistorySearchQuery extends BaseQuery<RejectHistory> {
 
 
@@ -23,12 +22,14 @@ public class RejectHistorySearchQuery extends BaseQuery<RejectHistory> {
 
 
     private int groupNumber;
     private int groupNumber;
 
 
-    private HistoryStatus status;
+    private Integer headerId;
 
 
-    private int userId;
+    private int markerId;
 
 
     private String subjectCodeIn;
     private String subjectCodeIn;
 
 
+    private String rejectReason;
+
     public void orderByIdDesc() {
     public void orderByIdDesc() {
         setSort(new Sort(Direction.DESC, "id"));
         setSort(new Sort(Direction.DESC, "id"));
     }
     }
@@ -81,22 +82,6 @@ public class RejectHistorySearchQuery extends BaseQuery<RejectHistory> {
         this.secretNumber = secretNumber;
         this.secretNumber = secretNumber;
     }
     }
 
 
-    public HistoryStatus getStatus() {
-        return status;
-    }
-
-    public void setStatus(HistoryStatus status) {
-        this.status = status;
-    }
-
-    public int getUserId() {
-        return userId;
-    }
-
-    public void setUserId(int userId) {
-        this.userId = userId;
-    }
-
     public int getGroupNumber() {
     public int getGroupNumber() {
         return groupNumber;
         return groupNumber;
     }
     }
@@ -113,4 +98,28 @@ public class RejectHistorySearchQuery extends BaseQuery<RejectHistory> {
         this.subjectCodeIn = subjectCodeIn;
         this.subjectCodeIn = subjectCodeIn;
     }
     }
 
 
+    public Integer getHeaderId() {
+        return headerId;
+    }
+
+    public void setHeaderId(Integer headerId) {
+        this.headerId = headerId;
+    }
+
+    public int getMarkerId() {
+        return markerId;
+    }
+
+    public void setMarkerId(int markerId) {
+        this.markerId = markerId;
+    }
+
+    public String getRejectReason() {
+        return rejectReason;
+    }
+
+    public void setRejectReason(String rejectReason) {
+        this.rejectReason = rejectReason;
+    }
+
 }
 }

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

@@ -159,7 +159,7 @@ public class MarkLibraryServiceImpl extends BaseQueryService<MarkLibrary> implem
                     Predicate predicate4 = cb.equal(root.get("markerScoreList"), query.getQuestionScore());
                     Predicate predicate4 = cb.equal(root.get("markerScoreList"), query.getQuestionScore());
                     predicates.add(cb.or(predicate1, predicate2, predicate3, predicate4));
                     predicates.add(cb.or(predicate1, predicate2, predicate3, predicate4));
                 }
                 }
-                if (query.getHeaderId() != null) {
+                if (query.getHeaderId() != null && query.getHeaderId() > 0) {
                     predicates.add(cb.equal(root.get("headerId"), query.getHeaderId()));
                     predicates.add(cb.equal(root.get("headerId"), query.getHeaderId()));
                 }
                 }
                 if (StringUtils.isNotBlank(query.getRejectReason())) {
                 if (StringUtils.isNotBlank(query.getRejectReason())) {

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

@@ -1,5 +1,6 @@
 package cn.com.qmth.stmms.biz.mark.service.Impl;
 package cn.com.qmth.stmms.biz.mark.service.Impl;
 
 
+import java.util.ArrayList;
 import java.util.LinkedList;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.List;
 
 
@@ -19,6 +20,8 @@ import cn.com.qmth.stmms.biz.mark.dao.RejectHistoryDao;
 import cn.com.qmth.stmms.biz.mark.model.RejectHistory;
 import cn.com.qmth.stmms.biz.mark.model.RejectHistory;
 import cn.com.qmth.stmms.biz.mark.query.RejectHistorySearchQuery;
 import cn.com.qmth.stmms.biz.mark.query.RejectHistorySearchQuery;
 import cn.com.qmth.stmms.biz.mark.service.RejectHistoryService;
 import cn.com.qmth.stmms.biz.mark.service.RejectHistoryService;
+import cn.com.qmth.stmms.biz.user.model.User;
+import cn.com.qmth.stmms.biz.user.service.UserService;
 
 
 @Service
 @Service
 public class RejectHistoryServiceImpl extends BaseQueryService<RejectHistory> implements RejectHistoryService {
 public class RejectHistoryServiceImpl extends BaseQueryService<RejectHistory> implements RejectHistoryService {
@@ -26,6 +29,9 @@ public class RejectHistoryServiceImpl extends BaseQueryService<RejectHistory> im
     @Autowired
     @Autowired
     private RejectHistoryDao historyDao;
     private RejectHistoryDao historyDao;
 
 
+    @Autowired
+    private UserService userService;
+
     @Override
     @Override
     public RejectHistorySearchQuery findByQuery(final RejectHistorySearchQuery query) {
     public RejectHistorySearchQuery findByQuery(final RejectHistorySearchQuery query) {
         checkQuery(query);
         checkQuery(query);
@@ -55,12 +61,18 @@ public class RejectHistoryServiceImpl extends BaseQueryService<RejectHistory> im
                 if (query.getStudentId() != null) {
                 if (query.getStudentId() != null) {
                     predicates.add(cb.equal(root.get("studentId"), query.getStudentId()));
                     predicates.add(cb.equal(root.get("studentId"), query.getStudentId()));
                 }
                 }
-                if (query.getUserId() > 0) {
-                    predicates.add(cb.equal(root.get("userId"), query.getUserId()));
+                if (query.getHeaderId() != null && query.getHeaderId() > 0) {
+                    predicates.add(cb.equal(root.get("userId"), query.getHeaderId()));
+                }
+                if (query.getMarkerId() > 0) {
+                    predicates.add(cb.equal(root.get("markerId"), query.getMarkerId()));
                 }
                 }
                 if (query.getGroupNumber() > 0) {
                 if (query.getGroupNumber() > 0) {
                     predicates.add(cb.equal(root.get("groupNumber"), query.getGroupNumber()));
                     predicates.add(cb.equal(root.get("groupNumber"), query.getGroupNumber()));
                 }
                 }
+                if (StringUtils.isNotBlank(query.getRejectReason())) {
+                    predicates.add(cb.like(root.get("reason").as(String.class), query.getRejectReason() + "%"));
+                }
                 if (StringUtils.isNotBlank(query.getSubjectCodeIn())) {
                 if (StringUtils.isNotBlank(query.getSubjectCodeIn())) {
                     String[] list = query.getSubjectCodeIn().split(",");
                     String[] list = query.getSubjectCodeIn().split(",");
                     if (list.length > 0) {
                     if (list.length > 0) {
@@ -83,4 +95,14 @@ public class RejectHistoryServiceImpl extends BaseQueryService<RejectHistory> im
         return list.isEmpty() ? null : list.get(0);
         return list.isEmpty() ? null : list.get(0);
     }
     }
 
 
+    @Override
+    public List<User> getUserIdByExamIdAndSubjectCode(int examId, String subjectCode) {
+        List<Integer> userIds = historyDao.getUserIdByExamIdAndSubjectCode(examId, subjectCode);
+        List<User> list = new ArrayList<User>();
+        for (Integer id : userIds) {
+            list.add(userService.findById(id));
+        }
+        return list;
+    }
+
 }
 }

+ 5 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/service/RejectHistoryService.java

@@ -1,7 +1,10 @@
 package cn.com.qmth.stmms.biz.mark.service;
 package cn.com.qmth.stmms.biz.mark.service;
 
 
+import java.util.List;
+
 import cn.com.qmth.stmms.biz.mark.model.RejectHistory;
 import cn.com.qmth.stmms.biz.mark.model.RejectHistory;
 import cn.com.qmth.stmms.biz.mark.query.RejectHistorySearchQuery;
 import cn.com.qmth.stmms.biz.mark.query.RejectHistorySearchQuery;
+import cn.com.qmth.stmms.biz.user.model.User;
 
 
 public interface RejectHistoryService {
 public interface RejectHistoryService {
 
 
@@ -9,4 +12,6 @@ public interface RejectHistoryService {
 
 
     RejectHistory findLastByLibraryId(Integer libraryId);
     RejectHistory findLastByLibraryId(Integer libraryId);
 
 
+    List<User> getUserIdByExamIdAndSubjectCode(int examId, String subjectCode);
+
 }
 }

+ 69 - 15
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/RejectHistoryController.java → stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/RejectController.java

@@ -5,12 +5,17 @@ import java.util.List;
 
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletRequest;
 
 
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
+
 import org.slf4j.Logger;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
 import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
 
 
 import cn.com.qmth.stmms.biz.exam.model.MarkGroup;
 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.model.Marker;
@@ -21,7 +26,9 @@ 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.model.MarkLibrary;
 import cn.com.qmth.stmms.biz.mark.model.MarkLibrary;
+import cn.com.qmth.stmms.biz.mark.model.RejectHistory;
 import cn.com.qmth.stmms.biz.mark.query.MarkLibrarySearchQuery;
 import cn.com.qmth.stmms.biz.mark.query.MarkLibrarySearchQuery;
+import cn.com.qmth.stmms.biz.mark.query.RejectHistorySearchQuery;
 import cn.com.qmth.stmms.biz.mark.service.MarkLibraryService;
 import cn.com.qmth.stmms.biz.mark.service.MarkLibraryService;
 import cn.com.qmth.stmms.biz.mark.service.RejectHistoryService;
 import cn.com.qmth.stmms.biz.mark.service.RejectHistoryService;
 import cn.com.qmth.stmms.biz.user.model.User;
 import cn.com.qmth.stmms.biz.user.model.User;
@@ -34,9 +41,9 @@ import cn.com.qmth.stmms.common.utils.RequestUtils;
 
 
 @Controller
 @Controller
 @RequestMapping("/admin/exam/reject")
 @RequestMapping("/admin/exam/reject")
-public class RejectHistoryController extends BaseExamController {
+public class RejectController extends BaseExamController {
 
 
-    protected static Logger log = LoggerFactory.getLogger(RejectHistoryController.class);
+    protected static Logger log = LoggerFactory.getLogger(RejectController.class);
 
 
     @Autowired
     @Autowired
     private RejectHistoryService historyService;
     private RejectHistoryService historyService;
@@ -71,15 +78,14 @@ public class RejectHistoryController extends BaseExamController {
         query.addStatus(LibraryStatus.REJECTED);
         query.addStatus(LibraryStatus.REJECTED);
         query = libraryService.findByQuery(query);
         query = libraryService.findByQuery(query);
         for (MarkLibrary library : query.getResult()) {
         for (MarkLibrary library : query.getResult()) {
-            if (library.getMarkerId() != null) {
-                Marker marker = markerService.findById(library.getMarkerId());
-                User user = userService.findById(marker.getUserId());
-                library.setMarkerLoginName(user.getLoginName() + "/" + user.getName());
-            }
-            if (library.getHeaderId() != null) {
-                User user = userService.findById(library.getHeaderId());
-                library.setHeaderLoginName(user.getLoginName() + "/" + user.getName());
-            }
+            RejectHistory h = historyService.findLastByLibraryId(library.getId());
+            Marker marker = markerService.findById(h.getMarkerId());
+            User user = userService.findById(marker.getUserId());
+            library.setMarkerLoginName(user.getLoginName() + "/" + user.getName());
+            User header = userService.findById(h.getUserId());
+            library.setHeaderLoginName(header.getLoginName() + "/" + header.getName());
+            library.setMarkerScoreList(h.getScoreList());
+            library.setSubject(subjectService.find(examId, library.getSubjectCode()));
             MarkGroup group = groupService.findOne(examId, library.getSubjectCode(), library.getGroupNumber());
             MarkGroup group = groupService.findOne(examId, library.getSubjectCode(), library.getGroupNumber());
             group.setQuestionList(questionService.findByExamAndSubjectAndObjectiveAndGroupNumber(examId,
             group.setQuestionList(questionService.findByExamAndSubjectAndObjectiveAndGroupNumber(examId,
                     group.getSubjectCode(), false, group.getNumber()));
                     group.getSubjectCode(), false, group.getNumber()));
@@ -89,6 +95,7 @@ public class RejectHistoryController extends BaseExamController {
         model.addAttribute("query", query);
         model.addAttribute("query", query);
         model.addAttribute("subjectList", getExamSubject(examId, wu));
         model.addAttribute("subjectList", getExamSubject(examId, wu));
         List<Marker> markerList = new ArrayList<Marker>();
         List<Marker> markerList = new ArrayList<Marker>();
+        List<User> headerList = new ArrayList<User>();
         if (query.getSubjectCode() != null) {
         if (query.getSubjectCode() != null) {
             MarkerSearchQuery mQuery = new MarkerSearchQuery();
             MarkerSearchQuery mQuery = new MarkerSearchQuery();
             mQuery.setExamId(examId);
             mQuery.setExamId(examId);
@@ -98,21 +105,44 @@ public class RejectHistoryController extends BaseExamController {
             for (Marker marker : markerList) {
             for (Marker marker : markerList) {
                 marker.setLoginName(userService.findById(marker.getUserId()).getLoginName());
                 marker.setLoginName(userService.findById(marker.getUserId()).getLoginName());
             }
             }
+            headerList = historyService.getUserIdByExamIdAndSubjectCode(examId, query.getSubjectCode());
+
+            List<MarkGroup> groupList = groupService.findByExamAndSubject(examId, query.getSubjectCode());
+            for (MarkGroup group : groupList) {
+                group.setQuestionList(questionService.findByExamAndSubjectAndObjectiveAndGroupNumber(examId,
+                        group.getSubjectCode(), false, group.getNumber()));
+            }
+            model.addAttribute("groupList", groupList);
         }
         }
+
         model.addAttribute("markerList", markerList);
         model.addAttribute("markerList", markerList);
+        model.addAttribute("headerList", headerList);
         return "modules/exam/rejectList";
         return "modules/exam/rejectList";
     }
     }
 
 
-    @Logging(menu = "打回任务查询", type = LogType.QUERY)
+    @Logging(menu = "打回记录查询", type = LogType.QUERY)
     @RequestMapping(value = "/history")
     @RequestMapping(value = "/history")
-    public String history(Model model, HttpServletRequest request, MarkLibrarySearchQuery query) {
+    public String history(Model model, HttpServletRequest request, RejectHistorySearchQuery query) {
         int examId = getSessionExamId(request);
         int examId = getSessionExamId(request);
         WebUser wu = RequestUtils.getWebUser(request);
         WebUser wu = RequestUtils.getWebUser(request);
         query.setExamId(examId);
         query.setExamId(examId);
-        query.addStatus(LibraryStatus.REJECTED);
+        query = historyService.findByQuery(query);
+        for (RejectHistory h : query.getResult()) {
+            Marker marker = markerService.findById(h.getMarkerId());
+            User user = userService.findById(marker.getUserId());
+            h.setMarkerLoginName(user.getLoginName() + "/" + user.getName());
+            User header = userService.findById(h.getUserId());
+            h.setHeaderLoginName(header.getLoginName() + "/" + header.getName());
+            h.setSubject(subjectService.find(examId, h.getSubjectCode()));
+            MarkGroup group = groupService.findOne(examId, h.getSubjectCode(), h.getGroupNumber());
+            group.setQuestionList(questionService.findByExamAndSubjectAndObjectiveAndGroupNumber(examId,
+                    group.getSubjectCode(), false, group.getNumber()));
+            h.setTitle(group.getTitle());
+        }
         model.addAttribute("query", query);
         model.addAttribute("query", query);
         model.addAttribute("subjectList", getExamSubject(examId, wu));
         model.addAttribute("subjectList", getExamSubject(examId, wu));
         List<Marker> markerList = new ArrayList<Marker>();
         List<Marker> markerList = new ArrayList<Marker>();
+        List<User> headerList = new ArrayList<User>();
         if (query.getSubjectCode() != null) {
         if (query.getSubjectCode() != null) {
             MarkerSearchQuery mQuery = new MarkerSearchQuery();
             MarkerSearchQuery mQuery = new MarkerSearchQuery();
             mQuery.setExamId(examId);
             mQuery.setExamId(examId);
@@ -122,8 +152,32 @@ public class RejectHistoryController extends BaseExamController {
             for (Marker marker : markerList) {
             for (Marker marker : markerList) {
                 marker.setLoginName(userService.findById(marker.getUserId()).getLoginName());
                 marker.setLoginName(userService.findById(marker.getUserId()).getLoginName());
             }
             }
+            headerList = historyService.getUserIdByExamIdAndSubjectCode(examId, query.getSubjectCode());
+            List<MarkGroup> groupList = groupService.findByExamAndSubject(examId, query.getSubjectCode());
+            for (MarkGroup group : groupList) {
+                group.setQuestionList(questionService.findByExamAndSubjectAndObjectiveAndGroupNumber(examId,
+                        group.getSubjectCode(), false, group.getNumber()));
+            }
+            model.addAttribute("groupList", groupList);
         }
         }
         model.addAttribute("markerList", markerList);
         model.addAttribute("markerList", markerList);
-        return "modules/exam/rejectList";
+        model.addAttribute("headerList", headerList);
+        return "modules/exam/rejectHistory";
+    }
+
+    @RequestMapping("/user/query")
+    @ResponseBody
+    public JSONArray query(HttpServletRequest request, @RequestParam String subjectCode) {
+        int examId = getSessionExamId(request);
+        JSONArray array = new JSONArray();
+        List<User> headerList = historyService.getUserIdByExamIdAndSubjectCode(examId, subjectCode);
+        for (User user : headerList) {
+            JSONObject obj = new JSONObject();
+            obj.accumulate("id", user.getId());
+            obj.accumulate("loginName", user.getLoginName());
+            obj.accumulate("name", user.getName());
+            array.add(obj);
+        }
+        return array;
     }
     }
 }
 }

+ 1 - 1
stmms-web/src/main/java/cn/com/qmth/stmms/api/controller/CoreController.java

@@ -205,7 +205,7 @@ public class CoreController extends BaseApiController {
             student.setExamNumber(examNumber);
             student.setExamNumber(examNumber);
             student.setPackageCode(validate("packageCode", packageCode, false, 64));
             student.setPackageCode(validate("packageCode", packageCode, false, 64));
             student.setStudentCode(validate("studentCode", studentCode, true, 64));
             student.setStudentCode(validate("studentCode", studentCode, true, 64));
-            student.setName(validate("name", name, true, 32));
+            student.setName(validate("name", name, true, 64));
             student.setSubjectCode(validate("subjectCode", subjectCode, true, 32));
             student.setSubjectCode(validate("subjectCode", subjectCode, true, 32));
             student.setSubjectName(validate("subjectName", subjectName, true, 32));
             student.setSubjectName(validate("subjectName", subjectName, true, 32));
             student.setCollege(validate("college", college, true, 32));
             student.setCollege(validate("college", college, true, 32));

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

@@ -254,14 +254,6 @@
 	        <p class="title">打回</p>
 	        <p class="title">打回</p>
 	        <p class="image-close"><img src="${ctxStatic}/mark-new/images/images-close.png"/></p></div>
 	        <p class="image-close"><img src="${ctxStatic}/mark-new/images/images-close.png"/></p></div>
 	        <input id="rejectId" type="hidden"/>
 	        <input id="rejectId" type="hidden"/>
-<!-- 	    	<div class="task-content">打回原因:	<br/>
-	    		<input name="rejectReasonSelect" type="radio"  value="给分较高"/>给分较高<br/>
-            	<input name="rejectReasonSelect" type="radio"  value="给分较低"/>给分较低<br/>
-            	<input name="rejectReasonSelect" type="radio"  value="判分错误"/>判分错误<br/>
-            	<input name="rejectReasonSelect" type="radio"  value="其它"/>其它<br/>
-	    		<textarea id="rejectReasonInput" rows="3" maxlength="60" class="input-large"></textarea>
-	    <i class="wrong">
-	    </i></div> -->
 	    <form class="form-horizontal">
 	    <form class="form-horizontal">
             <div class="control-group">
             <div class="control-group">
                 <label class="control-label"><span style="color:red;font-size:16px;margin-right:3px">*</span>打回原因</label>
                 <label class="control-label"><span style="color:red;font-size:16px;margin-right:3px">*</span>打回原因</label>
@@ -403,7 +395,7 @@
         	alert("请选择打回原因");
         	alert("请选择打回原因");
         	return false;
         	return false;
         }
         }
-        if(rejectReasonInput!="" ||rejectReasonInput!=null){
+        if(rejectReasonInput!="" &&rejectReasonInput!=null){
         	rejectReason =rejectReason+":"+rejectReasonInput;
         	rejectReason =rejectReason+":"+rejectReasonInput;
         }
         }
         $.ajax({
         $.ajax({

+ 48 - 12
stmms-web/src/main/webapp/WEB-INF/views/modules/exam/rejectHistory.jsp

@@ -49,10 +49,10 @@
             </c:forEach>
             </c:forEach>
         </select>
         </select>
         <label>打回人</label>
         <label>打回人</label>
-        <select class="input-medium" id="marker-select" name="markerId">
+        <select class="input-medium" id="rejecter-select" name="headerId">
             <option value="0">不限</option>
             <option value="0">不限</option>
-            <c:forEach items="${markerList}" var="item">
-                <option value="${item.id}" <c:if test="${item.id==query.markerId}">selected</c:if>>${item.loginName}</option>
+            <c:forEach items="${headerList}" var="item">
+                <option value="${item.id}" <c:if test="${item.id==query.headerId}">selected</c:if>>${item.loginName}</option>
             </c:forEach>
             </c:forEach>
         </select>
         </select>
         &nbsp;
         &nbsp;
@@ -70,15 +70,16 @@
         <th>密号</th>
         <th>密号</th>
         <th>打回原因</th>
         <th>打回原因</th>
         <th>评卷员</th>
         <th>评卷员</th>
+        <th>给分明细</th>
         <th>打回人</th>
         <th>打回人</th>
         <th>打回时间</th>
         <th>打回时间</th>
     </tr>
     </tr>
     </thead>
     </thead>
     <tbody>
     <tbody>
-    <c:forEach items="${resultList}" var="result">
+    <c:forEach items="${query.result}" var="result">
         <tr>
         <tr>
-            <td>${result.subjectCode}-${result.subjectName}</td>
-            <td>${result.number}</td>
+            <td>${result.subject.code}-${result.subject.name}</td>
+            <td>${result.groupNumber}-${result.title}</td>
             <td>
             <td>
             	<c:if test="${web_user.subjectHeader==true && forbiddenInfo==true}">
             	<c:if test="${web_user.subjectHeader==true && forbiddenInfo==true}">
 	            ***
 	            ***
@@ -88,9 +89,11 @@
 	            </c:if>
 	            </c:if>
             </td>
             </td>
             <td>${result.secretNumber}</td>
             <td>${result.secretNumber}</td>
-            <td>${result.markLogin}</td>
-            <td>${result.problemUserName}</td>
-            <td>${result.problemRestTime}</td>
+            <td>${result.reason}</td>
+            <td>${result.markerLoginName}</td>
+            <td>${result.scoreList}</td>
+            <td>${result.headerLoginName}</td>
+            <td>${result.createTime}</td>
         </tr>
         </tr>
     </c:forEach>
     </c:forEach>
     </tbody>
     </tbody>
@@ -107,7 +110,7 @@
         $('#subject-select').change(function () {
         $('#subject-select').change(function () {
             var code = $(this).val();
             var code = $(this).val();
             $('#group-select').empty();
             $('#group-select').empty();
-            $("<option value='0'>请选择</option>").appendTo('#group-select');
+            $("<option value=''>请选择</option>").appendTo('#group-select');
             if (code == '') {
             if (code == '') {
                 $('#group-select').val('').trigger('change');
                 $('#group-select').val('').trigger('change');
                 return;
                 return;
@@ -125,13 +128,46 @@
                 }
                 }
                 parent.val(first).trigger('change');
                 parent.val(first).trigger('change');
             });
             });
+            
+            $('#marker-select').empty();
+            $('#marker-select').append('<option value="0">不限</option>');
+            $('#marker-select').val('0').trigger('change');
+            var subjectCode = $('#subject-select').val();
+            $.post('${ctx}/admin/exam/marker/query', {subjectCode: subjectCode}, function (result) {
+                var parent = $('#marker-select');
+                var first = '';
+                for (var i = 0; i < result.length; i++) {
+                    var marker = result[i];
+                    $('<option value="' + marker.id + '">' + marker.loginName + '</option>').appendTo(parent);
+                    if (i == 0) {
+                        first = marker.id;
+                    }
+                }
+            });
+            
+            $('#rejecter-select').empty();
+            $('#rejecter-select').append('<option value="0">不限</option>');
+            $('#rejecter-select').val('0').trigger('change');
+            var subjectCode = $('#subject-select').val();
+            $.post('${ctx}/admin/exam/reject/user/query', {subjectCode: subjectCode}, function (result) {
+                var parent = $('#rejecter-select');
+                var first = '';
+                for (var i = 0; i < result.length; i++) {
+                    var marker = result[i];
+                    $('<option value="' + marker.id + '">' + marker.loginName + '</option>').appendTo(parent);
+                    if (i == 0) {
+                        first = marker.id;
+                    }
+                }
+            });
+            
         });
         });
     });
     });
 
 
     function page(n, s) {
     function page(n, s) {
         $("#pageNumber").val(n);
         $("#pageNumber").val(n);
         $("#pageSize").val(s);
         $("#pageSize").val(s);
-        $("#searchForm").attr('action', '${ctx}/admin/exam/reject/history');
+        $("#searchForm").attr('action', '${ctx}/admin/exam/reject/list');
         $("#searchForm").submit();
         $("#searchForm").submit();
         return false;
         return false;
     }
     }
@@ -139,7 +175,7 @@
     function goSearch() {
     function goSearch() {
         $("#pageNumber").val(1);
         $("#pageNumber").val(1);
         $("#pageSize").val('${query.pageSize}');
         $("#pageSize").val('${query.pageSize}');
-        $("#searchForm").attr('action', '${ctx}/admin/exam/reject/history');
+        $("#searchForm").attr('action', '${ctx}/admin/exam/reject/list');
         $("#searchForm").submit();
         $("#searchForm").submit();
         return false;
         return false;
     }
     }

+ 24 - 7
stmms-web/src/main/webapp/WEB-INF/views/modules/exam/rejectList.jsp

@@ -49,10 +49,10 @@
             </c:forEach>
             </c:forEach>
         </select>
         </select>
         <label>打回人</label>
         <label>打回人</label>
-        <select class="input-medium" id="rejecter-select" name="rejecterId">
+        <select class="input-medium" id="rejecter-select" name="headerId">
             <option value="0">不限</option>
             <option value="0">不限</option>
-            <c:forEach items="${markerList}" var="item">
-                <option value="${item.id}" <c:if test="${item.id==query.markerId}">selected</c:if>>${item.loginName}</option>
+            <c:forEach items="${headerList}" var="item">
+                <option value="${item.id}" <c:if test="${item.id==query.headerId}">selected</c:if>>${item.loginName}</option>
             </c:forEach>
             </c:forEach>
         </select>
         </select>
         &nbsp;
         &nbsp;
@@ -77,9 +77,9 @@
     </tr>
     </tr>
     </thead>
     </thead>
     <tbody>
     <tbody>
-    <c:forEach items="${resultList}" var="result">
+    <c:forEach items="${query.result}" var="result">
         <tr>
         <tr>
-            <td>${result.subjectCode}-${result.subjectName}</td>
+            <td>${result.subject.code}-${result.subject.name}</td>
             <td>${result.groupNumber}-${result.title}</td>
             <td>${result.groupNumber}-${result.title}</td>
             <td>
             <td>
             	<c:if test="${web_user.subjectHeader==true && forbiddenInfo==true}">
             	<c:if test="${web_user.subjectHeader==true && forbiddenInfo==true}">
@@ -96,7 +96,7 @@
             <td>${result.headerLoginName}</td>
             <td>${result.headerLoginName}</td>
             <td>${result.headerTime}</td>
             <td>${result.headerTime}</td>
             <td>
             <td>
-               	<a href="${ctx}/web/admin/exam/track/library?libraryId=${result.libraryId}&subjectCode=${result.subjectCode}" target="_blank">试卷详情</a>
+               	<a href="${ctx}/web/admin/exam/track/library?libraryId=${result.id}&subjectCode=${result.subjectCode}" target="_blank">试卷详情</a>
             </td>
             </td>
         </tr>
         </tr>
     </c:forEach>
     </c:forEach>
@@ -114,7 +114,7 @@
         $('#subject-select').change(function () {
         $('#subject-select').change(function () {
             var code = $(this).val();
             var code = $(this).val();
             $('#group-select').empty();
             $('#group-select').empty();
-            $("<option value='0'>请选择</option>").appendTo('#group-select');
+            $("<option value=''>请选择</option>").appendTo('#group-select');
             if (code == '') {
             if (code == '') {
                 $('#group-select').val('').trigger('change');
                 $('#group-select').val('').trigger('change');
                 return;
                 return;
@@ -148,6 +148,23 @@
                     }
                     }
                 }
                 }
             });
             });
+            
+            $('#rejecter-select').empty();
+            $('#rejecter-select').append('<option value="0">不限</option>');
+            $('#rejecter-select').val('0').trigger('change');
+            var subjectCode = $('#subject-select').val();
+            $.post('${ctx}/admin/exam/reject/user/query', {subjectCode: subjectCode}, function (result) {
+                var parent = $('#rejecter-select');
+                var first = '';
+                for (var i = 0; i < result.length; i++) {
+                    var marker = result[i];
+                    $('<option value="' + marker.id + '">' + marker.loginName + '</option>').appendTo(parent);
+                    if (i == 0) {
+                        first = marker.id;
+                    }
+                }
+            });
+            
         });
         });
     });
     });