|
@@ -290,6 +290,8 @@ public class ImportPaperService {
|
|
|
|
|
|
int subQuesNum = 0;
|
|
|
for (int i = 0; i < pList.size(); i++) {
|
|
|
+
|
|
|
+ int errorQuesNum = 0;
|
|
|
P p = (P) pList.get(i);
|
|
|
String pText = DocxProcessUtil.getPText(p);
|
|
|
if (StringUtils.isEmpty(pText)) {
|
|
@@ -318,6 +320,7 @@ public class ImportPaperService {
|
|
|
if(paperDetail == null){
|
|
|
throw new PaperException("导入文件格式有误,必须有大题头信息,且以 [ 开头!");
|
|
|
}
|
|
|
+ ++errorQuesNum;
|
|
|
++subQuesNum;
|
|
|
|
|
|
|
|
@@ -328,13 +331,13 @@ public class ImportPaperService {
|
|
|
|
|
|
if (importPaperCheck.quesType.equals(ImportPaperMsg.singleSelection) || importPaperCheck.quesType.equals(ImportPaperMsg.multipleSelection)) {
|
|
|
|
|
|
- processQuesBody(pList, importPaperCheck.index, subQuesNum, question, importPaperCheck, tmpWordMlPackage);
|
|
|
+ processQuesBody(pList, importPaperCheck.index, subQuesNum, question, importPaperCheck,tmpWordMlPackage,errorQuesNum);
|
|
|
|
|
|
processQuesOption(pList, importPaperCheck.index, subQuesNum, question, importPaperCheck,
|
|
|
- tmpWordMlPackage);
|
|
|
+ tmpWordMlPackage,errorQuesNum);
|
|
|
|
|
|
processQuesTail(pList, importPaperCheck.index, subQuesNum, question, paperDetailUnit,
|
|
|
- importPaperCheck, tmpWordMlPackage, false,paper);
|
|
|
+ importPaperCheck, tmpWordMlPackage, false,paper,errorQuesNum);
|
|
|
|
|
|
processSelectOption(question);
|
|
|
} else if (importPaperCheck.quesType.equals(ImportPaperMsg.nestedQuestion_word)) {
|
|
@@ -342,12 +345,12 @@ public class ImportPaperService {
|
|
|
processNestedQues(pList, importPaperCheck.index,question, paperDetailUnit, importPaperCheck,tmpWordMlPackage,paper);
|
|
|
} else {
|
|
|
|
|
|
- processQuesBody(pList, importPaperCheck.index, subQuesNum,question, importPaperCheck, tmpWordMlPackage);
|
|
|
- processQuesTail(pList, importPaperCheck.index, subQuesNum, question, paperDetailUnit,importPaperCheck, tmpWordMlPackage, false,paper);
|
|
|
+ processQuesBody(pList, importPaperCheck.index, subQuesNum,question, importPaperCheck, tmpWordMlPackage,errorQuesNum);
|
|
|
+ processQuesTail(pList, importPaperCheck.index, subQuesNum, question, paperDetailUnit,importPaperCheck, tmpWordMlPackage, false,paper,errorQuesNum);
|
|
|
|
|
|
if(question.getQuestionType().getName() == QuesStructType.FILL_BLANK_QUESTION.getName()){
|
|
|
if(!StringUtils.isBlank(question.getQuesAnswer())){
|
|
|
- processFill(question,paperDetailUnit,importPaperCheck,subQuesNum);
|
|
|
+ processFill(question,paperDetailUnit,importPaperCheck,subQuesNum,errorQuesNum);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -699,7 +702,7 @@ public class ImportPaperService {
|
|
|
* @throws Exception
|
|
|
*/
|
|
|
public void processQuesBody(List<Object> pList, int index, int subQuesNum,Question question, ImportPaperCheck importPaperCheck,
|
|
|
- WordprocessingMLPackage wordMLPackage) throws Exception {
|
|
|
+ WordprocessingMLPackage wordMLPackage, int errorQuesNum) throws Exception {
|
|
|
|
|
|
StringBuilder quesBodyWordMl = new StringBuilder();
|
|
|
StringBuilder quesBodyHtml = new StringBuilder();
|
|
@@ -739,13 +742,13 @@ public class ImportPaperService {
|
|
|
if(importPaperCheck.nestedHeadNumber!= 0){
|
|
|
importPaperCheck.setErrorInfo(importPaperCheck.quesName+"第"+importPaperCheck.nestedHeadNumber+"个题"+ImportPaperMsg.errMsg_01);
|
|
|
}else {
|
|
|
- importPaperCheck.setErrorInfo(getQuesNumInfo(importPaperCheck.quesName, subQuesNum)+ImportPaperMsg.errMsg_01);
|
|
|
+ importPaperCheck.setErrorInfo(getQuesNumInfo(importPaperCheck.quesName, errorQuesNum)+ImportPaperMsg.errMsg_01);
|
|
|
}
|
|
|
}else{
|
|
|
if(importPaperCheck.nestedHeadNumber!= 0){
|
|
|
- importPaperCheck.setErrorInfo(importPaperCheck.quesName+"第"+importPaperCheck.nestedHeadNumber+"个题"+subQuesNum+ImportPaperMsg.errMsg_01);
|
|
|
+ importPaperCheck.setErrorInfo(importPaperCheck.quesName+"第"+importPaperCheck.nestedHeadNumber+"个题"+errorQuesNum+ImportPaperMsg.errMsg_01);
|
|
|
}else {
|
|
|
- importPaperCheck.setErrorInfo(getQuesNumInfo(importPaperCheck.quesName, subQuesNum)+ImportPaperMsg.errMsg_01);
|
|
|
+ importPaperCheck.setErrorInfo(getQuesNumInfo(importPaperCheck.quesName, errorQuesNum)+ImportPaperMsg.errMsg_01);
|
|
|
}
|
|
|
}
|
|
|
throw new PaperException(importPaperCheck.errorInfo);
|
|
@@ -768,7 +771,7 @@ public class ImportPaperService {
|
|
|
* @throws Exception
|
|
|
*/
|
|
|
public String processQuesOption(List<Object> pList, int index, int subQuesNum, Question question,
|
|
|
- ImportPaperCheck importPaperCheck, WordprocessingMLPackage wordMLPackage) throws Exception {
|
|
|
+ ImportPaperCheck importPaperCheck, WordprocessingMLPackage wordMLPackage, int errorQuesNum) throws Exception {
|
|
|
|
|
|
|
|
|
List<QuesOption> quesOptions = new ArrayList<QuesOption>();
|
|
@@ -787,9 +790,9 @@ public class ImportPaperService {
|
|
|
} else if (DocxProcessUtil.isNumPr(pOption)) {
|
|
|
|
|
|
if(importPaperCheck.nestedHeadNumber!= 0){
|
|
|
- importPaperCheck.setErrorInfo(importPaperCheck.quesName+"第"+importPaperCheck.nestedHeadNumber+"个题"+subQuesNum+ImportPaperMsg.errMsg_11);
|
|
|
+ importPaperCheck.setErrorInfo(importPaperCheck.quesName+"第"+importPaperCheck.nestedHeadNumber+"个题"+errorQuesNum+ImportPaperMsg.errMsg_11);
|
|
|
}else {
|
|
|
- importPaperCheck.setErrorInfo(getQuesNumInfo(importPaperCheck.quesName, subQuesNum)+ImportPaperMsg.errMsg_11);
|
|
|
+ importPaperCheck.setErrorInfo(getQuesNumInfo(importPaperCheck.quesName, errorQuesNum)+ImportPaperMsg.errMsg_11);
|
|
|
}
|
|
|
throw new PaperException(importPaperCheck.errorInfo);
|
|
|
} else if (tmpText.matches("^[a-zA-Z]\\.[\\s\\S]*")) {
|
|
@@ -801,9 +804,9 @@ public class ImportPaperService {
|
|
|
if(optionNumber != number || "abcdefghijklmnopqrstuvwxyz".indexOf(tmpText.substring(0,1))>-1){
|
|
|
String errorMsg = tmpText.length()>10?tmpText.substring(0, 10):tmpText;
|
|
|
if(importPaperCheck.nestedHeadNumber!= 0){
|
|
|
- importPaperCheck.setErrorInfo(importPaperCheck.quesName+"第"+importPaperCheck.nestedHeadNumber+"个题"+subQuesNum+":“"+errorMsg+"”"+ImportPaperMsg.errMsg_13);
|
|
|
+ importPaperCheck.setErrorInfo(importPaperCheck.quesName+"第"+importPaperCheck.nestedHeadNumber+"个题"+errorQuesNum+":“"+errorMsg+"”"+ImportPaperMsg.errMsg_13);
|
|
|
}else {
|
|
|
- importPaperCheck.setErrorInfo(getQuesNumInfo(importPaperCheck.quesName, subQuesNum)+":“"+errorMsg+"”"+ImportPaperMsg.errMsg_13);
|
|
|
+ importPaperCheck.setErrorInfo(getQuesNumInfo(importPaperCheck.quesName, errorQuesNum)+":“"+errorMsg+"”"+ImportPaperMsg.errMsg_13);
|
|
|
}
|
|
|
throw new PaperException(importPaperCheck.errorInfo);
|
|
|
}
|
|
@@ -832,9 +835,9 @@ public class ImportPaperService {
|
|
|
importPaperCheck.setIndex(i);
|
|
|
if (optionCount < 2) {
|
|
|
if(importPaperCheck.nestedHeadNumber!= 0){
|
|
|
- importPaperCheck.setErrorInfo(importPaperCheck.quesName+"第"+importPaperCheck.nestedHeadNumber+"个题"+subQuesNum+"中选项格式不正确或有缺失\n");
|
|
|
+ importPaperCheck.setErrorInfo(importPaperCheck.quesName+"第"+importPaperCheck.nestedHeadNumber+"个题"+errorQuesNum+"中选项格式不正确或有缺失\n");
|
|
|
}else {
|
|
|
- importPaperCheck.setErrorInfo(getQuesNumInfo(importPaperCheck.quesName, subQuesNum)+"中选项格式不正确或有缺失\n");
|
|
|
+ importPaperCheck.setErrorInfo(getQuesNumInfo(importPaperCheck.quesName, errorQuesNum)+"中选项格式不正确或有缺失\n");
|
|
|
}
|
|
|
throw new PaperException(importPaperCheck.errorInfo);
|
|
|
} else {
|
|
@@ -855,7 +858,7 @@ public class ImportPaperService {
|
|
|
*/
|
|
|
public void processQuesTail(List<Object> pList, int index, int subQuesNum, Question question,
|
|
|
PaperDetailUnit paperDetailUnit, ImportPaperCheck importPaperCheck, WordprocessingMLPackage wordMLPackage,
|
|
|
- boolean isNested,Paper paper) throws Exception {
|
|
|
+ boolean isNested,Paper paper, int errorQuesNum) throws Exception {
|
|
|
|
|
|
StringBuilder answerWordML = new StringBuilder("");
|
|
|
StringBuilder answerHTML = new StringBuilder("");
|
|
@@ -889,13 +892,13 @@ public class ImportPaperService {
|
|
|
if (question.getQuestionType() == QuesStructType.SINGLE_ANSWER_QUESTION
|
|
|
|| question.getQuestionType() == QuesStructType.MULTIPLE_ANSWER_QUESTION) {
|
|
|
|
|
|
- checkSelectAnswer(question,pList.get(i).toString(),importPaperCheck,subQuesNum);
|
|
|
+ checkSelectAnswer(question,pList.get(i).toString(),importPaperCheck,errorQuesNum);
|
|
|
answerWordML.append(DocxProcessUtil.formatPWordMl(tmpWordMl));
|
|
|
answerHTML.append(getContent(tmpText, ImportPaperMsg.answer_word));
|
|
|
}else if(question.getQuestionType() == QuesStructType.BOOL_ANSWER_QUESTION){
|
|
|
|
|
|
String answerText = getContent(tmpText, ImportPaperMsg.answer_word);
|
|
|
- checkBoolAnswer(answerText,importPaperCheck,subQuesNum);
|
|
|
+ checkBoolAnswer(answerText,importPaperCheck,errorQuesNum);
|
|
|
answerWordML.append(DocxProcessUtil.formatPWordMl(tmpWordMl));
|
|
|
answerHTML.append(answerText);
|
|
|
}else{
|
|
@@ -911,9 +914,9 @@ public class ImportPaperService {
|
|
|
quesScore = getContent(tmpText, ImportPaperMsg.subQuesScore_word);
|
|
|
if(!CommonUtils.isInteger(quesScore)){
|
|
|
if(importPaperCheck.nestedHeadNumber == 0){
|
|
|
- importPaperCheck.setErrorInfo("[大题名称]:"+importPaperCheck.quesName+"第"+subQuesNum+"题中[小题分数]格式不对或没有值");
|
|
|
+ importPaperCheck.setErrorInfo("[大题名称]:"+importPaperCheck.quesName+"第"+errorQuesNum+"题中[小题分数]格式不对或没有值");
|
|
|
}else {
|
|
|
- importPaperCheck.setErrorInfo("[大题名称]:"+importPaperCheck.quesName+"第"+importPaperCheck.nestedHeadNumber+"个套题中,第"+subQuesNum+"题中[小题分数]格式不对或没有值");
|
|
|
+ importPaperCheck.setErrorInfo("[大题名称]:"+importPaperCheck.quesName+"第"+importPaperCheck.nestedHeadNumber+"个套题中,第"+errorQuesNum+"题中[小题分数]格式不对或没有值");
|
|
|
}
|
|
|
throw new PaperException(importPaperCheck.errorInfo);
|
|
|
}
|
|
@@ -939,14 +942,14 @@ public class ImportPaperService {
|
|
|
else if (tmpText.startsWith(ImportPaperMsg.difficulty)) {
|
|
|
|
|
|
String dif = getContent(tmpText, ImportPaperMsg.difficulty);
|
|
|
- difficulty = checkDiffculty(difficulty,dif,importPaperCheck,subQuesNum,question);
|
|
|
+ difficulty = checkDiffculty(difficulty,dif,importPaperCheck,errorQuesNum,question);
|
|
|
question.setDifficultyDegree(difficulty);
|
|
|
answerStart = false;
|
|
|
}
|
|
|
else if (tmpText.startsWith(ImportPaperMsg.publicity)) {
|
|
|
|
|
|
String pub = getContent(tmpText, ImportPaperMsg.publicity);
|
|
|
- publicity = checkPublicity(publicity,pub,importPaperCheck,subQuesNum);
|
|
|
+ publicity = checkPublicity(publicity,pub,importPaperCheck,errorQuesNum);
|
|
|
question.setPublicity(publicity);
|
|
|
answerStart = false;
|
|
|
}
|
|
@@ -966,9 +969,9 @@ public class ImportPaperService {
|
|
|
|
|
|
if(!hasAnswer){
|
|
|
if(paperDetailUnit.getQuestionType() == QuesStructType.NESTED_ANSWER_QUESTION){
|
|
|
- importPaperCheck.setErrorInfo(paperDetailUnit.getPaperDetail().getName()+"中,第"+paperDetailUnit.getNumber()+"个套题的" +subQuesNum+"小题中,缺失“[答案]”");
|
|
|
+ importPaperCheck.setErrorInfo(paperDetailUnit.getPaperDetail().getName()+"中,第"+paperDetailUnit.getNumber()+"个套题的" +errorQuesNum+"小题中,缺失“[答案]”");
|
|
|
}else {
|
|
|
- importPaperCheck.setErrorInfo(getQuesNumInfo(importPaperCheck.quesName, subQuesNum)+"中,缺失“[答案]”");
|
|
|
+ importPaperCheck.setErrorInfo(getQuesNumInfo(importPaperCheck.quesName, errorQuesNum)+"中,缺失“[答案]”");
|
|
|
}
|
|
|
throw new PaperException(importPaperCheck.errorInfo);
|
|
|
}
|
|
@@ -994,9 +997,9 @@ public class ImportPaperService {
|
|
|
paperDetailUnit.setScore(Double.parseDouble(quesScore));
|
|
|
}
|
|
|
|
|
|
- checkAttributeIsFull(firstProperty,secondProperty,difficulty,publicity,importPaperCheck,subQuesNum);
|
|
|
+ checkAttributeIsFull(firstProperty,secondProperty,difficulty,publicity,importPaperCheck,errorQuesNum);
|
|
|
|
|
|
- checkProperty(firstProperty,secondProperty,importPaperCheck,subQuesNum,paper,quesProperties);
|
|
|
+ checkProperty(firstProperty,secondProperty,importPaperCheck,errorQuesNum,paper,quesProperties);
|
|
|
question.setQuesProperties(quesProperties);
|
|
|
}
|
|
|
|
|
@@ -1218,7 +1221,7 @@ public class ImportPaperService {
|
|
|
|
|
|
processNestedQuestionHead(pList,index,0,question,importPaperCheck,paperDetailUnit);
|
|
|
|
|
|
- processQuesBody(pList, importPaperCheck.index, 0,question, importPaperCheck, wordMLPackage);
|
|
|
+ processQuesBody(pList, importPaperCheck.index, 0,question, importPaperCheck, wordMLPackage,0);
|
|
|
|
|
|
List<Question> subQuesList = new ArrayList<Question>();
|
|
|
Question subQues = null;
|
|
@@ -1260,20 +1263,20 @@ public class ImportPaperService {
|
|
|
|
|
|
if (nestedQuesType.equals(ImportPaperMsg.singleSelection) || nestedQuesType.equals(ImportPaperMsg.multipleSelection)) {
|
|
|
|
|
|
- processQuesBody(pList, importPaperCheck.index, subQuesNum,subQues, importPaperCheck, wordMLPackage);
|
|
|
+ processQuesBody(pList, importPaperCheck.index, subQuesNum,subQues, importPaperCheck, wordMLPackage,subQuesNum);
|
|
|
|
|
|
- processQuesOption(pList, importPaperCheck.index, subQuesNum, subQues, importPaperCheck,wordMLPackage);
|
|
|
+ processQuesOption(pList, importPaperCheck.index, subQuesNum, subQues, importPaperCheck,wordMLPackage,subQuesNum);
|
|
|
|
|
|
- processQuesTail(pList, importPaperCheck.index, subQuesNum, subQues, paperDetailUnit,importPaperCheck, wordMLPackage, true,paper);
|
|
|
+ processQuesTail(pList, importPaperCheck.index, subQuesNum, subQues, paperDetailUnit,importPaperCheck, wordMLPackage, true,paper,subQuesNum);
|
|
|
|
|
|
processSelectOption(subQues);
|
|
|
} else {
|
|
|
|
|
|
- processQuesBody(pList, importPaperCheck.index, subQuesNum, subQues, importPaperCheck, wordMLPackage);
|
|
|
- processQuesTail(pList, importPaperCheck.index, subQuesNum, subQues, paperDetailUnit,importPaperCheck, wordMLPackage, true,paper);
|
|
|
+ processQuesBody(pList, importPaperCheck.index, subQuesNum, subQues, importPaperCheck, wordMLPackage,subQuesNum);
|
|
|
+ processQuesTail(pList, importPaperCheck.index, subQuesNum, subQues, paperDetailUnit,importPaperCheck, wordMLPackage, true,paper,subQuesNum);
|
|
|
|
|
|
if(subQues.getQuestionType().getName() == QuesStructType.FILL_BLANK_QUESTION.getName()){
|
|
|
- processFill(question,paperDetailUnit,importPaperCheck,subQuesNum);
|
|
|
+ processFill(question,paperDetailUnit,importPaperCheck,subQuesNum,subQuesNum);
|
|
|
}
|
|
|
}
|
|
|
subQuesList.add(subQues);
|
|
@@ -1925,7 +1928,7 @@ public class ImportPaperService {
|
|
|
* 判断填空题题干和答案空格数量是否一致
|
|
|
* @throws PaperException
|
|
|
*/
|
|
|
- public void processFill(Question question, PaperDetailUnit paperDetailUnit, ImportPaperCheck importPaperCheck,int subQuesNum) throws PaperException{
|
|
|
+ public void processFill(Question question, PaperDetailUnit paperDetailUnit, ImportPaperCheck importPaperCheck,int subQuesNum,int errorQuesNum) throws PaperException{
|
|
|
|
|
|
String[] quesBody = question.getQuesBody().split("###");
|
|
|
String[] quesAnwser = question.getQuesAnswer().split("##");
|
|
@@ -1936,9 +1939,9 @@ public class ImportPaperService {
|
|
|
|
|
|
if((quesBody.length -1) != quesAnwser.length){
|
|
|
if(importPaperCheck.nestedHeadNumber == 0){
|
|
|
- importPaperCheck.setErrorInfo("[大题名称]:"+importPaperCheck.quesName+"第"+subQuesNum+"题中,题干与答案的空格数量不一样");
|
|
|
+ importPaperCheck.setErrorInfo("[大题名称]:"+importPaperCheck.quesName+"第"+errorQuesNum+"题中,题干与答案的空格数量不一样");
|
|
|
}else {
|
|
|
- importPaperCheck.setErrorInfo("[大题名称]:"+importPaperCheck.quesName+"第"+importPaperCheck.nestedHeadNumber+"个套题中,第"+subQuesNum+"题中,题干与答案的空格数量不一样");
|
|
|
+ importPaperCheck.setErrorInfo("[大题名称]:"+importPaperCheck.quesName+"第"+importPaperCheck.nestedHeadNumber+"个套题中,第"+errorQuesNum+"题中,题干与答案的空格数量不一样");
|
|
|
}
|
|
|
throw new PaperException(importPaperCheck.errorInfo);
|
|
|
}
|