Jelajahi Sumber

修复科目,大题,班级大题的题目数量问题;科目选项问题;

ting.yin 6 tahun lalu
induk
melakukan
3fa4a3e121
17 mengubah file dengan 94 tambahan dan 54 penghapusan
  1. 4 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/dao/ExamQuestionDao.java
  2. 3 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/ExamQuestionService.java
  3. 12 6
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/impl/ExamQuestionServiceImpl.java
  4. 0 4
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/dao/ReportSubjectClassGroupDao.java
  5. 0 4
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/dao/ReportSubjectDao.java
  6. 0 4
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/dao/ReportSubjectGroupDao.java
  7. 0 2
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/service/ReportSubjectClassGroupService.java
  8. 0 2
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/service/ReportSubjectGroupService.java
  9. 0 2
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/service/ReportSubjectService.java
  10. 1 7
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/service/impl/ReportSubjectClassGroupServiceImpl.java
  11. 0 6
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/service/impl/ReportSubjectGroupServiceImpl.java
  12. 0 6
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/service/impl/ReportSubjectServiceImpl.java
  13. 18 10
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/utils/ReportContext.java
  14. 16 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/utils/module/SubjectClassGroupModule.java
  15. 15 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/utils/module/SubjectGroupModule.java
  16. 18 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/utils/module/SubjectModule.java
  17. 7 1
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/utils/module/SubjectQuestionOptionModule.java

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

@@ -66,4 +66,8 @@ public interface ExamQuestionDao extends JpaRepository<ExamQuestion, Integer>, J
     public long countByExamAndSubjectAndObjectiveAndGroupNumber(int examId, String subjectCode, boolean objective,
             Integer groupNumber);
 
+    @Query("select count(q) from ExamQuestion q where q.examId=?1 and q.subjectCode=?2 and q.objective=?3 and q.mainNumber=?4 and q.paperType=?5")
+    public long countByExamIdAndSubjectCodeAndObjectiveAndMainNumber(Integer examId, String subjectCode,
+            boolean objective, Integer mainNumber, String paperType);
+
 }

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

@@ -41,4 +41,7 @@ public interface ExamQuestionService {
     long countByExamAndSubjectAndObjectiveAndGroupNumber(int examId, String subjectCode, boolean objective,
             Integer groupNumber);
 
+    long countByExamAndSubjectAndObjectiveAndMainNumberAndPaperType(Integer examId, String subjectCode,
+            boolean objective, Integer mainNumber, String paperType);
+
 }

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

@@ -68,8 +68,8 @@ public class ExamQuestionServiceImpl extends BaseQueryService<ExamQuestion> impl
     @Override
     public List<ExamQuestion> findByExamAndSubjectAndObjectiveAndPaperType(Integer examId, String subjectCode,
             boolean objective, String paperType) {
-        return questionDao.findByExamIdAndSubjectCodeAndObjectiveAndPaperType(examId, subjectCode, objective, paperType,
-                new Sort(Direction.ASC, "mainNumber", "subNumber"));
+        return questionDao.findByExamIdAndSubjectCodeAndObjectiveAndPaperType(examId, subjectCode, objective,
+                paperType, new Sort(Direction.ASC, "mainNumber", "subNumber"));
     }
 
     @Override
@@ -137,8 +137,8 @@ public class ExamQuestionServiceImpl extends BaseQueryService<ExamQuestion> impl
                     predicates.add(cb.ge(root.get("zeroCount").as(Integer.class),
                             cb.prod(root.get("totalCount").as(Integer.class), query.getZeroRateGt())));
                 }
-                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()]));
             }
         };
     }
@@ -151,8 +151,14 @@ public class ExamQuestionServiceImpl extends BaseQueryService<ExamQuestion> impl
     @Override
     public long countByExamAndSubjectAndObjectiveAndGroupNumber(int examId, String subjectCode, boolean objective,
             Integer groupNumber) {
-        return questionDao.countByExamAndSubjectAndObjectiveAndGroupNumber(examId, subjectCode, objective,
-                groupNumber);
+        return questionDao.countByExamAndSubjectAndObjectiveAndGroupNumber(examId, subjectCode, objective, groupNumber);
+    }
+
+    @Override
+    public long countByExamAndSubjectAndObjectiveAndMainNumberAndPaperType(Integer examId, String subjectCode,
+            boolean objective, Integer mainNumber, String paperType) {
+        return questionDao.countByExamIdAndSubjectCodeAndObjectiveAndMainNumber(examId, subjectCode, objective,
+                mainNumber, paperType);
     }
 
 }

