소스 검색

合并相关接口

zero 1 년 전
부모
커밋
29ba5103bb

+ 11 - 0
src/main/java/cn/cslg/pas/common/dto/InnerPatentPdfDTO.java

@@ -0,0 +1,11 @@
+package cn.cslg.pas.common.dto;
+
+import lombok.Data;
+
+@Data
+public class InnerPatentPdfDTO {
+
+    private String pdfGuid;
+
+    private Integer type;
+}

+ 5 - 0
src/main/java/cn/cslg/pas/common/dto/patentCount/GetEsAllPersonDTO.java

@@ -1,5 +1,6 @@
 package cn.cslg.pas.common.dto.patentCount;
 
+import cn.cslg.pas.domain.es.PersonAddress;
 import lombok.Data;
 
 import java.util.List;
@@ -16,4 +17,8 @@ public class GetEsAllPersonDTO {
     private String address;
 
     private String country;
+
+    private PersonAddress applicantAddr;
+
+    private PersonAddress rightHolderAddr;
 }

+ 1 - 1
src/main/java/cn/cslg/pas/common/vo/business/GetAllPersonVO.java

@@ -9,7 +9,7 @@ public class GetAllPersonVO {
 
     private Integer taskId;
 
-    private String field;
+    private String searchQuery;
 
     private String name;
 

+ 8 - 0
src/main/java/cn/cslg/pas/controller/PatentController.java

@@ -1,6 +1,7 @@
 package cn.cslg.pas.controller;
 
 import cn.cslg.pas.common.core.base.Constants;
+import cn.cslg.pas.common.dto.InnerPatentPdfDTO;
 import cn.cslg.pas.common.dto.MergePersonQueryDTO;
 import cn.cslg.pas.common.dto.PatentColumnDTO;
 import cn.cslg.pas.common.dto.PatentExport.PatentExportParams;
@@ -88,6 +89,13 @@ public class PatentController {
         return Response.success(dto);
     }
 
+    @GetMapping("/getTextPdf")
+    @Operation(summary = "获得中国专利pdf全文")
+    public Response getTextPdf(String appNo) throws IOException {
+        List<InnerPatentPdfDTO> pdfDTOS = patentService.getTextPdf(appNo);
+        return Response.success(pdfDTOS);
+    }
+
     @Operation(summary = "根据专利号查询同族")
     @PostMapping("/selectKinByPatentNo")
     public Response selectKinByPatentNo(@RequestBody PatentKinVO vo) throws Exception {

+ 8 - 0
src/main/java/cn/cslg/pas/controller/outApi/PatentStarController.java

@@ -1,6 +1,7 @@
 package cn.cslg.pas.controller.outApi;
 
 import cn.cslg.pas.common.core.base.Constants;
+import cn.cslg.pas.common.dto.InnerPatentPdfDTO;
 import cn.cslg.pas.common.dto.PatentColumnDTO;
 import cn.cslg.pas.common.dto.PatentStarListDTO;
 import cn.cslg.pas.common.dto.business.SelectClaimDTO;
@@ -124,4 +125,11 @@ public class PatentStarController {
         List<Text> fullText = patentStarApiService.getCnFullText(appNo);
         return Response.success(fullText);
     }
+
+    @GetMapping("/getExternalTextPdf")
+    @Operation(summary = "获得中国专利pdf全文")
+    public Response getExternalTextPdf(String appNo,String rowApplicationNo) throws IOException {
+        List<InnerPatentPdfDTO> pdfDTOS = patentStarApiService.getExternalTextPdf(appNo,rowApplicationNo);
+        return Response.success(pdfDTOS);
+    }
 }

+ 24 - 5
src/main/java/cn/cslg/pas/service/business/MergePersonService.java

@@ -292,7 +292,7 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
         Integer type = vo.getType();
         String searchCondition = "";
         if (type == 0 && StringUtils.isNotEmpty(vo.getName())) {
-            searchCondition = searchCondition + "PA = " + vo.getName();
+            searchCondition = searchCondition + "PA = " + vo.getName() + " " + "OR" + " " + "PE =" + vo.getName();
         } else if (type == 2 && StringUtils.isNotEmpty(vo.getName())) {
             searchCondition = searchCondition + "IN = " + vo.getName();
         }
@@ -337,23 +337,42 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
                 personDTO.setAddress(applicantAddr.getAddress());
                 personDTO.setCountry(applicantAddr.getCountry());
             }
