浏览代码

7/30 外部检索逻辑更改

lwhhszx 1 年之前
父节点
当前提交
4e3eb85328
共有 18 个文件被更改,包括 232 次插入161 次删除
  1. 1 1
      src/main/java/cn/cslg/pas/common/config/ElasticSearchClientConfig.java
  2. 2 0
      src/main/java/cn/cslg/pas/common/importTask/QuartzConditionDTO.java
  3. 8 10
      src/main/java/cn/cslg/pas/common/utils/ClaimUtils/ClaimSplitUtils.java
  4. 25 16
      src/main/java/cn/cslg/pas/common/utils/esDataForm/PatentClassifySplitter.java
  5. 1 0
      src/main/java/cn/cslg/pas/domain/es/Patent.java
  6. 13 0
      src/main/java/cn/cslg/pas/service/business/ImportTaskConditionService.java
  7. 5 12
      src/main/java/cn/cslg/pas/service/business/ImportTaskService.java
  8. 1 1
      src/main/java/cn/cslg/pas/service/business/es/EsFamilyService.java
  9. 28 20
      src/main/java/cn/cslg/pas/service/business/es/EsLegalEventService.java
  10. 11 6
      src/main/java/cn/cslg/pas/service/business/es/EsService.java
  11. 2 2
      src/main/java/cn/cslg/pas/service/common/PatentStarApiService.java
  12. 25 12
      src/main/java/cn/cslg/pas/service/importPatent/GetCataloguingFromWebThread.java
  13. 7 5
      src/main/java/cn/cslg/pas/service/importPatent/GetPatentPDFFromWebThread.java
  14. 9 2
      src/main/java/cn/cslg/pas/service/importPatent/GetPatentPictureFromWebThread.java
  15. 5 2
      src/main/java/cn/cslg/pas/service/importPatent/GetRightAndFullTextFromWebThread.java
  16. 4 32
      src/main/java/cn/cslg/pas/service/importPatent/ImportFromWebToEsService.java
  17. 2 3
      src/main/java/cn/cslg/pas/service/importPatent/SavePatentToEsThread.java
  18. 83 37
      src/main/java/cn/cslg/pas/service/importPatent/WebVOTransformService.java

+ 1 - 1
src/main/java/cn/cslg/pas/common/config/ElasticSearchClientConfig.java

@@ -56,7 +56,7 @@ public class  ElasticSearchClientConfig {
         public ElasticsearchClient elasticsearchClient() throws Exception {
             RestClientBuilder builder = RestClient.builder(new HttpHost(config, 9200, "http"));
             CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
-            credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials("elastic", "Xiaoshi221101"));
+            credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials("elastic", "xiaoshi221101"));
             SSLContext sslContext = SSLContextBuilder.create()
                     .loadTrustMaterial(new TrustSelfSignedStrategy())
                     .build();

+ 2 - 0
src/main/java/cn/cslg/pas/common/importTask/QuartzConditionDTO.java

