zero 1 gadu atpakaļ
vecāks
revīzija
34c8a49afe

+ 28 - 7
src/main/java/cn/cslg/pas/service/business/es/EsPatentService.java

@@ -421,25 +421,46 @@ public class EsPatentService {
         //设置查询索引
         builder.index("patent");
         //申请号
-        Query q1 = QueryBuilders.term(t -> t.field("app_no.keyword").value(vo.getAppNo()));
+        Query q1 = null;
+        if (StringUtils.isNotEmpty(vo.getAppNo())) {
+            q1 = QueryBuilders.term(t -> t.field("app_no.keyword").value(vo.getAppNo()));
+        }
         //公开号
-        Query q2 = QueryBuilders.term(t -> t.field("public_no.keyword").value(vo.getPublicNo()));
+        Query q2 = null;
+        if (StringUtils.isNotEmpty(vo.getPublicNo())) {
+            q2 = QueryBuilders.term(t -> t.field("public_no.keyword").value(vo.getPublicNo()));
+        }
         //授权号
 //        Query q3 = QueryBuilders.term(t -> t.field("patent_no.keyword").value(vo.getGrantNo()));
         Query bool = null;
+        Query query1 = q1;
+        Query query2 = q2;
         if (StringUtils.isNotEmpty(patentNo)) {
             String str = "*";
             String s = str.concat(patentNo).concat("*");
             Query query = QueryBuilders.wildcard(i -> i.field("patent_no.keyword").value(s));
-            bool = QueryBuilders.bool(i -> i.should(q1, q2).must(query));
+            if (query1 != null && query2 == null) {
+                bool = QueryBuilders.bool(i -> i.should(query1));
+            } else if (query2 != null && query1 == null) {
+                bool = QueryBuilders.bool(i -> i.should(query2));
+            } else {
+                bool = QueryBuilders.bool(i -> i.should(query1, query2));
+            }
         } else {
-            bool = QueryBuilders.bool(i -> i.should(q1, q2));
+            if (query1 != null && query2 == null) {
+                bool = QueryBuilders.bool(i -> i.should(query1));
+            } else if (query2 != null && query1 == null) {
+                bool = QueryBuilders.bool(i -> i.should(query2));
+            } else {
+                bool = QueryBuilders.bool(i -> i.should(query1, query2));
+            }
         }
+
         builder.query(bool);
         //分页
-        if (pageNum > 0 && pageSize > 0) {
-            builder.from((pageNum - 1) * pageSize).size(pageSize);
-        }
+//        if (pageNum > 0 && pageSize > 0) {
+//            builder.from((pageNum - 1) * pageSize).size(pageSize);
+//        }
         SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
         List<Hit<Patent>> hits = response.hits().hits();
         for (Hit<Patent> hit : hits) {