+            personDTO.setApplicantAddr(esMess.getApplicantAddr());
+            personDTO.setRightHolderAddr(esMess.getRightHolderAddr());
             personDTO.setApplicant(esPatentService.loadName(esMess.getApplicant()));
             personDTO.setRightHolder(esPatentService.loadName(esMess.getRightHolder()));
             personDTO.setInventor(esPatentService.loadName(esMess.getInventor()));
             personDTOS.add(personDTO);
         }
-        List<String> applicants = new ArrayList<>();
+
+        //装载地址
+        List<GetAllPersonDTO> personDTOList = new ArrayList<>();
+        for (GetEsAllPersonDTO personDTO : personDTOS) {
+            List<String> applicant = personDTO.getApplicant();
+            for (String s : applicant) {
+                GetAllPersonDTO dto = new GetAllPersonDTO();
+                dto.setName(s);
+                dto.setCountry(personDTO.getCountry());
+                dto.setAddress(personDTO.getAddress());
+                personDTOList.add(dto);
+            }
+
+        }
+
+        List<String> appAndRightList = new ArrayList<>();
         List<String> inventors = new ArrayList<>();
         for (GetEsAllPersonDTO personDTO : personDTOS) {
-            applicants.addAll(personDTO.getApplicant());
+            appAndRightList.addAll(personDTO.getApplicant());
+            appAndRightList.addAll(personDTO.getRightHolder());
             inventors.addAll(personDTO.getInventor());
         }
-        List<String> applicantList = applicants.stream().distinct().collect(Collectors.toList());
+
+        List<String> applicantList = appAndRightList.stream().distinct().collect(Collectors.toList());
         List<String> inventorList = inventors.stream().distinct().collect(Collectors.toList());
 
         IPage<MergePerson> page = new Page<>(vo.getPageNum(), vo.getPageSize());
         LambdaQueryWrapper<MergePerson> wrapper = new LambdaQueryWrapper<MergePerson>()
-                .eq(StringUtils.isNotEmpty(vo.getProjectId().toString()), MergePerson::getProjectId, vo.getProjectId());
+                .eq(MergePerson::getProjectId, vo.getProjectId());
         IPage<MergePerson> record = mergePersonMapper.selectPage(page, wrapper);
         List<String> applicantMergeList = new ArrayList<>();
         List<String> inventorMergeList = new ArrayList<>();

+ 51 - 14
src/main/java/cn/cslg/pas/service/business/es/EsPatentService.java

@@ -1,10 +1,7 @@
 package cn.cslg.pas.service.business.es;
 
 import cn.cslg.pas.common.core.base.IfConstant;
-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.*;
 import cn.cslg.pas.common.dto.business.ContentDetailDTO;
 import cn.cslg.pas.common.model.cronModel.Records;
 import cn.cslg.pas.common.model.request.MapRequest;
@@ -35,6 +32,7 @@ import co.elastic.clients.elasticsearch.core.search.Hit;
 import co.elastic.clients.elasticsearch.core.search.SourceConfig;
 import co.elastic.clients.elasticsearch.core.search.SourceConfigBuilders;
 import co.elastic.clients.elasticsearch.transform.Source;
+import com.alibaba.druid.sql.visitor.functions.If;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson2.JSONObject;
 import lombok.RequiredArgsConstructor;
