فهرست منبع

最优卷选择支持专业组描述的多个专业匹配

mingfu 1 هفته پیش
والد
کامیت
65a34412b1

+ 26 - 9
ie-admin/src/main/java/com/ruoyi/web/service/ExamService.java

@@ -519,7 +519,7 @@ public class ExamService {
         paperCond.setSubjectId(subjectId);
         paperCond.setPaperType(PaperType.Simulated.name());
         paperCond.setStatus(1);
-        String baseKey = plan.getUniversityId() + "_" + examType.name();
+        String baseKey = plan.getUniversityId() + "_" + examType.name() + "_";
         if(!subjectId.equals(11L)) {
             List<LearnPaper> paperList = learnPaperService.selectLearnPaperList(paperCond);
             for(LearnPaper paper : paperList) {
@@ -529,20 +529,37 @@ public class ExamService {
             }
             throw new ValidationException("未初始化院校模拟题库: " + subjectId + ":" + plan.getId());
         }
+        paperCond.setDirectKey(baseKey);
+        List<LearnPaper> paperList = learnPaperService.selectLearnPaperList(paperCond);
         for(int i = 3; i>0; i--) {
             if(i == 3) {
-                paperCond.setDirectKey(baseKey + "_" + groupName + "_" + plan.getMajorName());
+                String prefix = baseKey + groupName + "_";
+                for(LearnPaper paper : paperList) {
+                    if(paper.getDirectKey().startsWith(prefix)) {
+                        Set<String> majorNameSet = Sets.newHashSet(paper.getDirectKey().substring(prefix.length()).split("、"));
+                        if(majorNameSet.contains(plan.getMajorName()) && existPaperIdSet.add(paper.getId())) {
+                            return paper;
+                        }
+                    }
+                }
             } else if(i == 2) {
-                paperCond.setDirectKey(baseKey + "_" + groupName);
+                String prefix = baseKey + groupName;
+                for(LearnPaper paper : paperList) {
+                    if(paper.getDirectKey().equals(prefix)) {
+                        if(existPaperIdSet.add(paper.getId())) {
+                            return paper;
+                        }
+                    }
+                }
             } else if(StringUtils.isBlank(groupName)) {
                 break;
             } else {
-                paperCond.setDirectKey(baseKey);
-            }
-            List<LearnPaper> paperList = learnPaperService.selectLearnPaperList(paperCond);
-            for(LearnPaper paper : paperList) {
-                if(existPaperIdSet.add(paper.getId())) {
-                    return paper;
+                for(LearnPaper paper : paperList) {
+                    if(paper.getDirectKey().equals(baseKey)) {
+                        if(existPaperIdSet.add(paper.getId())) {
+                            return paper;
+                        }
+                    }
                 }
             }
         }

+ 1 - 1
ie-system/src/main/resources/mapper/learn/LearnPaperMapper.xml

@@ -40,7 +40,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="number != null  and number != ''"> and number = #{number}</if>
             <if test="fenshu != null "> and fenshu = #{fenshu}</if>
             <if test="paperSource != null "> and paperSource = #{paperSource}</if>
-            <if test="directKey != null  and directKey != ''"> and direct_key = #{directKey}</if>
+            <if test="directKey != null  and directKey != ''"> and direct_key like concat(#{directKey}, '%')</if>
             <if test="paperInfo != null  and paperInfo != ''"> and paper_info = #{paperInfo}</if>
             <if test="tiid != null  and tiid != ''"> and tiid = #{tiid}</if>
             <if test="osspath != null  and osspath != ''"> and osspath = #{osspath}</if>