Browse Source

don't show components who has no goods if status is specified

sunyj 8 years ago
parent
commit
f8afac09ff

+ 17 - 14
mall-search/src/main/java/com/uas/search/service/impl/SearchServiceImpl.java

@@ -964,24 +964,27 @@ public class SearchServiceImpl implements SearchService {
         Object status;
         Object status;
         // 筛选状态
         // 筛选状态
         if (!CollectionUtils.isEmpty(filters) && !StringUtils.isEmpty(filters.get(FilterField.GOODS_STATUS))) {
         if (!CollectionUtils.isEmpty(filters) && !StringUtils.isEmpty(filters.get(FilterField.GOODS_STATUS))) {
+            // 如果明确指定了状态,则直接过滤批次(结果中不包括没有批次的器件)
             status = filters.get(FilterField.GOODS_STATUS);
             status = filters.get(FilterField.GOODS_STATUS);
+            filter(status, SearchConstants.GOODS_GO_STATUS_FIELD, query);
         } else {
         } else {
+            // 如果未明确指定状态,则使用默认状态分情况进行过滤(结果中包括没有批次的器件)
             status = Arrays.asList(TradeGoods.VALID_STATUS);
             status = Arrays.asList(TradeGoods.VALID_STATUS);
+            // 批次 id 不为空时,对状态过滤
+            Query goIdNotNullQuery = SearchUtils.getNotNullQuery(SearchConstants.GOODS_GO_ID_FIELD);
+            BooleanQuery q1 = new BooleanQuery();
+            q1.add(goIdNotNullQuery, Occur.MUST);
+            filter(status, SearchConstants.GOODS_GO_STATUS_FIELD, q1);
+            // 或者批次 id 为空(此时是器件)
+            BooleanQuery q2 = new BooleanQuery();
+            q2.add(SearchUtils.getNotNullQuery(SearchConstants.GOODS_CMP_ID_FIELD), Occur.SHOULD);
+            q2.add(goIdNotNullQuery, Occur.MUST_NOT);
+
+            BooleanQuery booleanQuery = new BooleanQuery();
+            booleanQuery.add(q1, Occur.SHOULD);
+            booleanQuery.add(q2, Occur.SHOULD);
+            query.add(booleanQuery, Occur.FILTER);
         }
         }
-        // 批次 id 不为空时,对状态过滤
-        Query goIdNotNullQuery = SearchUtils.getNotNullQuery(SearchConstants.GOODS_GO_ID_FIELD);
-        BooleanQuery q1 = new BooleanQuery();
-        q1.add(goIdNotNullQuery, Occur.MUST);
-        filter(status, SearchConstants.GOODS_GO_STATUS_FIELD, q1);
-        // 或者批次 id 为空(此时是器件)
-        BooleanQuery q2 = new BooleanQuery();
-        q2.add(SearchUtils.getNotNullQuery(SearchConstants.GOODS_CMP_ID_FIELD), Occur.SHOULD);
-        q2.add(goIdNotNullQuery, Occur.MUST_NOT);
-
-        BooleanQuery booleanQuery = new BooleanQuery();
-        booleanQuery.add(q1, Occur.SHOULD);
-        booleanQuery.add(q2, Occur.SHOULD);
-        query.add(booleanQuery, Occur.FILTER);
 
 
         if (CollectionUtils.isEmpty(filters)) {
         if (CollectionUtils.isEmpty(filters)) {
             return;
             return;