Ver código fonte

修复客观题排序问题

ting.yin 3 anos atrás
pai
commit
2ae51659dc

+ 18 - 30
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/impl/ExamQuestionServiceImpl.java

@@ -67,15 +67,12 @@ public class ExamQuestionServiceImpl extends BaseQueryService<ExamQuestion> impl
 
     @Override
     public List<ExamQuestion> findByExamAndSubjectAndObjective(Integer examId, String subjectCode, boolean objective) {
-        return questionDao.findByExamIdAndSubjectCodeAndObjective(examId, subjectCode, objective);
+        List<ExamQuestion> list = questionDao.findByExamIdAndSubjectCodeAndObjective(examId, subjectCode, objective);
+        questionSort(list);
+        return list;
     }
 
-    @Override
-    public List<ExamQuestion> findByExamAndSubjectAndObjectiveGroupByNumber(Integer examId, String subjectCode,
-            boolean objective) {
-        List<ExamQuestion> list = questionDao.findByExamIdAndSubjectCodeAndObjectiveGroupByNumber(examId, subjectCode,
-                objective);
-
+    private List<ExamQuestion> questionSort(List<ExamQuestion> list) {
         Collections.sort(list, new Comparator<ExamQuestion>() {
 
             @Override
@@ -102,35 +99,22 @@ public class ExamQuestionServiceImpl extends BaseQueryService<ExamQuestion> impl
         return list;
     }
 
+    @Override
+    public List<ExamQuestion> findByExamAndSubjectAndObjectiveGroupByNumber(Integer examId, String subjectCode,
+            boolean objective) {
+        List<ExamQuestion> list = questionDao.findByExamIdAndSubjectCodeAndObjectiveGroupByNumber(examId, subjectCode,
+                objective);
+        questionSort(list);
+        return list;
+    }
+
     @Override
     public List<ExamQuestion> findByExamAndSubjectAndObjectiveAndPaperType(Integer examId, String subjectCode,
             boolean objective, String paperType) {
         List<ExamQuestion> list = questionDao.findByExamIdAndSubjectCodeAndObjectiveAndPaperType(examId, subjectCode,
                 objective, paperType, new Sort(Direction.ASC, "mainNumber", "subNumber"));
         if (objective) {
-            Collections.sort(list, new Comparator<ExamQuestion>() {
-
-                @Override
-                public int compare(ExamQuestion o1, ExamQuestion o2) {
-                    int i = o1.getMainNumber() - o2.getMainNumber();
-                    if (i == 0) {
-                        if (o1.getSubNumber().contains("-")) {
-                            String[] o1s = o1.getSubNumber().split("-");
-                            String[] o2s = o2.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(o1.getSubNumber())
-                                    - Integer.parseUnsignedInt(o2.getSubNumber());
-                        }
-                    }
-                    return i;
-                }
-            });
+            list = questionSort(list);
         }
         return list;
     }
@@ -161,6 +145,10 @@ public class ExamQuestionServiceImpl extends BaseQueryService<ExamQuestion> impl
         checkQuery(query);
         Page<ExamQuestion> result = questionDao.findAll(buildSpecification(query), query);
         fillResult(result, query);
+        if (result != null) {
+            List<ExamQuestion> list = questionSort(query.getResult());
+            query.setResult(list);
+        }
         return query;
     }
 

+ 6 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/service/impl/ReportSubjectQuestionServiceImpl.java

@@ -92,6 +92,7 @@ public class ReportSubjectQuestionServiceImpl extends BaseQueryService<ReportSub
                     }
                 }, query);
         List<ReportSubjectQuestion> list = result.getContent();
+        list = questionSort(list);
         return list;
     }
 