@@ -101,16 +99,28 @@ public class EsPatentService {
         SearchRequest.Builder builder = new SearchRequest.Builder();
         //设置查询索引
         builder.index("legal_event");
-        Query q1 = QueryBuilders.term(i -> i.field("app_no").value(appNo));
-        Query q2 = QueryBuilders.term(i -> i.field("public_no").value(publicNo));
-//        Query q3 = QueryBuilders.term(i -> i.field("grant_no").value(grantNo));
-        Query query = QueryBuilders.bool(i -> i.must(q1, q2));
-        builder.query(query);
-        SearchResponse<LegalEvent> response = client.search(builder.build(), LegalEvent.class);
-        List<Hit<LegalEvent>> hits = response.hits().hits();
-        for (Hit<LegalEvent> hit : hits) {
-            LegalEvent event = hit.source();
-            events.add(event);
+        List<Query> queries = new ArrayList<>();
+        if (StringUtils.isNotEmpty(appNo)) {
+            Query q1 = QueryBuilders.term(i -> i.field("app_no").value(appNo));
+            queries.add(q1);
+        }
+        if (StringUtils.isNotEmpty(publicNo)) {
+            Query q2 = QueryBuilders.term(i -> i.field("public_no").value(publicNo));
+            queries.add(q2);
+        }
+        if (StringUtils.isNotEmpty(grantNo)) {
+            Query q3 = QueryBuilders.term(i -> i.field("grant_no").value(grantNo));
+            queries.add(q3);
+        }
+        if (!CollectionUtils.isEmpty(queries)) {
+            Query query = QueryBuilders.bool(i -> i.must(queries));
+            builder.query(query);
+            SearchResponse<LegalEvent> response = client.search(builder.build(), LegalEvent.class);
+            List<Hit<LegalEvent>> hits = response.hits().hits();
+            for (Hit<LegalEvent> hit : hits) {
+                LegalEvent event = hit.source();
+                events.add(event);
+            }
         }
         return events;
     }
@@ -134,6 +144,33 @@ public class EsPatentService {
     }
 
     /**
+     * 获得中国专利pdf全文
+     *
+     * @param appNo
+     * @return
+     * @throws IOException
+     */
+    public List<InnerPatentPdfDTO> getTextPdf(String appNo) throws IOException {
+        List<InnerPatentPdfDTO> list = new ArrayList<>();
+        //公开说明书pdf
+        String pdfFormat = FormatUtil.getPDFFormat(appNo, 0);
+        if (StringUtils.isNotEmpty(pdfFormat)) {
+            InnerPatentPdfDTO dto = new InnerPatentPdfDTO();
+            dto.setPdfGuid(pdfFormat);
+            dto.setType(0);
+            list.add(dto);
+        }
+        //授权说明书pdf
+        String pdfFormat1 = FormatUtil.getPDFFormat(appNo, 1);
+        if (StringUtils.isNotEmpty(pdfFormat1)) {
+            InnerPatentPdfDTO dto1 = new InnerPatentPdfDTO();
+            dto1.setPdfGuid(pdfFormat1);
+            dto1.setType(1);
+            list.add(dto1);
+        }
+        return list;
+    }
+    /**
      * 根据专利号查询出同族专利列表
      *
      * @param vo

+ 79 - 4
src/main/java/cn/cslg/pas/service/common/PatentStarApiService.java

@@ -3,10 +3,7 @@ package cn.cslg.pas.service.common;
 import cn.cslg.pas.common.config.XDns;
 
 import cn.cslg.pas.common.core.IgnoreDTDEntityResolver;
-import cn.cslg.pas.common.dto.PatentColumnDTO;
-import cn.cslg.pas.common.dto.PatentStarDTO;
-import cn.cslg.pas.common.dto.PatentStarListDTO;
-import cn.cslg.pas.common.dto.QueryExternalFamilyDTO;
+import cn.cslg.pas.common.dto.*;
 import cn.cslg.pas.common.dto.business.SelectClaimDTO;
 import cn.cslg.pas.common.model.cronModel.PersonnelVO;
 import cn.cslg.pas.common.model.cronModel.Records;
@@ -49,6 +46,7 @@ import org.springframework.context.ApplicationContext;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
+import java.io.File;
 import java.io.IOException;
 import java.io.Reader;
 import java.io.StringReader;
@@ -1041,4 +1039,81 @@ public class PatentStarApiService {
         }
         return pubTextList;
     }
+
+    /**
+     * 获得中国专利pdf全文
+     *
+     * @param appNo
+     * @return
+     * @throws IOException
+     */
+    public List<InnerPatentPdfDTO> getExternalTextPdf(String appNo, String rowApplicationNo) throws IOException {
+        List<InnerPatentPdfDTO> list = new ArrayList<>();
+        String pdfUrl = "", pdfUrl1 = "", pdfUrl2 = "";
+        if (StringUtils.isNotEmpty(appNo) && appNo.contains("CN")) {
+            String pdfUrlStr = this.getCnPdfApi(rowApplicationNo);
+            //若没有取到说明书pdf,则将当前申请号和备注信息存入问题记录表,并返回空对象
+            if (StringUtils.isNotEmpty(pdfUrlStr)) {
+                if (pdfUrlStr.contains("|http")) {  //若包含公开和授权两个pdf
+                    String[] pdfUrlArr = pdfUrlStr.split("\\|http");
+                    pdfUrl1 = pdfUrlArr[0].substring(pdfUrlArr[0].indexOf("http"), pdfUrlArr[0].indexOf("?"));
+                    pdfUrlArr[1] = "http" + pdfUrlArr[1];
+                    pdfUrl2 = pdfUrlArr[1].substring(pdfUrlArr[1].indexOf("http"), pdfUrlArr[1].indexOf("?"));
+
+                    if (pdfUrl1.contains("0A_CN_0.pdf")) {
+                        String guid1 = FormatUtil.getPDFFormat(appNo, 0);
+                        if (StringUtils.isNotEmpty(guid1)) {
+                            InnerPatentPdfDTO dto = new InnerPatentPdfDTO();
+                            dto.setPdfGuid(guid1);
+                            dto.setType(0);
+                            list.add(dto);
+                        }
+                        //授权说明书pdf
+                        String guid2 = FormatUtil.getPDFFormat(appNo, 1);
+                        if (StringUtils.isNotEmpty(guid2)) {
+                            InnerPatentPdfDTO dto1 = new InnerPatentPdfDTO();
+                            dto1.setPdfGuid(guid2);
+                            dto1.setType(1);
+                            list.add(dto1);
+                        }
+                    } else {
+                        String guid1 = FormatUtil.getPDFFormat(appNo, 1);
+                        if (StringUtils.isNotEmpty(guid1)) {
+                            InnerPatentPdfDTO dto1 = new InnerPatentPdfDTO();
+                            dto1.setPdfGuid(guid1);
+                            dto1.setType(1);
+                            list.add(dto1);
+                        }
+                        String guid2 = FormatUtil.getPDFFormat(appNo, 0);
+                        if (StringUtils.isNotEmpty(guid2)) {
+                            InnerPatentPdfDTO dto = new InnerPatentPdfDTO();
+                            dto.setPdfGuid(guid2);
+                            dto.setType(0);
+                            list.add(dto);
+                        }
+                    }
+                } else {  //若只有一个
+                    pdfUrl1 = pdfUrlStr.substring(pdfUrlStr.indexOf("http"), pdfUrlStr.indexOf("?"));
+                    if (pdfUrl1.contains("0A_CN_0.pdf")) {
+                        String guid1 = FormatUtil.getPDFFormat(appNo, 0);
+                        if (StringUtils.isNotEmpty(guid1)) {
+                            InnerPatentPdfDTO dto = new InnerPatentPdfDTO();
+                            dto.setPdfGuid(guid1);
+                            dto.setType(0);
+                            list.add(dto);
+                        }
+                    } else {
+                        String guid1 = FormatUtil.getPDFFormat(appNo, 1);
+                        if (StringUtils.isNotEmpty(guid1)) {
+                            InnerPatentPdfDTO dto = new InnerPatentPdfDTO();
+                            dto.setPdfGuid(guid1);
+                            dto.setType(1);
+                            list.add(dto);
+                        }
+                    }
+                }
+            }
+        }
+        return list;
+    }
 }