Browse Source

上传数学中考专项诊断,规整数学试卷和化学试卷,并修改上传bug

4228306 5 years ago
parent
commit
02ab274cd6

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


BIN
doc/数学中考专项诊断.docx


+ 2 - 1
src/main/java/com/yaoxiang/diagnosis/service/PaperService.java

@@ -279,6 +279,7 @@ public class PaperService {
         //TODO use parallel
 //        Result<Paper> paperResult = add(paper);
 //        return addWithQuestion(paper);
+        paper.getQuestions().sort(Comparator.comparingInt(Question::getNumber));
         return Result.ok(paper);
     }
 
@@ -295,7 +296,7 @@ public class PaperService {
         boolean hasFormula = false;
         for (XWPFParagraph paragraph : paragraphs) {
             String text = paragraph.getText();
-            //此处应判断下是否有照片跟图片
+            //此处应判断下是否有图片、文字或者公式
             if (WordUtil.notContent(paragraph, text)) {
                 continue;
             }

+ 19 - 1
src/main/java/com/yaoxiang/diagnosis/word/WordService.java

@@ -13,6 +13,7 @@ import org.apache.poi.xwpf.usermodel.*;
 import org.apache.xmlbeans.XmlCursor;
 import org.apache.xmlbeans.XmlObject;
 import org.openxmlformats.schemas.officeDocument.x2006.math.CTOMath;
+import org.openxmlformats.schemas.officeDocument.x2006.math.CTOMathPara;
 import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTR;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -363,12 +364,17 @@ public class WordService {
 
     public boolean parseFormula(XWPFParagraph p) {
         List<CTOMath> maths = p.getCTP().getOMathList();
-        if (CommonUtil.isEmpty(maths)) {
+        List<CTOMathPara> paras = p.getCTP().getOMathParaList();
+        if (CommonUtil.isEmpty(maths) && CommonUtil.isEmpty(paras)) {
             return false;
         }
+
         //CTOMath 在CTP下面
         XmlCursor c = p.getCTP().newCursor();
         c.selectPath("./*");
+        if(CommonUtil.notEmpty(paras)){
+            c.toNextSibling();
+        }
         int i = 0;
         Map<Integer, String> insert = new HashMap<>();
         while (c.toNextSelection()) {
@@ -386,6 +392,18 @@ public class WordService {
                     e.printStackTrace();
                 }
                 logger.debug("CTOMath i = " + i + " " + o.getClass());
+            } else if(o instanceof CTOMathPara){
+//                CTOMathPara m = (CTOMathPara) o;
+                c.toLastChild();
+                XmlObject xmlObject = c.getObject();
+                CTOMath m = (CTOMath) xmlObject;
+                try {
+                    String mml = formulaService.getMathML(m);
+                    insert.put(i, mml);
+                    i++;
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
             }
         }
 

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

@@ -151,7 +151,7 @@ public class WordUtil {
     }
 
     public static boolean hasFormula(XWPFParagraph p) {
-        return p.getCTP().getOMathList().size() > 0;
+        return p.getCTP().getOMathList().size() > 0 || p.getCTP().getOMathParaList().size() > 0;
     }
 
     public static boolean notContent(XWPFParagraph paragraph, String text) {