|
@@ -267,7 +267,7 @@ public class YunkaiService {
|
|
|
questionNum++;
|
|
|
Question question = initQuestion(que, p);
|
|
|
questions.add(question);
|
|
|
- PaperDetailUnit paperDetailUnit = initPaperDetailUnit(paper, paperDetail, question, questionNum,
|
|
|
+ PaperDetailUnit paperDetailUnit = initPaperDetailUnit(que,paper, paperDetail, question, questionNum,
|
|
|
p.getUser());
|
|
|
paperDetailUnits.add(paperDetailUnit);
|
|
|
}
|
|
@@ -320,10 +320,6 @@ public class YunkaiService {
|
|
|
}
|
|
|
|
|
|
private Paper initPaper(KdPaper kpaper, YunkaiImportPaperParam p) {
|
|
|
- int unitCount = 0;
|
|
|
- for (KdDetail de : kpaper.getDetails()) {
|
|
|
- unitCount = unitCount + de.getQuestions().size();
|
|
|
- }
|
|
|
Paper paper = new Paper();
|
|
|
paper.setName(kpaper.getName());
|
|
|
paper.setTitle(kpaper.getName());
|
|
@@ -331,15 +327,15 @@ public class YunkaiService {
|
|
|
paper.setPaperStatus(PaperStatus.DRAFT);
|
|
|
paper.setOrgId(p.getRootOrgId().toString());
|
|
|
paper.setCreator(p.getUser().getDisplayName());
|
|
|
- paper.setTotalScore(unitCount + 0.0);
|
|
|
+ paper.setTotalScore(kpaper.getTotalScore());
|
|
|
paper.setCourse(p.getCourse());
|
|
|
paper.setCourseName(p.getCourse().getName());
|
|
|
paper.setCourseNo(p.getCourse().getCode());
|
|
|
paper.setCreateTime(getCurDateTime());
|
|
|
- paper.setPaperDetailCount(kpaper.getDetails().size());
|
|
|
+ paper.setPaperDetailCount(kpaper.getDetailCount());
|
|
|
paper.setCreationBy(p.getUser().getUserId());
|
|
|
paper.setCreationDate(new Date());
|
|
|
- paper.setUnitCount(unitCount);
|
|
|
+ paper.setUnitCount(kpaper.getUnitCount());
|
|
|
return paper;
|
|
|
}
|
|
|
|
|
@@ -348,26 +344,27 @@ public class YunkaiService {
|
|
|
}
|
|
|
|
|
|
private PaperDetail initPaperDetail(KdDetail de, Paper paper) {
|
|
|
- PaperDetail paperDetail = new PaperDetail();
|
|
|
- if (de.getQuestions() != null && de.getQuestions().size() > 0) {
|
|
|
- paperDetail.setPaper(paper);
|
|
|
- paperDetail.setNumber(de.getNumber());
|
|
|
- paperDetail.setName(de.getName());
|
|
|
- paperDetail.setScore(de.getQuestions().size() + 0.0);
|
|
|
- paperDetail.setUnitCount(de.getQuestions().size());
|
|
|
- paperDetail.setCreator(paper.getCreator());
|
|
|
- paperDetail.setCreateTime(getCurDateTime());
|
|
|
- paperDetail.setCreationBy(paper.getCreationBy());
|
|
|
- paperDetail.setCreationDate(new Date());
|
|
|
+ if (CollectionUtils.isEmpty(de.getQuestions())) {
|
|
|
+ throw new StatusException("没有小题信息,detail="+de.getName());
|
|
|
}
|
|
|
+ PaperDetail paperDetail = new PaperDetail();
|
|
|
+ paperDetail.setPaper(paper);
|
|
|
+ paperDetail.setNumber(de.getNumber());
|
|
|
+ paperDetail.setName(de.getName());
|
|
|
+ paperDetail.setScore(de.getTotalScore());
|
|
|
+ paperDetail.setUnitCount(de.getQuestionCount());
|
|
|
+ paperDetail.setCreator(paper.getCreator());
|
|
|
+ paperDetail.setCreateTime(getCurDateTime());
|
|
|
+ paperDetail.setCreationBy(paper.getCreationBy());
|
|
|
+ paperDetail.setCreationDate(new Date());
|
|
|
return paperDetail;
|
|
|
}
|
|
|
|
|
|
private Question initQuestion(KdQuestion que, YunkaiImportPaperParam p) {
|
|
|
Question question = new Question();
|
|
|
- question.setFromId(que.getId().toString());
|
|
|
+ question.setFromId(que.getId());
|
|
|
question.setCreateTime(getCurDateTime());
|
|
|
- question.setScore(1.0);
|
|
|
+ question.setScore(que.getScore());
|
|
|
question.setCourse(p.getCourse());
|
|
|
question.setOrgId(p.getRootOrgId().toString());
|
|
|
question.setHasAudio(false);
|
|
@@ -385,8 +382,38 @@ public class YunkaiService {
|
|
|
// 按试题分类初始化题干,答案,选项
|
|
|
initQuestionInfo(question, que);
|
|
|
initQuestionProp(question, que, p);
|
|
|
+ initSubQuestion(question, que, p);
|
|
|
return question;
|
|
|
}
|
|
|
+
|
|
|
+ private void initSubQuestion(Question mainQuestion,KdQuestion que, YunkaiImportPaperParam p) {
|
|
|
+ if(CollectionUtils.isNotEmpty(que.getSubQuestions())) {
|
|
|
+ List<Question> sub=new ArrayList<>();
|
|
|
+ mainQuestion.setSubQuestions(sub);
|
|
|
+ int number=0;
|
|
|
+ for(KdQuestion subque:que.getSubQuestions()) {
|
|
|
+ number++;
|
|
|
+ Question subQuestion = new Question();
|
|
|
+ sub.add(subQuestion);
|
|
|
+ subQuestion.setNumber(number);
|
|
|
+ subQuestion.setScore(subque.getScore());
|
|
|
+ subQuestion.setCourse(p.getCourse());
|
|
|
+ subQuestion.setOrgId(p.getRootOrgId().toString());
|
|
|
+ subQuestion.setHasAudio(que.getHaveAudio());
|
|
|
+ if (que.getDifficulty() == null) {
|
|
|
+ subQuestion.setDifficulty("易");
|
|
|
+ subQuestion.setDifficultyDegree(0.5);
|
|
|
+ } else {
|
|
|
+ subQuestion.setDifficulty(que.getDifficulty().getDesc());
|
|
|
+ subQuestion.setDifficultyDegree(que.getDifficulty().getType());
|
|
|
+ }
|
|
|
+ subQuestion.setPublicity(true);
|
|
|
+ // 按试题分类初始化题干,答案,选项
|
|
|
+ initQuestionInfo(subQuestion, subque);
|
|
|
+ initQuestionProp(subQuestion, subque, p);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
private void initQuestionProp(Question question, KdQuestion que, YunkaiImportPaperParam p) {
|
|
|
if (CollectionUtils.isEmpty(que.getPropIds())) {
|
|
@@ -411,7 +438,7 @@ public class YunkaiService {
|
|
|
|
|
|
private void initQuestionInfo(Question question, KdQuestion que) {
|
|
|
// 单选题
|
|
|
- if (YunkaiQuesStructType.DANXUAN.equals(que.getQst())) {
|
|
|
+ if (QuesStructType.SINGLE_ANSWER_QUESTION.equals(que.getQuesStructType())) {
|
|
|
String quesBody = que.getBody();
|
|
|
question.setQuesBody(quesBody);
|
|
|
question.setQuestionType(QuesStructType.SINGLE_ANSWER_QUESTION);
|
|
@@ -438,8 +465,7 @@ public class YunkaiService {
|
|
|
char c1 = (char) (answerNumber + 64);
|
|
|
question.setQuesAnswer(String.valueOf(c1));
|
|
|
}
|
|
|
- } else if (YunkaiQuesStructType.DUOXUAN.equals(que.getQst())
|
|
|
- || YunkaiQuesStructType.BUDINGXIANG.equals(que.getQst())) {
|
|
|
+ } else if (QuesStructType.MULTIPLE_ANSWER_QUESTION.equals(que.getQuesStructType())) {
|
|
|
String quesBody = que.getBody();
|
|
|
question.setQuesBody(quesBody);
|
|
|
question.setQuestionType(QuesStructType.MULTIPLE_ANSWER_QUESTION);
|
|
@@ -474,24 +500,32 @@ public class YunkaiService {
|
|
|
}
|
|
|
question.setQuesAnswer(answers);
|
|
|
}
|
|
|
- } else if (YunkaiQuesStructType.PANDUAN.equals(que.getQst())) {
|
|
|
+ } else if (QuesStructType.BOOL_ANSWER_QUESTION.equals(que.getQuesStructType())) {
|
|
|
String quesBody = que.getBody();
|
|
|
question.setQuesBody(quesBody);
|
|
|
question.setQuestionType(QuesStructType.BOOL_ANSWER_QUESTION);
|
|
|
String answer = que.getAnswer();
|
|
|
question.setQuesAnswer(answer);
|
|
|
- } else if (YunkaiQuesStructType.TIANKONGTI.equals(que.getQst())) {
|
|
|
+ } else if (QuesStructType.FILL_BLANK_QUESTION.equals(que.getQuesStructType())) {
|
|
|
String quesBody = que.getBody();
|
|
|
question.setQuesBody(quesBody);
|
|
|
question.setQuestionType(QuesStructType.FILL_BLANK_QUESTION);
|
|
|
String answer = que.getAnswer();
|
|
|
question.setQuesAnswer(answer);
|
|
|
- } else {// 全是问答题
|
|
|
+ } else if(QuesStructType.TEXT_ANSWER_QUESTION.equals(que.getQuesStructType())) {
|
|
|
String quesBody = que.getBody();
|
|
|
question.setQuesBody(quesBody);
|
|
|
question.setQuestionType(QuesStructType.TEXT_ANSWER_QUESTION);
|
|
|
String answer = que.getAnswer();
|
|
|
question.setQuesAnswer(answer);
|
|
|
+ } else if(QuesStructType.NESTED_ANSWER_QUESTION.equals(que.getQuesStructType())) {
|
|
|
+ String quesBody = que.getBody();
|
|
|
+ question.setQuesBody(quesBody);
|
|
|
+ question.setQuestionType(QuesStructType.NESTED_ANSWER_QUESTION);
|
|
|
+ String answer = que.getAnswer();
|
|
|
+ question.setQuesAnswer(answer);
|
|
|
+ }else {
|
|
|
+ throw new StatusException("题型错误");
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -504,12 +538,13 @@ public class YunkaiService {
|
|
|
return quesOption;
|
|
|
}
|
|
|
|
|
|
- private PaperDetailUnit initPaperDetailUnit(Paper paper, PaperDetail paperDetail, Question question,
|
|
|
+ private PaperDetailUnit initPaperDetailUnit(KdQuestion que,Paper paper, PaperDetail paperDetail, Question question,
|
|
|
int questionNum, User user) {
|
|
|
PaperDetailUnit paperDetailUnit = new PaperDetailUnit();
|
|
|
+ paperDetailUnit.setSubScoreList(que.getSubScores());
|
|
|
paperDetailUnit.setPaper(paper);
|
|
|
paperDetailUnit.setNumber(questionNum);
|
|
|
- paperDetailUnit.setScore(1.0);
|
|
|
+ paperDetailUnit.setScore(que.getScore());
|
|
|
paperDetailUnit.setPaperDetail(paperDetail);
|
|
|
paperDetailUnit.setQuestionType(question.getQuestionType());
|
|
|
paperDetailUnit.setCreator(user.getDisplayName());
|