浏览代码

根据专利号查详情

zero 1 年之前
父节点
当前提交
0bbad8356b

+ 6 - 2
src/main/java/cn/cslg/pas/controller/PatentController.java

@@ -15,6 +15,7 @@ import cn.cslg.pas.common.vo.business.PatentNoVO;
 import cn.cslg.pas.factorys.businessFactory.Business;
 import cn.cslg.pas.factorys.businessFactory.Business;
 import cn.cslg.pas.factorys.businessFactory.BusinessFactory;
 import cn.cslg.pas.factorys.businessFactory.BusinessFactory;
 import cn.cslg.pas.service.business.es.EsCountService;
 import cn.cslg.pas.service.business.es.EsCountService;
+import cn.cslg.pas.service.business.es.PatentService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Operation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -34,6 +35,9 @@ public class PatentController {
     @Autowired
     @Autowired
     private EsCountService esCountService;
     private EsCountService esCountService;
 
 
+    @Autowired
+    private PatentService patentService;
+
     @Operation(summary = "查询专利")
     @Operation(summary = "查询专利")
     @PostMapping("/queryPatent")
     @PostMapping("/queryPatent")
     public Response queryPatent(@RequestBody StringRequest stringRequest) throws Exception {
     public Response queryPatent(@RequestBody StringRequest stringRequest) throws Exception {
@@ -52,14 +56,14 @@ public class PatentController {
     @Operation(summary = "查询专利详情")
     @Operation(summary = "查询专利详情")
     @PostMapping("/selectPatentDetail")
     @PostMapping("/selectPatentDetail")
     public Response selectPatentDetail(@RequestBody PatentNoVO vo) throws Exception {
     public Response selectPatentDetail(@RequestBody PatentNoVO vo) throws Exception {
-        PatentDetailDTO dto = esCountService.selectPatentDetail(vo);
+        PatentDetailDTO dto = patentService.selectPatentDetail(vo);
         return Response.success(dto);
         return Response.success(dto);
     }
     }
 
 
     @Operation(summary = "根据专利号查询同族")
     @Operation(summary = "根据专利号查询同族")
     @PostMapping("/selectKinByPatentNo")
     @PostMapping("/selectKinByPatentNo")
     public Response selectKinByPatentNo(@RequestBody PatentKinVO vo) throws Exception {
     public Response selectKinByPatentNo(@RequestBody PatentKinVO vo) throws Exception {
-        List<PatentKinDTO> dto = esCountService.selectKinByPatentNo(vo);
+        List<PatentKinDTO> dto = patentService.selectKinByPatentNo(vo);
         return Response.success(dto);
         return Response.success(dto);
     }
     }
 
 

+ 0 - 134
src/main/java/cn/cslg/pas/service/business/es/EsCountService.java

@@ -1,40 +1,21 @@
 package cn.cslg.pas.service.business.es;
 package cn.cslg.pas.service.business.es;
 
 
-import cn.cslg.pas.common.dto.PatentColumnDTO;
-import cn.cslg.pas.common.dto.PatentDTO;
-import cn.cslg.pas.common.dto.PatentDetailDTO;
-import cn.cslg.pas.common.dto.PatentKinDTO;
 import cn.cslg.pas.common.dto.business.EsCountDTO;
 import cn.cslg.pas.common.dto.business.EsCountDTO;
 import cn.cslg.pas.common.dto.business.EsCountDetailDTO;
 import cn.cslg.pas.common.dto.business.EsCountDetailDTO;
-import cn.cslg.pas.common.model.request.QueryRequest;
 import cn.cslg.pas.common.vo.EsConfigVO;
 import cn.cslg.pas.common.vo.EsConfigVO;
 import cn.cslg.pas.common.vo.business.EsCountVO;
 import cn.cslg.pas.common.vo.business.EsCountVO;
-import cn.cslg.pas.common.vo.business.PatentKinDetailVO;
-import cn.cslg.pas.common.vo.business.PatentKinVO;
-import cn.cslg.pas.common.vo.business.PatentNoVO;
-import cn.cslg.pas.domain.es.FamilyPatent;
 import cn.cslg.pas.domain.es.Patent;
 import cn.cslg.pas.domain.es.Patent;
-import cn.cslg.pas.domain.es.PatentFamilyMessage;
-import cn.cslg.pas.factorys.EsBuilderFactory.IQueryBuilder;
 import cn.cslg.pas.factorys.EsCountBuilderFactory.EsCountBuilderFactory;
 import cn.cslg.pas.factorys.EsCountBuilderFactory.EsCountBuilderFactory;
 import cn.cslg.pas.factorys.EsCountBuilderFactory.IEsCountBuilder;
 import cn.cslg.pas.factorys.EsCountBuilderFactory.IEsCountBuilder;
 import cn.cslg.pas.service.business.CommonService;
 import cn.cslg.pas.service.business.CommonService;
 import co.elastic.clients.elasticsearch.ElasticsearchClient;
 import co.elastic.clients.elasticsearch.ElasticsearchClient;
 import co.elastic.clients.elasticsearch._types.aggregations.*;
 import co.elastic.clients.elasticsearch._types.aggregations.*;
-import co.elastic.clients.elasticsearch._types.query_dsl.HasChildQuery;
-import co.elastic.clients.elasticsearch._types.query_dsl.Query;
-import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
 import co.elastic.clients.elasticsearch.core.SearchRequest;
 import co.elastic.clients.elasticsearch.core.SearchRequest;
 import co.elastic.clients.elasticsearch.core.SearchResponse;
 import co.elastic.clients.elasticsearch.core.SearchResponse;
-import co.elastic.clients.elasticsearch.core.search.Hit;
-import co.elastic.clients.json.JsonData;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSON;
 import lombok.RequiredArgsConstructor;
 import lombok.RequiredArgsConstructor;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.context.annotation.Lazy;
-import org.springframework.data.elasticsearch.client.elc.ElasticsearchAggregations;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 import org.springframework.util.CollectionUtils;
 
 
@@ -44,7 +25,6 @@ import java.util.Arrays;
 import java.util.Comparator;
 import java.util.Comparator;
 import java.util.List;
 import java.util.List;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
-import java.util.stream.Stream;
 
 
 @Service
 @Service
 @RequiredArgsConstructor(onConstructor_ = {@Lazy})
 @RequiredArgsConstructor(onConstructor_ = {@Lazy})
@@ -149,122 +129,8 @@ public class EsCountService {
                     }
                     }
                 });
                 });
             }
             }
