Ver código fonte

Merge branch 'dev_1.3.15' into release_1.3.15

ting.yin 1 ano atrás
pai
commit
118ff67c1b
17 arquivos alterados com 385 adições e 368 exclusões
  1. 310 296
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/common/BaseQuery.java
  2. 8 3
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/impl/ExamStudentServiceImpl.java
  3. 1 1
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/impl/InspectedServiceImpl.java
  4. 18 18
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/dao/MarkLibraryDao.java
  5. 12 8
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/dao/TrialLibraryDao.java
  6. 0 4
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/query/MarkLibrarySearchQuery.java
  7. 0 4
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/query/TrialLibrarySearchQuery.java
  8. 2 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/service/Impl/ArbitrateHistoryServiceImpl.java
  9. 20 15
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/service/Impl/MarkLibraryServiceImpl.java
  10. 5 5
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/service/Impl/MarkServiceImpl.java
  11. 4 3
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/service/Impl/TrialServiceImpl.java
  12. 3 3
      stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/ArbitrateController.java
  13. 0 1
      stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/LibraryController.java
  14. 0 2
      stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/ScoreController.java
  15. 0 2
      stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/StudentController.java
  16. 0 1
      stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/TrialController.java
  17. 2 2
      stmms-web/src/main/java/cn/com/qmth/stmms/mark/MarkController.java

+ 310 - 296
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/common/BaseQuery.java

