Răsfoiți Sursa

修改专项诊断报告接口,由原来的uid,pid改为resultId

4228306 5 ani în urmă
părinte
comite
f301d103f0

+ 2 - 2
deploy.sh

@@ -4,6 +4,6 @@ docker build -t feick/diagnosis:$date .
 echo "current tag is $date"
 sed -i "s/\${date}/$(echo $date)/g" deployment.yaml
 kubectl apply -f deployment.yaml
-sed -i "s/\${date}/$(echo $date)/g" deployment-prod.yaml
-kubectl apply -f deployment-prod.yaml
+#sed -i "s/\${date}/$(echo $date)/g" deployment-prod.yaml
+#kubectl apply -f deployment-prod.yaml
 echo "build finish."

+ 18 - 4
src/main/java/com/yaoxiang/diagnosis/controller/SpecialReportController.java

@@ -22,16 +22,30 @@ public class SpecialReportController {
     @Resource
     private SpecialReportService specialReportService;
 
+//    @GetMapping("/generate")
+//    @ApiOperation("生成专项诊断第一页知识点报告")
+//    public SpecialResult generate(Long pid, Long uid) {
+//        return specialReportService.generate(pid, uid);
+//    }
+
     @GetMapping("/generate")
     @ApiOperation("生成专项诊断第一页知识点报告")
-    public SpecialResult generate(Long pid, Long uid) {
-        return specialReportService.generate2(pid, uid);
+    public SpecialResult generate(Long resultId) {
+        return specialReportService.generate(resultId);
     }
 
+//    @GetMapping("/generateMind")
+//    @ApiOperation("生成专项诊断第二页思维过程报告")
+//    public List<SpecialMindVo> generateMind(Long pid, Long uid) {
+//        List<SpecialMindVo> list = specialReportService.generateMind(pid, uid);
+//        list.sort(Comparator.comparingInt(SpecialMindVo::getSort));
+//        return list;
+//    }
+
     @GetMapping("/generateMind")
     @ApiOperation("生成专项诊断第二页思维过程报告")
-    public List<SpecialMindVo> generateMind(Long pid, Long uid) {
-        List<SpecialMindVo> list = specialReportService.generateMind(pid, uid);
+    public List<SpecialMindVo> generateMind(Long resultId) {
+        List<SpecialMindVo> list = specialReportService.generateMind(resultId);
         list.sort(Comparator.comparingInt(SpecialMindVo::getSort));
         return list;
     }

+ 11 - 0
src/main/java/com/yaoxiang/diagnosis/entity/PaperResult.java

@@ -4,6 +4,7 @@ import com.yaoxiang.diagnosis.model.AbilityEvaluateVo;
 import com.yaoxiang.diagnosis.model.AnswerContrast;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+import io.swagger.annotations.ApiOperation;
 import org.hibernate.annotations.CreationTimestamp;
 
 import javax.persistence.*;
@@ -29,6 +30,8 @@ public class PaperResult {
     private Long uid;
     @Column(nullable = false)
     private Long pid;
+    @ApiModelProperty("commitId")
+    private Long cid;
 
     @ApiModelProperty("试卷编号")
     private String code;
@@ -257,6 +260,14 @@ public class PaperResult {
         this.pid = pid;
     }
 
+    public Long getCid() {
+        return cid;
+    }
+
+    public void setCid(Long cid) {
+        this.cid = cid;
+    }
+
     public Date getCreatetime() {
         return createtime;
     }

+ 9 - 0
src/main/java/com/yaoxiang/diagnosis/model/PaperResultVo.java

@@ -17,6 +17,7 @@ public class PaperResultVo {
     private String uname;
     private String username;
     private String region;
+    private Long cid;
 
     public Long getId() {
         return id;
@@ -121,4 +122,12 @@ public class PaperResultVo {
     public void setRegion(String region) {
         this.region = region;
     }
+
+    public Long getCid() {
+        return cid;
+    }
+
+    public void setCid(Long cid) {
+        this.cid = cid;
+    }
 }

+ 4 - 0
src/main/java/com/yaoxiang/diagnosis/service/CommitService.java

@@ -171,6 +171,10 @@ public class CommitService {
         return paperCommitRepo.findByPidAndUidOrderByCreatetimeDesc(pid, uid);
     }
 
+    public PaperCommit findByCommit(Long commitId) {
+        return paperCommitRepo.getOne(commitId);
+    }
+
     public boolean hasCommit(Long pid, Long uid) {
         //增加权限校验
         AuthUser user = SecurityUtil.getCurrentUser();

+ 1 - 0
src/main/java/com/yaoxiang/diagnosis/service/PaperResultService.java

@@ -69,6 +69,7 @@ public class PaperResultService {
         Map<Integer, Answer> mapAnswers = answers.stream().collect(Collectors.toMap(Answer::getNumber, Function.identity()));
         List<Integer> collectQuestion = new ArrayList<>();
         PaperResult result = new PaperResult();
+        result.setCid(paperCommit.getId());
         result.setPid(paperCommit.getPid());
         result.setName(paperCommit.getName());
         result.setUid(paperCommit.getUid());

+ 37 - 76
src/main/java/com/yaoxiang/diagnosis/service/SpecialReportService.java

@@ -43,21 +43,7 @@ public class SpecialReportService {
 
     private static final Logger logger = LoggerFactory.getLogger(SpecialReportService.class);
 
-//    public SpecialResult generate(Long pid, Long uid) {
-//        Paper paper = paperService.getOnePaper(pid);
-//        if (paper == null) {
-//            logger.error("未找到试卷 pid={}", pid);
-//            return null;
-//        }
-//        PaperCommit commit = commitService.getPaperCommit(pid, uid);
-//        if (commit == null) {
-//            logger.error("用户未提交 pid={},uid={}", pid, uid);
-//            return null;
-//        }
-//        return generate(commit, paper);
-//    }
-
-    public SpecialResult generate2(Long pid, Long uid) {
+    public SpecialResult generate(Long pid, Long uid) {
         logger.info("正在生成专项诊断报告");
         Paper paper = paperService.getOnePaper(pid);
         if (paper == null) {
@@ -69,61 +55,30 @@ public class SpecialReportService {
             logger.error("用户未提交 pid={},uid={}", pid, uid);
             return null;
         }
-        return generate2(commit, paper);
+        return generate(commit, paper);
     }
 
-    @Transactional(rollbackOn = Exception.class)
-    public SpecialResult generate(PaperCommit commit, Paper paper) {
-        PaperResult result = paperResultService.findByPidAndUid(commit.getPid(), commit.getUid()).get(0);
-        List<SpecialKnowledge> list = specialKnowledgeService.list(paper.getSubjectId(), paper.getGrade());
-        //找出叶子节点
-        Map<String, SpecialKnowledge> map = list.stream().filter(s -> s.getCode() != null)
-                .collect(Collectors.toMap(SpecialKnowledge::getCode, Function.identity()));
-        if (CommonUtil.isEmpty(list)) {
-            logger.error("未上传专项诊断知识点,subjectId={},grade={}", paper.getSubjectId(), paper.getGrade());
+    public SpecialResult generate(Long resultId) {
+        logger.info("正在生成专项诊断报告");
+        PaperResult result = paperResultService.get(resultId);
+        if (result == null) {
+            logger.error("未找到报告 paperResultId={}", resultId);
             return null;
         }
-        if (result == null) {
-            //重新生成PaperResult
-            result = (PaperResult) paperResultService.parseResult(commit, paper).getT();
+        Paper paper = paperService.getOnePaper(result.getPid());
+        if (paper == null) {
+            logger.error("未找到试卷 pid={}", result.getPid());
+            return null;
         }
-        String collect = result.getCollectQuestion();
-        //答对的选项
-        List<Integer> collects = Arrays.stream(collect.split(","))
-                .map(Integer::parseInt).collect(Collectors.toList());
-//        String wrong = result.getWrongQuestion();
-//        String wrongs[] = wrong.split(",");
-        List<Question> questions = paper.getQuestions();
-        Map<String, List<Question>> group = questions.stream().collect(Collectors.groupingBy(Question::getTag));
-        for (Map.Entry<String, List<Question>> entry : group.entrySet()) {
-            String code = entry.getKey();
-            List<Question> qs = entry.getValue();
-            SpecialKnowledge knowledge = map.get(code);
-            if (knowledge == null) {
-                continue;
-            }
-            knowledge.setQuestionNum(qs.size());
-            knowledge.setCollectNum(getCount(qs, collects));
+        PaperCommit commit = commitService.findByCommit(result.getCid());
+        if (commit == null) {
+            logger.error("用户未提交 pid={},uid={}", result.getPid(), result.getUid());
+            return null;
         }
-
-        List<SpecialKnowledge> tree = specialKnowledgeService.toTree(list);
-        //统计结果并且剪枝,剪掉>3的层级
-        specialKnowledgeService.calcCount(list);
-
-        logger.info(tree.toString());
-        SpecialResult r = new SpecialResult();
-        r.setCode(paper.getCode());
-        r.setCollectQuestion(collect);
-        r.setWrongQuestion(result.getWrongQuestion());
-        r.setScore(result.getScore());
-        r.setTotalScore(result.getTotalScore());
-        r.setPid(result.getPid());
-        r.setUid(result.getUid());
-        r.setKnowledges(tree);
-        return r;
+        return generate(commit, paper);
     }
 
-    public SpecialResult generate2(PaperCommit commit, Paper paper) {
+    public SpecialResult generate(PaperCommit commit, Paper paper) {
         PaperResult result = paperResultService.findByPidAndUid(commit.getPid(), commit.getUid()).get(0);
         List<SpecialKnowledge> list = specialKnowledgeService.listByPid(paper.getId());
 
@@ -183,20 +138,6 @@ public class SpecialReportService {
         return r;
     }
 
-    private void calcMind(List<SpecialMind> list) {
-
-    }
-
-    private Integer getCount(List<Question> qs, List<Integer> collects) {
-        int count = 0;
-        for (Question q : qs) {
-            if (collects.contains(q.getNumber())) {
-                count++;
-            }
-        }
-        return count;
-    }
-
     public List<SpecialMindVo> generateMind(Long pid, Long uid) {
         logger.info("正在生成专项诊断报告");
         Paper paper = paperService.getOnePaper(pid);
@@ -212,6 +153,26 @@ public class SpecialReportService {
         return generateMind(commit, paper);
     }
 
+    public List<SpecialMindVo> generateMind(Long resultId) {
+        logger.info("正在生成专项诊断报告");
+        PaperResult result = paperResultService.get(resultId);
+        if (result == null) {
+            logger.error("未找到报告 paperResultId={}", resultId);
+            return null;
+        }
+        Paper paper = paperService.getOnePaper(result.getPid());
+        if (paper == null) {
+            logger.error("未找到试卷 pid={}", result.getPid());
+            return null;
+        }
+        PaperCommit commit = commitService.findByCommit(result.getCid());
+        if (commit == null) {
+            logger.error("用户未提交 pid={},uid={}", result.getPid(), result.getUid());
+            return null;
+        }
+        return generateMind(commit, paper);
+    }
+
     public List<SpecialMindVo> generateMind(PaperCommit commit, Paper paper) {
         PaperResult result = paperResultService.findByPidAndUid(commit.getPid(), commit.getUid()).get(0);
         List<SpecialMind> list = specialMindService.findByPid(paper.getId());