-//            detailDTOS.addAll(countDetailDTOS);
         }
         }
         esCountDTO.setDetailDTOS(detailDTOS);
         esCountDTO.setDetailDTOS(detailDTOS);
         return esCountDTO;
         return esCountDTO;
     }
     }
-
-    /**
-     * 根据专利号查询专利详情
-     * @param vo
-     * @return
-     * @throws IOException
-     */
-    public PatentDetailDTO selectPatentDetail(PatentNoVO vo) throws IOException {
-        PatentDetailDTO dto = new PatentDetailDTO();
-        SearchRequest.Builder builder = new SearchRequest.Builder();
-        //设置查询索引
-        builder.index("patent");
-        Query q = QueryBuilders.term(i -> i.field("patent_no.keyword").value(vo.getPatentNo()));
-        Query query = QueryBuilders.bool(i -> i.must(q));
-        builder.query(query);
-        SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
-        List<Hit<Patent>> hits = response.hits().hits();
-        for (Hit<Patent> hit : hits) {
-            Patent esMess = hit.source();
-            BeanUtils.copyProperties(esMess, dto);
-        }
-        return dto;
-    }
-
-    /**
-     * 根据专利号查询出同族专利列表
-     * @param vo
-     * @return
-     * @throws IOException
-     */
-    public List<PatentKinDTO> selectKinByPatentNo(PatentKinVO vo) throws IOException {
-        //1.根据专利号查询出同族
-        String no = vo.getPatentNo();
-        Integer pageNum = vo.getPageNum();
-        Integer pageSize = vo.getPageSize();
-        String type = vo.getType();
-        SearchRequest.Builder builder = new SearchRequest.Builder();
-        //设置查询索引
-        builder.index("patent_family");
-        //申请号
-        Query q1 = QueryBuilders.term(t -> t.field("app_no.keyword").value(no));
-        //公开号
-        Query q2 = QueryBuilders.term(t -> t.field("public_no.keyword").value(no));
-        //授权号
-        Query q3 = QueryBuilders.term(t -> t.field("grant_no.keyword").value(no));
-        //同族类型
-        Query q4 = QueryBuilders.term(t -> t.field("family_type").value(type));
-        Query bool = QueryBuilders.bool(i -> i.must(q4).should(q1, q2, q3));
-        builder.query(bool);
-        //分页
-        if (pageNum > 0 && pageSize > 0) {
-            builder.from((pageNum - 1) * pageSize).size(pageSize);
-        }
-        SearchResponse<PatentFamilyMessage> response = client.search(builder.build(), PatentFamilyMessage.class);
-        List<Hit<PatentFamilyMessage>> hits = response.hits().hits();
-        List<PatentKinDTO> kinDTOS = new ArrayList<>();
-        for (Hit<PatentFamilyMessage> hit : hits) {
-            PatentFamilyMessage familyMessage = hit.source();
-            List<FamilyPatent> patentList = familyMessage.getPatent();
-            if (!CollectionUtils.isEmpty(patentList)) {
-                for (FamilyPatent familyPatent : patentList) {
-                    PatentKinDetailVO kinDetailVO = new PatentKinDetailVO();
-                    kinDetailVO.setAppNo(familyPatent.getAppNo());
-                    kinDetailVO.setPublicNo(familyPatent.getPublicNo());
-                    kinDetailVO.setGrantNo(familyPatent.getGrantNo());
-                    PatentKinDTO kinDTO = this.selectPatentKindDetail(kinDetailVO)
-                            .stream().findFirst().orElse(null);
-                    if (kinDTO != null) {
-                        kinDTOS.add(kinDTO);
-                    }
-                }
-            }
-
-        }
-        long endTime = System.currentTimeMillis();
-        return kinDTOS;
-    }
-
-    public List<PatentKinDTO> selectPatentKindDetail(PatentKinDetailVO vo) throws IOException {
-        List<PatentKinDTO> list = new ArrayList<>();
-        SearchRequest.Builder builder = new SearchRequest.Builder();
-        //设置查询索引
-        builder.index("patent");
-        //申请号
-        if (StringUtils.isNotEmpty(vo.getAppNo())) {
-
-        }
-        Query q1 = QueryBuilders.term(t -> t.field("patent_no.keyword").value(vo.getAppNo()));
-        //公开号
-        Query q2 = QueryBuilders.term(t -> t.field("patent_no.keyword").value(vo.getPublicNo()));
-        //授权号
-//        Query q3 = QueryBuilders.term(t -> t.field("patent_no.keyword").value(vo.getGrantNo()));
-        Query bool = QueryBuilders.bool(i -> i.should(q1, q2));
-        builder.query(bool);
-        SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
-        List<Hit<Patent>> hits = response.hits().hits();
-        for (Hit<Patent> hit : hits) {
-            PatentKinDTO kinDTO = new PatentKinDTO();
-            Patent patent = hit.source();
-            if (patent != null) {
-                kinDTO.setPatentNo(patent.getPatentNo());
-                kinDTO.setAppNo(patent.getAppNo());
-                kinDTO.setPublicNo(patent.getPublicNo());
-                kinDTO.setGrantNo(patent.getGrantNo());
-                kinDTO.setTitle(patent.getTitle());
-                kinDTO.setAbstractStr(patent.getAbstractStr());
-                kinDTO.setApplicant(patent.getApplicant());
-                kinDTO.setRightHolder(patent.getRightHolder());
-                list.add(kinDTO);
-            }
-        }
-        return list;
-    }
 }
 }