+ 0 - 4
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/dao/ReportSubjectClassGroupDao.java

@@ -14,8 +14,4 @@ public interface ReportSubjectClassGroupDao extends PagingAndSortingRepository<R
     @Query("delete from ReportSubjectClassGroup r where r.examId=?1 ")
     void deleteByExamId(Integer exmaId);
 
-    @Modifying
-    @Query("update ReportSubjectClassGroup r set r.questionCount = (select count(*) from ExamQuestion q where q.examId=?1 and q.groupNumber = r.groupNumber and q.subjectCode = r.subjectCode and q.examId = r.examId ) where r.examId=?1  ")
-    void updateQuestionCount(Integer examId);
-
 }

+ 0 - 4
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/dao/ReportSubjectDao.java

@@ -19,9 +19,5 @@ public interface ReportSubjectDao extends PagingAndSortingRepository<ReportSubje
     @Modifying
     @Query("delete from ReportSubject r where r.examId=?1 ")
     void deleteByExamId(Integer exmaId);
-    
-    @Modifying
-    @Query("update ReportSubject r set r.questionCount = (select count(*) from ExamQuestion q where q.examId=?1 and q.subjectCode = r.subjectCode and q.examId = r.examId ) where r.examId=?1  ")
-    void updateQuestionCount(Integer examId);
 
 }

+ 0 - 4
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/dao/ReportSubjectGroupDao.java

@@ -20,8 +20,4 @@ public interface ReportSubjectGroupDao extends PagingAndSortingRepository<Report
     @Query("delete from ReportSubjectGroup r where r.examId=?1 ")
     void deleteByExamId(Integer exmaId);
 
-    @Modifying
-    @Query("update ReportSubjectGroup r set r.questionCount = (select count(*) from ExamQuestion q where q.examId=?1 and q.groupNumber = r.groupNumber and q.subjectCode = r.subjectCode and q.examId = r.examId ) where r.examId=?1  ")
-    void updateQuestionCount(Integer examId);
-
 }

+ 0 - 2
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/service/ReportSubjectClassGroupService.java

@@ -11,8 +11,6 @@ public interface ReportSubjectClassGroupService {
 
     ReportSubjectClassGroup save(ReportSubjectClassGroup r);
 
-    void updateQuestionCount(Integer examId);
-
     ReportSubjectClassGroup findOne(Integer examId, String subjectCode, String className, boolean objective,
             Integer groupNumber);
 

+ 0 - 2
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/service/ReportSubjectGroupService.java

@@ -19,8 +19,6 @@ public interface ReportSubjectGroupService {
 
     ReportSubjectGroup save(ReportSubjectGroup r);
 
-    void updateQuestionCount(Integer examId);
-
     ReportSubjectGroup findOne(Integer examId, String subjectCode, boolean objective, Integer mainNumber);
 
 }

+ 0 - 2
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/service/ReportSubjectService.java

@@ -19,6 +19,4 @@ public interface ReportSubjectService {
 
     ReportSubject findOne(Integer examId, String subjectCode);
 
-    void updateQuestionCount(Integer examId);
-
 }

+ 1 - 7
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/service/impl/ReportSubjectClassGroupServiceImpl.java

@@ -41,12 +41,6 @@ public class ReportSubjectClassGroupServiceImpl extends BaseQueryService<ReportS
         return reportSubjectClassGroupDao.save(r);
     }
 
-    @Transactional
-    @Override
-    public void updateQuestionCount(Integer examId) {
-        reportSubjectClassGroupDao.updateQuestionCount(examId);
-    }
-
     @Override
     public ReportSubjectClassGroup findOne(Integer examId, String subjectCode, String className, boolean objective,
             Integer groupNumber) {
@@ -59,7 +53,7 @@ public class ReportSubjectClassGroupServiceImpl extends BaseQueryService<ReportS
         List<ReportSubjectClassGroup> list = findByQuery(query);
         return list.isEmpty() ? null : list.get(0);
     }
