zero 1 jaar geleden
bovenliggende
commit
02f3a31ead

+ 3 - 3
src/main/java/cn/cslg/pas/common/dto/PatentColumnDTO.java

@@ -237,7 +237,7 @@ public class PatentColumnDTO {
     /**
      * 合并申请人
      */
-    private List<PatentMergePerson> mergeApplicant;
+    private List<String> mergeApplicant;
 
     /**
      * 申请人数量
@@ -256,7 +256,7 @@ public class PatentColumnDTO {
     /**
      * 合并权利人
      */
-    private List<PatentMergePerson> mergeRightHolder;
+    private List<String> mergeRightHolder;
 
     /**
      * 权利人数量
@@ -270,7 +270,7 @@ public class PatentColumnDTO {
     /**
      * 合并发明人
      */
-    private List<PatentMergePerson> mergeInventor;
+    private List<String> mergeInventor;
 
 
     /**

+ 87 - 0
src/main/java/cn/cslg/pas/service/business/es/EsPatentService.java

@@ -189,6 +189,93 @@ public class EsPatentService {
         return collect;
     }
 
+    //获取合并申请人
+    public List<String> getMergeApp(Integer projectId, String id) throws IOException {
+        SearchRequest.Builder builder = new SearchRequest.Builder();
+        //设置查询索引
+        builder.index("patent");
+        Query q1 = QueryBuilders.term(i -> i.field("merge_applicant.project_id").value(projectId));
+        Query exist1 = QueryBuilders.exists(i -> i.field("merge_applicant"));
+        Query bool = QueryBuilders.bool(i -> i.must(q1, exist1));
+        Query nested = QueryBuilders.nested(i -> i.path("merge_applicant").query(bool));
+        Query ids = QueryBuilders.ids(i -> i.values(Arrays.asList(id)));
+        Query query = QueryBuilders.hasParent(i -> i.parentType("patent").query(ids));
+        Query q = QueryBuilders.bool(i -> i.must(nested, query));
+        builder.query(q);
+        SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
+        List<Hit<Patent>> hits = response.hits().hits();
+        List<PatentMergePerson> list = new ArrayList<>();
+        for (Hit<Patent> hit : hits) {
+            Patent patent = hit.source();
+            if (!CollectionUtils.isEmpty(patent.getMergeApplicant())) {
+                list.addAll(patent.getMergeApplicant());
+            }
+        }
+        List<String> data = new ArrayList<>();
+        if (!CollectionUtils.isEmpty(list)) {
+            data = this.loadMergeName(list);
+        }
+        return data;
+    }
+
+    //获取合并权利人
+    public List<String> getMergeRight(Integer projectId, String id) throws IOException {
+        SearchRequest.Builder builder = new SearchRequest.Builder();
+        //设置查询索引
+        builder.index("patent");
+        Query q1 = QueryBuilders.term(i -> i.field("merge_right_holder.project_id").value(projectId));
+        Query exist1 = QueryBuilders.exists(i -> i.field("merge_right_holder"));
+        Query bool = QueryBuilders.bool(i -> i.must(q1, exist1));
+        Query nested = QueryBuilders.nested(i -> i.path("merge_right_holder").query(bool));
+        Query ids = QueryBuilders.ids(i -> i.values(Arrays.asList(id)));
+        Query query = QueryBuilders.hasParent(i -> i.parentType("patent").query(ids));
+        Query q = QueryBuilders.bool(i -> i.must(nested, query));
+        builder.query(q);
+        SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
+        List<Hit<Patent>> hits = response.hits().hits();
+        List<PatentMergePerson> list = new ArrayList<>();
+        for (Hit<Patent> hit : hits) {
+            Patent patent = hit.source();
+            if (!CollectionUtils.isEmpty(patent.getMergeApplicant())) {
+                list.addAll(patent.getMergeApplicant());
+            }
+        }
+        List<String> data = new ArrayList<>();
+        if (!CollectionUtils.isEmpty(list)) {
+            data = this.loadMergeName(list);
+        }
+        return data;
+    }
+
+    //获取合并发明人
+    public List<String> getMergeInventor(Integer projectId, String id) throws IOException {
+        SearchRequest.Builder builder = new SearchRequest.Builder();
+        //设置查询索引
+        builder.index("patent");
+        Query q1 = QueryBuilders.term(i -> i.field("merge_inventor.project_id").value(projectId));
+        Query exist1 = QueryBuilders.exists(i -> i.field("merge_inventor"));
+        Query bool = QueryBuilders.bool(i -> i.must(q1, exist1));
+        Query nested = QueryBuilders.nested(i -> i.path("merge_inventor").query(bool));
+        Query ids = QueryBuilders.ids(i -> i.values(Arrays.asList(id)));
+        Query query = QueryBuilders.hasParent(i -> i.parentType("patent").query(ids));
+        Query q = QueryBuilders.bool(i -> i.must(nested, query));
+        builder.query(q);
+        SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
+        List<Hit<Patent>> hits = response.hits().hits();
+        List<PatentMergePerson> list = new ArrayList<>();
+        for (Hit<Patent> hit : hits) {
+            Patent patent = hit.source();
+            if (!CollectionUtils.isEmpty(patent.getMergeApplicant())) {
+                list.addAll(patent.getMergeApplicant());
+            }
+        }
+        List<String> data = new ArrayList<>();
+        if (!CollectionUtils.isEmpty(list)) {
+            data = this.loadMergeName(list);
+        }
+        return data;
+    }
+
     /**
      * 获得中国专利pdf全文
      *

+ 39 - 1
src/main/java/cn/cslg/pas/service/business/es/EsService.java

@@ -241,10 +241,12 @@ public class EsService {
                     if (orderDTO.getOrderType().equals(IfConstant.NO)) {
                         builder.sort(sortOptionsBuilder -> sortOptionsBuilder
                                 .field(fieldSortBuilder -> fieldSortBuilder
+                                        .missing("_missing_").order(SortOrder.Desc)
                                         .field(configVO.getEsField()).order(SortOrder.Asc)));
                     } else {
                         builder.sort(sortOptionsBuilder -> sortOptionsBuilder
                                 .field(fieldSortBuilder -> fieldSortBuilder
+                                        .missing("_missing_").order(SortOrder.Desc)
                                         .field(configVO.getEsField()).order(SortOrder.Desc)));
                     }
                 }
@@ -252,7 +254,7 @@ public class EsService {
         } else {
             builder.sort(sortOptionsBuilder -> sortOptionsBuilder
                     .field(fieldSortBuilder -> fieldSortBuilder
-                            .field("patent_no.keyword").order(SortOrder.Desc)));
+                            .field("patent_no.keyword").order(SortOrder.Desc).missing(-1)));
         }
 
         //分页
@@ -274,10 +276,28 @@ public class EsService {
                     total = hitAgg.topHits().hits().total().value();
                     List<Hit<JsonData>> hits = hitAgg.topHits().hits().hits();
                     hits.forEach(hit -> {
+                        String id = hit.id();
                         JsonData data = hit.source();
                         Patent patent1 = JSONObject.parseObject(String.valueOf(data), Patent.class);
                         PatentColumnDTO columnDTO = new PatentColumnDTO();
                         BeanUtils.copyProperties(patent1, columnDTO);
+                        if (projectId != null) {
+                            try {
+                                columnDTO.setMergeApplicant(esPatentService.getMergeApp(projectId,id));
+                            } catch (IOException e) {
+                                columnDTO.setMergeApplicant(new ArrayList<>());
+                            }
+                            try {
+                                columnDTO.setMergeRightHolder(esPatentService.getMergeRight(projectId, id));
+                            } catch (IOException e) {
+                                columnDTO.setMergeRightHolder(new ArrayList<>());
+                            }
+                            try {
+                                columnDTO.setMergeInventor(esPatentService.getMergeInventor(projectId, id));
+                            } catch (IOException e) {
+                                columnDTO.setMergeInventor(new ArrayList<>());
+                            }
+                        }
                         columnDTO.setApplicant(esPatentService.loadName(patent1.getApplicant()));
                         columnDTO.setRightHolder(esPatentService.loadName(patent1.getRightHolder()));
                         columnDTO.setInventor(esPatentService.loadName(patent1.getInventor()));
@@ -289,10 +309,28 @@ public class EsService {
             List<Hit<Patent>> hits = response.hits().hits();
             total = response.hits().total().value();
             for (Hit<Patent> hit : hits) {
+                String id = hit.id();
                 Patent esMess = hit.source();
                 PatentColumnDTO columnDTO = new PatentColumnDTO();
 //            columnDTO.setPatentNo(esMess.getPatentNo());
                 BeanUtils.copyProperties(esMess, columnDTO);
+                if (projectId != null) {
+                    try {
+                        columnDTO.setMergeApplicant(esPatentService.getMergeApp(projectId,id));
+                    } catch (IOException e) {
+                        columnDTO.setMergeApplicant(new ArrayList<>());
+                    }
+                    try {
+                        columnDTO.setMergeRightHolder(esPatentService.getMergeRight(projectId, id));
+                    } catch (IOException e) {
+                        columnDTO.setMergeRightHolder(new ArrayList<>());
+                    }
+                    try {
+                        columnDTO.setMergeInventor(esPatentService.getMergeInventor(projectId, id));
+                    } catch (IOException e) {
+                        columnDTO.setMergeInventor(new ArrayList<>());
+                    }
+                }
                 columnDTO.setApplicant(esPatentService.loadName(esMess.getApplicant()));
                 columnDTO.setRightHolder(esPatentService.loadName(esMess.getRightHolder()));
                 columnDTO.setInventor(esPatentService.loadName(esMess.getInventor()));

+ 2 - 2
src/main/resources/jsons/patent.json

@@ -318,8 +318,8 @@
     "type": "String",
     "value": "agency",
     "field": "AGN",
-    "esField": "agency",
-    "esClass": "matchQueryBuilder",
+    "esField": "agency.key",
+    "esClass": "keyWordQueryBuilder",
     "ifSearch": "true",
     "ifGroup": "true",
     "ifShow": "true",