@@ -1,296 +1,310 @@
-package cn.com.qmth.stmms.biz.common;
-
-import java.util.List;
-
-import org.springframework.data.domain.Pageable;
-import org.springframework.data.domain.Sort;
-
-public class BaseQuery<T> implements Pageable {
-
-    public static final int DEFAULT_PAGE_SIZE = 10;
-
-    private int pageNumber = 1;
-
-    private int pageSize = 20;
-
-    private Sort sort;
-
-    private List<T> result;
-
-    private long currentCount;
-
-    private int totalPage;
-
-    private long totalCount;
-
-    private int first;// 首页索引
-
-    private int last;// 尾页索引
-
-    private int prev;// 上一页索引
-
-    private int next;// 下一页索引
-
-    private boolean firstPage;// 是否是第一页
-
-    private boolean lastPage;// 是否是最后一页
-
-    private int length = 8;// 显示页面长度
-
-    private int slider = 1;// 前后显示页面长度
-
-    private String funcName = "page"; // 设置点击页码调用的js函数名称,默认为page,在一页有多个分页对象时使用。
-
-    private String message = ""; // 设置提示消息,显示在“共n条”之后
-
-    public BaseQuery() {
-
-    }
-
-    public BaseQuery(int pageNumber, int pageSize, Sort sort) {
-        this.pageNumber = pageNumber;
-        this.pageSize = pageSize;
-        this.sort = sort;
-    }
-
-    public List<T> getResult() {
-        return result;
-    }
-
-    public void setResult(List<T> result) {
-        this.result = result;
-    }
-
-    @Override
-    public int getOffset() {
-        return (pageNumber - 1) * pageSize;
-    }
-
-    public void setPageNumber(int pageNumber) {
-        this.pageNumber = pageNumber;
-    }
-
-    @Override
-    public int getPageNumber() {
-        return pageNumber;
-    }
-
-    public void setPageSize(int pageSize) {
-        this.pageSize = pageSize;
-    }
-
-    @Override
-    public int getPageSize() {
-        return pageSize;
-    }
-
-    public void setSort(Sort sort) {
-        this.sort = sort;
-    }
-
-    @Override
-    public Sort getSort() {
-        return sort;
-    }
-
-    public int getTotalPage() {
-        return totalPage;
-    }
-
-    public void setTotalPage(int totalPage) {
-        this.totalPage = totalPage;
-    }
-
-    public long getTotalCount() {
-        return totalCount;
-    }
-
-    public void setTotalCount(long totalCount) {
-        this.totalCount = totalCount;
-    }
-
-    public long getCurrentCount() {
-        return currentCount;
-    }
-
-    public void setCurrentCount(long currentCount) {
-        this.currentCount = currentCount;
-    }
-
-    @Override
-    public Pageable next() {
-        return new BaseQuery<T>(pageNumber + 1, pageSize, sort);
-    }
-
-    @Override
-    public Pageable previousOrFirst() {
-        return new BaseQuery<T>(pageNumber > 1 ? (pageNumber - 1) : 1, pageSize, sort);
-    }
-
-    @Override
-    public Pageable first() {
-        return new BaseQuery<T>(1, pageSize, sort);
-    }
-
-    @Override
-    public boolean hasPrevious() {
-        return pageNumber > 1;
-    }
-
-    /**
-     * 初始化参数
-     */
-    public void initialize() {
-
-        // 1
-        this.first = 1;
-
-        this.last = (int) (totalCount / (this.pageSize < 1 ? 20 : this.pageSize) + first - 1);
-
-        if (this.totalCount % this.pageSize != 0 || this.last == 0) {
-            this.last++;
-        }
-
-        if (this.last < this.first) {
-            this.last = this.first;
-        }
-
-        if (this.pageNumber <= 1) {
-            this.pageNumber = this.first;
-            this.firstPage = true;
-        }
-
-        if (this.pageNumber >= this.last) {
-            this.pageNumber = this.last;
-            this.lastPage = true;
-        }
-
-        if (this.pageNumber < this.last - 1) {
-            this.next = this.pageNumber + 1;
-        } else {
-            this.next = this.last;
-        }
-
-        if (this.pageNumber > 1) {
-            this.prev = this.pageNumber - 1;
-        } else {
-            this.prev = this.first;
-        }
-
-        // 2
-        if (this.pageNumber < this.first) {// 如果当前页小于首页
-            this.pageNumber = this.first;
-        }
-
-        if (this.pageNumber > this.last) {// 如果当前页大于尾页
-            this.pageNumber = this.last;
-        }
-
-    }
-
-    /**
-     * 默认输出当前分页标签 <div class="page">${page}</div>
-     */
-    @Override
-    public String toString() {
-
-        initialize();
-
-        StringBuilder sb = new StringBuilder();
-
-        if (pageNumber == first) {// 如果是首页
-            sb.append("<li class=\"disabled\"><a href=\"javascript:\">&#171; 上一页</a></li>\n");
-        } else {
-            sb.append("<li><a href=\"javascript:\" onclick=\"" + funcName + "(" + prev + "," + pageSize
-                    + ");\">&#171; 上一页</a></li>\n");
-        }
-
-        int begin = pageNumber - (length / 2);
-
-        if (begin < first) {
-            begin = first;
-        }
-
-        int end = begin + length - 1;
-
-        if (end >= last) {
-            end = last;
-            begin = end - length + 1;
-            if (begin < first) {
-                begin = first;
-            }
-        }
-
-        if (begin > first) {
-            int i = 0;
-            for (i = first; i < first + slider && i < begin; i++) {
-                sb.append("<li><a href=\"javascript:\" onclick=\"" + funcName + "(" + i + "," + pageSize + ");\">"
-                        + (i + 1 - first) + "</a></li>\n");
-            }
-            if (i < begin) {
-                sb.append("<li class=\"disabled\"><a href=\"javascript:\">...</a></li>\n");
-            }
-        }
-
-        for (int i = begin; i <= end; i++) {
-            if (i == pageNumber) {
-                sb.append("<li class=\"active\"><a href=\"javascript:\">" + (i + 1 - first) + "</a></li>\n");
-            } else {
-                sb.append("<li><a href=\"javascript:\" onclick=\"" + funcName + "(" + i + "," + pageSize + ");\">"
-                        + (i + 1 - first) + "</a></li>\n");
-            }
-        }
-
-        if (last - end > slider) {
-            sb.append("<li class=\"disabled\"><a href=\"javascript:\">...</a></li>\n");
-            end = last - slider;
-        }
-
-        for (int i = end + 1; i <= last; i++) {
-            sb.append("<li><a href=\"javascript:\" onclick=\"" + funcName + "(" + i + "," + pageSize + ");\">"
-                    + (i + 1 - first) + "</a></li>\n");
-        }
-
-        if (pageNumber == last) {
-            sb.append("<li class=\"disabled\"><a href=\"javascript:\">下一页 &#187;</a></li>\n");
-        } else {
-            sb.append("<li><a href=\"javascript:\" onclick=\"" + funcName + "(" + next + "," + pageSize + ");\">"
-                    + "下一页 &#187;</a></li>\n");
-        }
-
-        sb.append("<li class=\"disabled controls\"><a href=\"javascript:\">当前 ");
-        sb.append("<input type=\"text\" value=\"" + pageNumber
-                + "\" onkeypress=\"var e=window.event||this;var c=e.keyCode||e.which;if(c==13)");
-        sb.append(funcName + "(this.value," + pageSize + ");\" onclick=\"this.select();\"/> 页/ ");
-        sb.append("<input type=\"text\" value=\"" + pageSize
-                + "\" onkeypress=\"var e=window.event||this;var c=e.keyCode||e.which;if(c==13)");
-        sb.append(funcName + "(" + pageNumber + ",this.value);\" onclick=\"this.select();\"/> 行,");
-        sb.append("共 " + totalCount + " 条" + (message != null ? message : "") + "</a><li>\n");
-
-        sb.insert(0, "<ul>\n").append("</ul>\n");
-
-        sb.append("<div style=\"clear:both;\"></div>");
-
-        // sb.insert(0,"<div class=\"page\">\n").append("</div>\n");
-
-        return sb.toString();
-    }
-
-    /**
-     * 获取分页HTML代码
-     * 
-     * @return
-     */
-    public String getHtml() {
-        return toString();
-    }
-
-    public boolean isFirstPage() {
-        return firstPage;
-    }
-
-    public boolean isLastPage() {
-        return lastPage;
-    }
-
-}
+package cn.com.qmth.stmms.biz.common;
+
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.domain.Sort;
+
+import java.util.List;
+
+public class BaseQuery<T> implements Pageable {
+
+    public static final int DEFAULT_PAGE_SIZE = 10;
+
+    private int pageNumber = 1;
+
+    private int pageSize = 20;
+
+    private Sort sort;
+
+    private List<T> result;
+
+    private long currentCount;
+
+    private int totalPage;
+
+    private long totalCount;
+
+    private int first;// 首页索引
+
+    private int last;// 尾页索引
+
+    private int prev;// 上一页索引
+
+    private int next;// 下一页索引
+
+    private boolean firstPage;// 是否是第一页
+
+    private boolean lastPage;// 是否是最后一页
+
+    private int length = 8;// 显示页面长度
+
+    private int slider = 1;// 前后显示页面长度
+
+    private String funcName = "page"; // 设置点击页码调用的js函数名称,默认为page,在一页有多个分页对象时使用。
+
+    private String message = ""; // 设置提示消息,显示在“共n条”之后
+
+    public BaseQuery() {
+
+    }
+
+    public BaseQuery(int pageNumber, int pageSize, Sort sort) {
+        this.pageNumber = pageNumber;
+        this.pageSize = pageSize;
+        this.sort = sort;
+    }
+
+    public List<T> getResult() {
+        return result;
+    }
+
+    public void setResult(List<T> result) {
+        this.result = result;
+    }
+
+    @Override
+    public int getOffset() {
+        return (pageNumber - 1) * pageSize;
+    }
+
+    public void setPageNumber(int pageNumber) {
+        this.pageNumber = pageNumber;
+    }
+
+    @Override
+    public int getPageNumber() {
+        return pageNumber;
+    }
+
+    public void setPageSize(int pageSize) {
+        this.pageSize = pageSize;
+    }
+
+    @Override
+    public int getPageSize() {
+        return pageSize;
+    }
+
+    public void setSort(Sort sort) {
+        this.sort = sort;
+    }
+
+    @Override
+    public Sort getSort() {
+        return sort;
+    }
+
+    public int getTotalPage() {
+        return totalPage;
+    }
+
+    public void setTotalPage(int totalPage) {
+        this.totalPage = totalPage;
+    }
+
+    public long getTotalCount() {
+        return totalCount;
+    }
+
+    public void setTotalCount(long totalCount) {
+        this.totalCount = totalCount;
+    }
+
+    public long getCurrentCount() {
+        return currentCount;
+    }
+
+    public void setCurrentCount(long currentCount) {
+        this.currentCount = currentCount;
+    }
+
+    @Override
+    public Pageable next() {
+        return new BaseQuery<T>(pageNumber + 1, pageSize, sort);
+    }
+
+    @Override
+    public Pageable previousOrFirst() {
+        return new BaseQuery<T>(pageNumber > 1 ? (pageNumber - 1) : 1, pageSize, sort);
+    }
+
+    @Override
+    public Pageable first() {
+        return new BaseQuery<T>(1, pageSize, sort);
+    }
+
+    @Override
+    public boolean hasPrevious() {
+        return pageNumber > 1;
+    }
+
+    /**
+     * 初始化参数
+     */
+    public void initialize() {
+
+        // 1
+        this.first = 1;
+
+        this.last = (int) (totalCount / (this.pageSize < 1 ? 20 : this.pageSize) + first - 1);
+
+        if (this.totalCount % this.pageSize != 0 || this.last == 0) {
+            this.last++;
+        }
+
+        if (this.last < this.first) {
+            this.last = this.first;
+        }
+
+        if (this.pageNumber <= 1) {
+            this.pageNumber = this.first;
+            this.firstPage = true;
+        }
+
+        if (this.pageNumber >= this.last) {
+            this.pageNumber = this.last;
+            this.lastPage = true;
+        }
+
+        if (this.pageNumber < this.last - 1) {
+            this.next = this.pageNumber + 1;
+        } else {
+            this.next = this.last;
+        }
+
+        if (this.pageNumber > 1) {
+            this.prev = this.pageNumber - 1;
+        } else {
+            this.prev = this.first;
+        }
+
+        // 2
+        if (this.pageNumber < this.first) {// 如果当前页小于首页
+            this.pageNumber = this.first;
+        }
+
+        if (this.pageNumber > this.last) {// 如果当前页大于尾页
+            this.pageNumber = this.last;
+        }
+
+    }
+
+    /**
+     * 默认输出当前分页标签 <div class="page">${page}</div>
+     */
+    @Override
+    public String toString() {
+
+        initialize();
+
+        StringBuilder sb = new StringBuilder();
+
+        if (pageNumber == first) {// 如果是首页
+            sb.append("<li class=\"disabled\"><a href=\"javascript:\">&#171; 上一页</a></li>\n");
+        } else {
+            sb.append("<li><a href=\"javascript:\" onclick=\"" + funcName + "(" + prev + "," + pageSize
+                    + ");\">&#171; 上一页</a></li>\n");
+        }
+
+        int begin = pageNumber - (length / 2);
+
+        if (begin < first) {
+            begin = first;
+        }
+
+        int end = begin + length - 1;
+
+        if (end >= last) {
+            end = last;
+            begin = end - length + 1;
+            if (begin < first) {
+                begin = first;
+            }
+        }
+
+        if (begin > first) {
+            int i = 0;
+            for (i = first; i < first + slider && i < begin; i++) {
+                sb.append("<li><a href=\"javascript:\" onclick=\"" + funcName + "(" + i + "," + pageSize + ");\">" + (
+                        i + 1 - first) + "</a></li>\n");
+            }
+            if (i < begin) {
+                sb.append("<li class=\"disabled\"><a href=\"javascript:\">...</a></li>\n");
+            }
+        }
+
+        for (int i = begin; i <= end; i++) {
+            if (i == pageNumber) {
+                sb.append("<li class=\"active\"><a href=\"javascript:\">" + (i + 1 - first) + "</a></li>\n");
+            } else {
+                sb.append("<li><a href=\"javascript:\" onclick=\"" + funcName + "(" + i + "," + pageSize + ");\">" + (
+                        i + 1 - first) + "</a></li>\n");
+            }
+        }
+
+        if (last - end > slider) {
+            sb.append("<li class=\"disabled\"><a href=\"javascript:\">...</a></li>\n");
+            end = last - slider;
+        }
+
+        for (int i = end + 1; i <= last; i++) {
+            sb.append("<li><a href=\"javascript:\" onclick=\"" + funcName + "(" + i + "," + pageSize + ");\">" + (i + 1
+                    - first) + "</a></li>\n");
+        }
+
+        if (pageNumber == last) {
+            sb.append("<li class=\"disabled\"><a href=\"javascript:\">下一页 &#187;</a></li>\n");
+        } else {
+            sb.append("<li><a href=\"javascript:\" onclick=\"" + funcName + "(" + next + "," + pageSize + ");\">"
+                    + "下一页 &#187;</a></li>\n");
+        }
+
+        sb.append("<li class=\"disabled controls\"><a href=\"javascript:\">当前 ");
+        sb.append("<input type=\"text\" value=\"" + pageNumber
+                + "\" onkeypress=\"var e=window.event||this;var c=e.keyCode||e.which;if(c==13)");
+        sb.append(funcName + "(this.value," + pageSize + ");\" onclick=\"this.select();\"/> 页/ ");
+        sb.append("<input type=\"text\" value=\"" + pageSize
+                + "\" onkeypress=\"var e=window.event||this;var c=e.keyCode||e.which;if(c==13)");
+        sb.append(funcName + "(" + pageNumber + ",this.value);\" onclick=\"this.select();\"/> 行,");
+        sb.append("共 " + totalCount + " 条" + (message != null ? message : "") + "</a><li>\n");
+
+        sb.insert(0, "<ul>\n").append("</ul>\n");
+
+        sb.append("<div style=\"clear:both;\"></div>");
+
+        // sb.insert(0,"<div class=\"page\">\n").append("</div>\n");
+
+        return sb.toString();
+    }
+
+    /**
+     * 获取分页HTML代码
+     *
+     * @return
+     */
+    public String getHtml() {
+        return toString();
+    }
+
+    public boolean isFirstPage() {
+        return firstPage;
+    }
+
+    public boolean isLastPage() {
+        return lastPage;
+    }
+
+    /**
+     * 补充排序规则,若字段未用于排序则补充到当前排序规则中去,若字段已使用则直接跳过,不管顺序是否相同
+     *
+     * @param field
+     * @param direction
+     */
+    public void addSort(String field, Sort.Direction direction) {
+        if (sort == null) {
+            sort = new Sort(direction, field);
+        } else if (sort.getOrderFor(field) == null) {
+            sort = sort.and(new Sort(direction, field));
+        }
+    }
+
+}

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

