|
@@ -81,8 +81,8 @@ public class AsyncTask {
|
|
|
if (status == null) {
|
|
|
status = new JSONObject();
|
|
|
}
|
|
|
- int progress = 0;
|
|
|
- status.put("progress", 10);
|
|
|
+ int progress = 10;
|
|
|
+ status.put("progress", progress);
|
|
|
settingService.edit(setting);
|
|
|
// 按所有4级结构
|
|
|
List<ExerciseStruct> p = exerciseStructService.all();
|
|
@@ -93,20 +93,21 @@ public class AsyncTask {
|
|
|
progress += 70 / p.size();
|
|
|
status.put("progress", progress);
|
|
|
settingService.edit(setting);
|
|
|
- String prefixTitle = String.format("%s%s", struct.getTitleEn(), struct.getTitleZh());
|
|
|
+ String prefixTitle = String.format("%s", struct.getTitleZh());
|
|
|
QuestionType questionType = QuestionType.ValueOf(struct.getExtend());
|
|
|
List<QuestionNoRelation> list = questionNoService.listWithRelationByStruct(StructModule.EXERCISE, struct.getId());
|
|
|
|
|
|
// 按顺序组卷
|
|
|
- List<ExercisePaper> noPapers = exerciseService.createPaper(prefixTitle, questionType, struct.getParentId(), struct.getId(), exerciseService.paperLength, ExerciseLogic.NO, null, list);
|
|
|
- Collection noIds = Transform.getIds(noPapers, SentencePaper.class, "id");
|
|
|
+ logger.debug("{}", exerciseService.getPaperLength());
|
|
|
+ List<ExercisePaper> noPapers = exerciseService.createPaper(prefixTitle, questionType, struct.getParentId(), struct.getId(), exerciseService.getPaperLength(), ExerciseLogic.NO, null, list);
|
|
|
+ Collection noIds = Transform.getIds(noPapers, ExercisePaper.class, "id");
|
|
|
exerciseService.switchPaper(struct.getParentId(), struct.getId(), ExerciseLogic.NO, noIds);
|
|
|
|
|
|
// 按难度组卷
|
|
|
List<Integer> allDifficultIds = new ArrayList<>();
|
|
|
for(QuestionDifficult difficult : QuestionDifficult.all()){
|
|
|
List<QuestionNoRelation> difficultList = list.stream().filter((question)-> question.getQuestion().getDifficult().equals(difficult.key)).collect(Collectors.toList());
|
|
|
- List<ExercisePaper> difficultPapers = exerciseService.createPaper(String.format("%s %s", prefixTitle, difficult.key), questionType, struct.getParentId(), struct.getId(), exerciseService.paperLength, ExerciseLogic.DIFFICULT, difficult.key, difficultList);
|
|
|
+ List<ExercisePaper> difficultPapers = exerciseService.createPaper(String.format("%s %s", prefixTitle, difficult.key), questionType, struct.getParentId(), struct.getId(), exerciseService.getPaperLength(), ExerciseLogic.DIFFICULT, difficult.key, difficultList);
|
|
|
Collection difficultIds = Transform.getIds(difficultPapers, ExercisePaper.class, "id");
|
|
|
allDifficultIds.addAll(difficultIds);
|
|
|
}
|
|
@@ -125,7 +126,7 @@ public class AsyncTask {
|
|
|
List<Integer> allPlaceIds = new ArrayList<>();
|
|
|
for(String place: placeMap.keySet()){
|
|
|
List<QuestionNoRelation> placeList = placeMap.get(place);
|
|
|
- List<ExercisePaper> difficultPapers = exerciseService.createPaper(String.format("%s %s", prefixTitle, place), questionType, struct.getParentId(), struct.getId(), exerciseService.paperLength, ExerciseLogic.PLACE, place, placeList);
|
|
|
+ List<ExercisePaper> difficultPapers = exerciseService.createPaper(String.format("%s %s", prefixTitle, place), questionType, struct.getParentId(), struct.getId(), exerciseService.getPaperLength(), ExerciseLogic.PLACE, place, placeList);
|
|
|
Collection placeIds = Transform.getIds(difficultPapers, ExercisePaper.class, "id");
|
|
|
allPlaceIds.addAll(placeIds);
|
|
|
}
|
|
@@ -134,12 +135,12 @@ public class AsyncTask {
|
|
|
// 按难易度组卷:保持和下方难易度组卷一致
|
|
|
list.sort((x, y)-> {
|
|
|
// 难度从高到低
|
|
|
- Integer xScore = x.getTotalCorrect() * 100/ x.getTotalNumber();
|
|
|
- Integer yScore = y.getTotalCorrect() * 100/ y.getTotalNumber();
|
|
|
+ Integer xScore = x.getTotalNumber() > 0 ? x.getTotalCorrect() * 100/ x.getTotalNumber() : 0;
|
|
|
+ Integer yScore = y.getTotalNumber() > 0 ? y.getTotalCorrect() * 100/ y.getTotalNumber(): 0;
|
|
|
return yScore.compareTo(xScore);
|
|
|
});
|
|
|
- List<ExercisePaper> errorPapers = exerciseService.createPaper(prefixTitle, questionType, struct.getParentId(), struct.getId(), exerciseService.paperLength, ExerciseLogic.ERROR, null, list);
|
|
|
- Collection errorIds = Transform.getIds(errorPapers, SentencePaper.class, "id");
|
|
|
+ List<ExercisePaper> errorPapers = exerciseService.createPaper(prefixTitle, questionType, struct.getParentId(), struct.getId(), exerciseService.getPaperLength(), ExerciseLogic.ERROR, null, list);
|
|
|
+ Collection errorIds = Transform.getIds(errorPapers, ExercisePaper.class, "id");
|
|
|
exerciseService.switchPaper(struct.getParentId(), struct.getId(), ExerciseLogic.ERROR, errorIds);
|
|
|
}
|
|
|
status.put("progress", 80);
|
|
@@ -150,13 +151,13 @@ public class AsyncTask {
|
|
|
if (struct.getLevel()!=3 || !struct.getExtend().equals(QuestionType.AWA.key)){
|
|
|
continue;
|
|
|
}
|
|
|
- String prefixTitle = String.format("%s%s", struct.getTitleEn(), struct.getTitleZh());
|
|
|
+ String prefixTitle = String.format("%s", struct.getTitleZh());
|
|
|
QuestionType questionType = QuestionType.ValueOf(struct.getExtend());
|
|
|
List<QuestionNoRelation> list = questionNoService.listWithRelationByStruct(StructModule.EXERCISE, struct.getId());
|
|
|
|
|
|
// 按顺序组卷
|
|
|
- List<ExercisePaper> noPapers = exerciseService.createPaper(prefixTitle, questionType, struct.getId(), 0, exerciseService.awaLength, ExerciseLogic.NO, null, list);
|
|
|
- Collection noIds = Transform.getIds(noPapers, SentencePaper.class, "id");
|
|
|
+ List<ExercisePaper> noPapers = exerciseService.createPaper(prefixTitle, questionType, struct.getId(), 0, exerciseService.getAwaLength(), ExerciseLogic.NO, null, list);
|
|
|
+ Collection noIds = Transform.getIds(noPapers, ExercisePaper.class, "id");
|
|
|
exerciseService.switchPaper(struct.getId(), 0, ExerciseLogic.NO, noIds);
|
|
|
}
|
|
|
status.put("progress", 80);
|
|
@@ -167,13 +168,13 @@ public class AsyncTask {
|
|
|
if (struct.getLevel()!=3 || !struct.getExtend().equals(QuestionType.IR.key)){
|
|
|
continue;
|
|
|
}
|
|
|
- String prefixTitle = String.format("%s%s", struct.getTitleEn(), struct.getTitleZh());
|
|
|
+ String prefixTitle = String.format("%s", struct.getTitleZh());
|
|
|
QuestionType questionType = QuestionType.ValueOf(struct.getExtend());
|
|
|
List<QuestionNoRelation> list = questionNoService.listWithRelationByStruct(StructModule.EXERCISE, struct.getId());
|
|
|
|
|
|
// 按顺序组卷
|
|
|
- List<ExercisePaper> noPapers = exerciseService.createPaper(prefixTitle, questionType, struct.getId(), 0, exerciseService.irLength, ExerciseLogic.NO, null, list);
|
|
|
- Collection noIds = Transform.getIds(noPapers, SentencePaper.class, "id");
|
|
|
+ List<ExercisePaper> noPapers = exerciseService.createPaper(prefixTitle, questionType, struct.getId(), 0, exerciseService.getIrLength(), ExerciseLogic.NO, null, list);
|
|
|
+ Collection noIds = Transform.getIds(noPapers, ExercisePaper.class, "id");
|
|
|
exerciseService.switchPaper(struct.getId(), 0, ExerciseLogic.NO, noIds);
|
|
|
}
|
|
|
|
|
@@ -200,11 +201,11 @@ public class AsyncTask {
|
|
|
// 按难易度组卷:保持和上方难易度组卷一致
|
|
|
list.sort((x, y)-> {
|
|
|
// 难度从高到低
|
|
|
- Integer xScore = x.getTotalCorrect() * 100/ x.getTotalNumber();
|
|
|
- Integer yScore = y.getTotalCorrect() * 100/ y.getTotalNumber();
|
|
|
+ Integer xScore = x.getTotalNumber() > 0 ? x.getTotalCorrect() * 100/ x.getTotalNumber() : 0;
|
|
|
+ Integer yScore = y.getTotalNumber() > 0 ? y.getTotalCorrect() * 100/ y.getTotalNumber(): 0;
|
|
|
return yScore.compareTo(xScore);
|
|
|
});
|
|
|
- List<ExercisePaper> errorPapers = exerciseService.createPaper(prefixTitle, questionType, struct.getParentId(), struct.getId(), exerciseService.paperLength, ExerciseLogic.ERROR, null, list);
|
|
|
+ List<ExercisePaper> errorPapers = exerciseService.createPaper(prefixTitle, questionType, struct.getParentId(), struct.getId(), exerciseService.getPaperLength(), ExerciseLogic.ERROR, null, list);
|
|
|
Collection errorIds = Transform.getIds(errorPapers, SentencePaper.class, "id");
|
|
|
exerciseService.switchPaper(struct.getParentId(), struct.getId(), ExerciseLogic.ERROR, errorIds);
|
|
|
}
|