-    
+
     @Override
     public List<ReportSubjectClassGroup> findByQuery(final ReportSubjectQuery query) {
         query.setSort(new Sort(Direction.ASC, "groupNumber"));

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

@@ -72,12 +72,6 @@ public class ReportSubjectGroupServiceImpl extends BaseQueryService<ReportSubjec
         return reportSubjectGroupDao.save(r);
     }
 
-    @Transactional
-    @Override
-    public void updateQuestionCount(Integer examId) {
-        reportSubjectGroupDao.updateQuestionCount(examId);
-    }
-
     @Override
     public ReportSubjectGroup findOne(Integer examId, String subjectCode, boolean objective, Integer mainNumber) {
         ReportSubjectQuery query = new ReportSubjectQuery();

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

@@ -77,10 +77,4 @@ public class ReportSubjectServiceImpl extends BaseQueryService<ReportSubject> im
         return list.isEmpty() ? null : list.get(0);
     }
 
-    @Transactional
-    @Override
-    public void updateQuestionCount(Integer examId) {
-        reportSubjectDao.updateQuestionCount(examId);
-    }
-
 }

+ 18 - 10
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/utils/ReportContext.java

@@ -1,9 +1,11 @@
 package cn.com.qmth.stmms.biz.report.utils;
 
 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 org.apache.commons.lang.StringUtils;
 
@@ -12,9 +14,6 @@ import cn.com.qmth.stmms.biz.exam.model.ExamQuestion;
 import cn.com.qmth.stmms.biz.exam.model.ExamStudent;
 import cn.com.qmth.stmms.biz.exam.model.ExamSubject;
 import cn.com.qmth.stmms.biz.report.model.SasConfigItem;
-import cn.com.qmth.stmms.biz.report.service.ReportSubjectClassGroupService;
-import cn.com.qmth.stmms.biz.report.service.ReportSubjectGroupService;
-import cn.com.qmth.stmms.biz.report.service.ReportSubjectService;
 import cn.com.qmth.stmms.biz.report.service.ReportSubjectTeacherClassService;
 import cn.com.qmth.stmms.biz.report.service.ReportSubjectTeacherService;
 import cn.com.qmth.stmms.biz.report.utils.module.SubjectClassGroupModule;
