Browse Source

增加数学专项诊断文档,增加SpecialMind实体类,增加上传数学专项诊断思维过程

4228306 5 years ago
parent
commit
84b9306cee

BIN
doc/table.docx


BIN
doc/topic_table.docx


BIN
doc/数学中考专项诊断思维过程.xlsx


BIN
doc/数学中考专项诊断报告.pdf


BIN
doc/数学中考专项诊断知识点列表.xlsx


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

@@ -2,12 +2,14 @@ package com.yaoxiang.diagnosis.controller;
 
 import com.yaoxiang.diagnosis.config.Constants;
 import com.yaoxiang.diagnosis.entity.SpecialKnowledge;
+import com.yaoxiang.diagnosis.entity.SpecialMind;
 import com.yaoxiang.diagnosis.entity.SubjectKnowledge;
 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.service.SpecialMindService;
 import com.yaoxiang.diagnosis.word.KnowledgeUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -28,6 +30,8 @@ public class ExcelController {
     private SpecialKnowledgeService specialKnowledgeService;
     @Resource
     private MatterService matterService;
+    @Resource
+    private SpecialMindService specialMindService;
 
     @PostMapping("/uploadAll")
     public Result uploadAll() {
@@ -57,7 +61,7 @@ public class ExcelController {
     }
 
     @PostMapping("/uploadSpecial")
-    @ApiOperation("上传专项诊断知识点")
+    @ApiOperation("上传小学专项诊断知识点")
     public Result uploadSpecial(@RequestParam(defaultValue = "2") Long subjectId,
                                 @RequestParam(defaultValue = "6Y") String grade,
                                 @RequestBody MultipartFile file) throws Exception {
@@ -67,15 +71,27 @@ public class ExcelController {
         return new Result(result);
     }
 
-    @PostMapping("/uploadSpecialChem")
-    @ApiOperation("上传专项诊断知识点")
+    @PostMapping("/uploadSpecialMiddle")
+    @ApiOperation("上传中考专项诊断知识点")
     public Result uploadSpecialChem(@RequestParam(defaultValue = "4") Long subjectId,
                                     @RequestParam(defaultValue = "9Y") String grade,
                                     @RequestParam(defaultValue = "5") Long pid,
                                     @RequestBody MultipartFile file) throws Exception {
         byte[] data = file.getBytes();
-        List<SpecialKnowledge> list = KnowledgeUtil.importSpecialKnowledge2(subjectId, grade, data,pid);
+        List<SpecialKnowledge> list = KnowledgeUtil.importSpecialKnowledge2(subjectId, grade, data, pid);
         specialKnowledgeService.add(list);
         return Result.ok(list);
     }
+
+    @PostMapping("/uploadSpecialMind")
+    @ApiOperation("上传中考专项诊断思维过程")
+    public Result uploadSpecialMind(@RequestParam(defaultValue = "2") Long subjectId,
+                                    @RequestParam(defaultValue = "9Y") String grade,
+                                    @RequestParam(defaultValue = "5") Long pid,
+                                    @RequestBody MultipartFile file) throws Exception {
+        byte[] data = file.getBytes();
+        List<SpecialMind> list = KnowledgeUtil.importSpecialMind(subjectId, grade, data, pid);
+        specialMindService.add(list);
+        return Result.ok(list);
+    }
 }

+ 8 - 0
src/main/java/com/yaoxiang/diagnosis/dao/SpecialMindRepo.java

@@ -0,0 +1,8 @@
+package com.yaoxiang.diagnosis.dao;
+
+import com.yaoxiang.diagnosis.entity.SpecialMind;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+public interface SpecialMindRepo extends JpaRepository<SpecialMind,Long> {
+
+}

+ 77 - 0
src/main/java/com/yaoxiang/diagnosis/entity/SpecialMind.java

@@ -0,0 +1,77 @@
+package com.yaoxiang.diagnosis.entity;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+
+@Entity
+public class SpecialMind {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;
+
+    private String step;
+    private String content;
+    private Long pid;
+    private Long subjectId;
+    private String grade;
+    private String qids;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getStep() {
+        return step;
+    }
+
+    public void setStep(String step) {
+        this.step = step;
+    }
+
+    public String getContent() {
+        return content;
+    }
+
+    public void setContent(String content) {
+        this.content = content;
+    }
+
+    public Long getPid() {
+        return pid;
+    }
+
+    public void setPid(Long pid) {
+        this.pid = pid;
+    }
+
+    public Long getSubjectId() {
+        return subjectId;
+    }
+
+    public void setSubjectId(Long subjectId) {
+        this.subjectId = subjectId;
+    }
+
+    public String getGrade() {
+        return grade;
+    }
+
+    public void setGrade(String grade) {
+        this.grade = grade;
+    }
+
+    public String getQids() {
+        return qids;
+    }
+
+    public void setQids(String qids) {
+        this.qids = qids;
+    }
+}

+ 8 - 0
src/main/java/com/yaoxiang/diagnosis/model/SpecialKnowledgeVo.java

@@ -0,0 +1,8 @@
+package com.yaoxiang.diagnosis.model;
+
+public class SpecialKnowledgeVo {
+
+    private Long id;
+    private Integer collectNum;
+    private Integer questionNum;
+}

+ 25 - 0
src/main/java/com/yaoxiang/diagnosis/service/SpecialMindService.java

@@ -0,0 +1,25 @@
+package com.yaoxiang.diagnosis.service;
+
+import com.yaoxiang.diagnosis.dao.SpecialMindRepo;
+import com.yaoxiang.diagnosis.entity.SpecialMind;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import javax.transaction.Transactional;
+import java.util.List;
+
+@Service
+public class SpecialMindService {
+
+    @Resource
+    private SpecialMindRepo specialMindRepo;
+
+    @Transactional(rollbackOn = Exception.class)
+    public boolean add(List<SpecialMind> list) {
+        for (SpecialMind s : list) {
+            specialMindRepo.save(s);
+        }
+        return true;
+    }
+
+}

+ 35 - 1
src/main/java/com/yaoxiang/diagnosis/word/KnowledgeUtil.java

@@ -1,6 +1,7 @@
 package com.yaoxiang.diagnosis.word;
 
 import com.yaoxiang.diagnosis.entity.SpecialKnowledge;
+import com.yaoxiang.diagnosis.entity.SpecialMind;
 import com.yaoxiang.diagnosis.entity.SubjectKnowledge;
 import com.yaoxiang.diagnosis.model.MatterVo;
 import org.apache.commons.lang3.StringUtils;
@@ -229,7 +230,7 @@ public class KnowledgeUtil {
                 if (j == row.getLastCellNum() - 2) {
                     XSSFCell cell = row.getCell(j + 1);
                     if (CellType.NUMERIC == cell.getCellTypeEnum()) {
-                        k.setQids(String.valueOf((int)cell.getNumericCellValue()));
+                        k.setQids(String.valueOf((int) cell.getNumericCellValue()));
                     } else {
                         k.setQids(cell.getStringCellValue());
                     }
@@ -246,4 +247,37 @@ public class KnowledgeUtil {
         return result;
     }
 
+    public static List<SpecialMind> importSpecialMind(Long subjectId, String grade, byte[] data, Long pid) throws Exception {
+        XSSFWorkbook book = new XSSFWorkbook(new ByteArrayInputStream(data));
+        XSSFSheet sheet = book.getSheetAt(0);
+        List<SpecialMind> result = new ArrayList<>();
+        //先来做个填充
+        for (int i = 1; i < sheet.getLastRowNum(); i++) {
+            XSSFRow row = sheet.getRow(i);
+            XSSFCell cell = row.getCell(0);
+            String content = cell.getStringCellValue();
+            if (StringUtils.isBlank(content)) {
+                cell.setCellValue(sheet.getRow(i - 1).getCell(0).getStringCellValue());
+            }
+        }
+        for (int i = 1; i <= sheet.getLastRowNum(); i++) {
+            XSSFRow row = sheet.getRow(i);
+            SpecialMind mind = new SpecialMind();
+            mind.setStep(row.getCell(0).getStringCellValue());
+            mind.setContent(row.getCell(1).getStringCellValue());
+            XSSFCell cell = row.getCell(2);
+            String qids = "";
+            if (cell.getCellTypeEnum() == CellType.NUMERIC) {
+                qids = String.valueOf((int) cell.getNumericCellValue());
+            } else {
+                qids = cell.getStringCellValue();
+            }
+            mind.setQids(qids);
+            mind.setPid(pid);
+            mind.setGrade(grade);
+            mind.setSubjectId(subjectId);
+            result.add(mind);
+        }
+        return result;
+    }
 }

+ 22 - 7
src/test/java/com/yaoxiang/diagnosis/service/WordServiceTest.java

@@ -3,11 +3,11 @@ package com.yaoxiang.diagnosis.service;
 import com.yaoxiang.diagnosis.config.Constants;
 import com.yaoxiang.diagnosis.util.CommonUtil;
 import com.yaoxiang.diagnosis.word.WordUtil;
+import fr.opensagres.poi.xwpf.converter.xhtml.XHTMLConverter;
+import fr.opensagres.poi.xwpf.converter.xhtml.internal.XHTMLMapper;
 import org.apache.commons.lang3.StringUtils;
-import org.apache.poi.xwpf.usermodel.XWPFDocument;
-import org.apache.poi.xwpf.usermodel.XWPFParagraph;
-import org.apache.poi.xwpf.usermodel.XWPFPicture;
-import org.apache.poi.xwpf.usermodel.XWPFRun;
+import org.apache.poi.POIXMLDocumentPart;
+import org.apache.poi.xwpf.usermodel.*;
 import org.apache.xmlbeans.SchemaType;
 import org.apache.xmlbeans.XmlCursor;
 import org.apache.xmlbeans.XmlObject;
@@ -82,9 +82,24 @@ public class WordServiceTest {
     }
 
     @Test
-    public void test222() {
-        XWPFDocument document = WordUtil.open("topic_table.docx");
-        for (XWPFParagraph paragraph : document.getParagraphs()) {
+    public void test222() throws Exception{
+        XWPFDocument document = WordUtil.open("doc/table.docx");
+        List<XWPFParagraph> list = document.getParagraphs();
+        List<IBodyElement> bodyElements = document.getBodyElements();
+        int i=0;
+//        XHTMLMapper mapper = new XHTMLMapper(document,null,null);
+//        mapper.start();
+
+        for (IBodyElement element:bodyElements){
+            if (element instanceof XWPFParagraph){
+                System.out.println(i+"par " + ((XWPFParagraph) element).getText());
+            }else if(element instanceof XWPFTable){
+                XWPFTable table = (XWPFTable) element;
+                System.out.println(i+"table " + table.getText());
+            }
+            i++;
+        }
+        for (XWPFParagraph paragraph : list) {
             System.out.println(paragraph.getText());
         }
     }