ting.yin 6 년 전
부모
커밋
714a714a77

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

@@ -85,11 +85,9 @@ public class ReportSubjectClassGroupServiceImpl extends BaseQueryService<ReportS
                         if (query.getObjective() != null) {
                             predicates.add(cb.equal(root.get("objective"), query.getObjective()));
                         }
-                        if (query.getObjective() != null && query.getObjective()
-                                && StringUtils.isNotBlank(query.getPaperType())) {
+                        if (StringUtils.isNotBlank(query.getPaperType())) {
                             predicates.add(cb.equal(root.get("paperType"), query.getPaperType()));
-                        }
-                        if (query.getNullPaperType() != null && query.getNullPaperType().booleanValue()) {
+                        } else if (query.getNullPaperType() != null && query.getNullPaperType().booleanValue()) {
                             predicates.add(cb.isNull(root.get("paperType")));
                         }
                         return predicates.isEmpty() ? cb.conjunction() : cb.and(predicates

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

@@ -63,11 +63,9 @@ public class ReportSubjectGroupServiceImpl extends BaseQueryService<ReportSubjec
                 if (query.getGroupNumber() > 0) {
                     predicates.add(cb.equal(root.get("groupNumber"), query.getGroupNumber()));
                 }
-                if (query.getObjective() != null && query.getObjective()
-                        && StringUtils.isNotBlank(query.getPaperType())) {
+                if (StringUtils.isNotBlank(query.getPaperType())) {
                     predicates.add(cb.equal(root.get("paperType"), query.getPaperType()));
-                }
-                if (query.getNullPaperType() != null && query.getNullPaperType().booleanValue()) {
+                } else 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
@@ -90,9 +88,9 @@ public class ReportSubjectGroupServiceImpl extends BaseQueryService<ReportSubjec
         query.setSubjectCode(subjectCode);
         query.setObjective(objective);
         query.setGroupNumber(mainNumber);
-        if(objective){
+        if (objective) {
             query.setPaperType(paperType);
-            if(paperType==null){
+            if (paperType == null) {
                 query.setNullPaperType(true);
             }
         }

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

@@ -14,7 +14,6 @@ import org.apache.commons.lang.StringUtils;
 
 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.ReportSubject;
 import cn.com.qmth.stmms.biz.report.model.ReportSubjectGroup;
 import cn.com.qmth.stmms.biz.report.service.ReportSubjectGroupService;
@@ -45,6 +44,8 @@ public class SubjectQuestionLevelModule implements Module {
 
     protected LevelRange[] difficulityLevelConfig, discriminationLevelConfig;
 
+    protected Map<String, Set<String>> paperTypes;
+
     public SubjectQuestionLevelModule(ReportContext context, QuestionCalculatorProvider provider) {
         this.context = context;
         this.provider = provider;
@@ -54,6 +55,7 @@ public class SubjectQuestionLevelModule implements Module {
         this.discriminationLevels = new HashMap<String, QuestionCounter>();
         this.difficulityLevelConfig = context.getDifficulityLevelConfig();
         this.discriminationLevelConfig = context.getDiscriminationLevelConfig();
+        this.paperTypes = new HashMap<String, Set<String>>();
     }
 
     @Override
@@ -81,11 +83,11 @@ public class SubjectQuestionLevelModule implements Module {
         beforeSave();
         ReportSubjectService subjectService = SpringContextHolder.getBean(ReportSubjectService.class);
         ReportSubjectGroupService groupService = SpringContextHolder.getBean(ReportSubjectGroupService.class);
-        ExamQuestionService questionService = SpringContextHolder.getBean(ExamQuestionService.class);
-        for (String key : this.difficulityLevels.keySet()) {
+        for (Entry<String, QuestionCounter> entry : difficulityLevels.entrySet()) {
+            String key = entry.getKey();
             String s[] = key.split("\t");
             String subjectCode = s[0];
-            QuestionCounter difficulityCounter = difficulityLevels.get(key);
+            QuestionCounter difficulityCounter = entry.getValue();
             QuestionCounter discriminationCounter = discriminationLevels.get(key);
             JSONObject difficulityLevel = new JSONObject();
             for (int i = 0; i < difficulityCounter.levelCount; i++) {
@@ -135,8 +137,8 @@ public class SubjectQuestionLevelModule implements Module {
             if (s.length == 1 || s.length == 2) {
                 if (s.length == 2) {
                     String paperType = StringUtils.trimToNull(s[1]);
-                    List<String> paperTypes = questionService.getPaperTypeWitnNull(context.getExamId(), subjectCode);
-                    if(!contains(paperTypes,paperType)){
+                    Set<String> paperTypes = this.paperTypes.get(subjectCode);
+                    if (paperType != null && !contains(paperTypes, paperType)) {
                         return;
                     }
                 }
@@ -158,16 +160,7 @@ public class SubjectQuestionLevelModule implements Module {
         }
     }
 
-    private boolean contains(List<String> paperTypes, String paperType) {
-        if (paperType == null) {
-            if (paperTypes.contains(paperType)) {
-                // null卷型
-                return true;
-            } else {
-                return false;
-            }
-        }
-        paperTypes.remove(null);
+    private boolean contains(Set<String> paperTypes, String paperType) {
         for (String s : paperTypes) {
             if (paperType.equalsIgnoreCase(s)) {
                 return true;
@@ -177,8 +170,7 @@ public class SubjectQuestionLevelModule implements Module {
     }
 
     protected void beforeSave() {
-        // paperType集合
-        Map<String, Set<String>> paperTypes = new HashMap<String, Set<String>>();
+
         // 遍历客观题
         for (Entry<String, List<ExamQuestion>> entry : objectiveQuestions.entrySet()) {
             String[] keys = entry.getKey().split("\t");