瀏覽代碼

subjectQuestion的sub number改为string

ting.yin 4 年之前
父節點
當前提交
828d56d71a

+ 1 - 1
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/dao/SubjectiveScoreDao.java

@@ -22,7 +22,7 @@ public interface SubjectiveScoreDao extends JpaRepository<SubjectiveScore, Subje
     List<SubjectiveScore> findByStudentIdAndGroupNumber(Integer studentId, Integer groupNumber);
 
     @Query("select s from SubjectiveScore s where s.pk.studentId=?1 and s.pk.mainNumber=?2 and s.pk.subNumber=?3")
-    SubjectiveScore findByStudentIdAndMainNumberAndSubNumber(Integer studentId, Integer mainNumber, Integer subNumber);
+    SubjectiveScore findByStudentIdAndMainNumberAndSubNumber(Integer studentId, Integer mainNumber, String subNumber);
 
     @Modifying(clearAutomatically = true)
     @Query("delete SubjectiveScore s where s.pk.studentId=?1")

+ 3 - 3
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/model/ReportSubjectQuestion.java

@@ -69,7 +69,7 @@ public class ReportSubjectQuestion implements Serializable {
      */
     @ExcelField(title = "小题号", align = 2, sort = 50)
     @Column(name = "sub_number", nullable = false)
-    private Integer subNumber;
+    private String subNumber;
 
     /**
      * 总分
@@ -283,11 +283,11 @@ public class ReportSubjectQuestion implements Serializable {
         this.mainNumber = mainNumber;
     }
 
-    public Integer getSubNumber() {
+    public String getSubNumber() {
         return subNumber;
     }
 
-    public void setSubNumber(Integer subNumber) {
+    public void setSubNumber(String subNumber) {
         this.subNumber = subNumber;
     }
 

+ 3 - 3
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/query/ReportSubjectQuery.java

@@ -25,7 +25,7 @@ public class ReportSubjectQuery extends BaseQuery<ReportSubject> {
 
     private Integer mainNumber;
 
-    private Integer subNumber;
+    private String subNumber;
 
     private Boolean objective;
 
@@ -101,11 +101,11 @@ public class ReportSubjectQuery extends BaseQuery<ReportSubject> {
         this.mainNumber = mainNumber;
     }
 
-    public Integer getSubNumber() {
+    public String getSubNumber() {
         return subNumber;
     }
 
-    public void setSubNumber(Integer subNumber) {
+    public void setSubNumber(String subNumber) {
         this.subNumber = subNumber;
     }
 

+ 1 - 1
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/service/ReportSubjectQuestionService.java

@@ -20,7 +20,7 @@ public interface ReportSubjectQuestionService {
     List<ReportSubjectQuestion> findByQuery(ReportSubjectQuery query);
 
     ReportSubjectQuestion findOne(Integer examId, String subjectCode, boolean isObjective, String paperType,
-            Integer mainNumber, Integer subNumber);
+            Integer mainNumber, String subNumber);
 
     List<ReportSubjectQuestion> findByExamIdAndSubjectCodeAndObjectiveAndPaperType(Integer examId, String subjectCode,
             boolean isObjective, String paperType);

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

@@ -1,10 +1,15 @@
 package cn.com.qmth.stmms.biz.report.service.impl;
 
-import cn.com.qmth.stmms.biz.common.BaseQueryService;
-import cn.com.qmth.stmms.biz.report.dao.ReportSubjectQuestionDao;
-import cn.com.qmth.stmms.biz.report.model.ReportSubjectQuestion;
-import cn.com.qmth.stmms.biz.report.query.ReportSubjectQuery;
-import cn.com.qmth.stmms.biz.report.service.ReportSubjectQuestionService;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.LinkedList;
+import java.util.List;
+
+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;
@@ -14,12 +19,11 @@ 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 cn.com.qmth.stmms.biz.common.BaseQueryService;
+import cn.com.qmth.stmms.biz.report.dao.ReportSubjectQuestionDao;
+import cn.com.qmth.stmms.biz.report.model.ReportSubjectQuestion;
+import cn.com.qmth.stmms.biz.report.query.ReportSubjectQuery;
+import cn.com.qmth.stmms.biz.report.service.ReportSubjectQuestionService;
 
 /**
  * 客、主观题分析 service 实现
@@ -70,30 +74,30 @@ public class ReportSubjectQuestionServiceImpl extends BaseQueryService<ReportSub
                         if (query.getMainNumber() != null) {
                             predicates.add(cb.equal(root.get("mainNumber"), query.getMainNumber()));
                         }
-                        if (query.getSubNumber() != null) {
+                        if (StringUtils.isNotBlank(query.getSubNumber())) {
                             predicates.add(cb.equal(root.get("subNumber"), query.getSubNumber()));
                         }
                         if (query.getObjective() != null) {
                             predicates.add(cb.equal(root.get("objective"), query.getObjective()));
                         }
-                        if (query.getObjective() != null && query.getObjective() && StringUtils
-                                .isNotBlank(query.getPaperType())) {
+                        if (query.getObjective() != null && query.getObjective()
+                                && StringUtils.isNotBlank(query.getPaperType())) {
                             predicates.add(cb.equal(root.get("paperType"), query.getPaperType()));
                         }
                         if (query.getNullPaperType() != null && query.getNullPaperType().booleanValue()) {
                             predicates.add(cb.isNull(root.get("paperType")));
                         }
-                        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()]));
                     }
                 }, query);
-        return result.getContent();
+        List<ReportSubjectQuestion> list = result.getContent();
+        return list;
     }
 
     @Override
     public ReportSubjectQuestion findOne(Integer examId, String subjectCode, boolean objective, String paperType,
-            Integer mainNumber, Integer subNumber) {
+            Integer mainNumber, String subNumber) {
         ReportSubjectQuery query = new ReportSubjectQuery();
         query.setExamId(examId);
         query.setSubjectCode(subjectCode);
@@ -108,9 +112,20 @@ public class ReportSubjectQuestionServiceImpl extends BaseQueryService<ReportSub
     @Override
     public List<ReportSubjectQuestion> findByExamIdAndSubjectCodeAndObjectiveAndPaperType(Integer examId,
             String subjectCode, boolean objective, String paperType) {
-        return reportSubjectQuestionDao
-                .findByExamIdAndSubjectCodeAndObjectiveAndPaperType(examId, subjectCode, objective, paperType,
-                        new Sort(Direction.ASC, "mainNumber", "subNumber"));
+        List<ReportSubjectQuestion> list = reportSubjectQuestionDao.findByExamIdAndSubjectCodeAndObjectiveAndPaperType(
+                examId, subjectCode, objective, paperType, new Sort(Direction.ASC, "mainNumber", "subNumber"));
+        Collections.sort(list, new Comparator<ReportSubjectQuestion>() {
+
+            @Override
+            public int compare(ReportSubjectQuestion o1, ReportSubjectQuestion o2) {
+                int i = o1.getMainNumber() - o2.getMainNumber();
+                if (i == 0) {
+                    return Integer.parseUnsignedInt(o1.getSubNumber()) - Integer.parseUnsignedInt(o2.getSubNumber());
+                }
+                return i;
+            }
+        });
+        return list;
     }
 
 }

+ 1 - 1
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/utils/module/SubjectQuestionModule.java

@@ -80,7 +80,7 @@ public class SubjectQuestionModule implements Module, QuestionCalculatorProvider
                 Boolean objective = Boolean.parseBoolean(s[1]);
                 String paperType = StringUtils.trimToNull(s[2]);
                 Integer mainNumber = Integer.parseInt(s[3]);
-                Integer subNumber = Integer.parseInt(s[4]);
+                String subNumber = StringUtils.trimToEmpty(s[4]);
                 BaseCalculatorUnit unit = calculators.get(key);
                 ReportSubjectQuestion r = new ReportSubjectQuestion();
                 r.setExamId(this.context.getExamId());

+ 1 - 1
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/utils/module/SubjectQuestionOptionModule.java

@@ -87,7 +87,7 @@ public class SubjectQuestionOptionModule implements Module {
                 String subjectCode = s[0];
                 String paperType = StringUtils.trimToNull(s[2]);
                 Integer mainNumber = Integer.parseInt(s[3]);
-                Integer subNumber = Integer.parseInt(s[4]);
+                String subNumber = s[4];
                 OptionCounter optionCounter = this.counters.get(key);
                 Set<String> optionSet = optionMap.get(subjectCode);
                 if (optionSet == null) {

+ 48 - 23
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/PaperController.java

@@ -1,5 +1,38 @@
 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;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
+
+import org.apache.commons.lang.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.core.task.AsyncTaskExecutor;
+import org.springframework.data.domain.Sort;
+import org.springframework.data.domain.Sort.Direction;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.mvc.support.RedirectAttributes;
+
 import cn.com.qmth.stmms.admin.dto.ObjectiveQuestionDTO;
 import cn.com.qmth.stmms.admin.dto.QuestionDTO;
 import cn.com.qmth.stmms.admin.dto.SubjectQuestionDTO;
@@ -10,7 +43,11 @@ import cn.com.qmth.stmms.biz.exam.model.Exam;
 import cn.com.qmth.stmms.biz.exam.model.ExamQuestion;
 import cn.com.qmth.stmms.biz.exam.model.ExamSubject;
 import cn.com.qmth.stmms.biz.exam.model.MarkGroup;
-import cn.com.qmth.stmms.biz.exam.service.*;
+import cn.com.qmth.stmms.biz.exam.service.ExamQuestionService;
+import cn.com.qmth.stmms.biz.exam.service.ExamService;
+import cn.com.qmth.stmms.biz.exam.service.ExamStudentService;
+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.query.ExamQuestionSearchQuery;
 import cn.com.qmth.stmms.biz.exam.service.query.ExamSubjectSearchQuery;
 import cn.com.qmth.stmms.biz.file.service.FileService;
@@ -20,30 +57,15 @@ import cn.com.qmth.stmms.biz.report.service.ReportService;
 import cn.com.qmth.stmms.common.annotation.Logging;
 import cn.com.qmth.stmms.common.annotation.RoleRequire;
 import cn.com.qmth.stmms.common.domain.WebUser;
-import cn.com.qmth.stmms.common.enums.*;
+import cn.com.qmth.stmms.common.enums.LockType;
+import cn.com.qmth.stmms.common.enums.LogType;
+import cn.com.qmth.stmms.common.enums.ObjectivePolicy;
+import cn.com.qmth.stmms.common.enums.ObjectiveStatus;
+import cn.com.qmth.stmms.common.enums.Role;
+import cn.com.qmth.stmms.common.enums.SubjectiveStatus;
 import cn.com.qmth.stmms.common.utils.ExportExcel;
 import cn.com.qmth.stmms.common.utils.ImportExcel;
 import cn.com.qmth.stmms.common.utils.RequestUtils;
-import net.sf.json.JSONArray;
-import net.sf.json.JSONObject;
-
-import org.apache.commons.lang.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.core.task.AsyncTaskExecutor;
-import org.springframework.data.domain.Sort;
-import org.springframework.data.domain.Sort.Direction;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.Model;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
-import org.springframework.web.servlet.ModelAndView;
-import org.springframework.web.servlet.mvc.support.RedirectAttributes;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import java.util.*;
 
 @Controller("examPaperController")
 @RequestMapping("/admin/exam/paper")
@@ -129,7 +151,10 @@ public class PaperController extends BaseExamController {
 
                     @Override
                     public int compare(ExamQuestion o1, ExamQuestion o2) {
-                        int i = o1.getMainNumber() - o2.getMainNumber();
+                        int i = o1.getPaperType().compareTo(o2.getPaperType());
+                        if (i == 0) {
+                            i = o1.getMainNumber() - o2.getMainNumber();
+                        }
                         if (i == 0) {
                             return Integer.parseUnsignedInt(o1.getSubNumber())
                                     - Integer.parseUnsignedInt(o2.getSubNumber());

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

@@ -2,6 +2,9 @@ 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;
@@ -55,6 +58,22 @@ 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.getPaperType().compareTo(o2.getPaperType());
+                    if (i == 0) {
+                        i = o1.getMainNumber() - o2.getMainNumber();
+                    }
+                    if (i == 0) {
+                        return Integer.parseUnsignedInt(o1.getSubNumber())
+                                - Integer.parseUnsignedInt(o2.getSubNumber());
+                    }
+                    return i;
+                }
+            });
             model.addAttribute("list", questions);
             model.addAttribute("typeList", questionService.getPaperType(examId, query.getSubjectCode()));
         }
@@ -72,6 +91,20 @@ 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.getPaperType().compareTo(o2.getPaperType());
+                if (i == 0) {
+                    i = o1.getMainNumber() - o2.getMainNumber();
+                }
+                if (i == 0) {
+                    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());