Browse Source

增加专项诊断接口

Feick 5 years ago
parent
commit
c0a1b32ae1

+ 7 - 0
pom.xml

@@ -171,6 +171,13 @@
             <artifactId>swagger-bootstrap-ui</artifactId>
             <version>1.9.6</version>
         </dependency>
+        <!-- https://mvnrepository.com/artifact/com.github.xiaoymin/knife4j-spring-boot-starter -->
+<!--        <dependency>-->
+<!--            <groupId>com.github.xiaoymin</groupId>-->
+<!--            <artifactId>knife4j-spring-boot-starter</artifactId>-->
+<!--            <version>2.0.1</version>-->
+<!--        </dependency>-->
+
     </dependencies>
 
     <build>

+ 8 - 2
src/main/java/com/yaoxiang/diagnosis/controller/ExcelController.java

@@ -7,8 +7,10 @@ import com.yaoxiang.diagnosis.model.MatterVo;
 import com.yaoxiang.diagnosis.model.Result;
 import com.yaoxiang.diagnosis.service.KnowledgeService;
 import com.yaoxiang.diagnosis.service.MatterService;
+import com.yaoxiang.diagnosis.service.SpecialKnowledgeService;
 import com.yaoxiang.diagnosis.word.KnowledgeUtil;
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -23,6 +25,8 @@ public class ExcelController {
     @Resource
     private KnowledgeService knowledgeService;
     @Resource
+    private SpecialKnowledgeService specialKnowledgeService;
+    @Resource
     private MatterService matterService;
 
     @PostMapping("/uploadAll")
@@ -53,11 +57,13 @@ public class ExcelController {
     }
 
     @PostMapping("/uploadSpecial")
+    @ApiOperation("上传专项诊断知识点")
     public Result uploadSpecial(@RequestParam(defaultValue = "2") Long subjectId,
         @RequestParam(defaultValue = "6Y") String grade,
         @RequestBody MultipartFile file) throws Exception{
         byte[] data = file.getBytes();
-        List<SpecialKnowledge> list = KnowledgeUtil.importSpecialKnowledge(subjectId,grade,data);
-        return Result.fail();
+        List<SpecialKnowledge> list = KnowledgeUtil.importSpecialKnowledge1(subjectId,grade,data);
+        boolean result = specialKnowledgeService.add(list);
+        return new Result(result);
     }
 }

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

@@ -57,14 +57,14 @@ public class PaperController {
         return paperService.getOnePaper(id);
     }
 
-    @PreAuthorize("hasRole('ROLE_ADMIN')")
+//    @PreAuthorize("hasRole('ROLE_ADMIN')")
     @ApiOperation(value = "新增试卷")
     @RequestMapping(value = "/add", method = RequestMethod.POST)
     public Result add(@RequestBody Paper paper) {
         return paperService.add(paper);
     }
 
