Przeglądaj źródła

(评卷员一览)按评卷员的角度来查询人员阅卷量

nikang 7 lat temu
rodzic
commit
a4222f3e2b

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

@@ -87,4 +87,8 @@ public interface ExamSubjectDao extends PagingAndSortingRepository<ExamSubject,
     @Modifying
     @Query("delete ExamSubject s where s.pk.examId=?1")
     void deleteByExamId(int examId);
+
+    @Query(value = "select s.* from eb_exam_subject s where 1=1 and s.exam_id = ?1 and s.`code` in ( " +
+            "select f.subject_code  from m_library f where 1=1 and f.marker_id = ?2 and f.`status`=?3 GROUP BY f.subject_code)",nativeQuery = true)
+    List<ExamSubject> findExamSubjectByMarkerId(int examId,int markerId,int status);
 }

+ 138 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/model/MarkerDTO.java

@@ -0,0 +1,138 @@
+package cn.com.qmth.stmms.biz.exam.model;
+
+import java.io.Serializable;
+
+public class MarkerDTO implements Serializable {
+    private static final long serialVersionUID = 9026500878343612005L;
+
+    //评卷员主键
+    private Integer markerId;
+    //评卷员姓名
+    private String name;
+    //评卷登录号
+    private String loginName;
+    //分配课程数
+    private long subjectCount;
+    //完成课程数
+    private long finishedCount;
+    //完成数量
+    private long markedCount;
+    //最高分
+    private Double maxScore;
+    //最低分
+    private Double minScore;
+    //平均分
+    private Double avgScore;
+    //课程代码
+    private String subjectCode;
+    //课程名称
+    private String subjectName;
+    //回评个数
+    private long rejectCount;
+
+
+    public MarkerDTO() {
+    }
+
+    public MarkerDTO(Marker marker) {
+        this.name = marker.getName();
+        this.loginName = marker.getLoginName();
+        this.markerId = marker.getId();
+    }
+
+    public Integer getMarkerId() {
+        return markerId;
+    }
+
+    public void setMarkerId(Integer markerId) {
+        this.markerId = markerId;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getLoginName() {
+        return loginName;
+    }
+
+    public void setLoginName(String loginName) {
+        this.loginName = loginName;
+    }
+
+    public long getSubjectCount() {
+        return subjectCount;
+    }
+
+    public void setSubjectCount(long subjectCount) {
+        this.subjectCount = subjectCount;
+    }
+
+    public long getFinishedCount() {
+        return finishedCount;
+    }
+
+    public void setFinishedCount(long finishedCount) {
+        this.finishedCount = finishedCount;
+    }
+
+    public long getMarkedCount() {
+        return markedCount;
+    }
+
+    public void setMarkedCount(long markedCount) {
+        this.markedCount = markedCount;
+    }
+
+    public Double getMaxScore() {
+        return maxScore;
+    }
+
+    public void setMaxScore(Double maxScore) {
+        this.maxScore = maxScore;
+    }
+
+    public Double getMinScore() {
+        return minScore;
+    }
+
+    public void setMinScore(Double minScore) {
+        this.minScore = minScore;
+    }
+
+    public Double getAvgScore() {
+        return avgScore;
+    }
+
+    public void setAvgScore(Double avgScore) {
+        this.avgScore = avgScore;
+    }
+
+    public String getSubjectCode() {
+        return subjectCode;
+    }
+
+    public void setSubjectCode(String subjectCode) {
+        this.subjectCode = subjectCode;
+    }
+
+    public String getSubjectName() {
+        return subjectName;
+    }
+
+    public void setSubjectName(String subjectName) {
+        this.subjectName = subjectName;
+    }
+
+    public long getRejectCount() {
+        return rejectCount;
+    }
+
+    public void setRejectCount(long rejectCount) {
+        this.rejectCount = rejectCount;
+    }
+}

+ 9 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/query/MarkerSearchQuery.java

@@ -14,6 +14,8 @@ public class MarkerSearchQuery extends BaseQuery<Marker> {
 
     private String loginName;
 
+    private String name;
+
     public void orderByLoginName() {
         setSort(new Sort(Direction.ASC, "loginName"));
     }
@@ -46,4 +48,11 @@ public class MarkerSearchQuery extends BaseQuery<Marker> {
         this.loginName = loginName;
     }
 
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
 }

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

@@ -6,6 +6,7 @@ import java.util.Set;
 import cn.com.qmth.stmms.biz.exam.model.ExamSubject;
 import cn.com.qmth.stmms.biz.exam.service.query.ExamSubjectSearchQuery;
 import cn.com.qmth.stmms.common.enums.ExamSubjectStatus;
+import cn.com.qmth.stmms.common.enums.LibraryStatus;
 
 public interface ExamSubjectService {
 
@@ -62,4 +63,6 @@ public interface ExamSubjectService {
 
     void updateLeftCount(int examId);
 
+    List<ExamSubject> findExamSubjectByMarkerId(int examId,int markerId ,LibraryStatus status);
+
 }

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

@@ -269,4 +269,8 @@ public class ExamSubjectServiceImpl extends BaseQueryService<ExamSubject> implem
             }
         };
     }