@@ -14,6 +14,8 @@ public class QuartzConditionDTO {
      */
     private Integer importToId;
 
+    private Integer importToType;
+
     private String searchSetting;
     /**
      * 周期

+ 8 - 10
src/main/java/cn/cslg/pas/common/utils/ClaimUtils/ClaimSplitUtils.java

@@ -45,17 +45,16 @@ public class ClaimSplitUtils {
             if (content == null || content.equals("")) {
                 return patentRights;
             }
-            if(content.contains("@##"))
-            {
+            if (content.contains("@##")) {
                 patentRights = getSplitedRePatentClaim(content);
+            } else {
+                String regex = ClaimSplitUtils.getRegex(country, content);
+                if (regex == null) {
+                    reDefaultPatentClaim(patentRights, content);
+                    return patentRights;
+                }
+                patentRights = splitPatentRight(regex, content);
             }
-            String regex = ClaimSplitUtils.getRegex(country, content);
-            if (regex == null) {
-                reDefaultPatentClaim(patentRights, content);
-                return patentRights;
-            }
-            patentRights = splitPatentRight(regex, content);
-
             switch (country) {
                 case "CN":
                     loadCNPatentClaim(patentNo, patentRights);
@@ -79,7 +78,6 @@ public class ClaimSplitUtils {
     }
 
 
-
     private static final ArrayList<RePatentClaim> splitPatentRight(String regex, String content) {
         //获取拆分信息
         List<ClaimSplitVO> claimSplitVOS = ClaimSplitUtils.getClaimSpitVO(regex, content);

+ 25 - 16
src/main/java/cn/cslg/pas/common/utils/esDataForm/PatentClassifySplitter.java

@@ -25,27 +25,36 @@ public class PatentClassifySplitter {
         String level3 = "";
         String level4 = "";
         String level5 = "";
-        level1 = classify.substring(0, 1);
-        patentClassify.setLevel1(level1);
-        level2 = classify.substring(0, 3);
-        patentClassify.setLevel2(level2);
 
-        if (length >= 4) {
+
+        if (length >= 8) {
+            level1 = classify.substring(0, 1);
+            level2 = classify.substring(0, 3);
             level3 = classify.substring(0, 4);
             patentClassify.setLevel3(level3);
+            patentClassify.setLevel1(level1);
+
+            patentClassify.setLevel2(level2);
+            Integer s =classify.length();
 
-            if (length >= 8) {
-                Integer s =classify.length();
-
-                if(classify.contains("/"))
-                {
-                    s =classify.indexOf("/");
-                }
-                level4 = classify.substring(0, s);
-                patentClassify.setLevel4(level4);
-                level5 = classify;
-                patentClassify.setLevel5(level5);
+            if(classify.contains("/"))
+            {
+                s =classify.indexOf("/");
             }
+            level4 = classify.substring(0, s);
+            patentClassify.setLevel4(level4);
+            level5 = classify;
+            patentClassify.setLevel5(level5);
+        }
+
+     else  if (length >= 4) {
+            level1 =classify.substring(0,2);
+            level2= classify;
+            patentClassify.setLevel1(level1);
+
+            patentClassify.setLevel2(level2);
+
+
         }
         return patentClassify;
     }

+ 1 - 0
src/main/java/cn/cslg/pas/domain/es/Patent.java

@@ -129,6 +129,7 @@ public class Patent {
     /**
      * IPC分类号(主)
      */
+
     @JsonProperty("mipc")
     private PatentClassify mipc;
 

+ 13 - 0
src/main/java/cn/cslg/pas/service/business/ImportTaskConditionService.java

@@ -51,6 +51,7 @@ public class ImportTaskConditionService extends ServiceImpl<ImportTaskConditionM
         Boolean ifUpdate =quartzConditionDTO.getIfUpdate();
         String updateCycle=quartzConditionDTO.getUpdateCycle();
         ImportTaskCondition importTaskCondition = new ImportTaskCondition();
+        importTaskCondition.setProjectType(0);
         importTaskCondition.setSearchCondition(quartzConditionDTO.getSearchCondition());
         importTaskCondition.setProjectId(projectId);
         importTaskCondition.setDbType(quartzConditionDTO.getDBType());
@@ -86,10 +87,22 @@ public class ImportTaskConditionService extends ServiceImpl<ImportTaskConditionM
 
 
     public ImportTaskCondition addQuartzCondition(ImportTaskDTO importTaskDTO){
+
         PersonnelVO personnelVO = new PersonnelVO();
         personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
         Boolean ifUpdate =importTaskDTO.getIfUpdate();
         ImportTaskCondition importTaskCondition = new ImportTaskCondition();
+        if (importTaskDTO.getImportToId() != null) {
+            if (importTaskDTO.getImportToType().equals(0)) {
+                importTaskCondition.setProjectType(0);
+                importTaskCondition.setProjectId(importTaskDTO.getImportToId());
+            } else if (importTaskDTO.getImportToType().equals(1)) {
+                importTaskCondition.setProjectType(1);
+                importTaskCondition.setProjectId(importTaskDTO.getImportToId());
+            } else if (importTaskDTO.getImportToType().equals(2)) {
+                importTaskCondition.setProductId(importTaskDTO.getImportToId());
+            }
+        }
         importTaskCondition.setImportContent(importTaskDTO.getImportContent());
         importTaskCondition.setCrons(importTaskDTO.getCrons());
         importTaskCondition.setSearchCondition(importTaskDTO.getSearchCondition());

+ 5 - 12
src/main/java/cn/cslg/pas/service/business/ImportTaskService.java

@@ -141,27 +141,20 @@ public class ImportTaskService extends ServiceImpl<ImportTaskMapper, ImportTask>
         if (!importTaskDTO.getType().equals(1)) {
             importTaskDTO.setImportContent(MathUtils.BinaryToDecimal(importTaskDTO.getImportContent()));
         }
-        ImportTaskCondition importTaskCondition = null;
+        ImportTaskCondition importTaskCondition = new ImportTaskCondition();
+
 
         if (ifUpdate != null && ifUpdate) {
             QuartzConditionDTO quartzConditionDTO = new QuartzConditionDTO();
             BeanUtils.copyProperties(importTaskDTO, quartzConditionDTO);
+
             importTaskCondition = importTaskConditionService.addQuartzCondition(quartzConditionDTO);
         } else {
+
+
             importTaskCondition = importTaskConditionService.addQuartzCondition(importTaskDTO);
         }
 
-        if (importTaskDTO.getImportToId() != null) {
-            if (importTaskDTO.getImportToType().equals(0)) {
-                importTaskCondition.setProjectType(0);
-                importTaskCondition.setProjectId(importTaskDTO.getImportToId());
-            } else if (importTaskDTO.getImportToType().equals(1)) {
-                importTaskCondition.setProjectType(1);
-                importTaskCondition.setProjectId(importTaskDTO.getImportToId());
-            } else if (importTaskDTO.getImportToType().equals(2)) {
-                importTaskCondition.setProductId(importTaskDTO.getImportToId());
-            }
-        }
 
         //装载任务
         ImportTask importTask = new ImportTask();

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

@@ -105,7 +105,7 @@ public class EsFamilyService {
         String familyNum = "inpadoc_family_num";
         String familyName = "inpadoc_family_id";
         String source = "";
-        source = "ctx._source." + familyName + "=" + patentFamilyId + ";" + "ctx._source." + familyNum + "=" + patentFamilyCount + ";";
+        source = "ctx._source." + familyName + "='" + patentFamilyId + "';" + "ctx._source." + familyNum + "=" + patentFamilyCount + ";";
         String finalSource = source;
         InlineScript inlineScript = InlineScript.of(i ->  i.lang("painless").source(finalSource));
         Script script = Script.of(i -> i.inline(inlineScript));

+ 28 - 20
src/main/java/cn/cslg/pas/service/business/es/EsLegalEventService.java

@@ -3,6 +3,7 @@ package cn.cslg.pas.service.business.es;
 import cn.cslg.pas.common.vo.ChinaLeagalStatus;
 import cn.cslg.pas.common.vo.StarPatentVO;
 import cn.cslg.pas.domain.es.*;
+import cn.cslg.pas.exception.ExceptionEnum;
 import cn.cslg.pas.exception.XiaoShiException;
 import cn.cslg.pas.service.common.PatentStarApiService;
 import cn.cslg.pas.service.importPatent.WebVOTransformService;
@@ -30,7 +31,8 @@ import java.util.stream.Collectors;
 public class EsLegalEventService {
     private final ElasticsearchClient client;
     private final PatentStarApiService patentStarApiService;
-   private final WebVOTransformService webVOTransformService;
+    private final WebVOTransformService webVOTransformService;
+
     //根据专利号查询同族专利号
     public List<LegalEvent> getEsQutePatentByNos(String patentNo) throws Exception {
         SearchRequest.Builder builder = new SearchRequest.Builder();
@@ -104,25 +106,31 @@ public class EsLegalEventService {
             }
             List<LegalEvent> legalEvents = new ArrayList<>();
             //根据专利号查询是否有引用信息
+            try {
+                this.deleteByPatentNo(patent.getPatentNo());
 
-                List<ChinaLeagalStatus> chinaLeagalStatuses = JSON.parseArray(cnLegalApiStr, ChinaLeagalStatus.class);
-                chinaLeagalStatuses.forEach(item -> {
-                    LegalEvent legalEvent1 = new LegalEvent();
-                    legalEvent1.setEventDate(item.getLegalDate());
-                    legalEvent1.setCode(item.getLegalCode());
-                    legalEvent1.setAppNo(patent.getAppNo());
-                    legalEvent1.setGrantNo(patent.getGrantNo());
-                    legalEvent1.setPublicNo(patent.getPublicNo());
-                    legalEvent1.setDescription(item.getLegalStatusInfo());
-                    legalEvent1.setName(item.getLegalStatus());
-                    legalEvents.add(legalEvent1);
-                    try {
-                        String reId = this.addLegalEvent(legalEvent1);
-                    } catch (Exception e) {
-                        throw new XiaoShiException(e.getMessage());
-                    }
-                });
-            webVOTransformService.transLegalEvent(patent,legalEvents);
+            } catch (Exception e) {
+                e.printStackTrace();
+                throw new XiaoShiException(ExceptionEnum.BUSINESS_ERROR,"删除事务错误");
+            }
+            List<ChinaLeagalStatus> chinaLeagalStatuses = JSON.parseArray(cnLegalApiStr, ChinaLeagalStatus.class);
+            chinaLeagalStatuses.forEach(item -> {
+                LegalEvent legalEvent1 = new LegalEvent();
+                legalEvent1.setEventDate(item.getLegalDate());
+                legalEvent1.setCode(item.getLegalCode());
+                legalEvent1.setAppNo(patent.getAppNo());
+                legalEvent1.setGrantNo(patent.getGrantNo());
+                legalEvent1.setPublicNo(patent.getPublicNo());
+                legalEvent1.setDescription(item.getLegalStatusInfo());
+                legalEvent1.setName(item.getLegalStatus());
+                legalEvents.add(legalEvent1);
+                try {
+                    String reId = this.addLegalEvent(legalEvent1);
+                } catch (Exception e) {
+                    throw new XiaoShiException(e.getMessage());
+                }
+            });
+            webVOTransformService.transLegalEvent(patent, legalEvents);
         }
         return "";
     }
@@ -138,7 +146,7 @@ public class EsLegalEventService {
         //授权号
         Query q3 = QueryBuilders.term(t -> t.field("grant_no").value(patentNo));
         Query query = QueryBuilders.bool(i -> i.should(q1, q2, q3));
-        DeleteByQueryRequest request = DeleteByQueryRequest.of(i -> i.index("patent").refresh(true).query(query));
+        DeleteByQueryRequest request = DeleteByQueryRequest.of(i -> i.index("legal_event").refresh(true).query(query));
         try {
             client.deleteByQuery(request);
             return 1;

+ 11 - 6
src/main/java/cn/cslg/pas/service/business/es/EsService.java

@@ -914,8 +914,8 @@ public class EsService {
         String publicNo1 = publicNo;
         String grantNo1 = grantNo;
         FamilyPatent patent1 = familyPatents.stream().filter(item ->
-                publicNo1.equals(item.getPublicNo()) || publicNo1.equals(item.getGrantNo()) || grantNo1.equals(item.getPublicNo())
-                        || grantNo1.equals(item.getGrantNo())
+                publicNo1.equals(item.getPublicNo()) || publicNo1.equals(item.getGrantNo()) || publicNo1.equals(item.getAppNo()) || grantNo1.equals(item.getPublicNo())
+                        || grantNo1.equals(item.getGrantNo()) || grantNo1.equals(item.getAppNo()) || appNo1.equals(item.getAppNo()) || appNo1.equals(item.getPublicNo()) || appNo1.equals(item.getGrantNo())
         ).findFirst().orElse(null);
         if (patent1 == null) {
             patent1 = new FamilyPatent();
@@ -970,11 +970,17 @@ public class EsService {
         }
         for (int i = 0; i < familyPatents.size(); i++) {
             FamilyPatent familyPatent = familyPatents.get(i);
-            FamilyPatent familyPatentNew = familyPatentsNew.stream().filter(item -> (item.getPublicNo() != null && item.getPublicNo().equals(familyPatent.getPublicNo()))
-                    || (item.getGrantNo() != null && item.getGrantNo().equals(familyPatent.getGrantNo()))).findFirst().orElse(null);
+            FamilyPatent familyPatentNew = familyPatentsNew.stream().filter(item -> (item.getPublicNo() != null && (item.getPublicNo().equals(familyPatent.getPublicNo()) || item.getPublicNo().equals(familyPatent.getAppNo()) || item.getPublicNo().equals(familyPatent.getGrantNo())))
+                    || (item.getGrantNo() != null && (item.getGrantNo().equals(familyPatent.getGrantNo()) || item.getGrantNo().equals(familyPatent.getPublicNo()) || item.getGrantNo().equals(familyPatent.getAppNo())) || (item.getAppNo() != null && (item.getAppNo().equals(familyPatent.getGrantNo()) || item.getAppNo().equals(familyPatent.getPublicNo()) || item.getAppNo().equals(familyPatent.getAppNo()))))).findFirst().orElse(null);
             if (familyPatentNew == null) {
                 familyPatentsNew.add(familyPatent);
+            } else {
+                if (familyPatentNew.getAppNo() == null && familyPatent.getGrantNo() == null) {
+                    familyPatentsNew.remove(familyPatentNew);
+                    familyPatentsNew.add(familyPatent);
+                }
             }
+
         }
         return familyPatentsNew;
     }
@@ -991,7 +997,7 @@ public class EsService {
 
         for (int i = 0; i < nos.size(); i++) {
             FamilyPatent familyPatentNew = familyPatents.stream().filter(item -> (item.getPublicNo() != null && item.getPublicNo().equals(no))
-                    || (item.getGrantNo() != null && item.getGrantNo().equals(no))).findFirst().orElse(null);
+                    || (item.getGrantNo() != null && item.getGrantNo().equals(no) || (item.getAppNo() != null && item.getAppNo().equals(no)))).findFirst().orElse(null);
             if (familyPatentNew == null) {
                 familyPatentNew = new FamilyPatent();
                 familyPatentNew.setPublicNo(nos.get(i));
@@ -1062,7 +1068,6 @@ public class EsService {
     }
 
 
-
     /**
      * 更新专利事务
      *

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

@@ -147,8 +147,8 @@ System.out.println("search time:"+(end-start));
         BeanUtils.copyProperties(PatentStarListDTO, patentStarDto);
 
         if(patentStarDto.getOrderBy()==null){
-            patentStarDto.setOrderBy("");
-            patentStarDto.setDBType("DESC");
+            patentStarDto.setOrderBy("AD");
+            patentStarDto.setOrderByType("DESC");
         }
 
         String json = JSONObject.toJSONString(patentStarDto);

+ 25 - 12
src/main/java/cn/cslg/pas/service/importPatent/GetCataloguingFromWebThread.java

@@ -59,6 +59,9 @@ public class GetCataloguingFromWebThread extends Thread {
             } catch (Exception e) {
 
             }
+            if (uploadPatentWebDTOs.size() == 0) {
+                break;
+            }
             UploadPatentWebDTO uploadPatentWebDTO = uploadPatentWebDTOs.remove(0);
             try {
                 //根据专利申请号查询著录并装载信息
@@ -72,15 +75,20 @@ public class GetCataloguingFromWebThread extends Thread {
                     patentZhuLuStr = patentStarApiService.getENBibApi(uploadPatentWebDTO.getStarPatentVO().getPN());
                 }
                 if (patentZhuLuStr != null && !patentZhuLuStr.trim().equals("") && !patentZhuLuStr.equals("{}") && !patentZhuLuStr.contains("请求不合法")) {
-                    webVOTransformService.loadPatent(uploadPatentWebDTO);
                     if (starPatentVO.getAN().startsWith("CN")) {
-                        webVOTransformService.loadCNPatent(patentZhuLuStr, uploadPatentWebDTO.getPatent(), starPatentVO);
+                        webVOTransformService.loadCNPatent(patentZhuLuStr, uploadPatentWebDTO);
                     } else {
-                        webVOTransformService.loadWorldPatent(patentZhuLuStr, uploadPatentWebDTO.getPatent());
+                        webVOTransformService.loadWorldPatent(patentZhuLuStr, uploadPatentWebDTO);
                     }
                 }
 
                 EsService esService = applicationContext.getBean(EsService.class);
+ //添加事务
+                if (uploadPatentWebDTO.getStarPatentVO().getAN().contains("CN")) {
+                    EsLegalEventService esLegalEventService =applicationContext.getBean(EsLegalEventService.class);
+                    //添加法律事务
+                    esLegalEventService.addEsLegalEvent(uploadPatentWebDTO.getPatent(), starPatentVO.getANO());
+                }
 
                 // 添加同族专利
                 String familyPatentNoStr = patentStarApiService.getFamilyByPubNoApi(uploadPatentWebDTO.getPatent().getPublicNo());
@@ -96,18 +104,13 @@ public class GetCataloguingFromWebThread extends Thread {
                         }
                     }
                 }
-                familyPatentNos.add(uploadPatentWebDTO.getPatent().getAppNo());
 
-                if (familyPatentNos.size() != 0) {
+
                     EsPatentFamilyDTO esPatentFamilyDTO = esService.addEsPatentFamily(uploadPatentWebDTO.getPatent(), familyPatentNos, "inpadoc");
                     uploadPatentWebDTO.getPatent().setInpadocFamilyNum(esPatentFamilyDTO.getFamilyNum());
                     uploadPatentWebDTO.getPatent().setInpadocFamilyId(esPatentFamilyDTO.getPatentFamilyId());
-                }
-                if (uploadPatentWebDTO.getStarPatentVO().getAN().contains("CN")) {
-                    EsLegalEventService esLegalEventService =applicationContext.getBean(EsLegalEventService.class);
-                    //添加法律事务
-                    esLegalEventService.addEsLegalEvent(uploadPatentWebDTO.getPatent(), starPatentVO.getANO());
-                }
+
+
                 //添加引用专利
                 Patent patent = uploadPatentWebDTO.getPatent();
                 String nos = starPatentVO.getCO();
@@ -132,7 +135,7 @@ public class GetCataloguingFromWebThread extends Thread {
                 e.printStackTrace();
             }
         }
-        importFromWebToEsService.setPatentToEsProductAll("catalogDone");
+        this.sendDone();
     }
 
 
@@ -190,4 +193,14 @@ public class GetCataloguingFromWebThread extends Thread {
     }
 
 
+    public void sendDone() {
+        GetRightAndFullTextFromWebThread getRightAndFullTextFromWebThread = importFromWebToEsService.getRightAndFullTextFromWebThreadObject();
+        SavePatentToEsThread savePatentToEsThread = importFromWebToEsService.getSavePatentToEsThreadObject();
+        if (getRightAndFullTextFromWebThread != null) {
+            getRightAndFullTextFromWebThread.setIfProductAll(true);
+        } else {
+            savePatentToEsThread.setIfProductAll(true);
+        }
+    }
+
 }

+ 7 - 5
src/main/java/cn/cslg/pas/service/importPatent/GetPatentPDFFromWebThread.java

@@ -47,16 +47,20 @@ public class GetPatentPDFFromWebThread extends Thread {
         while ((!ifProductAll || uploadPatentWebDTOs.size() > 0) && importTaskAMVO.getState().equals(1)) {
 
             try {
-
                 if (uploadPatentWebDTOs.size() == 0) {
                     taskLock.lock();
                     taskCondition.await();
                 }
             } catch (Exception e) {
-
+            e.printStackTrace();
+            }
+            if (uploadPatentWebDTOs.size() == 0) {
+                break;
             }
             UploadPatentWebDTO uploadPatentWebDTO = uploadPatentWebDTOs.remove(0);
             try {
+
+
                 String usedPatentNo;
                 StarPatentVO starPatentVO = uploadPatentWebDTO.getStarPatentVO();
                 if (starPatentVO.getPN() != null && !starPatentVO.getPN().equals("")) {
@@ -73,7 +77,6 @@ public class GetPatentPDFFromWebThread extends Thread {
 
                     //若没有取到说明书pdf,则将当前申请号和备注信息存入问题记录表,并返回空对象
                     if (!pdfUrlStr.equals("")) {
-
                     if (pdfUrlStr.contains("|http")) {  //若包含公开和授权两个pdf
                         String[] pdfUrlArr = pdfUrlStr.split("\\|http");
                         pdfUrl1 = pdfUrlArr[0].substring(pdfUrlArr[0].indexOf("http"), pdfUrlArr[0].indexOf("?"));
@@ -113,8 +116,7 @@ public class GetPatentPDFFromWebThread extends Thread {
                         }
                     }
                     //根据专利号调用"获得世界专利pdf"接口,获得pdf的url地址
-                }
-                    else {
+                } else {
 
                         recordQuestionPatent(starPatentVO.getAN());
                     }

+ 9 - 2
src/main/java/cn/cslg/pas/service/importPatent/GetPatentPictureFromWebThread.java

@@ -55,10 +55,13 @@ public class GetPatentPictureFromWebThread extends Thread {
                 }
             } catch (Exception e) {
             }
+            if (uploadPatentWebDTOs.size() == 0) {
+                break;
+            }
             UploadPatentWebDTO uploadPatentWebDTO = uploadPatentWebDTOs.remove(0);
             try {
-                String usedNo = uploadPatentWebDTO.getStarPatentVO().getPA();
-                if (usedNo == null) {
+                String usedNo = uploadPatentWebDTO.getStarPatentVO().getPN();
+                if (usedNo == null||usedNo.trim().equals("")) {
                     usedNo = uploadPatentWebDTO.getStarPatentVO().getGN();
                 }
                 if (usedNo.contains("CN")) {
@@ -74,6 +77,10 @@ public class GetPatentPictureFromWebThread extends Thread {
                     } else {
                         recordQuestionPatent(uploadPatentWebDTO.getStarPatentVO().getANO());
                     }
+                    //添加iguan、】饿附图
+                    
+                    WebVOTransformService webVOTransformService =applicationContext.getBean(WebVOTransformService.class);
+                    webVOTransformService.getCNPatentPicture(uploadPatentWebDTO);
                 } else {
                     ImportSinglePatentService importSinglePatentService = applicationContext.getBean(ImportSinglePatentService.class);
                     byte[] bytes = importSinglePatentService.getImages(usedNo);

+ 5 - 2
src/main/java/cn/cslg/pas/service/importPatent/GetRightAndFullTextFromWebThread.java

@@ -74,7 +74,7 @@ public class GetRightAndFullTextFromWebThread extends Thread {
                 e.printStackTrace();
             }
         }
-        importFromWebToEsService.setPatentToEsProductAll("rightDone");
+        this.sendDone();
     }
 
     public GetRightAndFullTextFromWebThread(TaskThread taskThread, ImportFromWebToEsService importFromWebToEsService) {
@@ -112,5 +112,8 @@ public class GetRightAndFullTextFromWebThread extends Thread {
         SavePatentToEsThread savePatentToEsThread = importFromWebToEsService.getSavePatentToEsThreadObject();
         savePatentToEsThread.awakeTask(uploadPatentWebDTO);
     }
-
+    public void sendDone() {
+        SavePatentToEsThread savePatentToEsThread = importFromWebToEsService.getSavePatentToEsThreadObject();
+            savePatentToEsThread.setIfProductAll(true);
+    }
 }

+ 4 - 32
src/main/java/cn/cslg/pas/service/importPatent/ImportFromWebToEsService.java

@@ -237,7 +237,9 @@ public class ImportFromWebToEsService implements PatentImportImp {
 
 
                     Integer pageStartNum = (i * 50) >= startNum ? 0 : startNum - (i * 50);
+
                     Integer pageEndNum = starPatents.size();
+
                     //遍历这一页的专利
                     for (int j = pageStartNum; j < pageEndNum; j++) {
                         StarPatentVO starPatentVO = starPatents.get(j);
@@ -248,8 +250,10 @@ public class ImportFromWebToEsService implements PatentImportImp {
                                     || item.equals(starPatentVO.getGN())
                                     || item.equals(starPatentVO.getANO()));
                         }
+
                         UploadPatentWebDTO uploadPatentWebDTO = new UploadPatentWebDTO();
                         Patent patent = new Patent();
+
                         //装载start
                         uploadPatentWebDTO.setStarPatentVO(starPatentVO);
                         uploadPatentWebDTO.setPatent(patent);
@@ -261,15 +265,9 @@ public class ImportFromWebToEsService implements PatentImportImp {
                         if (ifCataloguing == '1') {
                             getCataloguingFromWebThread.awakeTask(uploadPatentWebDTO);
                         }
-
                         if (ifAddPicture == '1') {
                             getPatentPictureFromWebThread.awakeTask(uploadPatentWebDTO);
                         }
-
-                        if (ifAddFullText == '1') {
-                            getRightAndFullTextFromWebThread.awakeTask(uploadPatentWebDTO);
-                        }
-
                         if (ifPdf == '1') {
                             getPatentPDFFromWebThread.awakeTask(uploadPatentWebDTO);
                         }
@@ -299,10 +297,6 @@ public class ImportFromWebToEsService implements PatentImportImp {
             if (ifAddPicture == '1') {
                 getPatentPictureFromWebThread.setIfProductAll(true);
             }
-            if (ifAddFullText == '1') {
-                getRightAndFullTextFromWebThread.setIfProductAll(true);
-                System.out.println("fullTextawake");
-            }
             if (ifPdf == '1') {
                 getPatentPDFFromWebThread.setIfProductAll(true);
             }
@@ -324,28 +318,6 @@ public class ImportFromWebToEsService implements PatentImportImp {
     }
 
 
-    public void loadPatentMessageDone(UploadPatentWebDTO uploadPatentWebDTO) {
-        synchronized ("装载专利信息") {
-            if (importTaskAMVO.getMessageThreadCounter() > 1) {
-                // 根据index查询是否有相同的
-                List<UploadPatentWebDTO> dtos = uploadPatentWebDTOS.stream()
-                        .filter(item -> item.getIndex().equals(uploadPatentWebDTO.getIndex())).collect(Collectors.toList());
-                if (dtos.size() > 0) {
-                    Patent orgPatent = uploadPatentWebDTO.getPatent();
-                    Patent patent = dtos.get(0).getPatent();
-                    BeanUtils.copyProperties(patent, orgPatent, FormatUtil.getNullPropertyNames(patent));
-                    uploadPatentWebDTO.setPatent(orgPatent);
-                    uploadPatentWebDTOS.removeIf(i -> i.getIndex().equals(uploadPatentWebDTO.getIndex()));
-                    savePatentToEsThread.awakeTask(uploadPatentWebDTO);
-                } else {
-                    uploadPatentWebDTOS.add(uploadPatentWebDTO);
-                }
-            } else {
-                savePatentToEsThread.awakeTask(uploadPatentWebDTO);
-            }
-        }
-    }
-
 
     public void setPatentToEsProductAll(String message) {
         synchronized ("装载专利信息") {

+ 2 - 3
src/main/java/cn/cslg/pas/service/importPatent/SavePatentToEsThread.java

@@ -182,6 +182,7 @@ public class SavePatentToEsThread extends Thread {
         this.importTaskAMVO = taskThread.getImportTaskAMVO();
     }
 
+
     public void awakeTask(UploadPatentWebDTO uploadPatentWebDTO) {
         synchronized ("") {
             UploadPatentWebDTO uploadPatentWebDTO1 = new UploadPatentWebDTO();
@@ -196,8 +197,8 @@ public class SavePatentToEsThread extends Thread {
         }
     }
 
-    public void setIfProductAll(Boolean ifProductAll) {
 
+    public void setIfProductAll(Boolean ifProductAll) {
         this.ifProductAll = ifProductAll;
         System.out.println("专利导入全部结束" + this.ifProductAll + importTaskAMVO.getId());
         if (taskLock.tryLock()) {
@@ -208,7 +209,6 @@ public class SavePatentToEsThread extends Thread {
     }
 
 
-
     public Patent formPatent(Patent patent, Patent orgPatent) {
         String publicNo = patent.getPublicNo();
         String grantNo = patent.getGrantNo();
@@ -225,7 +225,6 @@ public class SavePatentToEsThread extends Thread {
             }
             patent.setPublicNo(publicNo);
             patent.setGrantNo(grantNo);
-
             if (orgPatent.getClaim() != null && orgPatent.getClaim().size() > 0 && orgPatent.getGrantNo() != null && patent.getGrantNo() == null) {
                 patent.setClaim(orgPatent.getClaim());
             }

+ 83 - 37
src/main/java/cn/cslg/pas/service/importPatent/WebVOTransformService.java

@@ -3,15 +3,17 @@ package cn.cslg.pas.service.importPatent;
 import cn.cslg.pas.common.core.IgnoreDTDEntityResolver;
 import cn.cslg.pas.common.dto.UploadPatentWebDTO;
 import cn.cslg.pas.common.dto.es.EsCustomFieldDTO;
-import cn.cslg.pas.common.utils.DateUtils;
-import cn.cslg.pas.common.utils.DateUtils2;
+import cn.cslg.pas.common.utils.*;
+import cn.cslg.pas.common.utils.ClaimUtils.ClaimSplitUtils;
 import cn.cslg.pas.common.utils.esDataForm.AddressSplitter;
 import cn.cslg.pas.common.utils.esDataForm.PatentClassifySplitter;
-import cn.cslg.pas.common.vo.ImportTaskAMVO;
-import cn.cslg.pas.common.vo.StarPatentVO;
-import cn.cslg.pas.common.vo.UploadParamsVO;
+import cn.cslg.pas.common.vo.*;
 import cn.cslg.pas.domain.es.*;
+import cn.cslg.pas.exception.ExceptionEnum;
+import cn.cslg.pas.exception.XiaoShiException;
 import cn.cslg.pas.service.business.CustomFieldService;
+import cn.cslg.pas.service.common.FileManagerService;
+import cn.cslg.pas.service.common.PatentStarApiService;
 import com.alibaba.fastjson.JSON;
 import lombok.RequiredArgsConstructor;
 import org.apache.xml.utils.QName;
@@ -21,6 +23,8 @@ import org.dom4j.XPath;
 import org.dom4j.io.SAXReader;
 import org.springframework.stereotype.Service;
 
+import java.io.File;
+import java.io.IOException;
 import java.io.Reader;
 import java.io.StringReader;
 import java.util.ArrayList;
@@ -35,6 +39,8 @@ import java.util.stream.Collectors;
 @RequiredArgsConstructor
 public class WebVOTransformService {
     private final CustomFieldService customFieldService;
+    private final PatentStarApiService patentStarApiService;
+    private final FileManagerService fileManagerService;
     private static List<String> SCHOOL = new ArrayList<String>() {{
         add("大学");
         add("学院");
@@ -55,21 +61,14 @@ public class WebVOTransformService {
     }};
 
     //装载中国专利
-    public void loadCNPatent(String chinaPatentZhuLuStr, Patent patent, StarPatentVO starPatentVO) {
+    public void loadCNPatent(String chinaPatentZhuLuStr, UploadPatentWebDTO uploadPatentWebDTO) {
+        this.loadPatent(uploadPatentWebDTO, true);
+        Patent patent = uploadPatentWebDTO.getPatent();
         patent.setPatentNo(patent.getAppNo());
         if (chinaPatentZhuLuStr != null && !chinaPatentZhuLuStr.trim().equals("") && !chinaPatentZhuLuStr.equals("{}") && !chinaPatentZhuLuStr.contains("请求不合法")) {
             List<StarPatentVO> chinaPatentZhuLus = JSON.parseArray(chinaPatentZhuLuStr, StarPatentVO.class);
             StarPatentVO chinaPatentZhuLu = chinaPatentZhuLus.get(0);
 
-            //装载 申请人地址
-            this.loadApplicantAddr(patent, chinaPatentZhuLu.getDZ(), starPatentVO.getCO());
-
-            //装载代理人
-            this.loadAgent(patent, chinaPatentZhuLu.getAT());
-
-            //装载发明人
-            this.loadInventor(patent, chinaPatentZhuLu.getIV());
-
             //装载优先权号、优先权国家、优先权日
             this.loadPriorities(patent, chinaPatentZhuLu.getPR());
 
@@ -79,7 +78,7 @@ public class WebVOTransformService {
 
 
     //装载专利信息
-    public void loadPatent(UploadPatentWebDTO uploadPatentWebDTO) {
+    public void loadPatent(UploadPatentWebDTO uploadPatentWebDTO, Boolean ifCn) {
         String country = "";
         Patent patent = uploadPatentWebDTO.getPatent();
         StarPatentVO starPatentVO = uploadPatentWebDTO.getStarPatentVO();
@@ -93,16 +92,11 @@ public class WebVOTransformService {
         //装载公开号
         this.loadPublicNo(patent, starPatentVO.getPN(), starPatentVO.getGN());
 
-
-        this.loadCountry(patent, true);
-
+        this.loadCountry(patent, ifCn);
 
         //装载申请人地址
         this.loadApplicantAddr(patent, starPatentVO.getDZ(), starPatentVO.getCO());
 
-        //装载IPC分类号
-        this.loadPatentIPC(patent, starPatentVO.getMC(), starPatentVO.getIC());
-
 
         //装载摘要
         this.loadAbstractStr(patent, starPatentVO.getAB());
@@ -125,7 +119,12 @@ public class WebVOTransformService {
         //装载代理机构
         this.loadAgency(patent, starPatentVO.getAGN());
 
-
+        //装载IPC分类号
+        if (patent.getPatentType().equals("3")) {
+            this.loadPatentLoc(patent, starPatentVO.getMC(), starPatentVO.getIC());
+        } else {
+            this.loadPatentIPC(patent, starPatentVO.getMC(), starPatentVO.getIC());
+        }
         //装载公告日
         this.loadGrantDate(patent, starPatentVO.getPD(), starPatentVO.getGD());
         //装载公开日
@@ -144,28 +143,18 @@ public class WebVOTransformService {
 
 
     // 装载世界专利
-    public void loadWorldPatent(String worldPatentZhuLuStr, Patent patent) {
+    public void loadWorldPatent(String worldPatentZhuLuStr, UploadPatentWebDTO uploadPatentWebDTO) {
         List<StarPatentVO> worldPatentZhuLus = JSON.parseArray(worldPatentZhuLuStr, StarPatentVO.class);
         StarPatentVO worldPatentZhuLu = worldPatentZhuLus.get(0);
-        //装载申请号
-        this.loadApplicationNo(patent, worldPatentZhuLu.getEpoAppNo());
-
-        //装载公开号
-        this.loadPublicNo(patent, worldPatentZhuLu.getDocdbPubNo(), null);
+        Patent patent = uploadPatentWebDTO.getPatent();
 
-        this.loadCountry(patent, false);
+        this.loadPatent(uploadPatentWebDTO, false);
         //装载申请日
         this.loadAppDate(patent, worldPatentZhuLu.getAppDate());
 
         //装载公开日
         this.loadPublicDate(patent, worldPatentZhuLu.getPubDate(), null);
 
-        //装载IPC分类号
-        if (patent.getPatentType().equals(3)) {
-            this.loadPatentLoc(patent, worldPatentZhuLu.getMC(), worldPatentZhuLu.getIpc());
-        } else {
-            this.loadPatentIPC(patent, worldPatentZhuLu.getMC(), worldPatentZhuLu.getIpc());
-        }
         //装载CPC分类号
         this.loadPatentCPC(patent, worldPatentZhuLu.getCpc());
 
@@ -366,6 +355,12 @@ public class WebVOTransformService {
                 patent.setLoc(Arrays.asList(patentClassify));
             }
         }
+        PatentClassify patentClassify = new PatentClassify();
+        patentClassify.setLevel1("");
+        patentClassify.setLevel2("");
+        patentClassify.setLevel3("");
+        patent.setMipc(patentClassify);
+        patent.setIpc(new ArrayList<>());
     }
 
     /**
@@ -757,7 +752,11 @@ public class WebVOTransformService {
                 text.setIfOrigin(true);
 
                 patent.setClaim(Arrays.asList(text));
-
+                PatentRightParams params = new PatentRightParams();
+                params.setContent(reClaim);
+                params.setPatentNo(patent.getPatentNo());
+                List<RePatentClaim> rePatentClaims = ClaimSplitUtils.formatPatentRight(params);
+                System.out.println(rePatentClaims);
             }
         } catch (Exception e) {
             e.printStackTrace();
@@ -854,5 +853,52 @@ public class WebVOTransformService {
         return esCustomFieldDTOList;
     }
 
+    /**
+     * 获取附图
+     *
+     * @param appNo
+     * @return
+     */
+    public List<String> getExternalFigure(String appNo) throws IOException {
+        List<String> list = new ArrayList<>();
+        String wgPictureApi = patentStarApiService.getWGPictureApi(appNo);
+        if (StringUtils.isNotEmpty(wgPictureApi)) {
+            if (wgPictureApi.contains("|http")) {
+                String[] urlArr = wgPictureApi.split("\\|");
+                list.addAll(Arrays.asList(urlArr));
+            } else {
+                list.add(wgPictureApi);
+            }
+        }
+        return list;
+    }
+
+    public void getCNPatentPicture(UploadPatentWebDTO uploadPatentWebDTO) {
+        try {
+            Long startMillis = System.currentTimeMillis();
+            List<String> pictureUrls = patentStarApiService.getExternalFigure(uploadPatentWebDTO.getStarPatentVO().getANO());
+            Long endMillis = System.currentTimeMillis();
+
+            System.out.println("获取图片时间" + (endMillis - startMillis));
+            Patent patent = uploadPatentWebDTO.getPatent();
+            if (pictureUrls != null && pictureUrls.size() > 0) {
+                for (int i = 0; i < pictureUrls.size(); i++) {
+                    String pictureUrl = pictureUrls.get(i);
+                    Long s4 = System.currentTimeMillis();
+                    File file = FileUtils.getPictureFileByUrl(pictureUrl);
+                    Long e4 = System.currentTimeMillis();
+                    System.out.println("下载文件耗时" + (e4 - s4));
+                    String guid = FormatUtil.getPictureFormat(patent.getAppNo()) + (i + 1);
+                    fileManagerService.uploadFileWithGuid(file, guid);
+                    file.delete();
+                }
+
+            }
+
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw new XiaoShiException(ExceptionEnum.BUSINESS_ERROR, "添加附图错误");
+        }
+    }
 
 }