mingfu преди 2 дни
родител
ревизия
3971f3c19e

+ 49 - 24
ie-admin/src/main/java/com/ruoyi/web/service/LearnTeacherService.java

@@ -219,18 +219,19 @@ public class LearnTeacherService {
                 paper.setDirectKey(directedKey);
                 paper.setFenshu(0);
                 if(null == directedKnowledgeMap) {
-                    List<LearnPaperQuestion> pqList = Lists.newArrayList();
-                    for (LearnPaperQuestion q : req.getQuestions()) {
-                        LearnPaperQuestion pq = new LearnPaperQuestion();
-                        pq.setQuestionId(q.getId()); // 没传questionId?
-                        pq.setSeq(pqList.size() + 1);
-                        pq.setKnowledgeId(q.getKnowledgeId());
-                        pq.setScore(null == q.getScore() ? 1.0 : q.getScore());
-                        pqList.add(pq);
-                    }
-                    paperService.savePaper(paper, pqList);
+                    saveHandPaper(paper, req.getQuestions());
                 } else {
                     LearnDirectedKnowledge directedKnowledge = directedKnowledgeMap.get(directedKey);
+                    TestPaperVO.PaperDef2 paperDef = new TestPaperVO.PaperDef2(directedKnowledge.getKnowledges(), directedKnowledge.getConditions());
+                    paperDef.setFillExclude(false);
+                    AnswerSheet.PaperCond info = new AnswerSheet.PaperCond();
+                    info.setScore(paper.getFenshu());
+                    info.setTime(directedKnowledge.getTime() * 60);
+                    info.setTypes(paperDef.getTypes().stream().map(t -> new AnswerSheet.PaperCondType(t.getType().getTitle(), t.getCount(), t.getScore())).collect(Collectors.toList()));
+                    paper.setPaperInfo(JSONObject.toJSONString(info));
+                    Pair<LearnPaper, List<LearnPaperQuestion>> paperResult = paperService.buildPaper2(null, paper, paperDef);
+                    paperService.savePaper(paperResult.getKey(), paperResult.getValue());
+                    /* 暂定使用知识定一样的类型处理
                     TestPaperVO.PaperDef paperDef = req.getPaperDef();
                     examType = directedKnowledge.getExamineeTypes();
                     paperDef.setKnowIds(Stream.of(directedKnowledge.getKnowledges().split(",")).map(t -> Long.parseLong(t.trim())).collect(Collectors.toList()));
@@ -247,7 +248,7 @@ public class LearnTeacherService {
                         paperDef.setTotal(15L);
                     }
                     Pair<LearnPaper, List<LearnPaperQuestion>> paperResult = paperService.buildPaper(null, paper, paperDef);
-                    paperService.savePaper(paperResult.getKey(), paperResult.getValue());
+                    paperService.savePaper(paperResult.getKey(), paperResult.getValue());*/
                 }
                 LearnTestPaper testPaper = new LearnTestPaper();
                 testPaper.setBuildType(req.getBuildType());
@@ -301,19 +302,7 @@ public class LearnTeacherService {
             paper.setRelateId(req.getBatchId().longValue());
             paper.setFenshu(0);
             if("FullHand".equals(req.getBuildType())) {
-                List<LearnPaperQuestion> pqList = Lists.newArrayList();
-                Double fenScore = 0.0;
-                for (LearnPaperQuestion q : req.getQuestions()) {
-                    LearnPaperQuestion pq = new LearnPaperQuestion();
-                    pq.setQuestionId(q.getId()); // 没传questionId?
-                    pq.setSeq(pqList.size() + 1);
-                    pq.setKnowledgeId(q.getKnowledgeId());
-                    pq.setScore(null == q.getScore() ? 1.0 : q.getScore());
-                    fenScore += q.getScore();
-                    pqList.add(pq);
-                }
-                paper.setFenshu((int) Math.round(fenScore));
-                paperService.savePaper(paper, pqList);
+                saveHandPaper(paper, req.getQuestions());
             } else {
                 Pair<LearnPaper, List<LearnPaperQuestion>> paperResult = paperService.buildPaper(null, paper, req.getPaperDef());
                 paperService.savePaper(paperResult.getKey(), paperResult.getValue());
@@ -347,6 +336,42 @@ public class LearnTeacherService {
         return "";
     }
 
+    public void saveHandPaper(LearnPaper paper, List<LearnPaperQuestion> questions) {
+        List<LearnPaperQuestion> pqList = Lists.newArrayList();
+        List<AnswerSheet.PaperCondType> typeList = Lists.newArrayList();
+        Map<String, AnswerSheet.PaperCondType> typeMap = Maps.newHashMap();
+        Double fenScore = 0.0;
+        for (LearnPaperQuestion q : questions) {
+            LearnPaperQuestion pq = new LearnPaperQuestion();
+            pq.setQuestionId(q.getId()); // 没传questionId?
+            pq.setSeq(pqList.size() + 1);
+            pq.setKnowledgeId(q.getKnowledgeId());
+            pq.setScore(null == q.getScore() ? 1.0 : q.getScore());
+            fenScore += q.getScore();
+            AnswerSheet.PaperCondType pt = typeMap.get(q.getType());
+            if(null == pt) {
+                pt = new AnswerSheet.PaperCondType();
+                pt.setType(q.getType());
+                pt.setCount(1);
+                pt.setScore(pq.getScore());
+                typeMap.put(q.getType(), pt);
+                typeList.add(pt);
+            } else {
+                pt.setCount(pt.getCount() + 1);
+                pt.setScore((pq.getScore() + q.getScore()) / 2);
+            }
+            pqList.add(pq);
+        }
+        AnswerSheet.PaperCond info = new AnswerSheet.PaperCond();
+        info.setScore(paper.getFenshu());
+        info.setTime(90 * 60);
+        typeList.stream().forEach(t -> t.setScore(Math.round(t.getScore() * 10) / 10.0));
+        info.setTypes(typeList);
+        paper.setPaperInfo(JSONObject.toJSONString(info));
+        paper.setFenshu((int) Math.round(fenScore));
+        paperService.savePaper(paper, pqList);
+    }
+
     public List<TreeNode> getKnowledgeTree(String examineeType, Long subjectId, Set<Long> knowledgeIdSet, Long studentId) {
         LearnKnowledgeTree ktCond = new LearnKnowledgeTree();
         if (null != subjectId && !subjectId.equals(100L)) {

+ 13 - 1
ie-system/src/main/java/com/ruoyi/learn/domain/LearnPaperQuestion.java

@@ -1,5 +1,6 @@
 package com.ruoyi.learn.domain;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 import com.ruoyi.common.annotation.Excel;
@@ -40,6 +41,9 @@ public class LearnPaperQuestion extends BaseEntity
     @Excel(name = "题型")
     private String type;
 
+    @Excel(name = "兼容题型")
+    private String qtpye;
+
     @Excel(name = "难度")
     private Integer diff;
 
@@ -102,13 +106,21 @@ public class LearnPaperQuestion extends BaseEntity
     }
 
     public String getType() {
-        return type;
+        return StringUtils.isBlank(type) ? qtpye : type;
     }
 
     public void setType(String type) {
         this.type = type;
     }
 
+    public String getQtpye() {
+        return qtpye;
+    }
+
+    public void setQtpye(String qtpye) {
+        this.qtpye = qtpye;
+    }
+
     public Integer getDiff() {
         return diff;
     }

+ 1 - 1
ie-system/src/main/resources/mapper/dz/DzClassesMapper.xml

@@ -45,7 +45,7 @@
             <if test="subjectId != null"> and ts.`subject_id` = #{subjectId} </if>
         <where>tc.`teacher_id` = #{teacherId}
             <if test="classId != null"> AND ls.`class_id` = #{classId}</if>
-            <if test="buildType != null and buildType = 'ExactIntelligent'"> AND ls.`university_id` is not null</if>
+            <if test="buildType != null and buildType == 'ExactIntelligent'"> AND ls.`university_id` is not null</if>
             <if test="universityId != null"> AND ls.`university_id` = #{universityId}</if>
             <if test="majorGroup != null"> AND ls.`major_group` = #{majorGroup}</if>
             <if test="majorPlanId != null"> AND ls.`major_plan_id` = #{majorPlanId}</if>