-    @PreAuthorize("hasRole('ROLE_ADMIN')")
+//    @PreAuthorize("hasRole('ROLE_ADMIN')")
     @ApiOperation(value = "编辑试卷")
     @RequestMapping(value = "/update", method = RequestMethod.POST)
     public Result update(@RequestBody Paper paper) {
@@ -79,9 +79,9 @@ public class PaperController {
         return paperService.update(paper);
     }
 
-    @PreAuthorize("hasRole('ROLE_ADMIN')")
+//    @PreAuthorize("hasRole('ROLE_ADMIN')")
     @ApiOperation(value = "删除试卷")
-    @RequestMapping(value = "/delete", method = RequestMethod.GET)
+    @RequestMapping(value = "/delete", method = RequestMethod.POST)
     public void delete(@RequestParam Long id) {
         paperService.delete(id);
     }

+ 34 - 0
src/main/java/com/yaoxiang/diagnosis/controller/SpecialDiagnosisController.java

@@ -0,0 +1,34 @@
+package com.yaoxiang.diagnosis.controller;
+
+import com.yaoxiang.diagnosis.entity.SpecialKnowledge;
+import com.yaoxiang.diagnosis.service.SpecialKnowledgeService;
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@Api(tags = "专项诊断")
+@RestController
+@RequestMapping("special")
+public class SpecialDiagnosisController {
+
+    @Resource
+    private SpecialKnowledgeService specialKnowledgeService;
+
+    @GetMapping("list")
+    public List<SpecialKnowledge> list(@RequestParam(required = false) Long subjectId,
+                                       @RequestParam(required = false) String grade) {
+        return specialKnowledgeService.list(subjectId, grade);
+    }
+
+    @GetMapping("listToTree")
+    public List<SpecialKnowledge> listToTree(@RequestParam(required = false) Long subjectId,
+                                             @RequestParam(required = false) String grade){
+        List<SpecialKnowledge> list = specialKnowledgeService.list(subjectId,grade);
+        return specialKnowledgeService.toTree(list);
+    }
+}

+ 15 - 0
src/main/java/com/yaoxiang/diagnosis/dao/SpecialKnowledgeRepo.java

@@ -0,0 +1,15 @@
+package com.yaoxiang.diagnosis.dao;
+
+import com.yaoxiang.diagnosis.entity.SpecialKnowledge;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+import java.util.List;
+
+public interface SpecialKnowledgeRepo extends JpaRepository<SpecialKnowledge,Long> {
+
+    List<SpecialKnowledge> findBySubjectId(Long subjectId);
+
+    List<SpecialKnowledge> findByGrade(String grade);
+
+    List<SpecialKnowledge> findBySubjectIdAndGrade(Long subjectId,String grade);
+}

+ 43 - 4
src/main/java/com/yaoxiang/diagnosis/entity/SpecialKnowledge.java

@@ -2,11 +2,10 @@ package com.yaoxiang.diagnosis.entity;
 
 import io.swagger.annotations.ApiModelProperty;
 
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.Transient;
+import javax.persistence.*;
+import java.util.List;
 
+@Entity
 public class SpecialKnowledge {
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
@@ -40,14 +39,22 @@ public class SpecialKnowledge {
 
     @ApiModelProperty("第1级Id")
     private Long rootId1;
+    private String root1;
+
     @ApiModelProperty("第2级Id")
     private Long rootId2;
+    private String root2;
+
     @ApiModelProperty("第3级Id")
     private Long rootId3;
+    private String root3;
 
     @Transient
     private SpecialKnowledge parent;
 
+    @Transient
+    private List<SpecialKnowledge> children;
+
     public Long getId() {
         return id;
     }
@@ -152,6 +159,38 @@ public class SpecialKnowledge {
         this.parent = parent;
     }
 
+    public String getRoot1() {
+        return root1;
+    }
+
+    public void setRoot1(String root1) {
+        this.root1 = root1;
+    }
+
+    public String getRoot2() {
+        return root2;
+    }
+
+    public void setRoot2(String root2) {
+        this.root2 = root2;
+    }
+
+    public String getRoot3() {
+        return root3;
+    }
+
+    public void setRoot3(String root3) {
+        this.root3 = root3;
+    }
+
+    public List<SpecialKnowledge> getChildren() {
+        return children;
+    }
+
+    public void setChildren(List<SpecialKnowledge> children) {
+        this.children = children;
+    }
+
     @Override
     public String toString() {
         return "SpecialKnowledge{" +

+ 63 - 0
src/main/java/com/yaoxiang/diagnosis/service/SpecialKnowledgeService.java

@@ -0,0 +1,63 @@
+package com.yaoxiang.diagnosis.service;
+
+import com.yaoxiang.diagnosis.dao.SpecialKnowledgeRepo;
+import com.yaoxiang.diagnosis.entity.SpecialKnowledge;
+import com.yaoxiang.diagnosis.model.Result;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
+
+@Service
+public class SpecialKnowledgeService {
+
+    @Resource
+    private SpecialKnowledgeRepo specialKnowledgeRepo;
+
+    public boolean add(List<SpecialKnowledge> list) {
+        for (SpecialKnowledge knowledge : list) {
+            if (knowledge.getParent() != null) {
+                knowledge.setParentId(knowledge.getParent().getId());
+            }
+            specialKnowledgeRepo.save(knowledge);
+        }
+        return true;
+    }
+
+    public List<SpecialKnowledge> list(Long subjectId, String grade) {
+        if (subjectId == null && StringUtils.isBlank(grade)) {
+            return specialKnowledgeRepo.findAll();
+        } else if (subjectId == null) {
+            return specialKnowledgeRepo.findByGrade(grade);
+        } else if (StringUtils.isNotBlank(grade)) {
+            return specialKnowledgeRepo.findBySubjectIdAndGrade(subjectId, grade);
+        }
+        return specialKnowledgeRepo.findBySubjectId(subjectId);
+    }
+
+    public List<SpecialKnowledge> toTree(List<SpecialKnowledge> list) {
+        List<SpecialKnowledge> treeList = new ArrayList<>();
+        for (SpecialKnowledge tree : list) {
+            //找到根
+            if (tree.getParentId() == null) {
+                treeList.add(tree);
+            }
+            //找到子
+            for (SpecialKnowledge treeNode : list) {
+                if(treeNode.getParentId() == null){
+                    continue;
+                }
+                if (treeNode.getParentId().equals( tree.getId())) {
+                    if (tree.getChildren() == null) {
+                        tree.setChildren(new ArrayList<>());
+                    }
+                    tree.getChildren().add(treeNode);
+                }
+            }
+        }
+        return treeList;
+
+    }
+}

+ 10 - 0
src/main/java/com/yaoxiang/diagnosis/word/KnowledgeUtil.java

@@ -161,6 +161,7 @@ public class KnowledgeUtil {
 //        List<SpecialKnowledge> knowledges = new ArrayList<>();
 //        Queue<SpecialKnowledge> queue = new LinkedList<>();
 //        Map<String,SpecialKnowledge> index = new HashMap<>();
+        //从第4行开始
         for (int i = 3; i <= sheet.getLastRowNum(); i++) {
             XSSFRow row = sheet.getRow(i);
             for (int j = 0; j < row.getLastCellNum() - 1; j++) {
@@ -187,6 +188,15 @@ public class KnowledgeUtil {
                 if (j == row.getLastCellNum() - 2) {
                     k.setCode(row.getCell(j + 1).getStringCellValue());
                 }
+//                if(j > 0){
+//                    k.setRoot1(row.getCell(0).getStringCellValue());
+//                }
+//                if(j > 1){
+//                    k.setRoot2(row.getCell(1).getStringCellValue());
+//                }
+//                if(j > 2){
+//                    k.setRoot3(row.getCell(2).getStringCellValue());
+//                }
                 k.setLevel(j);
                 k.setGrade(grade);
                 k.setSubjectId(subjectId);

+ 1 - 0
src/test/java/com/yaoxiang/diagnosis/service/KnowledgeTest.java

@@ -16,6 +16,7 @@ public class KnowledgeTest {
         byte[] data = FileCopyUtils.copyToByteArray(file);
         //有点问题,最底层的第二个以后的parentId不对
         List<SpecialKnowledge> list = KnowledgeUtil.importSpecialKnowledge1(2L,"6Y",data);
+        System.out.println(list.size());
         for (SpecialKnowledge specialKnowledge : list) {
             System.out.println(specialKnowledge + " " + specialKnowledge.hashCode() + " " + (specialKnowledge.getParent() != null ? specialKnowledge.getParent().hashCode(): "null"));
         }