|
@@ -8,9 +8,12 @@ import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import java.util.UUID;
|
|
|
+import java.util.regex.Matcher;
|
|
|
+import java.util.regex.Pattern;
|
|
|
|
|
|
import org.apache.commons.io.FileUtils;
|
|
|
import org.apache.commons.io.IOUtils;
|
|
|
+import org.apache.commons.lang3.ArrayUtils;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
|
|
|
import org.docx4j.wml.P;
|
|
@@ -247,24 +250,19 @@ public class ImportPaperService {
|
|
|
|
|
|
// 处理题干
|
|
|
processQuesBody(pList, importPaperCheck.index, question, importPaperCheck, tmpWordMlPackage);
|
|
|
-
|
|
|
// 处理选项
|
|
|
- processQuesOption(pList, importPaperCheck.index, subQuesNum, question, importPaperCheck,
|
|
|
- tmpWordMlPackage);
|
|
|
+ processQuesOption(pList, importPaperCheck.index, subQuesNum, question, importPaperCheck,tmpWordMlPackage);
|
|
|
// 处理尾信息
|
|
|
- processQuesTail(pList, importPaperCheck.index, subQuesNum, question, paperDetailUnit,
|
|
|
- importPaperCheck, tmpWordMlPackage, false);
|
|
|
-
|
|
|
+ processQuesTail(pList, importPaperCheck.index, subQuesNum, question, paperDetailUnit,importPaperCheck, tmpWordMlPackage, false);
|
|
|
+ //处理选择题的option
|
|
|
+ processSelectOption(question);
|
|
|
} else if (importPaperCheck.quesType.equals("套题")) {
|
|
|
// 处理套题
|
|
|
- processNestedQues(pList, importPaperCheck.index, question, paperDetailUnit, importPaperCheck,
|
|
|
- tmpWordMlPackage);
|
|
|
+ processNestedQues(pList, importPaperCheck.index, question, paperDetailUnit, importPaperCheck,tmpWordMlPackage);
|
|
|
} else {
|
|
|
// 处理其他题型
|
|
|
processQuesBody(pList, importPaperCheck.index, question, importPaperCheck, tmpWordMlPackage);
|
|
|
-
|
|
|
- processQuesTail(pList, importPaperCheck.index, subQuesNum, question, paperDetailUnit,
|
|
|
- importPaperCheck, tmpWordMlPackage, false);
|
|
|
+ processQuesTail(pList, importPaperCheck.index, subQuesNum, question, paperDetailUnit,importPaperCheck, tmpWordMlPackage, false);
|
|
|
}
|
|
|
// 设置WordMlPackage二进制数据
|
|
|
setPkgByte(question, writePkg);
|
|
@@ -512,8 +510,9 @@ public class ImportPaperService {
|
|
|
QuesOption current = null;
|
|
|
|
|
|
int i = 0;
|
|
|
-
|
|
|
+ int number = 0;
|
|
|
for (i = index; i < pList.size(); i++) {
|
|
|
+ number++;
|
|
|
P pOption = (P) pList.get(i);
|
|
|
String tmpText = DocxProcessUtil.getPText(pOption);
|
|
|
|
|
@@ -524,7 +523,8 @@ public class ImportPaperService {
|
|
|
// 检测到选项开始段落
|
|
|
// 创建试题选项
|
|
|
current = new QuesOption();
|
|
|
- current.setNumber(tmpText.substring(0, 1));
|
|
|
+ String optionNumber = String.valueOf(number);//number设置 为1,2,3,4--chenken 2017.4.25
|
|
|
+ current.setNumber(optionNumber);
|
|
|
current.setOptionBody("");
|
|
|
current.setOptionBodyWord("");
|
|
|
quesOptions.add(current);
|
|
@@ -553,7 +553,7 @@ public class ImportPaperService {
|
|
|
}
|
|
|
return importPaperCheck.errorInfo;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
/**
|
|
|
* 处理小题尾信息
|
|
|
*
|
|
@@ -605,7 +605,15 @@ public class ImportPaperService {
|
|
|
importPaperCheck.setIndex(i);
|
|
|
// 校验答案
|
|
|
if (answerHTML.length() > 0) {
|
|
|
- question.setQuesAnswer(answerHTML.toString());
|
|
|
+ //选择题过滤html标签--chenken 2017.4.25
|
|
|
+ if (importPaperCheck.quesType.equals("单选") || importPaperCheck.quesType.equals("多选")){
|
|
|
+ String regEx_html="<[^>]+>";
|
|
|
+ Pattern p_html=Pattern.compile(regEx_html,Pattern.CASE_INSENSITIVE);
|
|
|
+ Matcher m_html=p_html.matcher(answerHTML.toString()); //过滤html标签
|
|
|
+ question.setQuesAnswer(m_html.replaceAll(""));
|
|
|
+ }else{
|
|
|
+ question.setQuesAnswer(answerHTML.toString());
|
|
|
+ }
|
|
|
question.setQuesAnswerWord(answerWordML.toString());
|
|
|
} else {
|
|
|
importPaperCheck.setErrorInfo(getQuesNumInfo(importPaperCheck.quesName, subQuesNum) + "答案为空或格式不正确\n");
|
|
@@ -620,6 +628,28 @@ public class ImportPaperService {
|
|
|
paperDetailUnit.setScore(Double.parseDouble(quesScore));
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 处理选择题option信息
|
|
|
+ * @param question
|
|
|
+ */
|
|
|
+ public void processSelectOption(Question question){
|
|
|
+ String answer = question.getQuesAnswer();
|
|
|
+ if(StringUtils.isNotBlank(answer)){
|
|
|
+ String[] answerArray = answer.split(",");
|
|
|
+ for(int i=0;i<question.getQuesOptions().size();i++){
|
|
|
+ QuesOption quesOption = question.getQuesOptions().get(i);
|
|
|
+ char number = (char) (Integer.parseInt(quesOption.getNumber())+64);
|
|
|
+ if(ArrayUtils.contains(answerArray,String.valueOf(number))){
|
|
|
+ quesOption.setIsCorrect((short) 1);
|
|
|
+ }else{
|
|
|
+ quesOption.setIsCorrect((short) 0);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //选择题答案不持久化
|
|
|
+ question.setQuesAnswer(null);
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
/**
|
|
|
* 处理套题
|