@@ -259,6 +259,7 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
 
     public ExamStudentSearchQuery findByQuery(final ExamStudentSearchQuery query) {
         checkQuery(query);
+        query.addSort("id", Direction.ASC);
         if (query.getSheetCount() != null) {
             query.setSheetCount(query.getSheetCount() * 2);
         }
@@ -284,7 +285,7 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
         ExamStudentSearchQuery query = new ExamStudentSearchQuery();
         query.setPageNumber(pageNumber);
         query.setPageSize(pageSize);
-        query.setSort(new Sort(Direction.ASC, "id"));
+        query.addSort("id", Direction.ASC);
         return studentDao.findByExamId(examId, query);
     }
 
@@ -293,7 +294,7 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
         ExamStudentSearchQuery query = new ExamStudentSearchQuery();
         query.setPageNumber(pageNumber);
         query.setPageSize(pageSize);
-        query.setSort(new Sort(Direction.ASC, "id"));
+        query.addSort("id", Direction.ASC);
         return studentDao.findByExamIdAndSubjectCode(examId, subjectCode, query);
     }
 
@@ -303,6 +304,7 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
         ExamStudentSearchQuery query = new ExamStudentSearchQuery();
         query.setPageNumber(pageNumber);
         query.setPageSize(pageSize);
+        query.addSort("id", Direction.ASC);
         return studentDao.findByExamIdAndUploadAndAbsent(examId, upload, absent, query);
     }
 