+ 145 - 0
src/main/java/cn/cslg/pas/service/business/es/PatentService.java

@@ -0,0 +1,145 @@
+package cn.cslg.pas.service.business.es;
+
+import cn.cslg.pas.common.dto.PatentDetailDTO;
+import cn.cslg.pas.common.dto.PatentKinDTO;
+import cn.cslg.pas.common.vo.business.PatentKinDetailVO;
+import cn.cslg.pas.common.vo.business.PatentKinVO;
+import cn.cslg.pas.common.vo.business.PatentNoVO;
+import cn.cslg.pas.domain.es.FamilyPatent;
+import cn.cslg.pas.domain.es.Patent;
+import cn.cslg.pas.domain.es.PatentFamilyMessage;
+import co.elastic.clients.elasticsearch.ElasticsearchClient;
+import co.elastic.clients.elasticsearch._types.query_dsl.Query;
+import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
+import co.elastic.clients.elasticsearch.core.SearchRequest;
+import co.elastic.clients.elasticsearch.core.SearchResponse;
+import co.elastic.clients.elasticsearch.core.search.Hit;
+import lombok.RequiredArgsConstructor;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+@Service
+@RequiredArgsConstructor(onConstructor_ = {@Lazy})
+public class PatentService {
+
+    private final ElasticsearchClient client;
+    /**
+     * 根据专利号查询专利详情
+     * @param vo
+     * @return
+     * @throws IOException
+     */
+    public PatentDetailDTO selectPatentDetail(PatentNoVO vo) throws IOException {
+        PatentDetailDTO dto = new PatentDetailDTO();
+        SearchRequest.Builder builder = new SearchRequest.Builder();
+        //设置查询索引
+        builder.index("patent");
+        Query q = QueryBuilders.term(i -> i.field("patent_no.keyword").value(vo.getPatentNo()));
+        Query query = QueryBuilders.bool(i -> i.must(q));
+        builder.query(query);
+        SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
+        List<Hit<Patent>> hits = response.hits().hits();
+        for (Hit<Patent> hit : hits) {
+            Patent esMess = hit.source();
+            BeanUtils.copyProperties(esMess, dto);
+        }
+        return dto;
+    }
+
+    /**
+     * 根据专利号查询出同族专利列表
+     * @param vo
+     * @return
+     * @throws IOException
+     */
+    public List<PatentKinDTO> selectKinByPatentNo(PatentKinVO vo) throws IOException {
+        //1.根据专利号查询出同族
+        String no = vo.getPatentNo();
+        Integer pageNum = vo.getPageNum();
+        Integer pageSize = vo.getPageSize();
+        String type = vo.getType();
+        SearchRequest.Builder builder = new SearchRequest.Builder();
+        //设置查询索引
+        builder.index("patent_family");
+        //申请号
+        Query q1 = QueryBuilders.term(t -> t.field("app_no.keyword").value(no));
+        //公开号
+        Query q2 = QueryBuilders.term(t -> t.field("public_no.keyword").value(no));
+        //授权号
+        Query q3 = QueryBuilders.term(t -> t.field("grant_no.keyword").value(no));
+        //同族类型
+        Query q4 = QueryBuilders.term(t -> t.field("family_type").value(type));
+        Query bool = QueryBuilders.bool(i -> i.must(q4).should(q1, q2, q3));
+        builder.query(bool);
+        //分页
+        if (pageNum > 0 && pageSize > 0) {
+            builder.from((pageNum - 1) * pageSize).size(pageSize);
+        }
+        SearchResponse<PatentFamilyMessage> response = client.search(builder.build(), PatentFamilyMessage.class);
+        List<Hit<PatentFamilyMessage>> hits = response.hits().hits();
+        List<PatentKinDTO> kinDTOS = new ArrayList<>();
+        for (Hit<PatentFamilyMessage> hit : hits) {
+            PatentFamilyMessage familyMessage = hit.source();
+            List<FamilyPatent> patentList = familyMessage.getPatent();
+            if (!CollectionUtils.isEmpty(patentList)) {
+                for (FamilyPatent familyPatent : patentList) {
+                    PatentKinDetailVO kinDetailVO = new PatentKinDetailVO();
+                    kinDetailVO.setAppNo(familyPatent.getAppNo());
+                    kinDetailVO.setPublicNo(familyPatent.getPublicNo());
+                    kinDetailVO.setGrantNo(familyPatent.getGrantNo());
+                    PatentKinDTO kinDTO = this.selectPatentKindDetail(kinDetailVO)
+                            .stream().findFirst().orElse(null);
+                    if (kinDTO != null) {
+                        kinDTOS.add(kinDTO);
+                    }
+                }
+            }
+
+        }
+        long endTime = System.currentTimeMillis();
+        return kinDTOS;
+    }
+
+    public List<PatentKinDTO> selectPatentKindDetail(PatentKinDetailVO vo) throws IOException {
+        List<PatentKinDTO> list = new ArrayList<>();
+        SearchRequest.Builder builder = new SearchRequest.Builder();
+        //设置查询索引
+        builder.index("patent");
+        //申请号
+        if (StringUtils.isNotEmpty(vo.getAppNo())) {
+
+        }
+        Query q1 = QueryBuilders.term(t -> t.field("patent_no.keyword").value(vo.getAppNo()));
+        //公开号
+        Query q2 = QueryBuilders.term(t -> t.field("patent_no.keyword").value(vo.getPublicNo()));
+        //授权号
+//        Query q3 = QueryBuilders.term(t -> t.field("patent_no.keyword").value(vo.getGrantNo()));
+        Query bool = QueryBuilders.bool(i -> i.should(q1, q2));
+        builder.query(bool);
+        SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
+        List<Hit<Patent>> hits = response.hits().hits();
+        for (Hit<Patent> hit : hits) {
+            PatentKinDTO kinDTO = new PatentKinDTO();
+            Patent patent = hit.source();
+            if (patent != null) {
+                kinDTO.setPatentNo(patent.getPatentNo());
+                kinDTO.setAppNo(patent.getAppNo());
+                kinDTO.setPublicNo(patent.getPublicNo());
+                kinDTO.setGrantNo(patent.getGrantNo());
+                kinDTO.setTitle(patent.getTitle());
+                kinDTO.setAbstractStr(patent.getAbstractStr());
+                kinDTO.setApplicant(patent.getApplicant());
+                kinDTO.setRightHolder(patent.getRightHolder());
+                list.add(kinDTO);
+            }
+        }
+        return list;
+    }
+}

