Browse Source

Merge branch 'dev_openapi_bugfix'

luoshi 4 năm trước cách đây
mục cha
commit
1680e139eb

+ 19 - 7
themis-business/src/main/java/com/qmth/themis/business/service/impl/TEOpenServiceImpl.java

@@ -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;