wangyu 6 gadi atpakaļ
vecāks
revīzija
d36e80c548

+ 24 - 2
icss-service/src/main/java/com/diagbot/facade/RetrievalFacade.java

@@ -9,6 +9,8 @@ import org.springframework.stereotype.Component;
 import org.springframework.web.bind.annotation.RequestBody;
 
 import javax.validation.Valid;
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -21,6 +23,8 @@ import java.util.stream.Collectors;
 @Component
 public class RetrievalFacade extends RetrievalServiceImpl {
 
+    public static final String EXIST = "1";
+
     @Autowired
     QuestionFacade questionFacade;
 
@@ -36,12 +40,30 @@ public class RetrievalFacade extends RetrievalServiceImpl {
         }
         //获取同义词标签信息
         List<RetrievalDTO> data = this.getSymptopInfo(retrievalVO);
-        List<Long> questionIdList = data.stream()
+        List<RetrievalDTO> resultSubitemData = new ArrayList<RetrievalDTO>();
+        Map<String,String> subitemMap = new HashMap<String,String>();
+        //筛选包含自身的
+        for(RetrievalDTO bean: data) {
+            if("1".equals(bean.getShowType().toString())) { //本身
+                subitemMap.put(bean.getQuestionId() + "",EXIST);
+            }
+        }
+        //自身和同义词同时出现,删除同义词
+        for(RetrievalDTO bean: data) {
+            if(EXIST.equals(subitemMap.get(bean.getQuestionId()+ ""))) {
+                if(!"2".equals(bean.getShowType().toString())) { //当出现本体和同义词时,不显示同义词
+                    resultSubitemData.add(bean);
+                }
+            } else {
+                resultSubitemData.add(bean);
+            }
+        }
+        List<Long> questionIdList = resultSubitemData.stream()
                 .map(r -> r.getQuestionId())
                 .collect(Collectors.toList());
         //将标签名放入实体
         Map<Long, QuestionInfo> map = questionFacade.getQuestionInfos(questionIdList);
-        for (RetrievalDTO retrievalDTO : data) {
+        for (RetrievalDTO retrievalDTO : resultSubitemData) {
             retrievalDTO.setName(map.get(retrievalDTO.getQuestionId()).getTagName());
         }
         return data;