@@ -114,6 +115,11 @@ public class ReportSubjectQuestionServiceImpl extends BaseQueryService<ReportSub
             String subjectCode, boolean objective, String paperType) {
         List<ReportSubjectQuestion> list = reportSubjectQuestionDao.findByExamIdAndSubjectCodeAndObjectiveAndPaperType(
                 examId, subjectCode, objective, paperType, new Sort(Direction.ASC, "mainNumber", "subNumber"));
+        list = questionSort(list);
+        return list;
+    }
+
+    private List<ReportSubjectQuestion> questionSort(List<ReportSubjectQuestion> list) {
         Collections.sort(list, new Comparator<ReportSubjectQuestion>() {
 
             @Override

+ 0 - 49
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/PaperController.java

@@ -1,8 +1,6 @@
 package cn.com.qmth.stmms.admin.exam;
 
 import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.LinkedList;
@@ -146,58 +144,11 @@ public class PaperController extends BaseExamController {
             if (objective == null || objective) {
                 List<ExamQuestion> objectiveList = questionService.findByExamAndSubjectAndObjective(examId,
                         subjectCode, true);
-
-                Collections.sort(objectiveList, new Comparator<ExamQuestion>() {
-
-                    @Override
-                    public int compare(ExamQuestion o1, ExamQuestion o2) {
-                        int i = o1.getMainNumber() - o2.getMainNumber();
-                        if (i == 0) {
-                            if (o1.getSubNumber().contains("-")) {
-                                String[] o1s = o1.getSubNumber().split("-");
-                                String[] o2s = o2.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(o1.getSubNumber())
-                                        - Integer.parseUnsignedInt(o2.getSubNumber());
-                            }
-                        }
-                        return i;
-                    }
-                });
                 list.addAll(objectiveList);
             }
             if (objective == null || !objective) {
                 List<ExamQuestion> subjectiveList = questionService.findByExamAndSubjectAndObjective(examId,
                         subjectCode, false);
-                Collections.sort(subjectiveList, new Comparator<ExamQuestion>() {
-
-                    @Override
-                    public int compare(ExamQuestion o1, ExamQuestion o2) {
-                        int i = o1.getMainNumber() - o2.getMainNumber();
-                        if (i == 0) {
-                            if (o1.getSubNumber().contains("-")) {
-                                String[] o1s = o1.getSubNumber().split("-");
-                                String[] o2s = o2.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(o1.getSubNumber())
-                                        - Integer.parseUnsignedInt(o2.getSubNumber());
-                            }
-                        }
-                        return i;
-                    }
-                });
                 list.addAll(subjectiveList);
             }
             model.addAttribute("questionList", list);

+ 0 - 50
stmms-web/src/main/java/cn/com/qmth/stmms/admin/report/ReportSubjectQuestionController.java

@@ -2,9 +2,6 @@ package cn.com.qmth.stmms.admin.report;
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
 import java.util.List;
 
 import javax.servlet.http.HttpServletRequest;
@@ -58,30 +55,6 @@ public class ReportSubjectQuestionController extends BaseExamController {
         query.setPageSize(Integer.MAX_VALUE);
         if (StringUtils.isNotBlank(query.getSubjectCode()) && query.getObjective() != null) {
             List<ReportSubjectQuestion> questions = reportSubjectQuestionService.findByQuery(query);
-            questions = new ArrayList<>(questions);
-            Collections.sort(questions, new Comparator<ReportSubjectQuestion>() {
-
-                @Override
-                public int compare(ReportSubjectQuestion o1, ReportSubjectQuestion o2) {
-                    int i = o1.getMainNumber() - o2.getMainNumber();
-                    if (i == 0) {
-                        if (o1.getSubNumber().contains("-")) {
-                            String[] o1s = o1.getSubNumber().split("-");
-                            String[] o2s = o2.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(o1.getSubNumber())
-                                    - Integer.parseUnsignedInt(o2.getSubNumber());
-                        }
-                    }
-                    return i;
-                }
-            });
             model.addAttribute("list", questions);
             model.addAttribute("typeList", questionService.getPaperType(examId, query.getSubjectCode()));
         }
@@ -99,29 +72,6 @@ public class ReportSubjectQuestionController extends BaseExamController {
         query.setPageNumber(1);
         query.setPageSize(Integer.MAX_VALUE);
         List<ReportSubjectQuestion> list = reportSubjectQuestionService.findByQuery(query);
-        Collections.sort(list, new Comparator<ReportSubjectQuestion>() {
-
-            @Override
-            public int compare(ReportSubjectQuestion o1, ReportSubjectQuestion o2) {
-                int i = o1.getMainNumber() - o2.getMainNumber();
-                if (i == 0) {
-                    if (o1.getSubNumber().contains("-")) {
-                        String[] o1s = o1.getSubNumber().split("-");
-                        String[] o2s = o2.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(o1.getSubNumber())
-                                - Integer.parseUnsignedInt(o2.getSubNumber());
-                    }
-                }
-                return i;
-            }
-        });
         for (ReportSubjectQuestion r : list) {
             r.setAvgScore(new BigDecimal(r.getAvgScore()).setScale(2, RoundingMode.HALF_UP).doubleValue());
             r.setStdev(new BigDecimal(r.getStdev()).setScale(2, RoundingMode.HALF_UP).doubleValue());