@@ -311,6 +313,7 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
         ExamStudentSearchQuery query = new ExamStudentSearchQuery();
         query.setPageNumber(pageNumber);
         query.setPageSize(pageSize);
+        query.addSort("id", Direction.ASC);
         return studentDao.findByExamIdAndCampusName(examId, campusName, query);
     }
 
@@ -783,6 +786,7 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
         ExamStudentSearchQuery query = new ExamStudentSearchQuery();
         query.setPageNumber(1);
         query.setPageSize(count);
+        query.addSort("id", Direction.ASC);
         return studentDao.findUnLibraryStudent(examId, subjectCode, groupNumber, query);
     }
 
@@ -1185,7 +1189,7 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
         query.addStatus(SubjectiveStatus.UNMARK);
         query.setPageNumber(1);
         query.setPageSize(200);
-        query.setSort(new Sort(Direction.ASC, "uploadTime", "id"));
+        query.setSort(new Sort(Direction.ASC, "uploadTime"));
         List<ExamStudent> list = findByQuery(query).getResult();
         if (list.isEmpty()) {
             return null;
@@ -1378,6 +1382,7 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
         sql.append(" ,s.exam_site examSite,s.exam_room examRoom,s.package_code packageCode");
         sql.append(" from eb_exam_student s ");
         sql.append(getWhereSql(req));
+        sql.append(" order by s.id ");
         sql.append(" limit " + offset + "," + req.getPageSize());
         Query query = entityManager.createNativeQuery(sql.toString());
         query.unwrap(SQLQuery.class).setResultTransformer(Transformers.aliasToBean(ExamStudent.class));

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

@@ -68,7 +68,7 @@ public class InspectedServiceImpl extends BaseQueryService<ExamStudent> implemen
         sql.append(" s.inspector_id inspectorId,s.inspected ");
         sql.append(" from eb_exam_student s left join eb_exam_subject es on s.exam_id=es.exam_id and s.subject_code=es.code ");
         String whereSql = getWhereSql(query, status, mainNumber, mainStartScore, mainEndScore, selectiveStatus);
-        sql.append(whereSql).append(" order by s.inspect_time desc ");
+        sql.append(whereSql).append(" order by s.inspect_time desc,s.id asc");
         if (!query.isExport()) {
             sql.append(" limit " + offset + "," + query.getPageSize());
         }

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

@@ -15,13 +15,13 @@ import java.util.Set;
 
 public interface MarkLibraryDao extends JpaRepository<MarkLibrary, Integer>, JpaSpecificationExecutor<MarkLibrary> {
 
-    List<MarkLibrary> findByExamIdAndSubjectCode(Integer examId, String subjectCode, Pageable page);
-
-    List<MarkLibrary> findByExamIdAndSubjectCodeAndGroupNumberAndStatus(Integer examId, String subjectCode,
-            Integer groupNumber, LibraryStatus status, Pageable page);
-
-    List<MarkLibrary> findByExamIdAndSubjectCodeAndGroupNumberAndStatusIn(Integer examId, String subjectCode,
-            Integer groupNumber, Set<LibraryStatus> statusSet, Pageable page);
+//    List<MarkLibrary> findByExamIdAndSubjectCode(Integer examId, String subjectCode, Pageable page);
+//
+//    List<MarkLibrary> findByExamIdAndSubjectCodeAndGroupNumberAndStatus(Integer examId, String subjectCode,
+//            Integer groupNumber, LibraryStatus status, Pageable page);
+//
+//    List<MarkLibrary> findByExamIdAndSubjectCodeAndGroupNumberAndStatusIn(Integer examId, String subjectCode,
+//            Integer groupNumber, Set<LibraryStatus> statusSet, Pageable page);
 
     @Query("select l1 from MarkLibrary l1 where l1.examId=?1 and l1.subjectCode=?2 and l1.groupNumber=?3 and l1.status in (?5) and (l1.markerId=?4 or l1.markerId is null ) "
             + "and not exists (select l2 from MarkLibrary l2 where l2.studentId=l1.studentId and l2.id!=l1.id and l2.markerId=?4 and l2.markerScore is not null) ")
@@ -53,9 +53,9 @@ public interface MarkLibraryDao extends JpaRepository<MarkLibrary, Integer>, Jpa
     @Query("select count(f) from MarkLibrary f where f.examId=?1 and f.subjectCode=?2 and f.groupNumber=?3")
     long countByExamIdAndSubjectCodeAndGroupNumber(Integer examId, String subjectCode, Integer groupNumber);
 
-    @Query("select count(f) from MarkLibrary f where f.examId=?1 and f.subjectCode=?2 and f.groupNumber=?3 and f.taskNumber=?4")
-    long countByExamIdAndSubjectCodeAndGroupNumberAndTaskNumber(Integer examId, String subjectCode,
-            Integer groupNumber, Integer taskNumber);
+//    @Query("select count(f) from MarkLibrary f where f.examId=?1 and f.subjectCode=?2 and f.groupNumber=?3 and f.taskNumber=?4")
+//    long countByExamIdAndSubjectCodeAndGroupNumberAndTaskNumber(Integer examId, String subjectCode,
+//            Integer groupNumber, Integer taskNumber);
 
     @Query("select count(f) from MarkLibrary f where f.examId=?1 and f.subjectCode=?2 and f.groupNumber=?3 and f.status in (?4)")
     long countByExamIdAndSubjectCodeAndGroupNumberAndStatus(Integer examId, String subjectCode, Integer groupNumber,
@@ -64,8 +64,8 @@ public interface MarkLibraryDao extends JpaRepository<MarkLibrary, Integer>, Jpa
     @Query("select count(f) from MarkLibrary f where f.studentId=?1 and f.groupNumber=?2")
     long countByStudentIdAndGroupNumber(Integer studentId, Integer groupNumber);
 
-    @Query("select count(f) from MarkLibrary f where f.studentId=?1 and f.markerId=?2")
-    long countByStudentIdAndMarkerId(Integer studentId, Integer markerId);
+//    @Query("select count(f) from MarkLibrary f where f.studentId=?1 and f.markerId=?2")
+//    long countByStudentIdAndMarkerId(Integer studentId, Integer markerId);
 
     @Query("select count(f) from MarkLibrary f where f.studentId=?1 and f.markerId=?2 and f.id!=?3")
     long countByStudentIdAndMarkerIdAndIdNotEqual(Integer studentId, Integer markerId, Integer id);
@@ -79,10 +79,10 @@ public interface MarkLibraryDao extends JpaRepository<MarkLibrary, Integer>, Jpa
     void resetByExamIdAndSubjectCodeAndGroupNumber(Integer examId, String subjectCode, Integer groupNumber,
             LibraryStatus status);
 
-    @Modifying(clearAutomatically = true)
-    @Query("update MarkLibrary m set m.status=?2, m.markerId=null, m.markerTime=null, m.markerScore=null, m.markerScoreList=null, m.markerSpent=null, "
-            + "m.headerId=null , m.headerTime=null , m.headerScore=null , m.headerScoreList=null where m.markerId=?1 and m.status not in (?3) ")
-    void resetByMarkerId(Integer markerId, LibraryStatus status, LibraryStatus... notInStatus);
+//    @Modifying(clearAutomatically = true)
+//    @Query("update MarkLibrary m set m.status=?2, m.markerId=null, m.markerTime=null, m.markerScore=null, m.markerScoreList=null, m.markerSpent=null, "
+//            + "m.headerId=null , m.headerTime=null , m.headerScore=null , m.headerScoreList=null where m.markerId=?1 and m.status not in (?3) ")
+//    void resetByMarkerId(Integer markerId, LibraryStatus status, LibraryStatus... notInStatus);
 
     @Modifying(clearAutomatically = true)
     @Query("update MarkLibrary m set m.status=?6, m.markerId=?2, m.rejectReason=?3, m.markerTime=null, m.markerScore=null, m.markerScoreList=null, m.markerSpent=null, "
@@ -96,8 +96,8 @@ public interface MarkLibraryDao extends JpaRepository<MarkLibrary, Integer>, Jpa
     @Query("select f.markerId, count(f) as markerCount from MarkLibrary f where f.examId=?1 and f.subjectCode in (?2) and f.status in (?3) and f.markerScore != -1 group by f.markerId")
     List<Object[]> countMarkerAndStatusAndSubjectCodeIn(Integer examId, Set<String> codes, LibraryStatus... status);
 
-    @Query("select f.markerId, count(f) as markerCount from MarkLibrary f where f.examId=?1 and f.subjectCode=?2 and f.status in (?3) group by f.markerId")
-    List<Object[]> countMarkerAndStatus(Integer examId, String subjectCode, LibraryStatus... status);
+//    @Query("select f.markerId, count(f) as markerCount from MarkLibrary f where f.examId=?1 and f.subjectCode=?2 and f.status in (?3) group by f.markerId")
+//    List<Object[]> countMarkerAndStatus(Integer examId, String subjectCode, LibraryStatus... status);
 
     @Query("select count(f) from MarkLibrary f where f.markerId=?1 and f.status in (?2)")
     long countByMarkerAndStatus(Integer markerId, LibraryStatus... status);

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

@@ -12,10 +12,12 @@ import cn.com.qmth.stmms.biz.mark.model.TrialLibrary;
 
 public interface TrialLibraryDao extends JpaRepository<TrialLibrary, Integer>, JpaSpecificationExecutor<TrialLibrary> {
 
-    List<TrialLibrary> findByExamIdAndSubjectCode(Integer examId, String subjectCode, Pageable page);
+    // List<TrialLibrary> findByExamIdAndSubjectCode(Integer examId, String
+    // subjectCode, Pageable page);
 
-    List<TrialLibrary> findByExamIdAndSubjectCodeAndGroupNumber(Integer examId, String subjectCode,
-            Integer groupNumber, Pageable page);
+    // List<TrialLibrary> findByExamIdAndSubjectCodeAndGroupNumber(Integer
+    // examId, String subjectCode,
+    // Integer groupNumber, Pageable page);
 
     @Query("select l from TrialLibrary l where l.examId=?1 and l.subjectCode=?2 and l.groupNumber=?3 "
             + "and l.markerId is null ")
@@ -25,16 +27,18 @@ public interface TrialLibraryDao extends JpaRepository<TrialLibrary, Integer>, J
             + "and l.markerId is not null ")
     long countMarked(Integer examId, String subjectCode, Integer groupNumber);
 
-    @Query("select l from TrialLibrary l where l.studentId=?1 order by l.groupNumber ")
-    List<TrialLibrary> findByStudentId(Integer studentId);
+    // @Query("select l from TrialLibrary l where l.studentId=?1 order by l.groupNumber ")
+    // List<TrialLibrary> findByStudentId(Integer studentId);
 
-    List<TrialLibrary> findByStudentIdAndGroupNumber(Integer studentId, Integer groupNumber);
+    // List<TrialLibrary> findByStudentIdAndGroupNumber(Integer studentId,
+    // Integer groupNumber);
 
     @Query("select count(*) from TrialLibrary f where f.examId=?1 and f.subjectCode=?2 and f.groupNumber=?3")
     long countByExamIdAndSubjectCodeAndGroupNumber(Integer examId, String subjectCode, Integer groupNumber);
 
-    @Query("select count(*) from TrialLibrary f where f.studentId=?1 and f.groupNumber=?2")
-    long countByStudentIdAndGroupNumber(Integer studentId, Integer groupNumber);
+    // @Query("select count(*) from TrialLibrary f where f.studentId=?1 and f.groupNumber=?2")
+    // long countByStudentIdAndGroupNumber(Integer studentId, Integer
+    // groupNumber);
 
     @Modifying
     @Query("delete TrialLibrary m where m.examId=?1 and m.subjectCode=?2 and m.groupNumber=?3")

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

@@ -63,10 +63,6 @@ public class MarkLibrarySearchQuery extends BaseQuery<MarkLibrary> {
         setSort(new Sort(Direction.ASC, "examNumber"));
     }
 
-    public void orderById() {
-        setSort(new Sort(Direction.ASC, "id"));
-    }
-
     public int getExamId() {
         return examId;
     }

+ 0 - 4
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/query/TrialLibrarySearchQuery.java

@@ -23,10 +23,6 @@ public class TrialLibrarySearchQuery extends BaseQuery<TrialLibrary> {
         setSort(new Sort(Direction.ASC, "examNumber"));
     }
 
-    public void orderById() {
-        setSort(new Sort(Direction.ASC, "id"));
-    }
-
     public Integer getExamId() {
         return examId;
     }

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

@@ -11,6 +11,7 @@ import javax.persistence.criteria.Root;
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Sort.Direction;
 import org.springframework.data.jpa.domain.Specification;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -69,6 +70,7 @@ public class ArbitrateHistoryServiceImpl extends BaseQueryService<ArbitrateHisto
     @Override
     public ArbitrateHistorySearchQuery findByQuery(final ArbitrateHistorySearchQuery query) {
         checkQuery(query);
+        query.addSort("id", Direction.ASC);
         Page<ArbitrateHistory> result = historyDao.findAll(buildSpecification(query), query);
         fillResult(result, query);
         return query;

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

@@ -1,5 +1,22 @@
 package cn.com.qmth.stmms.biz.mark.service.Impl;
 
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Set;
+
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+
+import org.apache.commons.lang.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Sort.Direction;
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
 import cn.com.qmth.stmms.biz.common.BaseQueryService;
 import cn.com.qmth.stmms.biz.mark.dao.MarkLibraryDao;
 import cn.com.qmth.stmms.biz.mark.model.MarkLibrary;
@@ -8,20 +25,6 @@ import cn.com.qmth.stmms.biz.mark.service.MarkLibraryService;
 import cn.com.qmth.stmms.biz.utils.TaskLock;
 import cn.com.qmth.stmms.biz.utils.TaskLockUtil;
 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.data.jpa.domain.Specification;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Set;
 
 @Service
 public class MarkLibraryServiceImpl extends BaseQueryService<MarkLibrary> implements MarkLibraryService {
@@ -52,7 +55,7 @@ public class MarkLibraryServiceImpl extends BaseQueryService<MarkLibrary> implem
         MarkLibrarySearchQuery query = new MarkLibrarySearchQuery();
         query.setPageNumber(pageNumber);
         query.setPageSize(pageSize);
-
+        query.addSort("id", Direction.ASC);
         return filterClass ? libraryDao.findUnMarkedFilterClass(examId, subjectCode, groupNumber, markerId, userId,
                 statusSet, query) : libraryDao.findUnMarked(examId, subjectCode, groupNumber, markerId, statusSet,
                 query);
@@ -87,6 +90,7 @@ public class MarkLibraryServiceImpl extends BaseQueryService<MarkLibrary> implem
     @Override
     public MarkLibrarySearchQuery findByQuery(final MarkLibrarySearchQuery query) {
         checkQuery(query);
+        query.addSort("id", Direction.ASC);
         Page<MarkLibrary> result = libraryDao.findAll(buildSpecification(query), query);
         fillResult(result, query);
         return query;
@@ -270,6 +274,7 @@ public class MarkLibraryServiceImpl extends BaseQueryService<MarkLibrary> implem
     @Override
     public MarkLibrarySearchQuery findHistory(MarkLibrarySearchQuery query) {
         checkQuery(query);
+        query.addSort("id", Direction.ASC);
         Page<MarkLibrary> result = libraryDao.findAll(buildHistotySpecification(query), query);
         fillResult(result, query);
         return query;

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

@@ -1121,14 +1121,14 @@ public class MarkServiceImpl implements MarkService {
                     }
                 }
             }
-            if (partScoreList.size()>0&&partScoreList.size() < selectiveCount) {
+            if (partScoreList.size() > 0 && partScoreList.size() < selectiveCount) {
                 lessSelective = true;
             }
-            if (partScoreList.size()>0&&partScoreList.size() > selectiveCount) {
+            if (partScoreList.size() > 0 && partScoreList.size() > selectiveCount) {
                 mutiSelective = true;
             }
-            if(partScoreList.size()==0) {
-            	notSelective = true;
+            if (partScoreList.size() == 0) {
+                notSelective = true;
             }
         }
         // 统一更新得分详情
@@ -1422,7 +1422,7 @@ public class MarkServiceImpl implements MarkService {
         MarkLibrarySearchQuery query = new MarkLibrarySearchQuery();
         query.setPageNumber(1);
         query.setPageSize(1);
-        query.setSort(new Sort(Sort.Direction.DESC, "markerTime"));
+        query.setSort(new Sort(Sort.Direction.DESC, "markerTime", "id"));
         List<MarkLibrary> list = libraryDao.findByMarkerIdAndStatus(marker.getId(), LibraryStatus.MARKED, query);
         MarkLibrary library = list.isEmpty() ? null : list.get(0);
         if (library != null && library.getMarkerTime() != null) {

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

@@ -51,13 +51,14 @@ public class TrialServiceImpl extends BaseQueryService<TrialLibrary> implements
         TrialLibrarySearchQuery query = new TrialLibrarySearchQuery();
         query.setPageNumber(pageNumber);
         query.setPageSize(pageSize);
-
+        query.addSort("id", Direction.ASC);
         return libraryDao.findUnMarked(examId, subjectCode, groupNumber, query);
     }
 
     @Override
     public TrialLibrarySearchQuery findLibrary(final TrialLibrarySearchQuery query) {
         checkQuery(query);
+        query.addSort("id", Direction.ASC);
         Page<TrialLibrary> result = libraryDao.findAll(buildSpecification(query), query);
         fillResult(result, query);
         return query;
@@ -77,7 +78,7 @@ public class TrialServiceImpl extends BaseQueryService<TrialLibrary> implements
         if (sort != null) {
             query.setSort(sort);
         } else {
-            query.setSort(new Sort(Direction.DESC, "markerTime"));
+            query.setSort(new Sort(Direction.DESC, "markerTime", "id"));
         }
         if (markerScore != null) {
             return libraryDao.findByExamIdAndSubjectCodeAndGroupNumberAndMarkerIdAndMarkerScore(examId, subjectCode,
@@ -137,7 +138,7 @@ public class TrialServiceImpl extends BaseQueryService<TrialLibrary> implements
         if (sort != null) {
             query.setSort(sort);
         } else {
-            query.setSort(new Sort(Direction.DESC, "markerTime"));
+            query.setSort(new Sort(Direction.DESC, "markerTime", "id"));
         }
         return libraryDao.findByExamIdAndSubjectCodeAndGroupNumberAndMarkerIdAndSecretNumber(examId, subjectCode,
                 groupNumber, markerId, secretNumber, query);

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

@@ -265,9 +265,9 @@ public class ArbitrateController extends BaseExamController {
             d = Direction.ASC;
         }
         if (order.equals("markerTime")) {
-            querySort = new Sort(d, "updateTime");
+            querySort = new Sort(d, "updateTime", "id");
         } else if (order.equals("markerScore")) {
-            querySort = new Sort(d, "totalScore");
+            querySort = new Sort(d, "totalScore", "id");
         }
         MarkGroup group = groupService.findOne(examId, subjectCode, groupNumber);
         List<Task> list = new LinkedList<Task>();
@@ -364,7 +364,7 @@ public class ArbitrateController extends BaseExamController {
                 result.accumulate("success", false);
                 result.accumulate("message", "评卷任务提交失败");
             } finally {
-            	lockService.unlock(LockType.STUDENT, markResult.getStudentId());
+                lockService.unlock(LockType.STUDENT, markResult.getStudentId());
                 lockService.unwatch(LockType.GROUP, history.getExamId(), history.getSubjectCode(),
                         history.getGroupNumber());
                 lockService.unwatch(LockType.EXAM_SUBJECT, history.getExamId(), history.getSubjectCode());

+ 0 - 1
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/LibraryController.java

@@ -117,7 +117,6 @@ public class LibraryController extends BaseExamController {
         List<MarkGroup> groupList = groupService.findByExamAndSubjectAndStatus(examId, query.getSubjectCode(),
                 MarkStatus.FORMAL);
         if (!groupList.isEmpty()) {
-            query.orderById();
             query = libraryService.findByQuery(query);
             for (MarkLibrary library : query.getResult()) {
                 if (library.getMarkerId() != null) {

+ 0 - 2
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/ScoreController.java

@@ -82,7 +82,6 @@ public class ScoreController extends BaseExamController {
         ModelAndView view = new ModelAndView("modules/exam/scoreList");
         int examId = getSessionExamId(request);
         query.setExamId(examId);
-        query.orderById();
         if (filter == 1) {
             query.setObjectiveScore(0d);
             query.setSubjectiveScoreGt(0d);
@@ -279,7 +278,6 @@ public class ScoreController extends BaseExamController {
                 query.setPageSize(Integer.MAX_VALUE);
                 query.setRole(wu.getRole());
                 query.setUserId(wu.getId());
-                query.orderById();
                 query = studentService.findByQueryPlus(query);
                 for (ExamStudent student : query.getResult()) {
                     if (!student.isUpload() || student.isBreach() || student.isAbsent()) {

+ 0 - 2
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/StudentController.java

@@ -91,7 +91,6 @@ public class StudentController extends BaseExamController {
         if (query.getBatchCode() != null) {
             query.setBatchCode(StringUtils.upperCase(query.getBatchCode()));
         }
-        query.orderById();
         query = studentService.findByQuery(query);
         if (query.getCurrentCount() > 0) {
             for (ExamStudent student : query.getResult()) {
@@ -334,7 +333,6 @@ public class StudentController extends BaseExamController {
             query.setPageNumber(1);
             query.setPageSize(Integer.MAX_VALUE);
             query.setExamId(examId);
-            query.orderById();
             query = studentService.findByQuery(query);
             for (ExamStudent student : query.getResult()) {
                 ExamSubject subject = subjectService.find(student.getExamId(), student.getSubjectCode());

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

@@ -105,7 +105,6 @@ public class TrialController extends BaseExamController {
         List<MarkGroup> groupList = groupService.findByExamAndSubjectAndStatus(examId, query.getSubjectCode(),
                 MarkStatus.TRIAL);
         if (!groupList.isEmpty()) {
-            query.orderById();
             query = trialService.findLibrary(query);
             for (TrialLibrary library : query.getResult()) {
                 if (library.getMarkerId() != null) {

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

@@ -579,9 +579,9 @@ public class MarkController extends BaseController {
             d = Direction.ASC;
         }
         if (order.equals("markerTime")) {
-            querySort = new Sort(d, "markerTime");
+            querySort = new Sort(d, "markerTime", "id");
         } else if (order.equals("markerScore")) {
-            querySort = new Sort(d, "markerScore");
+            querySort = new Sort(d, "markerScore", "id");
         }
         MarkGroup group = groupService.findOne(marker.getExamId(), marker.getSubjectCode(), marker.getGroupNumber());
         Exam exam = examService.findById(marker.getExamId());