|
@@ -74,6 +74,12 @@ public class ExtractConfigServiceImpl implements ExtractConfigService {
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public void saveExtractConfig(ExtractConfig extractConfig) {
|
|
public void saveExtractConfig(ExtractConfig extractConfig) {
|
|
|
|
+ if(extractConfig.getScrambling_the_question_order()==null){
|
|
|
|
+ extractConfig.setScrambling_the_question_order((short) 0);
|
|
|
|
+ }
|
|
|
|
+ if(extractConfig.getScrambling_the_option_order()==null){
|
|
|
|
+ extractConfig.setScrambling_the_option_order((short) 0);
|
|
|
|
+ }
|
|
List<ExamPaper> examPapers = extractConfig.getExamPaperList();
|
|
List<ExamPaper> examPapers = extractConfig.getExamPaperList();
|
|
for(int i=0;i<examPapers.size();i++){
|
|
for(int i=0;i<examPapers.size();i++){
|
|
ExamPaper examPaper = examPapers.get(i);
|
|
ExamPaper examPaper = examPapers.get(i);
|
|
@@ -91,30 +97,30 @@ public class ExtractConfigServiceImpl implements ExtractConfigService {
|
|
}
|
|
}
|
|
return extractConfigRepo.findOne(id);
|
|
return extractConfigRepo.findOne(id);
|
|
}
|
|
}
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
public void makePaperByConfig(String extractConfigId) {
|
|
public void makePaperByConfig(String extractConfigId) {
|
|
Map<String, String> finishedPaperIdMap = new HashMap<String, String>();
|
|
Map<String, String> finishedPaperIdMap = new HashMap<String, String>();
|
|
//取出调卷规则
|
|
//取出调卷规则
|
|
- ExtractConfig extractConfig = this.findConfig(new ExtractConfig(extractConfigId));
|
|
|
|
|
|
+ ExtractConfig extractConfig = this.findConfigById(extractConfigId);
|
|
//获得抽取好的试卷
|
|
//获得抽取好的试卷
|
|
Map<String,Paper> paperMap = this.getExamPaperByProbability(extractConfig.getExamPaperList());
|
|
Map<String,Paper> paperMap = this.getExamPaperByProbability(extractConfig.getExamPaperList());
|
|
if(paperMap==null){
|
|
if(paperMap==null){
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
- Iterator<String> paperMapIterator = paperMap.keySet().iterator();
|
|
|
|
- while(paperMapIterator.hasNext()){
|
|
|
|
- String key = paperMapIterator.next();
|
|
|
|
|
|
+ for (Map.Entry<String, Paper> entry : paperMap.entrySet()) {
|
|
|
|
+ String key = entry.getKey();
|
|
//根据原有试卷重新组卷得到新试卷
|
|
//根据原有试卷重新组卷得到新试卷
|
|
- Paper newPaper = this.recombinationPaper(paperMap.get(paperMapIterator.next()),
|
|
|
|
- extractConfig.getScrambling_the_question_order(),
|
|
|
|
- extractConfig.getScrambling_the_option_order());
|
|
|
|
|
|
+ Paper newPaper = this.recombinationPaper(entry.getValue(),
|
|
|
|
+ extractConfig.getScrambling_the_question_order(),
|
|
|
|
+ extractConfig.getScrambling_the_option_order());
|
|
finishedPaperIdMap.put(key, newPaper.getId());
|
|
finishedPaperIdMap.put(key, newPaper.getId());
|
|
}
|
|
}
|
|
/**
|
|
/**
|
|
* 设置map,并保存调卷规则
|
|
* 设置map,并保存调卷规则
|
|
* 如果已经设置过了,就不再设置
|
|
* 如果已经设置过了,就不再设置
|
|
*/
|
|
*/
|
|
- if(extractConfig.getIfFinish()==0){
|
|
|
|
|
|
+ if(extractConfig.getIfFinish()==null){
|
|
extractConfig.setFinishedPaperIdMap(finishedPaperIdMap);
|
|
extractConfig.setFinishedPaperIdMap(finishedPaperIdMap);
|
|
extractConfig.setIfFinish((short)1);
|
|
extractConfig.setIfFinish((short)1);
|
|
extractConfigRepo.save(extractConfig);
|
|
extractConfigRepo.save(extractConfig);
|
|
@@ -140,14 +146,14 @@ public class ExtractConfigServiceImpl implements ExtractConfigService {
|
|
PaperDetail newPaperDetail = paperDetailRepo.save(paperDetail);//保存新的paperDetail
|
|
PaperDetail newPaperDetail = paperDetailRepo.save(paperDetail);//保存新的paperDetail
|
|
//小题乱序
|
|
//小题乱序
|
|
if(upSetQuestionOrder==1){
|
|
if(upSetQuestionOrder==1){
|
|
- Collections.shuffle(paperDetailUnits);
|
|
|
|
|
|
+ Collections.shuffle(paperDetailUnits);//打乱小题List
|
|
}
|
|
}
|
|
- for(int j = 0;i<paperDetailUnits.size();j++){
|
|
|
|
- //重新设置保存PaperDetailUnitquestion,
|
|
|
|
|
|
+ for(int j = 0;j<paperDetailUnits.size();j++){
|
|
|
|
+ //重新设置保存PaperDetailUnit、question,
|
|
PaperDetailUnit paperDetailUnit = paperDetailUnits.get(j);
|
|
PaperDetailUnit paperDetailUnit = paperDetailUnits.get(j);
|
|
- paperDetailUnit.setPaper(newPaper);//关联新Paper
|
|
|
|
- paperDetailUnit.setPaperDetail(newPaperDetail);//关联新paperDetail
|
|
|
|
- paperDetailUnit.setNumber(j+1);//重新设置序号
|
|
|
|
|
|
+ paperDetailUnit.setPaper(newPaper); //关联新Paper
|
|
|
|
+ paperDetailUnit.setPaperDetail(newPaperDetail); //关联新paperDetail
|
|
|
|
+ paperDetailUnit.setNumber(j+1); //重新设置序号
|
|
reSavePaperDetailUtilAndQuestion(paperDetailUnit,upSetOptionOrder);
|
|
reSavePaperDetailUtilAndQuestion(paperDetailUnit,upSetOptionOrder);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -195,6 +201,7 @@ public class ExtractConfigServiceImpl implements ExtractConfigService {
|
|
}
|
|
}
|
|
return paperByTypeMap;
|
|
return paperByTypeMap;
|
|
}
|
|
}
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 根据设定几率取出一套试卷
|
|
* 根据设定几率取出一套试卷
|
|
* @param examPaperList
|
|
* @param examPaperList
|
|
@@ -217,23 +224,24 @@ public class ExtractConfigServiceImpl implements ExtractConfigService {
|
|
return null;
|
|
return null;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 重新设置并保存paperDetailUnit和question
|
|
|
|
+ * @param paperDetailUnit
|
|
|
|
+ * @param upSetOptionOrder
|
|
|
|
+ */
|
|
private void reSavePaperDetailUtilAndQuestion(PaperDetailUnit paperDetailUnit,Integer upSetOptionOrder){
|
|
private void reSavePaperDetailUtilAndQuestion(PaperDetailUnit paperDetailUnit,Integer upSetOptionOrder){
|
|
- //重新设置保存Question
|
|
|
|
Question question = paperDetailUnit.getQuestion();
|
|
Question question = paperDetailUnit.getQuestion();
|
|
- QuesStructType quesStructType = question.getQuestionType();
|
|
|
|
//选项乱序
|
|
//选项乱序
|
|
if(upSetOptionOrder==1){
|
|
if(upSetOptionOrder==1){
|
|
//单选或多选
|
|
//单选或多选
|
|
- if(quesStructType==QuesStructType.SINGLE_ANSWER_QUESTION||
|
|
|
|
- quesStructType==QuesStructType.MULTIPLE_ANSWER_QUESTION){
|
|
|
|
|
|
+ if(question.getQuestionType()==QuesStructType.SINGLE_ANSWER_QUESTION||
|
|
|
|
+ question.getQuestionType()==QuesStructType.MULTIPLE_ANSWER_QUESTION){
|
|
List<QuesOption> options = question.getQuesOptions();
|
|
List<QuesOption> options = question.getQuesOptions();
|
|
-
|
|
|
|
- Collections.shuffle(options);
|
|
|
|
-
|
|
|
|
|
|
+ Collections.shuffle(options);//打乱选项List
|
|
for(int k = 0;k<options.size();k++){
|
|
for(int k = 0;k<options.size();k++){
|
|
QuesOption quesOption = options.get(k);
|
|
QuesOption quesOption = options.get(k);
|
|
- Character num = (char) (0+64+1);
|
|
|
|
- quesOption.setNumber(String.valueOf(num));
|
|
|
|
|
|
+ Character num = (char) (k+64+1);
|
|
|
|
+ quesOption.setNumber(String.valueOf(num));//重新设置顺序
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|