+ 5 - 2
src/test/java/cn/cslg/pas/service/EventServiceTests.java

@@ -23,6 +23,7 @@ import cn.cslg.pas.service.business.ProductMarketDataService;
 import cn.cslg.pas.service.business.TempleService;
 import cn.cslg.pas.service.business.TempleService;
 import cn.cslg.pas.service.business.es.EsCountService;
 import cn.cslg.pas.service.business.es.EsCountService;
 import cn.cslg.pas.service.business.es.EsService;
 import cn.cslg.pas.service.business.es.EsService;
+import cn.cslg.pas.service.business.es.PatentService;
 import co.elastic.clients.elasticsearch._types.aggregations.Aggregation;
 import co.elastic.clients.elasticsearch._types.aggregations.Aggregation;
 import co.elastic.clients.elasticsearch._types.aggregations.AggregationBuilders;
 import co.elastic.clients.elasticsearch._types.aggregations.AggregationBuilders;
 import co.elastic.clients.elasticsearch._types.aggregations.CalendarInterval;
 import co.elastic.clients.elasticsearch._types.aggregations.CalendarInterval;
@@ -59,6 +60,8 @@ public class EventServiceTests {
     private EsCountService esCountService;
     private EsCountService esCountService;
     @Autowired
     @Autowired
     private TempleService templeService;
     private TempleService templeService;
+    @Autowired
+    private PatentService patentService;
 
 
 
 
     @Autowired
     @Autowired
@@ -250,7 +253,7 @@ public class EventServiceTests {
     void test9() throws IOException {
     void test9() throws IOException {
         PatentNoVO vo = new PatentNoVO();
         PatentNoVO vo = new PatentNoVO();
         vo.setPatentNo("CN201910069334.7");
         vo.setPatentNo("CN201910069334.7");
-        PatentDetailDTO columnDTO = esCountService.selectPatentDetail(vo);
+        PatentDetailDTO columnDTO = patentService.selectPatentDetail(vo);
         System.out.println(columnDTO);
         System.out.println(columnDTO);
     }
     }
 
 
@@ -261,7 +264,7 @@ public class EventServiceTests {
         vo.setPageNum(1);
         vo.setPageNum(1);
         vo.setPageSize(10);
         vo.setPageSize(10);
         vo.setType("inpadoc");
         vo.setType("inpadoc");
-        List<PatentKinDTO> kinDTOS = esCountService.selectKinByPatentNo(vo);
+        List<PatentKinDTO> kinDTOS = patentService.selectKinByPatentNo(vo);
         System.out.println(kinDTOS);
         System.out.println(kinDTOS);
     }
     }