浏览代码

补充SubjectiveScore查询结果的排序,保持与ExamQuestion相同逻辑

luoshi 3 年之前
父节点
当前提交
d8c7d1ef58

+ 21 - 1
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/model/SubjectiveScore.java

@@ -11,7 +11,7 @@ import java.io.Serializable;
  */
  */
 @Entity
 @Entity
 @Table(name = "eb_subjective_score")
 @Table(name = "eb_subjective_score")
-public class SubjectiveScore implements Serializable {
+public class SubjectiveScore implements Serializable, Comparable<SubjectiveScore> {
 
 
     private static final long serialVersionUID = 6637010422161820147L;
     private static final long serialVersionUID = 6637010422161820147L;
 
 
@@ -129,4 +129,24 @@ public class SubjectiveScore implements Serializable {
     public void setMainScore(Double mainScore) {
     public void setMainScore(Double mainScore) {
         this.mainScore = mainScore;
         this.mainScore = mainScore;
     }
     }
+
+    @Override
+    public int compareTo(SubjectiveScore other) {
+        int i = this.getMainNumber() - other.getMainNumber();
+        if (i == 0) {
+            if (this.getSubNumber().contains("-")) {
+                String[] o1s = this.getSubNumber().split("-");
+                String[] o2s = other.getSubNumber().split("-");
+                int j = Integer.parseUnsignedInt(o1s[0]) - Integer.parseUnsignedInt(o2s[0]);
+                if (j == 0) {
+                    return Integer.parseUnsignedInt(o1s[1]) - Integer.parseUnsignedInt(o2s[1]);
+                } else {
+                    return j;
+                }
+            } else {
+                return Integer.parseUnsignedInt(this.getSubNumber()) - Integer.parseUnsignedInt(other.getSubNumber());
+            }
+        }
+        return i;
+    }
 }
 }

+ 10 - 7
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/impl/SubjectiveScoreServiceImpl.java

@@ -81,26 +81,29 @@ public class SubjectiveScoreServiceImpl extends BaseQueryService<SubjectiveScore
                 // predicates.add(predicate);
                 // predicates.add(predicate);
                 // }
                 // }
                 if (query.getMainStartScore() != null) {
                 if (query.getMainStartScore() != null) {
-                    Predicate predicate = cb.greaterThanOrEqualTo(root.get("mainScore").as(Double.class),
-                            query.getMainStartScore());
+                    Predicate predicate = cb
+                            .greaterThanOrEqualTo(root.get("mainScore").as(Double.class), query.getMainStartScore());
                     predicates.add(predicate);
                     predicates.add(predicate);
                 }
                 }
                 if (query.getMainEndScore() != null) {
                 if (query.getMainEndScore() != null) {
-                    Predicate predicate = cb.lessThanOrEqualTo(root.get("mainScore").as(Double.class),
-                            query.getMainEndScore());
+                    Predicate predicate = cb
+                            .lessThanOrEqualTo(root.get("mainScore").as(Double.class), query.getMainEndScore());
                     predicates.add(predicate);
                     predicates.add(predicate);
                 }
                 }
                 if (query.getScore() != null) {
                 if (query.getScore() != null) {
                     predicates.add(cb.equal(root.get("score"), query.getScore()));
                     predicates.add(cb.equal(root.get("score"), query.getScore()));
                 }
                 }
-                return predicates.isEmpty() ? cb.conjunction() : cb.and(predicates.toArray(new Predicate[predicates
-                        .size()]));
+                return predicates.isEmpty() ?
+                        cb.conjunction() :
+                        cb.and(predicates.toArray(new Predicate[predicates.size()]));
             }
             }
         };
         };
     }
     }
 
 
     @Override
     @Override
     public List<SubjectiveScore> findByStudentIdAndGroupNumber(Integer studentId, Integer groupNumber) {
     public List<SubjectiveScore> findByStudentIdAndGroupNumber(Integer studentId, Integer groupNumber) {
-        return scoreDao.findByStudentIdAndGroupNumber(studentId, groupNumber);
+        List<SubjectiveScore> list = scoreDao.findByStudentIdAndGroupNumber(studentId, groupNumber);
+        list.sort(null);
+        return list;
     }
     }
 }
 }

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

@@ -846,6 +846,7 @@ public class MarkServiceImpl implements MarkService {
 
 
         // 循环所有主观得分明细
         // 循环所有主观得分明细
         List<SubjectiveScore> list = scoreDao.findByStudentId(studentId);
         List<SubjectiveScore> list = scoreDao.findByStudentId(studentId);
+        list.sort(null);
         for (SubjectiveScore ss : list) {
         for (SubjectiveScore ss : list) {
             List<SubjectiveScore> mainScoreList = mainScoreMap.get(ss.getMainNumber());
             List<SubjectiveScore> mainScoreList = mainScoreMap.get(ss.getMainNumber());
             if (mainScoreList == null) {
             if (mainScoreList == null) {