|
@@ -2,7 +2,6 @@ package com.qmth.cqb.paper.service.export;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
import java.util.ArrayList;
|
|
|
-import java.util.Collections;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.HashSet;
|
|
|
import java.util.List;
|
|
@@ -81,7 +80,7 @@ public abstract class ExportPaperAbstractService {
|
|
|
protected static Template DZKD_TEMPLATE_PAPER;
|
|
|
protected static Template DZKD_TEMPLATE_ANSWER;
|
|
|
//石油大学模板
|
|
|
- protected static Template SYDX_TEMPLATE_NORMAL;
|
|
|
+ //protected static Template SYDX_TEMPLATE_NORMAL;
|
|
|
|
|
|
static {
|
|
|
try {
|
|
@@ -97,7 +96,7 @@ public abstract class ExportPaperAbstractService {
|
|
|
DZKD_TEMPLATE_PAPER = CONFIGURATION.getTemplate("dzkd_paper_template.ftl", ENCODING);
|
|
|
DZKD_TEMPLATE_ANSWER = CONFIGURATION.getTemplate("dzkd_answer_template.ftl", ENCODING);
|
|
|
|
|
|
- SYDX_TEMPLATE_NORMAL = CONFIGURATION.getTemplate("paper_template.ftl", ENCODING);
|
|
|
+ //SYDX_TEMPLATE_NORMAL = CONFIGURATION.getTemplate("paper_template.ftl", ENCODING);
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
@@ -179,6 +178,7 @@ public abstract class ExportPaperAbstractService {
|
|
|
paperExp.setSubjectiveScore(subjectiveScore);
|
|
|
if (objectiveDetails.size() > 0) {
|
|
|
setUnitExpNumber(objectiveDetails, 0);
|
|
|
+ setScore(objectiveDetails);
|
|
|
}
|
|
|
if (subjectiveDetails.size() > 0) {
|
|
|
for (PaperDetailExp subDetail : subjectiveDetails) {
|
|
@@ -187,6 +187,7 @@ public abstract class ExportPaperAbstractService {
|
|
|
objectNumber++;
|
|
|
}
|
|
|
setUnitExpNumber(subjectiveDetails, objetcUnitSum);
|
|
|
+ setScore(subjectiveDetails);
|
|
|
}
|
|
|
returnMap.put("paper", paperExp);
|
|
|
returnMap.put("fileName", paperExp.getName());
|
|
@@ -343,64 +344,6 @@ public abstract class ExportPaperAbstractService {
|
|
|
return pWordMl.toString();
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 初始化序号
|
|
|
- * @param paperExp
|
|
|
- */
|
|
|
- public void initPaperNum(PaperExp paperExp)throws Exception{
|
|
|
- if(paperExp.getPaperDetails() == null || paperExp.getPaperDetails().size() == 0){
|
|
|
- return;
|
|
|
- }
|
|
|
- int mainNum = 0;
|
|
|
- int subNum = 0;
|
|
|
- Collections.sort(paperExp.getPaperDetails());
|
|
|
- for(PaperDetailExp paperDetail: paperExp.getPaperDetails()){
|
|
|
- //大题序号
|
|
|
- paperDetail.setNumber(++mainNum);
|
|
|
- paperDetail.setCnNum(CommonUtils.toCHNum(paperDetail.getNumber()));
|
|
|
- if(paperDetail.getPaperDetailUnits() == null ||
|
|
|
- paperDetail.getPaperDetailUnits().size() == 0){
|
|
|
- continue;
|
|
|
- }
|
|
|
- //小题序号
|
|
|
- for(PaperDetailUnitExp paperDetailUnit:paperDetail.getPaperDetailUnits()){
|
|
|
- List<QuesOption> optionList = paperDetailUnit.getQuestion().getQuesOptions();
|
|
|
- if(optionList != null && optionList.size() > 0){
|
|
|
- int index = 0;
|
|
|
- for(QuesOption quesOption:optionList){
|
|
|
- quesOption.setOptionBodyWord(setOptionNum(quesOption.getOptionBodyWord(),getOptionNum(index)));
|
|
|
- index++;
|
|
|
- }
|
|
|
- }
|
|
|
- List<Question> subQuesList = paperDetailUnit.getQuestion().getSubQuestions();
|
|
|
- Question question = paperDetailUnit.getQuestion();
|
|
|
- //套题序号
|
|
|
- if(subQuesList != null && subQuesList.size() > 0){
|
|
|
-
|
|
|
- question.setQuesBodyWord(replaceQuesBlank(question.getQuesBodyWord(),subNum + 1));
|
|
|
-
|
|
|
- for(Question subQues:subQuesList){
|
|
|
- int curSubNum = ++subNum;
|
|
|
- subQues.setQuesBodyWord(setSubQuesNum(subQues.getQuesBodyWord(),curSubNum));
|
|
|
- subQues.setQuesBodyWord(replaceQuesBlank(subQues.getQuesBodyWord(),curSubNum));
|
|
|
- List<QuesOption> subOptionList = subQues.getQuesOptions();
|
|
|
- if(subOptionList != null && subOptionList.size() > 0){
|
|
|
- int sub_index = 0;
|
|
|
- for(QuesOption quesOption:subOptionList){
|
|
|
- quesOption.setOptionBodyWord(setOptionNum(quesOption.getOptionBodyWord(),getOptionNum(sub_index)));
|
|
|
- sub_index++;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }else{
|
|
|
- int curSubNum = ++subNum;
|
|
|
- question.setQuesBodyWord(setSubQuesNum(question.getQuesBodyWord(),curSubNum));
|
|
|
- question.setQuesBodyWord(replaceQuesBlank(question.getQuesBodyWord(),curSubNum));
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
public String getOptionNum(int number){
|
|
|
char optionNum = (char)(65 + number);
|
|
|
return String.valueOf(optionNum);
|
|
@@ -428,8 +371,7 @@ public abstract class ExportPaperAbstractService {
|
|
|
*/
|
|
|
public String setSubQuesNum(String quesBodyWordMl,int num) throws Exception {
|
|
|
String tmpStr = DocxProcessUtil.BODY_HEADER + quesBodyWordMl + DocxProcessUtil.BODY_TAIL;
|
|
|
- Body body = (Body)XmlUtils.unmarshalString(tmpStr,
|
|
|
- Context.jc,Body.class);
|
|
|
+ Body body = (Body)XmlUtils.unmarshalString(tmpStr,Context.jc,Body.class);
|
|
|
List<Object> pList = body.getContent();
|
|
|
int index = 0;
|
|
|
for(Object pObj:pList){
|
|
@@ -463,8 +405,7 @@ public abstract class ExportPaperAbstractService {
|
|
|
*/
|
|
|
public String setOptionNum(String optionWordMl,String num) throws Exception {
|
|
|
String tmpStr = DocxProcessUtil.BODY_HEADER + optionWordMl + DocxProcessUtil.BODY_TAIL;
|
|
|
- Body body = (Body)XmlUtils.unmarshalString(tmpStr,
|
|
|
- Context.jc,Body.class);
|
|
|
+ Body body = (Body)XmlUtils.unmarshalString(tmpStr,Context.jc,Body.class);
|
|
|
List<Object> pList = body.getContent();
|
|
|
int index = 0;
|
|
|
for(Object pObj:pList){
|
|
@@ -489,13 +430,52 @@ public abstract class ExportPaperAbstractService {
|
|
|
return pWordMl.toString();
|
|
|
}
|
|
|
|
|
|
- protected void appendScore(List<PaperDetailExp> paperDetails){
|
|
|
- for(PaperDetailExp paperDetailExp:paperDetails){
|
|
|
- for (PaperDetailUnitExp paperDetailUnit : paperDetailExp.getPaperDetailUnits()) {
|
|
|
- String scoreString = "("+paperDetailUnit.getScore()+"分)";
|
|
|
- String questionBodyWord = paperDetailUnit.getQuestion().getQuesBodyWord();
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+ /**
|
|
|
+ * 当大题下小题分数不是全部一样时,在小题题干后面加上小题的分数
|
|
|
+ * @param details
|
|
|
+ * @throws Exception
|
|
|
+ */
|
|
|
+ protected void setScore(List<PaperDetailExp> details) throws Exception{
|
|
|
+ for(PaperDetailExp paperDetailExp:details){
|
|
|
+ if(!checkPaperDetailUnitScore(paperDetailExp)){
|
|
|
+ for(PaperDetailUnitExp paperDetailUnit:paperDetailExp.getPaperDetailUnits()){
|
|
|
+ Question question = paperDetailUnit.getQuestion();
|
|
|
+ String questionBodyWord = appendScoreToQuestionBody(question.getQuesBodyWord(),paperDetailUnit.getScore());
|
|
|
+ question.setQuesBodyWord(questionBodyWord);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 在题干上设置分数
|
|
|
+ * @throws Exception
|
|
|
+ */
|
|
|
+ protected String appendScoreToQuestionBody(String quesBodyWordMl,double score) throws Exception{
|
|
|
+ String tmpStr = DocxProcessUtil.BODY_HEADER + quesBodyWordMl + DocxProcessUtil.BODY_TAIL;
|
|
|
+ Body body = (Body)XmlUtils.unmarshalString(tmpStr,Context.jc,Body.class);
|
|
|
+ List<Object> pList = body.getContent();
|
|
|
+ int index = 0;
|
|
|
+ for(Object pObj:pList){
|
|
|
+ if(index < pList.size()-1){
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ P p = (P) pObj;
|
|
|
+ List<Object> pContent = p.getContent();
|
|
|
+ R run = new R();
|
|
|
+ Text text = new Text();
|
|
|
+ int scoreInt = (int)score;
|
|
|
+ text.setValue("("+scoreInt+"分)");
|
|
|
+ run.getContent().add(text);
|
|
|
+ pContent.add(run);
|
|
|
+ index++;
|
|
|
+ }
|
|
|
+ StringBuffer pWordMl = new StringBuffer();
|
|
|
+ for(Object pObj:pList){
|
|
|
+ if(pObj instanceof P){
|
|
|
+ pWordMl.append(DocxProcessUtil.formatPWordMl(XmlUtils.marshaltoString(pObj)));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return pWordMl.toString();
|
|
|
+ }
|
|
|
}
|