+    @Override
+    public List<ExamSubject> findExamSubjectByMarkerId(int examId,int markerId ,LibraryStatus status){
+        return subjectDao.findExamSubjectByMarkerId(examId,markerId,status.getValue());
+    }
 }

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

@@ -1,5 +1,6 @@
 package cn.com.qmth.stmms.biz.exam.service.impl;
 
+import java.sql.Date;
 import java.util.LinkedList;
 import java.util.List;
 
@@ -219,6 +220,10 @@ public class MarkerServiceImpl extends BaseQueryService<Marker> implements Marke
                 if (StringUtils.isNotBlank(query.getLoginName())) {
                     predicates.add(cb.equal(root.get("loginName"), query.getLoginName()));
                 }
+                if (StringUtils.isNotBlank(query.getName())) {
+                    predicates.add(cb.equal(root.get("name"), query.getName()));
+                }
+                cQuery.orderBy(cb.desc(root.get("lastLoginTime").as(Date.class)));
                 return predicates.isEmpty() ? cb.conjunction() : cb.and(predicates.toArray(new Predicate[predicates
                         .size()]));
             }

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

@@ -2,6 +2,9 @@ package cn.com.qmth.stmms.biz.mark.dao;
 
 import java.util.List;
 
+import cn.com.qmth.stmms.biz.exam.model.ExamSubject;
+import cn.com.qmth.stmms.biz.exam.model.Marker;
+import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.jpa.repository.Modifying;
@@ -73,4 +76,16 @@ public interface MarkLibraryDao extends PagingAndSortingRepository<MarkLibrary,
 	@Query(value = "select f.markerScore from MarkLibrary f where f.markerId = ?1 and f.subjectCode = ?2 ")
 	List<Double> getAllScore(int markerId, String subjectCode);
 
+	@Query(value = "select f.subjectCode from MarkLibrary f where f.markerId = ?1 and f.status = ?2 GROUP BY f.subjectCode")
+    List<String> findCodeListByMidGBCode(int markerId,LibraryStatus status);
+
+    @Query("select count(*) from MarkLibrary f where f.markerId=?1 and f.status=?2")
+    long countByMidAndStatus(int markerId,LibraryStatus status);
+
+    @Query("select count(*) from MarkLibrary f where f.markerId=?1 and f.subjectCode = ?2 and f.status=?3")
+    long countByMidAndSubjectCodeStatus(int markerId,String subjectCode,LibraryStatus status);
+
+    @Query(value = "select max(f.markerScore),min(f.markerScore),avg(f.markerScore) from MarkLibrary f where f.markerId = ?1 and f.status = ?2 ")
+    List<Object[]> getMarkerInfo(int markerId, LibraryStatus status);
+
 }

+ 10 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/query/MarkLibrarySearchQuery.java

