Browse Source

提交优化导入试卷代码

chenken 8 năm trước cách đây
mục cha
commit
4c4275e354

+ 21 - 11
cqb-paper/src/main/java/com/qmth/cqb/paper/service/ImportPaperService.java

@@ -9,6 +9,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.UUID;
+import java.util.regex.Pattern;
 
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.IOUtils;
@@ -471,19 +472,19 @@ public class ImportPaperService {
                 bodyStart = true;
                 pBody = DocxProcessUtil.formatP(pBody, QuesUnit.QUES_BODY);
                 String tmpWordMl = DocxProcessUtil.getPWordMl(pBody);
-                quesBodyWordMl.append(DocxProcessUtil.formatPWordMl(tmpWordMl));
+                tmpWordMl = DocxProcessUtil.formatPWordMl(tmpWordMl);
+                quesBodyWordMl.append(tmpWordMl);
                 quesBodyHtml.append(DocxProcessUtil.docx2Html(tmpWordMl, wordMLPackage));
             } else if (tmpText.matches("^[a-zA-Z]\\.[\\s\\S]*") || tmpText.startsWith("[")) {
                 // 检测到选项或其他特殊段落直接退出
                 break;
-            } else /*if(bodyStart)*/{
+            } else{
                 // 题干普通段落
                 String tmpWordMl = DocxProcessUtil.getPWordMl(pBody);
-                quesBodyWordMl.append(DocxProcessUtil.formatPWordMl(tmpWordMl));
+                tmpWordMl = DocxProcessUtil.formatPWordMl(tmpWordMl);
+                quesBodyWordMl.append(tmpWordMl);
                 quesBodyHtml.append(DocxProcessUtil.docx2Html(tmpWordMl, wordMLPackage));
-            }/*else{
-                break;
-            }*/
+            }
         }
         if(StringUtils.isEmpty(quesBodyHtml) || StringUtils.isEmpty(quesBodyWordMl)){
             if(subQuesNum == 0){
@@ -974,7 +975,8 @@ public class ImportPaperService {
     		if(paperDetail.getUnitCount()!=entry.getValue()){
     			importPaperCheck.setErrorInfo("大题:"+paperDetail.getName()
     												+"标识小题数量("+paperDetail.getUnitCount()
-    												+")与实际小题数量("+entry.getValue()+")不符 ");
+    												+")与实际小题数量("+entry.getValue()+")不符。"
+    												+ "(注:若检查小题数量无问题,请检查word中题目的格式是否正确)");
         		throw new PaperException(importPaperCheck.errorInfo);
     		}
     	}
@@ -999,15 +1001,17 @@ public class ImportPaperService {
         		optionNumList.add(word+"");
     		}
         	for(String answer:pAnswerArray){
-        		String reg="([A-Z]|[a-z])";
-        		if(!answer.matches(reg)){
+        		answer = answer.trim();
+        		String pattern = "\\s*([A-Z]|[a-z])\\s*";
+        		if(!Pattern.matches(pattern,answer)){
         			importPaperCheck.setErrorInfo(getQuesNumInfo(importPaperCheck.quesName, subQuesNum)+
-       					 "中答案格式不正确,答案为:"+answerWord);
+       					 "中,答案格式不正确,答案为:"+answerWord);
        	         	throw new PaperException(importPaperCheck.errorInfo);
         		}
         		if(!optionNumList.contains(answer)){
         			 importPaperCheck.setErrorInfo(getQuesNumInfo(importPaperCheck.quesName, subQuesNum)+
-        					 "中,选项为:"+optionNumList.toString()+",答案为:"+answerWord);
+        					 "中,选项为:"+optionNumList.toString()+",答案为:"+answerWord+
+        					 "。(注:若检查选项无问题,请检查word中题目的格式是否正确)");
         	         throw new PaperException(importPaperCheck.errorInfo);
         		}
         	}
@@ -1052,4 +1056,10 @@ public class ImportPaperService {
 	        throw new PaperException(importPaperCheck.errorInfo);
     	}
     }
+    
+    /*public static void main(String[] args) {
+    	String pattern = "\\s*([A-Z]|[a-z])\\s*";
+    	System.out.println(Pattern.matches(pattern, " C"));
+	}*/
+    
 }