@@ -46,6 +45,8 @@ public class ReportContext {
 
     private Map<String, ExamQuestion> groupMap;
 
+    private Map<String, Set<String>> paperTypeMap;
+
     private SasConfigItem sasConfigItem;
 
     public ReportContext(Exam exam) {
@@ -54,6 +55,7 @@ public class ReportContext {
         this.subjectMap = new HashMap<String, ExamSubject>();
         this.questionMap = new HashMap<String, ExamQuestion>();
         this.groupMap = new HashMap<String, ExamQuestion>();
+        this.paperTypeMap = new HashMap<String, Set<String>>();
         // 以下modules创建有顺序
         this.sasConfigItem = SpringContextHolder.getBean(SasConfigItem.class);
         this.modules.add(new SubjectModule(this));
@@ -109,6 +111,15 @@ public class ReportContext {
                 groupMap.put(groupKey, question);
             }
         }
+        Set<String> paparTypeSet = paperTypeMap.get(student.getSubjectCode());
+        if (paparTypeSet == null) {
+            paparTypeSet = new HashSet<String>();
+        }
+        String paperType = StringUtils.trimToNull(student.getPaperType());
+        if (paperType != null) {
+            paparTypeSet.add(paperType);
+        }
+        paperTypeMap.put(student.getSubjectCode(), paparTypeSet);
     }
 
     private String getQuestionKey(ExamQuestion question) {
@@ -130,13 +141,6 @@ public class ReportContext {
         ReportSubjectTeacherClassService teacherClassService = SpringContextHolder
                 .getBean(ReportSubjectTeacherClassService.class);
         teacherClassService.updateRelativeAvgScore(this.getExamId());
-        ReportSubjectGroupService subjectGroupService = SpringContextHolder.getBean(ReportSubjectGroupService.class);
-        subjectGroupService.updateQuestionCount(this.getExamId());
-        ReportSubjectClassGroupService subjectClassGroupService = SpringContextHolder
-                .getBean(ReportSubjectClassGroupService.class);
-        subjectClassGroupService.updateQuestionCount(this.getExamId());
-        ReportSubjectService subjectService = SpringContextHolder.getBean(ReportSubjectService.class);
-        subjectService.updateQuestionCount(this.getExamId());
     }
 
     public Double getPassScore() {
@@ -199,4 +203,8 @@ public class ReportContext {
     public Double getLowValueConfig() {
         return sasConfigItem.getHighValue();
     }
+
+    public Set<String> getPaperType(String subjectCode) {
+        return paperTypeMap.get(subjectCode);
+    }
 }

+ 16 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/utils/module/SubjectClassGroupModule.java

@@ -1,6 +1,9 @@
 package cn.com.qmth.stmms.biz.report.utils.module;
 
+import java.util.Set;
+
 import cn.com.qmth.stmms.biz.exam.model.ExamStudent;
+import cn.com.qmth.stmms.biz.exam.service.ExamQuestionService;
 import cn.com.qmth.stmms.biz.report.model.ReportSubjectClassGroup;
 import cn.com.qmth.stmms.biz.report.service.ReportSubjectClassGroupService;
 import cn.com.qmth.stmms.biz.report.utils.Module;
@@ -22,6 +25,7 @@ public class SubjectClassGroupModule extends SubjectGroupModule implements Modul
 
     public void save() {
         ReportSubjectClassGroupService service = SpringContextHolder.getBean(ReportSubjectClassGroupService.class);
+        ExamQuestionService questionService = SpringContextHolder.getBean(ExamQuestionService.class);
         for (String key : this.calculators.keySet()) {
             String s[] = key.split("\t");
             if (s.length > 3) {
@@ -42,6 +46,18 @@ public class SubjectClassGroupModule extends SubjectGroupModule implements Modul
                 r.setDiscrimination(unit.discrimination);
                 r.setDifficulty(unit.difficulty);
                 r.setCoefficient(unit.coefficient);
+                String paperType = null;
+                Set<String> paperTypeSet = context.getPaperType(subjectCode);
+                int questionCount = 0;
+                if (paperTypeSet != null && objective) {
+                    paperType = paperTypeSet.iterator().next();
+                    questionCount = (int) questionService.countByExamAndSubjectAndObjectiveAndMainNumberAndPaperType(
+                            context.getExamId(), subjectCode, objective, mainNumber, paperType);
+                } else {
+                    questionCount = (int) questionService.countByExamAndSubjectAndObjectiveAndMainNumber(
+                            context.getExamId(), subjectCode, objective, mainNumber);
+                }
+                r.setQuestionCount(questionCount);
                 service.save(r);
             }
         }

+ 15 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/utils/module/SubjectGroupModule.java

@@ -4,9 +4,11 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
+import java.util.Set;
 
 import cn.com.qmth.stmms.biz.exam.model.ExamQuestion;
 import cn.com.qmth.stmms.biz.exam.model.ExamStudent;
+import cn.com.qmth.stmms.biz.exam.service.ExamQuestionService;
 import cn.com.qmth.stmms.biz.report.model.ReportSubjectGroup;
 import cn.com.qmth.stmms.biz.report.service.ReportSubjectGroupService;
 import cn.com.qmth.stmms.biz.report.utils.Module;
@@ -73,6 +75,7 @@ public class SubjectGroupModule implements Module {
 
     public void save() {
         ReportSubjectGroupService service = SpringContextHolder.getBean(ReportSubjectGroupService.class);
+        ExamQuestionService questionService = SpringContextHolder.getBean(ExamQuestionService.class);
         for (String key : this.calculators.keySet()) {
             String s[] = key.split("\t");
             if (s.length > 2) {
@@ -99,6 +102,18 @@ public class SubjectGroupModule implements Module {
                 r.setDifficulty(unit.difficulty);
                 r.setDiscrimination(unit.discrimination);
                 r.setRealityCount(unit.count);
+                String paperType = null;
+                Set<String> paperTypeSet = context.getPaperType(subjectCode);
+                int questionCount = 0;
+                if (paperTypeSet != null && objective) {
+                    paperType = paperTypeSet.iterator().next();
+                    questionCount = (int) questionService.countByExamAndSubjectAndObjectiveAndMainNumberAndPaperType(
+                            context.getExamId(), subjectCode, objective, mainNumber, paperType);
+                } else {
+                    questionCount = (int) questionService.countByExamAndSubjectAndObjectiveAndMainNumber(
+                            context.getExamId(), subjectCode, objective, mainNumber);
+                }
+                r.setQuestionCount(questionCount);
                 service.save(r);
             }
         }

+ 18 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/report/utils/module/SubjectModule.java

@@ -2,9 +2,12 @@ package cn.com.qmth.stmms.biz.report.utils.module;
 
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Set;
 
 import cn.com.qmth.stmms.biz.exam.model.ExamStudent;
 import cn.com.qmth.stmms.biz.exam.model.ExamSubject;
+import cn.com.qmth.stmms.biz.exam.service.ExamQuestionService;
+import cn.com.qmth.stmms.biz.exam.service.query.ExamQuestionSearchQuery;
 import cn.com.qmth.stmms.biz.report.model.ReportSubject;
 import cn.com.qmth.stmms.biz.report.service.ReportSubjectService;
 import cn.com.qmth.stmms.biz.report.utils.Module;
@@ -44,6 +47,7 @@ public class SubjectModule implements Module {
 
     public void save() {
         ReportSubjectService service = SpringContextHolder.getBean(ReportSubjectService.class);
+        ExamQuestionService questionService = SpringContextHolder.getBean(ExamQuestionService.class);
         for (String subjectCode : this.counters.keySet()) {
             BaseCounter counter = counters.get(subjectCode);
             BaseCalculatorUnit unit = units.get(subjectCode);
@@ -75,6 +79,20 @@ public class SubjectModule implements Module {
                 subject.setPassCount(0);
                 subject.setPassRate(0d);
             }
+            Set<String> paperTypeSet = context.getPaperType(subjectCode);
+            String paperType = null;
+            if (paperTypeSet != null) {
+                paperType = paperTypeSet.iterator().next();
+            }
+            ExamQuestionSearchQuery query = new ExamQuestionSearchQuery();
+            query.setExamId(context.getExamId());
+            query.setSubjectCode(subjectCode);
+            query.setObjective(false);
+            long subjectiveCcount = questionService.countByQuery(query);
+            query.setObjective(true);
+            query.setPaperType(paperType);
+            long ObjectiveCcount = questionService.countByQuery(query);
+            subject.setQuestionCount((int) (subjectiveCcount+ObjectiveCcount));
             service.save(subject);
         }
     }

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

@@ -1,6 +1,7 @@
 package cn.com.qmth.stmms.biz.report.utils.module;
 
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -84,15 +85,20 @@ public class SubjectQuestionOptionModule implements Module {
                 Integer mainNumber = Integer.parseInt(s[3]);
                 Integer subNumber = Integer.parseInt(s[4]);
                 OptionCounter optionCounter = this.counters.get(key);
+                Set<String> optionSet = optionMap.get(subjectCode);
+                if (optionSet == null) {
+                    optionSet = new HashSet<String>();
+                }
                 JSONObject options = new JSONObject();
                 for (String option : optionCounter.getCounter().keySet()) {
                     options.accumulate(option, optionCounter.getCounter().get(option));
+                    optionSet.add(option);
                 }
                 ReportSubjectQuestion r = questionService.findOne(this.context.getExamId(), subjectCode, true,
                         paperType, mainNumber, subNumber);
                 r.setOptions(options.toString());
                 questionService.save(r);
-                optionMap.put(subjectCode, optionCounter.getCounter().keySet());
+                optionMap.put(subjectCode, optionSet);
             }
         }
         for (String subjectCode : optionMap.keySet()) {