@@ -13,6 +13,8 @@ public class MarkLibrarySearchQuery extends BaseQuery<MarkLibrary> {
 
     private String subjectCode;
 
+    private String subjectName;
+
     private int campusId;
 
     private int studentId;
@@ -51,6 +53,14 @@ public class MarkLibrarySearchQuery extends BaseQuery<MarkLibrary> {
         this.subjectCode = subjectCode;
     }
 
+    public String getSubjectName() {
+        return subjectName;
+    }
+
+    public void setSubjectName(String subjectName) {
+        this.subjectName = subjectName;
+    }
+
     public int getStudentId() {
         return studentId;
     }

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

@@ -1,16 +1,24 @@
 package cn.com.qmth.stmms.biz.mark.service.Impl;
 
+import java.util.HashMap;
 import java.util.LinkedList;
 import java.util.List;
+import java.util.Map;
 
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.Query;
 import javax.persistence.criteria.CriteriaBuilder;
 import javax.persistence.criteria.CriteriaQuery;
 import javax.persistence.criteria.Predicate;
 import javax.persistence.criteria.Root;
 
+import cn.com.qmth.stmms.biz.exam.dao.ExamSubjectDao;
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageImpl;
+import org.springframework.data.domain.PageRequest;
 import org.springframework.data.jpa.domain.Specification;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -34,6 +42,9 @@ public class MarkLibraryServiceImpl extends BaseQueryService<MarkLibrary> implem
     @Autowired
     private MarkTrackService trackService;
 
+    @PersistenceContext
+    private EntityManager em;
+
     @Transactional
     @Override
     public void delete(MarkLibrary library) {
@@ -213,4 +224,72 @@ public class MarkLibraryServiceImpl extends BaseQueryService<MarkLibrary> implem
 	public List<Double> getAllScore(Integer id,String subjectCode) {
 		return libraryDao.getAllScore(id,subjectCode);
 	}
+
+	@Override
+    public List<String> getCodeListByMidGBCodeCount(int markerId,LibraryStatus status){
+        return libraryDao.findCodeListByMidGBCode(markerId,status);
+    }
+    @Override
+    public long countByMidAndStatus(int markerId,LibraryStatus status){
+        return libraryDao.countByMidAndStatus(markerId,status);
+    }
+    @Override
+    public long countByMidAndSubjectCodeStatus(int markerId,String subjectCode,LibraryStatus status){
+        return libraryDao.countByMidAndSubjectCodeStatus(markerId,subjectCode,status);
+    }
+
+    @Override
+    public List<Object[]> getMarkerInfo(int markerId, LibraryStatus status) {
+        return libraryDao.getMarkerInfo(markerId,status);
+    }
+
+    private Specification<MarkLibrary> buildSpecificationGroupBySubjectCode(final MarkLibrarySearchQuery query) {
+        return new Specification<MarkLibrary>() {
+            @Override
+            public Predicate toPredicate(Root<MarkLibrary> root, CriteriaQuery<?> cQuery, CriteriaBuilder cb) {
+                List<Predicate> predicates = new LinkedList<Predicate>();
+                if (StringUtils.isNotBlank(query.getSubjectCode())) {
+                    predicates.add(cb.equal(root.get("subjectCode"), query.getSubjectCode()));
+                }
+                if (query.getMarkerId() > 0) {
+                    predicates.add(cb.equal(root.get("markerId"), query.getMarkerId()));
+                }
+                if (query.getStatus() != null) {
+                    predicates.add(cb.equal(root.get("status").as(LibraryStatus.class), query.getStatus()));
+                }
+                cQuery.groupBy(root.get("subjectCode"));
+                return predicates.isEmpty() ? cb.conjunction()
+                        : cb.and(predicates.toArray(new Predicate[predicates.size()]));
+            }
+        };
+    }
+    @Override
+    public MarkLibrarySearchQuery findGroupByQuery(final MarkLibrarySearchQuery query) {
+        checkQuery(query);
+        Page<MarkLibrary> result = libraryDao.findAll(buildSpecificationGroupBySubjectCode(query), query);
+        fillResult(result,query);
+        return query;
+    }
+    @Override
+    public MarkLibrarySearchQuery getByCondition(final MarkLibrarySearchQuery query){
+        StringBuffer sql = new StringBuffer("SELECT m.* FROM m_library m WHERE 1=1 and m.status = 3");
+        if (StringUtils.isNotBlank(query.getSubjectCode())) {
+            sql.append(" and m.subject_code = '").append(query.getSubjectCode()).append("'");
+        }
+        if (query.getMarkerId() > 0) {
+            sql.append(" and  m.marker_id =").append(query.getMarkerId());
+        }
+            sql.append(" group by m.subject_code");
+        Query qCount = em.createNativeQuery(sql.toString(),MarkLibrary.class);
+        int totalCount = qCount.getResultList().size();
+        int pageNumber = query.getPageNumber()-1;
+        if( pageNumber> 0){
+            pageNumber = pageNumber * query.getPageSize();
+        }
+        sql.append(" limit ").append(pageNumber).append(",").append(query.getPageSize());
+        Query q = em.createNativeQuery(sql.toString(),MarkLibrary.class);
+        Page<MarkLibrary> page = new PageImpl<>(q.getResultList(),new PageRequest(query.getPageNumber()-1,query.getPageSize()),totalCount);
+        fillResult(page,query);
+        return query;
+    }
 }

+ 12 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/service/MarkLibraryService.java

@@ -7,6 +7,7 @@ import cn.com.qmth.stmms.biz.exam.model.Marker;
 import cn.com.qmth.stmms.biz.mark.model.MarkLibrary;
 import cn.com.qmth.stmms.biz.mark.query.MarkLibrarySearchQuery;
 import cn.com.qmth.stmms.common.enums.LibraryStatus;
+import org.springframework.data.domain.Page;
 
 public interface MarkLibraryService {
 
@@ -50,4 +51,15 @@ public interface MarkLibraryService {
 
 	List<Double> getAllScore(Integer id,String subjectCode);
 
+	List<String> getCodeListByMidGBCodeCount(int markerId,LibraryStatus status);
+
+	long countByMidAndStatus(int markerId,LibraryStatus status);
+
+    List<Object[]> getMarkerInfo(int markerId, LibraryStatus status);
+
+    MarkLibrarySearchQuery findGroupByQuery(final MarkLibrarySearchQuery query);
+
+    long countByMidAndSubjectCodeStatus(int markerId,String subjectCode,LibraryStatus status);
+
+    MarkLibrarySearchQuery getByCondition(final MarkLibrarySearchQuery query);
 }

+ 129 - 0
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/parameter/ExamMarkerInfoController.java

@@ -0,0 +1,129 @@
+package cn.com.qmth.stmms.admin.exam.parameter;
+
+import cn.com.qmth.stmms.biz.exam.model.ExamSubject;
+import cn.com.qmth.stmms.biz.exam.model.Marker;
+import cn.com.qmth.stmms.biz.exam.model.MarkerDTO;
+import cn.com.qmth.stmms.biz.exam.query.MarkerSearchQuery;
+import cn.com.qmth.stmms.biz.exam.service.ExamSubjectService;
+import cn.com.qmth.stmms.biz.exam.service.MarkerService;
+import cn.com.qmth.stmms.biz.mark.model.MarkLibrary;
+import cn.com.qmth.stmms.biz.mark.query.MarkLibrarySearchQuery;
+import cn.com.qmth.stmms.biz.mark.service.MarkLibraryService;
+import cn.com.qmth.stmms.common.enums.LibraryStatus;
+import org.apache.commons.lang.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import javax.servlet.http.HttpServletRequest;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+
+@Controller("examMarkerInfoController")
+@RequestMapping("/admin/exam-param/markerInfo")
+public class ExamMarkerInfoController extends BaseParameterController {
+
+    @Autowired
+    private MarkerService markerService;
+
+    @Autowired
+    ExamSubjectService examSubjectService;
+
+    @Autowired
+    MarkLibraryService markLibraryService;
+
+    @RequestMapping
+    public String list(Model model, HttpServletRequest request, MarkerSearchQuery query) {
+        int examId = getSessionExamId(request);
+        if (examId > 0) {
+            query.setExamId(examId);
+            query = markerService.findByQuery(query);
+            List<MarkerDTO> MarkerDTOs = new ArrayList<MarkerDTO>();
+            for(Marker marker : query.getResult()){
+                MarkerDTO markerDTO = new MarkerDTO(marker);
+                long markedCount = getMarkedCount(marker.getId(),LibraryStatus.MARKED);
+                markerDTO.setMarkedCount(markedCount);
+                if(StringUtils.isNotEmpty(marker.getSubjectCode()) && marker.getLoginName().indexOf(marker.getSubjectCode())>-1){
+                    markerDTO.setSubjectCount(1l);
+                    markerDTO.setFinishedCount(markedCount>0?1l:0l);
+                }else {
+                    markerDTO.setSubjectCount(getSubjectCountByExamId(marker.getExamId()));
+                    markerDTO.setFinishedCount(markedCount>0?getCodeListByMidGBCodeCount(marker.getId(),LibraryStatus.MARKED):0l);
+                }
+                List<Object[]> list = markLibraryService.getMarkerInfo(marker.getId(),LibraryStatus.MARKED);
+                double maxScore = (Double)list.get(0)[0]==null?0:(Double)list.get(0)[0];
+                markerDTO.setMaxScore(maxScore);
+                double minScore = (Double)list.get(0)[1]==null?0:(Double)list.get(0)[1];
+                markerDTO.setMinScore(minScore);
+                double avgScore = (Double)list.get(0)[2]==null?0:(Double)list.get(0)[2];
+                if(avgScore >= 0) {
+                    markerDTO.setAvgScore(new BigDecimal(avgScore).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
+                }
+                MarkerDTOs.add(markerDTO);
+            }
+            model.addAttribute("MarkerDTOs", MarkerDTOs);
+            model.addAttribute("query", query);
+            return "modules/exam/param/markerInfo";
+        } else {
+            return "redirect:/admin/exam/list";
+        }
+    }
+
+    @RequestMapping("/detail")
+    public String detail(Model model, HttpServletRequest request, MarkLibrarySearchQuery query, @RequestParam(required = false) Integer markerId) {
+            int examId = getSessionExamId(request);
+            if (examId > 0) {
+                query.setStatus(LibraryStatus.MARKED);
+                if(markerId != null){
+                    query.setMarkerId(markerId);
+                }
+                List<ExamSubject> examSubjects = examSubjectService.findExamSubjectByMarkerId(examId,markerId,LibraryStatus.MARKED);
+                List<MarkerDTO> MarkerDTOs = new ArrayList<MarkerDTO>();
+                if(examSubjects != null && examSubjects.size() > 0){
+//                    query = markLibraryService.findGroupByQuery(query);
+                    query = markLibraryService.getByCondition(query);
+                    for(MarkLibrary markLibrary : query.getResult()){
+                            MarkerDTO markerDTO = new MarkerDTO();
+                                      markerDTO.setSubjectCode(markLibrary.getSubjectCode());
+                            for(ExamSubject examSubject : examSubjects){
+                                if(markLibrary.getSubjectCode().equals(examSubject.getCode())){
+                                    markerDTO.setSubjectName(examSubject.getName());
+                                }
+                            }
+                            markerDTO.setMarkedCount(getMarkedCountByCode(markerId,markLibrary.getSubjectCode(),LibraryStatus.MARKED));
+                            markerDTO.setRejectCount(getMarkedCountByCode(markerId,markLibrary.getSubjectCode(),LibraryStatus.BACKED));
+                        MarkerDTOs.add(markerDTO);
+                    }
+                }
+                model.addAttribute("query",query);
+                model.addAttribute("MarkerDTOs",MarkerDTOs);
+                model.addAttribute("subjectList",examSubjects );
+                return "modules/exam/param/markerDetail";
+            } else {
+                return "redirect:/admin/exam/list";
+            }
+    }
+    public long getSubjectCountByExamId(int examId){
+        return examSubjectService.count(examId);
+    }
+
+    public long getMarkedCount(int markerId,LibraryStatus status){
+        return markLibraryService.countByMidAndStatus(markerId,status);
+    }
+    public long getMarkedCountByCode(int markerId,String subjectCode,LibraryStatus status){
+        return markLibraryService.countByMidAndSubjectCodeStatus(markerId,subjectCode,status);
+    }
+
+    public long getCodeListByMidGBCodeCount(int markerId,LibraryStatus status){
+        long count = 0;
+        List<String> codes = markLibraryService.getCodeListByMidGBCodeCount(markerId,status);
+        if(codes != null && codes.size() > 0){
+            count = codes.size();
+        }
+        return count;
+    }
+}

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

@@ -8,6 +8,10 @@
 	<style type="text/css">.sort{color:#0663A2;cursor:pointer;}</style>
 </head>
 <body>
+	<ul class="nav nav-tabs">
+		<li class="active"><a href="${ctx}/admin/exam/mark">评卷进度</a></li>
+		<li><a href="${ctx}/admin/exam-param/markerInfo">评卷员一览</a></li>
+	</ul>
 	<form id="searchForm" action="${ctx}/admin/exam/mark" 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 }"/>

+ 64 - 0
stmms-web/src/main/webapp/WEB-INF/views/modules/exam/param/markerDetail.jsp

@@ -0,0 +1,64 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/WEB-INF/views/include/taglib.jsp"%>
+<html>
+<head>
+	<title>评卷员详情</title>
+	<meta name="decorator" content="default"/>
+	<%@include file="/WEB-INF/views/include/head.jsp" %>
+</head>
+<body>
+	<form id="searchForm" action="${ctx}/admin/exam-param/markerInfo/detail" 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 }"/>
+		<input type="hidden" id="markerId" name="markerId" value="${query.markerId }"/>
+		<div>
+            <label>科目:</label>
+            <select id="subject-select" name="subjectCode">
+                <option value="">请选择</option>
+                <c:forEach items="${subjectList}" var="subject">
+                    <option value="${subject.code}" <c:if test="${subject.code==query.subjectCode}">selected</c:if>>${subject.code}-${subject.name}</option>
+                </c:forEach>
+            </select>
+			<input id="btnSubmit" class="btn btn-primary" type="button" value="查询" onclick="goSearch()"/>
+			&nbsp;&nbsp;
+			<a href="${ctx}/admin/exam-param/markerInfo" class="btn">返回</a>
+		</div>
+	</form>
+	<tags:message content="${message}"/>
+	<table id="contentTable" class="table table-striped table-bordered table-condensed">
+		<thead>
+			<tr>
+				<th>课程名称</th>
+				<th>课程代码</th>
+				<th>已评数量</th>
+				<th>打回数量</th>
+			</tr>
+		</thead>
+		<tbody>
+		<c:forEach items="${MarkerDTOs}" var="MarkerDTO">
+			<tr>
+                <td>${MarkerDTO.subjectName}</td>
+                <td>${MarkerDTO.subjectCode}</td>
+                <td>${MarkerDTO.markedCount}</td>
+                <td>${MarkerDTO.rejectCount}</td>
+			</tr>
+		</c:forEach>
+		</tbody>
+	</table>
+	<div class="pagination">${query}</div>
+<script type="text/javascript">
+function page(n,s){
+	$("#pageNumber").val(n);
+	$("#pageSize").val(s);
+	$("#searchForm").submit();
+	return false;
+}
+function goSearch(){
+	$("#pageNumber").val(1);
+	$("#pageSize").val('${query.pageSize}');
+	$("#searchForm").submit();
+	return false;
+}
+</script>
+</body>
+</html>

+ 74 - 0
stmms-web/src/main/webapp/WEB-INF/views/modules/exam/param/markerInfo.jsp

@@ -0,0 +1,74 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/WEB-INF/views/include/taglib.jsp"%>
+<html>
+<head>
+	<title>评卷员一览</title>
+	<meta name="decorator" content="default"/>
+	<%@include file="/WEB-INF/views/include/head.jsp" %>
+</head>
+<body>
+	<ul class="nav nav-tabs">
+		<li ><a href="${ctx}/admin/exam/mark">评卷进度</a></li>
+		<li class="active"><a href="${ctx}/admin/exam-param/markerInfo">评卷员一览</a></li>
+	</ul>
+	<form id="searchForm" action="${ctx}/admin/exam-param/markerInfo" method="post" class="breadcrumb form-search">
+		<input type="hidden" id="pageNumber" name="pageNumber" value="${query.pageNumber }"/>
+		<input type="hidden" id="pageSize" name="pageSize" value="${query.pageSize }"/>
+		<div>
+			<label>姓名</label>
+            <input type="text" name="name" value="${query.name}"  maxlength="10" class="input-small"/>
+			<label>登录名</label>
+            <input type="text" name="loginName" value="${query.loginName }"  maxlength="50" class="input-small"/>
+			<input id="btnSubmit" class="btn btn-primary" type="button" value="查询" onclick="goSearch()"/>
+		</div>
+	</form>
+	<tags:message content="${message}"/>
+	<table id="contentTable" class="table table-striped table-bordered table-condensed">
+		<thead>
+			<tr>
+				<th>姓名</th>
+				<th>登录名</th>
+				<th>分配课程</th>
+				<th>完成课程</th>
+				<th>完成数量</th>
+				<th>最高分</th>
+				<th>最低分</th>
+				<th>平均分</th>
+				<th>操作</th>
+			</tr>
+		</thead>
+		<tbody>
+		<c:forEach items="${MarkerDTOs}" var="MarkerDTO">
+			<tr>
+                <td>${MarkerDTO.name}</td>
+                <td>${MarkerDTO.loginName}</td>
+                <td>${MarkerDTO.subjectCount}</td>
+                <td>${MarkerDTO.finishedCount}</td>
+                <td>${MarkerDTO.markedCount}</td>
+                <td>${MarkerDTO.maxScore}</td>
+                <td>${MarkerDTO.minScore}</td>
+                <td>${MarkerDTO.avgScore}</td>
+                <td>
+                    <a href="${ctx}/admin/exam-param/markerInfo/detail?markerId=${MarkerDTO.markerId}">详情</a>
+                </td>
+			</tr>
+		</c:forEach>
+		</tbody>
+	</table>
+	<div class="pagination">${query}</div>
+<script type="text/javascript">
+function page(n,s){
+	$("#pageNumber").val(n);
+	$("#pageSize").val(s);
+	$("#searchForm").submit();
+	return false;
+}
+function goSearch(){
+	$("#pageNumber").val(1);
+	$("#pageSize").val('${query.pageSize}');
+	$("#searchForm").submit();
+	return false;
+}
+</script>
+</body>
+</html>