|
@@ -98,16 +98,23 @@ public class TEOpenServiceImpl implements TEOpenService {
|
|
|
paperResult.put("id", paper.getId());
|
|
|
paperResult.put("code", paper.getCode());
|
|
|
paperResult.put("name", paper.getName());
|
|
|
+ JSONArray detailCollection = new JSONArray();
|
|
|
JSONArray paperDetails = paperResult.getJSONArray("details");
|
|
|
for (int i = 0; i < paperDetails.size(); i++) {
|
|
|
//遍历所有大题
|
|
|
JSONObject paperDetail = paperDetails.getJSONObject(i);
|
|
|
- JSONObject answerDetail = answerDetails.getJSONObject(i);
|
|
|
- JSONArray answers = answerDetail != null ? answerDetail.getJSONArray("questions") : null;
|
|
|
+ JSONObject answerDetail = findJsonObject(answerDetails, paperDetail.getIntValue("number"));
|
|
|
//按条件过滤需要的小题同时合并答案
|
|
|
- paperDetail.put("questions",
|
|
|
- filterQuestions(paperDetail.getJSONArray("questions"), answers, acceptObjective, acceptSubjective));
|
|
|
+ JSONArray questionCollection = filterQuestions(paperDetail.getJSONArray("questions"),
|
|
|
+ answerDetail != null ? answerDetail.getJSONArray("questions") : null, acceptObjective,
|
|
|
+ acceptSubjective);
|
|
|
+ //有小题的情况下,本大题才需要被包含
|
|
|
+ if (questionCollection.size() > 0) {
|
|
|
+ paperDetail.put("questions", questionCollection);
|
|
|
+ detailCollection.add(paperDetail);
|
|
|
+ }
|
|
|
}
|
|
|
+ paperResult.put("details", detailCollection);
|
|
|
return paperResult;
|
|
|
}
|
|
|
|
|
@@ -139,9 +146,14 @@ public class TEOpenServiceImpl implements TEOpenService {
|
|
|
//套题
|
|
|
//按条件过滤套题下所有子题
|
|
|
JSONArray subAnswers = answer != null ? answer.getJSONArray("subQuestions") : null;
|
|
|
- question.put("subQuestions",
|
|
|
- filterQuestions(question.getJSONArray("subQuestions"), subAnswers, acceptObjective,
|
|
|
- acceptSubjective));
|
|
|
+ JSONArray subCollection = filterQuestions(question.getJSONArray("subQuestions"), subAnswers,
|
|
|
+ acceptObjective, acceptSubjective);
|
|
|
+ //没有子题,则本题也被过滤掉
|
|
|
+ if (subCollection.size() > 0) {
|
|
|
+ question.put("subQuestions", subCollection);
|
|
|
+ } else {
|
|
|
+ accept = false;
|
|
|
+ }
|
|
|
break;
|
|
|
default:
|
|
|
accept = false;
|