浏览代码

Merge remote-tracking branch 'origin/master'

xiexiang 1 年之前
父节点
当前提交
afd8fc76aa
共有 34 个文件被更改,包括 517 次插入151 次删除
  1. 13 0
      src/main/java/cn/cslg/pas/common/config/ElasticSearchClientConfig.java
  2. 4 4
      src/main/java/cn/cslg/pas/common/config/WebSocketConfig.java
  3. 4 0
      src/main/java/cn/cslg/pas/common/dto/PatentStarListDTO.java
  4. 10 0
      src/main/java/cn/cslg/pas/common/vo/es/PatentFamilyMessageWithId.java
  5. 2 2
      src/main/java/cn/cslg/pas/controller/PatentController.java
  6. 38 0
      src/main/java/cn/cslg/pas/domain/business/PatentImportErrorLog.java
  7. 9 1
      src/main/java/cn/cslg/pas/factorys/EsCountAnalyseBuilderFactory/ChildCountAnalysisBuilder.java
  8. 25 3
      src/main/java/cn/cslg/pas/factorys/EsCountAnalyseBuilderFactory/ChildNestedAnalyseBuilder.java
  9. 11 0
      src/main/java/cn/cslg/pas/factorys/EsCountAnalyseBuilderFactory/DateCountAnalyssBuilder.java
  10. 4 0
      src/main/java/cn/cslg/pas/factorys/EsCountAnalyseBuilderFactory/IEsCountAnalysisBuilder.java
  11. 11 0
      src/main/java/cn/cslg/pas/factorys/EsCountAnalyseBuilderFactory/NestedCountAnalysisBuilder.java
  12. 11 0
      src/main/java/cn/cslg/pas/factorys/EsCountAnalyseBuilderFactory/PrioritiesCountAnalysisBuilder.java
  13. 11 0
      src/main/java/cn/cslg/pas/factorys/EsCountAnalyseBuilderFactory/RangeCountAnalysisBuilder.java
  14. 11 0
      src/main/java/cn/cslg/pas/factorys/EsCountAnalyseBuilderFactory/TermsCountAnalysisBuilder.java
  15. 14 0
      src/main/java/cn/cslg/pas/mapper/PatentImportErrorLogMapper.java
  16. 0 2
      src/main/java/cn/cslg/pas/service/business/CustomFieldService.java
  17. 14 0
      src/main/java/cn/cslg/pas/service/business/PatentImportErrorLogService.java
  18. 4 2
      src/main/java/cn/cslg/pas/service/business/ReportProjectService.java
  19. 3 2
      src/main/java/cn/cslg/pas/service/business/es/EsCountService.java
  20. 181 73
      src/main/java/cn/cslg/pas/service/business/es/EsService.java
  21. 3 3
      src/main/java/cn/cslg/pas/service/common/FileManagerService.java
  22. 1 0
      src/main/java/cn/cslg/pas/service/common/PatentStarApiService.java
  23. 9 4
      src/main/java/cn/cslg/pas/service/importPatent/GetCataloguingFromWebThread.java
  24. 3 3
      src/main/java/cn/cslg/pas/service/importPatent/GetPatentFromExcelThread.java
  25. 8 8
      src/main/java/cn/cslg/pas/service/importPatent/GetPatentPDFFromWebThread.java
  26. 1 1
      src/main/java/cn/cslg/pas/service/importPatent/GetRightAndFullTextFromWebThread.java
  27. 37 12
      src/main/java/cn/cslg/pas/service/importPatent/ImportFromWebToEsService.java
  28. 8 6
      src/main/java/cn/cslg/pas/service/importPatent/ImportSinglePatentService.java
  29. 1 0
      src/main/java/cn/cslg/pas/service/importPatent/SavePatentToEsThread.java
  30. 1 0
      src/main/java/cn/cslg/pas/service/importPatent/TaskThread.java
  31. 1 1
      src/main/resources/jsons/patent.json
  32. 2 2
      src/main/resources/mapper/PermissionRecordMapper.xml
  33. 22 6
      src/test/java/cn/cslg/pas/service/EsServiceTests.java
  34. 40 16
      src/test/java/cn/cslg/pas/service/EventServiceTests.java

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

@@ -50,5 +50,18 @@ public class ElasticSearchClientConfig {
 //                }
 
 
+//        @Bean
+//        public ElasticsearchClient elasticsearchClient() throws Exception {
+//            RestClientBuilder builder = RestClient.builder(new HttpHost("47.101.137.223", 9200, "http"));
+//            CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
+//            credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials("elastic", "xiaoshi221101"));
+//            SSLContext sslContext = SSLContextBuilder.create()
+//                    .loadTrustMaterial(new TrustSelfSignedStrategy())
+//                    .build();
+//            builder.setHttpClientConfigCallback(f -> f.setDefaultCredentialsProvider(credentialsProvider).setSSLContext(sslContext).setSSLHostnameVerifier(new NoopHostnameVerifier()));
+//            RestClient client =builder.build();
+//            ElasticsearchTransport transport = new RestClientTransport(client,new JacksonJsonpMapper());
+//            return new ElasticsearchClient(transport);
+//        }
     }
 }

+ 4 - 4
src/main/java/cn/cslg/pas/common/config/WebSocketConfig.java

@@ -6,8 +6,8 @@ import org.springframework.web.socket.server.standard.ServerEndpointExporter;
 
 @Configuration
 public class WebSocketConfig {
-//    @Bean
-//    public ServerEndpointExporter serverEndpointExporter() {
-//        return new ServerEndpointExporter();
-//    }
+    @Bean
+    public ServerEndpointExporter serverEndpointExporter() {
+        return new ServerEndpointExporter();
+    }
 }

+ 4 - 0
src/main/java/cn/cslg/pas/common/dto/PatentStarListDTO.java

@@ -5,6 +5,8 @@ import lombok.Data;
 import lombok.experimental.Accessors;
 import org.joda.time.DateTime;
 
+import java.util.List;
+
 /**
  * 专利之星检索dto类
  *
@@ -56,4 +58,6 @@ public class PatentStarListDTO {
 
     private Boolean formed;
 
+    private List<String> nos;
+
 }

+ 10 - 0
src/main/java/cn/cslg/pas/common/vo/es/PatentFamilyMessageWithId.java

@@ -0,0 +1,10 @@
+package cn.cslg.pas.common.vo.es;
+
+import cn.cslg.pas.domain.es.PatentFamilyMessage;
+import lombok.Data;
+
+@Data
+public class PatentFamilyMessageWithId {
+   private PatentFamilyMessage patentFamilyMessage ;
+   private String id;
+}

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

@@ -296,7 +296,7 @@ public class PatentController {
         try {
             pdfExportFirstPageService.mergePdfFirstPage(exportTaskDTO);
         } catch (Exception e) {
-            throw new XiaoShiException("导出失败");
+            return Response.error(e.getMessage());
         }
         Records records = new Records();
         records.setData("正在导出PDF首页");
@@ -358,7 +358,7 @@ public class PatentController {
         try {
             importSinglePatentService.refreshPatent(refreshPatentDTO);
         } catch (Exception e) {
-            throw new XiaoShiException(e.getMessage());
+            return Response.error(e.getMessage());
         }
           return Response.success("刷新成功");
     }

+ 38 - 0
src/main/java/cn/cslg/pas/domain/business/PatentImportErrorLog.java

@@ -0,0 +1,38 @@
+package cn.cslg.pas.domain.business;
+
+import cn.cslg.pas.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+/**
+ * 专利导入错误记录
+ * @Author lrj
+ * @Date 2023/2/20
+ */
+@Data
+@TableName("patent_import_error_log")
+public class PatentImportErrorLog extends BaseEntity<PatentImportErrorLog> {
+    /**
+     * 专利号
+     */
+    @TableField(value = "patent_no")
+    private String patentNo;
+
+    /**
+     * 错误类型
+     */
+    @TableField(value = "error_type")
+    private Integer errorType;
+    /**
+     * 错误信息
+     */
+    @TableField(value = "error_message")
+    private String errorMessage;
+
+    /**
+     * 任务id
+     */
+    @TableField(value = "task_id")
+    private Integer taskId;
+}

+ 9 - 1
src/main/java/cn/cslg/pas/factorys/EsCountAnalyseBuilderFactory/ChildCountAnalysisBuilder.java

@@ -25,6 +25,7 @@ public class ChildCountAnalysisBuilder implements IEsCountAnalysisBuilder {
     public String fieldId = null;
     private String format;
     public List<String> values = new ArrayList<>();
+    public Integer projectId = null;
 
     @Override
     public Aggregation createCountAnalyseAgg() throws Exception {
@@ -34,7 +35,6 @@ public class ChildCountAnalysisBuilder implements IEsCountAnalysisBuilder {
         queryList.add(q1);
         Aggregation termAgg = null;
         if (ifHaveChild) {
-
             if (!CollectionUtils.isEmpty(values)) {
                 termAgg = AggregationBuilders.terms(i -> i.field("custom_field.stats_value.raw").include(j -> j.terms(values)).size(topN));
             } else {
@@ -195,4 +195,12 @@ public class ChildCountAnalysisBuilder implements IEsCountAnalysisBuilder {
     public void setValues(List<String> values) {
         this.values = values;
     }
+
+    public Integer getProjectId() {
+        return projectId;
+    }
+
+    public void setProjectId(Integer projectId) {
+        this.projectId = projectId;
+    }
 }

+ 25 - 3
src/main/java/cn/cslg/pas/factorys/EsCountAnalyseBuilderFactory/ChildNestedAnalyseBuilder.java

@@ -23,23 +23,35 @@ public class ChildNestedAnalyseBuilder implements IEsCountAnalysisBuilder{
     public String fieldId = null;
     private String format;
     public List<String> values = new ArrayList<>();
+    public Integer projectId = null;
 
     public Aggregation createCountAnalyseAgg() throws Exception {
         Aggregation terms = null;
+        Query q1 = QueryBuilders.term(i -> i.field(path + ".project_id").value(projectId));
         if (StringUtils.isNotEmpty(valueOne)) {
             String str = "*";
             String s = str.concat(valueOne).concat("*");
             Query query = QueryBuilders.wildcard(i -> i.field(field).value(s));
-            Aggregation filter = AggregationBuilders.filter(n -> n.bool(k -> k.must(query)));
+            Aggregation filter = AggregationBuilders.filter(n -> n.bool(k -> k.must(query,q1)));
             terms = new Aggregation.Builder().terms(new TermsAggregation.Builder()
                     .field(field).size(topN).build())
                     .aggregations(new HashMap() {{
                         put("filter_agg", filter);
                     }}).build();
         } else if (!CollectionUtils.isEmpty(values)) {
-            terms = AggregationBuilders.terms(i -> i.field(field).include(j -> j.terms(values)).size(topN));
+            Aggregation filter = AggregationBuilders.filter(n -> n.bool(k -> k.must(q1)));
+            terms = new Aggregation.Builder().terms(new TermsAggregation.Builder()
+                    .field(field).include(j -> j.terms(values)).size(topN).build())
+                    .aggregations(new HashMap() {{
+                        put("filter_agg", filter);
+                    }}).build();
         } else {
-            terms = AggregationBuilders.terms(j -> j.field(field).size(topN));
+            Aggregation filter = AggregationBuilders.filter(n -> n.bool(k -> k.must(q1)));
+            terms = new Aggregation.Builder().terms(new TermsAggregation.Builder()
+                    .field(field).size(topN).build())
+                    .aggregations(new HashMap() {{
+                        put("filter_agg", filter);
+                    }}).build();
         }
         Aggregation finalTerms = terms;
         Aggregation aggregation = new Aggregation.Builder().nested(new NestedAggregation.Builder().
@@ -164,4 +176,14 @@ public class ChildNestedAnalyseBuilder implements IEsCountAnalysisBuilder{
     public void setValues(List<String> values) {
         this.values = values;
     }
+
+    @Override
+    public Integer getProjectId() {
+        return projectId;
+    }
+
+    @Override
+    public void setProjectId(Integer projectId) {
+        this.projectId = projectId;
+    }
 }

+ 11 - 0
src/main/java/cn/cslg/pas/factorys/EsCountAnalyseBuilderFactory/DateCountAnalyssBuilder.java

@@ -24,6 +24,7 @@ public class DateCountAnalyssBuilder implements IEsCountAnalysisBuilder {
     public String fieldId = null;
     private String format;
     public List<String> values = new ArrayList<>();
+    public Integer projectId = null;
     public static final int YEAR = 4;
     public static final int MONTH = 7;
     public static final int DAY = 10;
@@ -285,4 +286,14 @@ public class DateCountAnalyssBuilder implements IEsCountAnalysisBuilder {
     public void setValues(List<String> values) {
         this.values = values;
     }
+
+    @Override
+    public Integer getProjectId() {
+        return projectId;
+    }
+
+    @Override
+    public void setProjectId(Integer projectId) {
+        this.projectId = projectId;
+    }
 }

+ 4 - 0
src/main/java/cn/cslg/pas/factorys/EsCountAnalyseBuilderFactory/IEsCountAnalysisBuilder.java

@@ -16,6 +16,7 @@ public interface IEsCountAnalysisBuilder {
     public String fieldId = null;
     public List<String> values = new ArrayList<>();
     public String format = null;
+    public Integer projectId = null;
 
     public Aggregation createCountAnalyseAgg() throws Exception;
 
@@ -58,4 +59,7 @@ public interface IEsCountAnalysisBuilder {
 
     public void setFormat(String format);
 
+    public Integer getProjectId();
+
+    public void setProjectId(Integer projectId);
 }

+ 11 - 0
src/main/java/cn/cslg/pas/factorys/EsCountAnalyseBuilderFactory/NestedCountAnalysisBuilder.java

@@ -26,6 +26,7 @@ public class NestedCountAnalysisBuilder implements IEsCountAnalysisBuilder {
     public String fieldId = null;
     private String format;
     public List<String> values = new ArrayList<>();
+    public Integer projectId = null;
 
     @Override
     public Aggregation createCountAnalyseAgg() throws Exception {
@@ -133,4 +134,14 @@ public class NestedCountAnalysisBuilder implements IEsCountAnalysisBuilder {
     public void setFormat(String format) {
         this.format = format;
     }
+
+    @Override
+    public Integer getProjectId() {
+        return projectId;
+    }
+
+    @Override
+    public void setProjectId(Integer projectId) {
+        this.projectId = projectId;
+    }
 }

+ 11 - 0
src/main/java/cn/cslg/pas/factorys/EsCountAnalyseBuilderFactory/PrioritiesCountAnalysisBuilder.java

@@ -22,6 +22,7 @@ public class PrioritiesCountAnalysisBuilder implements IEsCountAnalysisBuilder{
     public String fieldId = null;
     private String format;
     public List<String> values = new ArrayList<>();
+    public Integer projectId = null;
     public static final int YEAR = 4;
     public static final int MONTH = 7;
     public static final int DAY = 10;
@@ -269,4 +270,14 @@ public class PrioritiesCountAnalysisBuilder implements IEsCountAnalysisBuilder{
     public void setValues(List<String> values) {
         this.values = values;
     }
+
+    @Override
+    public Integer getProjectId() {
+        return projectId;
+    }
+
+    @Override
+    public void setProjectId(Integer projectId) {
+        this.projectId = projectId;
+    }
 }

+ 11 - 0
src/main/java/cn/cslg/pas/factorys/EsCountAnalyseBuilderFactory/RangeCountAnalysisBuilder.java

@@ -21,6 +21,7 @@ public class RangeCountAnalysisBuilder implements IEsCountAnalysisBuilder{
     public String fieldId = null;
     private String format;
     public List<String> values = new ArrayList<>();
+    public Integer projectId = null;
 
     @Override
     public Aggregation createCountAnalyseAgg() throws Exception {
@@ -149,4 +150,14 @@ public class RangeCountAnalysisBuilder implements IEsCountAnalysisBuilder{
     public void setValues(List<String> values) {
         this.values = values;
     }
+
+    @Override
+    public Integer getProjectId() {
+        return projectId;
+    }
+
+    @Override
+    public void setProjectId(Integer projectId) {
+        this.projectId = projectId;
+    }
 }

+ 11 - 0
src/main/java/cn/cslg/pas/factorys/EsCountAnalyseBuilderFactory/TermsCountAnalysisBuilder.java

@@ -25,6 +25,7 @@ public class TermsCountAnalysisBuilder implements IEsCountAnalysisBuilder {
     public String fieldId = null;
     public List<String> values = new ArrayList<>();
     private String format;
+    public Integer projectId = null;
 
     @Override
     public Aggregation createCountAnalyseAgg() throws Exception {
@@ -128,4 +129,14 @@ public class TermsCountAnalysisBuilder implements IEsCountAnalysisBuilder {
     public void setFormat(String format) {
         this.format = format;
     }
+
+    @Override
+    public Integer getProjectId() {
+        return projectId;
+    }
+
+    @Override
+    public void setProjectId(Integer projectId) {
+        this.projectId = projectId;
+    }
 }

+ 14 - 0
src/main/java/cn/cslg/pas/mapper/PatentImportErrorLogMapper.java

@@ -0,0 +1,14 @@
+package cn.cslg.pas.mapper;
+
+import cn.cslg.pas.domain.business.AdminProceed;
+import cn.cslg.pas.domain.business.PatentImportErrorLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springframework.stereotype.Repository;
+
+/**
+ * @Author lrj
+ * @Date 2023/2/20
+ */
+@Repository
+public interface PatentImportErrorLogMapper extends BaseMapper<PatentImportErrorLog> {
+}

+ 0 - 2
src/main/java/cn/cslg/pas/service/business/CustomFieldService.java

@@ -239,8 +239,6 @@ public class CustomFieldService extends ServiceImpl<CustomFieldMapper, CustomFie
             Personnel personnel = personnels.stream().filter(item -> item.getId().equals(customFieldVO.getCreateId())).findFirst().orElse(null);
             if (personnel != null) {
                 customFieldVO.setCreateName(personnel.getPersonnelName());
-            } else {
-                throw new XiaoShiException("未获取到当前登陆人信息");
             }
         }
     }

+ 14 - 0
src/main/java/cn/cslg/pas/service/business/PatentImportErrorLogService.java

@@ -0,0 +1,14 @@
+package cn.cslg.pas.service.business;
+
+
+import cn.cslg.pas.domain.business.AssoEventFile;
+import cn.cslg.pas.domain.business.PatentImportErrorLog;
+import cn.cslg.pas.mapper.AssoEventFileMapper;
+import cn.cslg.pas.mapper.PatentImportErrorLogMapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+@Service
+public class PatentImportErrorLogService extends ServiceImpl<PatentImportErrorLogMapper, PatentImportErrorLog> {
+
+}

+ 4 - 2
src/main/java/cn/cslg/pas/service/business/ReportProjectService.java

@@ -332,8 +332,10 @@ public class ReportProjectService extends ServiceImpl<ReportProjectMapper, Repor
             try {
                 PatentWithIdVO patentWithIdVO = esService.getIdByPatentNo(reportProject.getSignPatentNo());
                 if (patentWithIdVO != null && patentWithIdVO.getPatent() != null) {
-                    reportProject.setPatentType(Integer.parseInt(patentWithIdVO.getPatent().getPatentType()));
-                }
+                    if(patentWithIdVO.getPatent().getPatentType()!=null) {
+                        reportProject.setPatentType(Integer.parseInt(patentWithIdVO.getPatent().getPatentType()));
+                    }
+                    }
             } catch (Exception e) {
                 throw new XiaoShiException("未查询到标的专利");
             }

+ 3 - 2
src/main/java/cn/cslg/pas/service/business/es/EsCountService.java

@@ -184,7 +184,7 @@ public class EsCountService {
             }
             String format = countVO.getFormat();
             List<String> values = countVO.getValues();
-            Aggregation aggregation = this.getAggregation(countVO);
+            Aggregation aggregation = this.getAggregation(countVO,projectId);
             if (query != null) {
                 Query finalQuery = query;
                 Aggregation finalAggregation = aggregation;
@@ -415,7 +415,7 @@ public class EsCountService {
      * @return
      * @throws Exception
      */
-    public Aggregation getAggregation(EsCountVO countVO) throws Exception {
+    public Aggregation getAggregation(EsCountVO countVO,Integer projectId) throws Exception {
         String field = countVO.getField();
         Integer topN = countVO.getTopN();
         Boolean ifHaveChild = countVO.getIfHaveChild();
@@ -447,6 +447,7 @@ public class EsCountService {
             iEsCountAnalysisBuilder.setFieldType(String.valueOf(fieldType));
             iEsCountAnalysisBuilder.setTopN(topN);
             iEsCountAnalysisBuilder.setFormat(format);
+            iEsCountAnalysisBuilder.setProjectId(projectId);
             iEsCountAnalysisBuilder.setIfHaveChild(ifHaveChild);
             if (iEsCountAnalysisBuilder.getField().contains(".")) {
                 String path = iEsCountAnalysisBuilder.getField()

+ 181 - 73
src/main/java/cn/cslg/pas/service/business/es/EsService.java

@@ -18,6 +18,7 @@ import cn.cslg.pas.common.utils.parseQueryToTree.expressManager;
 import cn.cslg.pas.common.utils.parseQueryToTree.operateNode;
 import cn.cslg.pas.common.utils.parseQueryToTree.treeNode;
 import cn.cslg.pas.common.vo.*;
+import cn.cslg.pas.common.vo.es.PatentFamilyMessageWithId;
 import cn.cslg.pas.domain.es.*;
 import cn.cslg.pas.exception.XiaoShiException;
 import cn.cslg.pas.service.business.CommonService;
@@ -73,7 +74,6 @@ public class EsService {
                 .document(patent)
         );
         return indexResponse.id();
-
     }
 
     /**
@@ -261,6 +261,8 @@ public class EsService {
             builder.from((current.intValue() - 1) * size.intValue()).size(size.intValue());
         }
 
+        //解除最大条数限制
+        builder.trackTotalHits(i -> i.enabled(true));
         SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
         List<PatentColumnDTO> list = new ArrayList<>();
         long total = 0L;
@@ -699,7 +701,7 @@ public class EsService {
      * @return
      * @throws IOException
      */
-    public EsPatentFamilyDTO addEsPatentFamily(List<String> nos, String type) throws IOException {
+    public EsPatentFamilyDTO addEsPatentFamily(Patent patent, List<String> nos, String type) throws Exception {
         EsPatentFamilyDTO esDTO = new EsPatentFamilyDTO();
 
         List<String> absentList = new ArrayList<>();
@@ -707,31 +709,37 @@ public class EsService {
         PatentFamilyMessage patentFamilyMessage = null;
         String id = "";
 
-        //遍历,根据专利号查询同族
-        for (String no : nos) {
-            SearchRequest.Builder builder = new SearchRequest.Builder();
-            //设置查询索引
-            builder.index("patent_family");
-            //申请号
-            Query q1 = QueryBuilders.term(t -> t.field("patent.app_no").value(no));
-            //公开号
-            Query q2 = QueryBuilders.term(t -> t.field("patent.public_no").value(no));
-            //授权号
-            Query q3 = QueryBuilders.term(t -> t.field("patent.grant_no").value(no));
-            //类型
-            Query q4 = QueryBuilders.term(t -> t.field("family_type").value(type));
-            Query p  =QueryBuilders.bool(i -> i.should(q1, q2, q3));
-            Query bool = QueryBuilders.bool(i -> i.must(q4,p));
-            builder.query(bool);
-            SearchResponse<PatentFamilyMessage> response = client.search(builder.build(), PatentFamilyMessage.class);
-            long total = response.hits().total().value();
-            if (total > 0) {
-                List<FamilyPatent> list = new ArrayList<>();
-                List<Hit<PatentFamilyMessage>> hits = response.hits().hits();
-                Hit<PatentFamilyMessage> hit = hits.get(0);
-                id = hit.id();
-                patentFamilyMessage = hit.source();
-                break;
+        PatentFamilyMessageWithId patentFamilyMessageWithId = queryPatentFamily(patent, type);
+        if (patentFamilyMessageWithId != null) {
+            patentFamilyMessage = patentFamilyMessageWithId.getPatentFamilyMessage();
+            id = patentFamilyMessageWithId.getId();
+        } else {
+            //遍历,根据专利号查询同族
+            for (String no : nos) {
+                SearchRequest.Builder builder = new SearchRequest.Builder();
+                //设置查询索引
+                builder.index("patent_family");
+                //申请号
+                Query q1 = QueryBuilders.term(t -> t.field("patent.app_no").value(no));
+                //公开号
+                Query q2 = QueryBuilders.term(t -> t.field("patent.public_no").value(no));
+                //授权号
+                Query q3 = QueryBuilders.term(t -> t.field("patent.grant_no").value(no));
+                //类型
+                Query q4 = QueryBuilders.term(t -> t.field("family_type").value(type));
+                Query p = QueryBuilders.bool(i -> i.should(q1, q2, q3));
+                Query bool = QueryBuilders.bool(i -> i.must(q4, p));
+                builder.query(bool);
+                SearchResponse<PatentFamilyMessage> response = client.search(builder.build(), PatentFamilyMessage.class);
+                long total = response.hits().total().value();
+                if (total > 0) {
+                    List<FamilyPatent> list = new ArrayList<>();
+                    List<Hit<PatentFamilyMessage>> hits = response.hits().hits();
+                    Hit<PatentFamilyMessage> hit = hits.get(0);
+                    id = hit.id();
+                    patentFamilyMessage = hit.source();
+                    break;
+                }
             }
         }
 
@@ -760,49 +768,64 @@ public class EsService {
 
         }
 
-        if (notInNos.size() > 0) {
-            //所有专利号的专利详情
-            List<StarPatentVO> starPatents = new ArrayList<>();
-
-            PatentStarListDTO patentStarListDTO = new PatentStarListDTO();
-            List<PatentStarListDTO> patentStarListDtos = patentStarApiService.splitPatentNoByType(notInNos, patentStarListDTO);
-            while (patentStarListDtos.size() > 0) {
-                PatentStarListDTO patentStarListDTO1 = patentStarListDtos.remove(0);
-                patentStarListDTO1.setPageNum(1);
-                patentStarListDTO1.setRowCount(50);
-                Map<String, Object> resultMap = patentStarApiService.patentStarSearchApi(patentStarListDTO1);
-                if (resultMap == null || (Integer) resultMap.get("total") == 0) {
-                    continue;
-                }
-                starPatents.addAll((List<StarPatentVO>) resultMap.get("records"));
+        List<FamilyPatent> familyPatents = patentFamilyMessage.getPatent();
+        String appNo = "";
+        String publicNo = "";
+        String grantNo = "";
+        if (patent.getAppNo() != null) {
+            appNo = patent.getAppNo();
+        }
+        if (patent.getPublicNo() != null) {
+            publicNo = patent.getPublicNo();
+        }
+        if (patent.getGrantNo() != null) {
+            grantNo = patent.getGrantNo();
+        }
+        String appNo1 = appNo;
+        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())
+        ).findFirst().orElse(null);
+        if (patent1 == null) {
+            patent1 = new FamilyPatent();
+            patent1.setGrantNo(patent.getGrantNo());
+            patent1.setAppNo(patent.getAppNo());
+            patent1.setPublicNo(patent.getPublicNo());
+            familyPatents.add(patent1);
+        } else {
+            patent1.setGrantNo(patent.getGrantNo());
+            patent1.setAppNo(patent.getAppNo());
+            patent1.setPublicNo(patent.getPublicNo());
+        }
 
-            }
 
+        if (notInNos.size() > 0) {
+            //所有专利号的专利详情
             List<FamilyPatent> patents = new ArrayList<>();
-            starPatents.forEach(item -> {
+            notInNos.forEach(item -> {
                 FamilyPatent familyPatent = new FamilyPatent();
-                familyPatent.setAppNo(item.getApplicationNo());
-                familyPatent.setPublicNo(item.getPublicNo());
-                familyPatent.setGrantNo(item.getPublicAccreditNo());
+                familyPatent.setPublicNo(item);
                 patents.add(familyPatent);
             });
-
             patentFamilyMessage.getPatent().addAll(patents);
 
+        }
+        //当id不为null时
+        if (!id.equals("")) {
 
-            //当id不为null时
-            if (!id.equals("")) {
-
-                this.updatePatentFamily(patentFamilyMessage, id);
+            this.updatePatentFamily(patentFamilyMessage, id);
 
-            } else {
-                try {
-                    id = this.addPatentFamily(patentFamilyMessage);
-                } catch (Exception e) {
-                }
+        } else {
+            try {
+                id = this.addPatentFamily(patentFamilyMessage);
+            } catch (Exception e) {
+            }
 
 
-            }
         }
         esDTO.setPatentFamilyId(id);
         esDTO.setFamilyNum(patentFamilyMessage.getPatent().size());
@@ -924,8 +947,7 @@ public class EsService {
     }
 
 
-    public String addEsQuotePatent(String no, List<String> nos) throws Exception {
-        StarPatentVO starPatentVO = patentStarApiService.getPatentByNo(no);
+    public String addEsQuotePatent(StarPatentVO starPatentVO, List<String> nos) throws Exception {
         if (starPatentVO == null) {
             return null;
         }
@@ -954,20 +976,27 @@ public class EsService {
             quotePatents = patentQuoteMessage.getQuotedPatents();
 
         }
-
-        for (String patentNo : nos) {
-            StarPatentVO starPatentVO1 = patentStarApiService.getPatentByNo(patentNo);
-            QuotePatent quotePatent1 = null;
-            if (quotePatents.size() > 0) {
-                quotePatent1 = quotePatents.stream()
-                        .filter(item -> item.getAppNo().equals(starPatentVO1.getApplicationNo())).findFirst().orElse(null);
-            }
-            if (quotePatent1 == null) {
-                quotePatent1 = this.reQuotePatent(starPatentVO1);
-                quotePatents.add(quotePatent1);
+        if (nos != null && nos.size() > 0) {
+            List<Patent> patents = esPatentService.getPatentsByNo(nos, true, null, null);
+            for (String patentNo : nos) {
+                QuotePatent quotePatent1 = null;
+                if (quotePatents.size() > 0) {
+                    quotePatent1 = quotePatents.stream()
+                            .filter(item -> patentNo.equals(item.getAppNo()) || patentNo.equals(item.getPublicNo()) || patentNo.equals(item.getGrantNo())).findFirst().orElse(null);
+                }
+              Patent patent=  patents.stream().filter(item -> patentNo.equals(item.getAppNo())).findFirst().orElse(null);
+                if (quotePatent1 == null) {
+                    quotePatent1 = this.reQuotePatent(patent,patentNo);
+                    quotePatents.add(quotePatent1);
+                }
+                else {
+                    quotePatent1 = this.reQuotePatent(patent,patentNo);
+                }
             }
+
         }
 
+
         if (patentQuoteMessage == null) {
             if (quotePatents.size() != 0) {
                 patentQuoteMessage = new PatentQuoteMessage();
@@ -1022,12 +1051,30 @@ public class EsService {
         return quotePatent;
     }
 
-    public String addEsLegalEvent(String patentNo) {
+
+    private QuotePatent reQuotePatent(Patent patent, String no) {
+        QuotePatent quotePatent = new QuotePatent();
+        if (patent == null) {
+            quotePatent.setPublicNo(no);
+            return quotePatent;
+        }
+        //装载申请人
+
+        quotePatent.setApplicant(patent.getApplicant());
+
+        quotePatent.setRightHolder(patent.getRightHolder());
+
+        quotePatent.setAppNo(patent.getAppNo());
+        quotePatent.setGrantNo(patent.getGrantNo());
+        quotePatent.setPublicNo(patent.getPublicNo());
+        return quotePatent;
+    }
+
+    public String addEsLegalEvent(StarPatentVO starPatentVO) {
         LegalEvent legalEvent = null;
         String id = "";
 
         //根据专利号查询
-        StarPatentVO starPatentVO = patentStarApiService.getPatentByNo(patentNo);
         if (starPatentVO == null) {
             return null;
         }
@@ -1216,6 +1263,67 @@ public class EsService {
             return -1;
         }
     }
+
+
+    public PatentFamilyMessageWithId queryPatentFamily(Patent patent, String type) throws Exception {
+        //查询该专利是否已有同族
+        SearchRequest.Builder builderPatent = new SearchRequest.Builder();
+        //设置查询索引
+        builderPatent.index("patent_family");
+        //申请号
+        List<Query> queries = new ArrayList<>();
+        if (patent.getAppNo() != null) {
+            Query q1 = QueryBuilders.term(t -> t.field("patent.app_no").value(patent.getAppNo()));
+            //公开号
+            Query q2 = QueryBuilders.term(t -> t.field("patent.public_no").value(patent.getAppNo()));
+            //授权号
+            Query q3 = QueryBuilders.term(t -> t.field("patent.grant_no").value(patent.getAppNo()));
+            //类型
+            queries.add(q1);
+            queries.add(q2);
+            queries.add(q3);
+        }
+        if (patent.getPublicNo() != null) {
+            Query q1 = QueryBuilders.term(t -> t.field("patent.app_no").value(patent.getPublicNo()));
+            //公开号
+            Query q2 = QueryBuilders.term(t -> t.field("patent.public_no").value(patent.getPublicNo()));
+            //授权号
+            Query q3 = QueryBuilders.term(t -> t.field("patent.grant_no").value(patent.getPublicNo()));
+            queries.add(q1);
+            queries.add(q2);
+            queries.add(q3);
+        }
+        if (patent.getGrantNo() != null) {
+            Query q1 = QueryBuilders.term(t -> t.field("patent.app_no").value(patent.getGrantNo()));
+            //公开号
+            Query q2 = QueryBuilders.term(t -> t.field("patent.public_no").value(patent.getGrantNo()));
+            //授权号
+            Query q3 = QueryBuilders.term(t -> t.field("patent.grant_no").value(patent.getGrantNo()));
+            queries.add(q1);
+            queries.add(q2);
+            queries.add(q3);
+        }
+
+        Query q4 = QueryBuilders.term(t -> t.field("family_type").value(type));
+        Query p = QueryBuilders.bool(i -> i.should(queries));
+        Query bool = QueryBuilders.bool(i -> i.must(q4, p));
+        builderPatent.query(bool);
+        SearchResponse<PatentFamilyMessage> response = client.search(builderPatent.build(), PatentFamilyMessage.class);
+        long total = response.hits().total().value();
+        if (total > 0) {
+            List<FamilyPatent> list = new ArrayList<>();
+            List<Hit<PatentFamilyMessage>> hits = response.hits().hits();
+            Hit<PatentFamilyMessage> hit = hits.get(0);
+            String id = hit.id();
+            PatentFamilyMessageWithId patentFamilyMessageWithId = new PatentFamilyMessageWithId();
+            patentFamilyMessageWithId.setId(id);
+            patentFamilyMessageWithId.setPatentFamilyMessage(hit.source());
+
+            return patentFamilyMessageWithId;
+
+        }
+        return null;
+    }
 }
 
 

+ 3 - 3
src/main/java/cn/cslg/pas/service/common/FileManagerService.java

@@ -91,9 +91,9 @@ public class FileManagerService {
      */
     public byte[] downloadSystemFileFromFMS(String fieldId) throws IOException {
         OkHttpClient okHttpClient = new OkHttpClient.Builder()
-                .connectTimeout(60, TimeUnit.SECONDS)
-                .writeTimeout(60, TimeUnit.SECONDS)
-                .readTimeout(60, TimeUnit.SECONDS)
+                .connectTimeout(60000, TimeUnit.SECONDS)
+                .writeTimeout(60000, TimeUnit.SECONDS)
+                .readTimeout(60000, TimeUnit.SECONDS)
                 .build();
         Request request = new Request.Builder()
                 .url(FMSUrl + "/fileManager/downloadFile?fileId=" + fieldId)

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

@@ -792,6 +792,7 @@ public class PatentStarApiService {
                 patentStarListDTO1.setCurrentQuery(conditions);
                 patentStarListDTO1.setRowCount(50);
                 patentStarListDTO1.setTotal(item.size());
+                patentStarListDTO1.setNos(item);
                 patentStarListDTOS.add(patentStarListDTO1);
             }
         });

+ 9 - 4
src/main/java/cn/cslg/pas/service/importPatent/GetCataloguingFromWebThread.java

@@ -104,25 +104,30 @@ public class GetCataloguingFromWebThread extends Thread {
                 if (!familyPatentNoStr.equals("no data")&&!familyPatentNoStr.trim().equals("")) {
                     FamilyPatentNo familyPatentNo = JSON.parseObject(familyPatentNoStr, FamilyPatentNo.class);
                     if (familyPatentNo != null &&!familyPatentNo.getFamilyinfo().trim().equals("")&& familyPatentNo.getFamilyinfo() != null) {
-                        familyPatentNos = Arrays.asList(familyPatentNo.getFamilyinfo().split(";"));
+                   String[] nos =     familyPatentNo.getFamilyinfo().split(";");
+                   if(nos!=null&&nos.length>0){
+                       for (String no : nos) {
+                           familyPatentNos.add(no);
+                       }
+                   }
                     }
                 }
                 familyPatentNos.add(uploadPatentWebDTO.getPatent().getAppNo());
 
                 if (familyPatentNos.size() != 0) {
-                    EsPatentFamilyDTO esPatentFamilyDTO = esService.addEsPatentFamily(familyPatentNos, "inpadoc");
+                    EsPatentFamilyDTO esPatentFamilyDTO = esService.addEsPatentFamily(uploadPatentWebDTO.getPatent(),familyPatentNos, "inpadoc");
                     uploadPatentWebDTO.getPatent().setInpadocFamilyNum(esPatentFamilyDTO.getFamilyNum());
                     uploadPatentWebDTO.getPatent().setInpadocFamilyId(esPatentFamilyDTO.getPatentFamilyId());
                 }
 
                 //添加法律事务
-                esService.addEsLegalEvent(uploadPatentWebDTO.getStarPatentVO().getApplicationNo());
+                esService.addEsLegalEvent(uploadPatentWebDTO.getStarPatentVO());
 
                 //添加引用专利
                 String nos = starPatentVO.getQuoteNos();
                 if (nos != null) {
                     List<String> quotedNos = this.reQuotedNos(nos);
-                    esService.addEsQuotePatent(uploadPatentWebDTO.getPatent().getPublicNo(), quotedNos);
+                    esService.addEsQuotePatent(uploadPatentWebDTO.getStarPatentVO(), quotedNos);
                 }
 
                 //加入es保存队列

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

@@ -182,7 +182,7 @@ public class GetPatentFromExcelThread extends Thread {
         if (uploadParamsVO.getSimpleFamily() != null) {
             EsService esService = applicationContext.getBean(EsService.class);
             try {
-                EsPatentFamilyDTO esPatentFamilyDTO = esService.addEsPatentFamily(uploadParamsVO.getSimpleFamily(), FamilyType.SIMPLE);
+                EsPatentFamilyDTO esPatentFamilyDTO = esService.addEsPatentFamily(patent,uploadParamsVO.getSimpleFamily(), FamilyType.SIMPLE);
                 if (esPatentFamilyDTO != null) {
                     patent.setSimpleFamilyId(esPatentFamilyDTO.getPatentFamilyId());
                     patent.setSimpleFamilyNum(esPatentFamilyDTO.getFamilyNum());
@@ -195,7 +195,7 @@ public class GetPatentFromExcelThread extends Thread {
         if (uploadParamsVO.getInpadocFamily() != null) {
             EsService esService = applicationContext.getBean(EsService.class);
             try {
-                EsPatentFamilyDTO esPatentFamilyDTO = esService.addEsPatentFamily(uploadParamsVO.getSimpleFamily(), FamilyType.INPADOC);
+                EsPatentFamilyDTO esPatentFamilyDTO = esService.addEsPatentFamily(patent,uploadParamsVO.getSimpleFamily(), FamilyType.INPADOC);
                 if (esPatentFamilyDTO != null) {
                     patent.setInpadocFamilyId(esPatentFamilyDTO.getPatentFamilyId());
                     patent.setInpadocFamilyNum(esPatentFamilyDTO.getFamilyNum());
@@ -208,7 +208,7 @@ public class GetPatentFromExcelThread extends Thread {
         if (uploadParamsVO.getPatSnapFamily() != null) {
             EsService esService = applicationContext.getBean(EsService.class);
             try {
-                EsPatentFamilyDTO esPatentFamilyDTO = esService.addEsPatentFamily(uploadParamsVO.getSimpleFamily(), FamilyType.PATSNAP);
+                EsPatentFamilyDTO esPatentFamilyDTO = esService.addEsPatentFamily(patent,uploadParamsVO.getSimpleFamily(), FamilyType.PATSNAP);
                 if (esPatentFamilyDTO != null) {
                     patent.setPatsnapFamilyId(esPatentFamilyDTO.getPatentFamilyId());
                     patent.setPatsnapFamilyNum(esPatentFamilyDTO.getFamilyNum());

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

@@ -74,14 +74,12 @@ public class GetPatentPDFFromWebThread extends Thread {
                     if (!pdfUrlStr.equals("")) {
 //                        recordQuestionPatent(starPatent.getApplicationNo(), task.getId(), 4);
 
-
                     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(starPatentVO.getApplicationNo(), 0);
                             File file1 = FileUtils.getFileByUrl(pdfUrl1);
@@ -115,18 +113,20 @@ public class GetPatentPDFFromWebThread extends Thread {
                         }
                     }
                     //根据专利号调用"获得世界专利pdf"接口,获得pdf的url地址
-                } else {
+                }
+                }
+                else {
                     pdfUrl = patentStarApiService.getEnPdfApi(usedPatentNo);
                     //若没有取到说明书pdf,则将当前申请号和备注信息存入问题记录表,并返回空对象
 //                    if (pdfUrl.equals("") || pdfUrl.equals("{}")) {
 //                        recordQuestionPatent(starPatent.getApplicationNo(), task.getId(), 4);
 //                        return;
 //                    }
-                    String guid1 = FormatUtil.getPDFFormat(starPatentVO.getApplicationNo(), 0);
-                    File file1 = FileUtils.getFileByUrl(pdfUrl);
-                    fileManagerService.uploadFileWithGuid(file1, guid1);
-
-                }
+                    if (!pdfUrl.equals("")) {
+                        String guid1 = FormatUtil.getPDFFormat(starPatentVO.getApplicationNo(), 0);
+                        File file1 = FileUtils.getFileByUrl(pdfUrl);
+                        fileManagerService.uploadFileWithGuid(file1, guid1);
+                    }
                 }
                 taskThread.updateProcess(false,4,"");
             } catch (Exception e) {

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

@@ -172,7 +172,7 @@ public class GetRightAndFullTextFromWebThread extends Thread {
             }
             String fullText = "";
             if (fullTexts.size() != 0) {
-                fullText = cn.cslg.pas.common.utils.StringUtils.join(fullTexts, "");
+                fullText = cn.cslg.pas.common.utils.StringUtils.join(fullTexts, "\r");
             }
             Text text =new Text();
             text.setIfOrigin(true);

+ 37 - 12
src/main/java/cn/cslg/pas/service/importPatent/ImportFromWebToEsService.java

@@ -4,12 +4,15 @@ import cn.cslg.pas.common.dto.PatentStarListDTO;
 import cn.cslg.pas.common.dto.UploadPatentWebDTO;
 import cn.cslg.pas.common.model.cronModel.Calculate;
 import cn.cslg.pas.common.model.cronModel.SystemFile;
-import cn.cslg.pas.common.utils.*;
+import cn.cslg.pas.common.utils.DateUtils;
+import cn.cslg.pas.common.utils.FormatUtil;
+import cn.cslg.pas.common.utils.ReadExcelUtils;
 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.domain.business.PatentImportErrorLog;
 import cn.cslg.pas.domain.es.Patent;
 import cn.cslg.pas.factorys.PatentImportFactory.PatentImportImp;
+import cn.cslg.pas.service.business.PatentImportErrorLogService;
 import cn.cslg.pas.service.common.FileManagerService;
 import cn.cslg.pas.service.common.PatentStarApiService;
 import com.alibaba.fastjson.JSONArray;
@@ -93,8 +96,8 @@ public class ImportFromWebToEsService implements PatentImportImp {
             String dbType = importTaskAMVO.getDbType();  //检索数据库类型
             Integer taskStartNum = importTaskAMVO.getDoneNum();
             List<String> addPatentNos = new ArrayList<>();
-            String patentNoStr =importTaskAMVO.getPatentNoStr();
-            if(patentNoStr!=null){
+            String patentNoStr = importTaskAMVO.getPatentNoStr();
+            if (patentNoStr != null) {
                 addPatentNos = JSONArray.parseArray(patentNoStr);
             }
             int patentNum = 10000;
@@ -185,8 +188,16 @@ public class ImportFromWebToEsService implements PatentImportImp {
                     continue;
                 }
 
-                Integer trueStartNum = taskStartNum > lastOverNum ? taskStartNum : lastOverNum;
-                Integer startNum = trueStartNum - lastOverNum;
+                Integer startNum = 0;
+                if (taskStartNum > lastOverNum) {
+                    startNum = taskStartNum - lastOverNum;
+                }
+
+                List<String> nos = patentStarListDto.getNos();
+                if (nos != null) {
+                    nos = nos.subList(startNum, nos.size());
+                }
+
                 Calculate calculate = DateUtils.calculateFromStartAndEndNumber(startNum, total, 50);
                 Integer startPage = calculate.getStartPage();
                 Integer endPage = calculate.getEndPage();
@@ -205,17 +216,19 @@ public class ImportFromWebToEsService implements PatentImportImp {
                     }
                     List<StarPatentVO> starPatents = (List<StarPatentVO>) resultMap.get("records");
 
-                    if ((i * 50 + starPatents.size()) < startNum) {
-                        continue;
-                    }
+
                     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);
+                      nos.removeIf(item->item.equals(starPatentVO.getApplicationNo())
+                              ||item.equals(starPatentVO.getPublicNo())
+                              ||item.equals(starPatentVO.getPublicAccreditNo()));
                         UploadPatentWebDTO uploadPatentWebDTO = new UploadPatentWebDTO();
                         Patent patent = new Patent();
                         //装载start
-                        uploadPatentWebDTO.setStarPatentVO(starPatents.get(j));
+                        uploadPatentWebDTO.setStarPatentVO(starPatentVO);
                         uploadPatentWebDTO.setPatent(patent);
                         uploadPatentWebDTO.setCounter(0);
                         uploadPatentWebDTO.setIndex(index);
@@ -241,8 +254,20 @@ public class ImportFromWebToEsService implements PatentImportImp {
                     }
 
                 }
-
-                taskStartNum = overNum;
+           List<PatentImportErrorLog> patentImportErrorLogs =new ArrayList<>();
+                if(nos!=null&&nos.size()>0){
+                    nos.forEach(item->{
+                        PatentImportErrorLog patentImportErrorLog =new PatentImportErrorLog();
+                        patentImportErrorLog.setPatentNo(item);
+                        patentImportErrorLog.setErrorType(-1);
+                        patentImportErrorLog.setTaskId(importTaskAMVO.getId());
+                        patentImportErrorLogs.add(patentImportErrorLog);
+                    });
+                }
+                if(patentImportErrorLogs.size()>0){
+                    PatentImportErrorLogService patentImportErrorLogService = applicationContext.getBean(PatentImportErrorLogService.class);
+                        patentImportErrorLogService.saveBatch(patentImportErrorLogs);
+                }
             }
 
             if (ifCataloguing == '1') {

+ 8 - 6
src/main/java/cn/cslg/pas/service/importPatent/ImportSinglePatentService.java

@@ -613,7 +613,7 @@ public class ImportSinglePatentService {
             }
             String fullText = "";
             if (fullTexts.size() != 0) {
-                fullText = cn.cslg.pas.common.utils.StringUtils.join(fullTexts, "");
+                fullText = cn.cslg.pas.common.utils.StringUtils.join(fullTexts, "\r\n");
             }
             Text text = new Text();
             text.setIfOrigin(true);
@@ -687,17 +687,19 @@ public class ImportSinglePatentService {
                     }
                 }
                 //根据专利号调用"获得世界专利pdf"接口,获得pdf的url地址
-            } else {
-                pdfUrl = patentStarApiService.getEnPdfApi(usedPatentNo);
-                //若没有取到说明书pdf,则将当前申请号和备注信息存入问题记录表,并返回空对象
+            }
+        }
+        else {
+            pdfUrl = patentStarApiService.getEnPdfApi(usedPatentNo);
+            //若没有取到说明书pdf,则将当前申请号和备注信息存入问题记录表,并返回空对象
 //                    if (pdfUrl.equals("") || pdfUrl.equals("{}")) {
 //                        recordQuestionPatent(starPatent.getApplicationNo(), task.getId(), 4);
 //                        return;
 //                    }
+            if (!pdfUrl.equals("")) {
                 String guid1 = FormatUtil.getPDFFormat(starPatentVO.getApplicationNo(), 0);
                 File file1 = FileUtils.getFileByUrl(pdfUrl);
                 fileManagerService.uploadFileWithGuid(file1, guid1);
-
             }
         }
     }
@@ -756,7 +758,7 @@ public class ImportSinglePatentService {
         }
         //添加法律事务
         if (contents.contains(6)) {
-            esService.addEsLegalEvent(patentNo);
+            esService.addEsLegalEvent(starPatentVO);
         }
 
         //装载权利要求

+ 1 - 0
src/main/java/cn/cslg/pas/service/importPatent/SavePatentToEsThread.java

@@ -143,6 +143,7 @@ public class SavePatentToEsThread extends Thread {
                     ) {
                         esCustomFieldDTO.setPatentId(patentId);
                         esCustomFieldDTO.setOptionType(2);
+                        esCustomFieldDTO.setPatentNo(patent.getPatentNo());
                         EsCustomFieldService esCustomFieldService = applicationContext.getBean(EsCustomFieldService.class);
                         esCustomFieldService.addCustomField(esCustomFieldDTO);
                     }

+ 1 - 0
src/main/java/cn/cslg/pas/service/importPatent/TaskThread.java

@@ -178,6 +178,7 @@ public class TaskThread extends Thread {
                     patentProcess.setPatentMessageDoneNum(patentProcess.getPatentMessageDoneNum() + 1);
                     if (ifDefault) {
                         patentProcess.setPatentMessageDefaultNum(patentProcess.getPatentMessageDefaultNum() + 1);
+
                     }
 
                     break;

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

@@ -1011,7 +1011,7 @@
   },
   {
     "name": "优先权日",
-    "type": "String",
+    "type": "DateTime",
     "value": "priorityDate",
     "field": "PRD",
     "esField": "priorities.prioritydate",

+ 2 - 2
src/main/resources/mapper/PermissionRecordMapper.xml

@@ -7,7 +7,7 @@
                DATE_FORMAT(license_time, '%Y-%m') as licenseTime
         from permission_record
         where patent_no = #{patentNo}
-        group by DATE_FORMAT(license_time, '%Y-%m');
+        group by licenseTime;
     </select>
 
     <select id="selectLicenseeYearList" resultType="cn.cslg.pas.common.dto.es.SelectValueCurveDTO">
@@ -15,7 +15,7 @@
                CONCAT(DATE_FORMAT(license_time, '%Y'),'年') as licenseTime
         from permission_record
         where patent_no = #{patentNo}
-        group by DATE_FORMAT(license_time, '%Y');
+        group by licenseTime;
     </select>
 
     <select id="selectLicenseeQuarterList" resultType="cn.cslg.pas.common.dto.es.SelectValueCurveDTO">

+ 22 - 6
src/test/java/cn/cslg/pas/service/EsServiceTests.java

@@ -6,6 +6,7 @@ import cn.cslg.pas.common.model.request.StringRequest;
 import cn.cslg.pas.common.utils.FormatUtil;
 import cn.cslg.pas.common.utils.RedisUtil;
 import cn.cslg.pas.common.vo.PatentWithIdVO;
+import cn.cslg.pas.common.vo.StarPatentVO;
 import cn.cslg.pas.domain.es.Patent;
 import cn.cslg.pas.service.business.PatentService;
 import cn.cslg.pas.service.business.es.EsService;
@@ -90,27 +91,42 @@ public class EsServiceTests {
         List<String> nos = new ArrayList<>();
         nos.add("CN201920033236.3");
         nos.add("CN202010306989.4");
-        esService.addEsQuotePatent(no, nos);
+//        esService.addEsQuotePatent(no, nos);
         System.out.println("aa");
     }
 
     @Test
     public void addFamilyPatent() throws Exception {
-        String no = "CN202221363803.X";
         List<String> nos = new ArrayList<>();
-        nos.add("CN201920033236.3");
-        nos.add("CN202010306989.4");
-        esService.addEsPatentFamily(nos, "inpadoc");
+        nos.add("CN20192001");
+        nos.add("CN20201030");
+        Patent patent = new Patent();
+        patent.setAppNo("Test202402191");
+        patent.setPublicNo("Test202192");
+        patent.setGrantNo("Test202193");
+        esService.addEsPatentFamily(patent,nos,"inpoc");
         System.out.println("aa");
     }
 
     @Test
+    public void addFamilyPatent2() throws Exception {
+        List<String> nos = new ArrayList<>();
+        nos.add("Test202193");
+        nos.add("CN20201030");
+        Patent patent = new Patent();
+        patent.setAppNo("CN20192002");
+        patent.setPublicNo("CN20192003");
+        patent.setGrantNo("CN20192001");
+        esService.addEsPatentFamily(patent,nos,"inpoc");
+        System.out.println("aa");
+    }
+    @Test
     public void addAffairPatent() throws Exception {
         String no = "CN202221363803.X";
         List<String> nos = new ArrayList<>();
         nos.add("CN201920033236.3");
         nos.add("CN202010306989.4");
-        esService.addEsLegalEvent(no);
+        esService.addEsLegalEvent(new StarPatentVO());
         System.out.println("aa");
     }
 

+ 40 - 16
src/test/java/cn/cslg/pas/service/EventServiceTests.java

@@ -9,6 +9,7 @@ import cn.cslg.pas.common.dto.es.EsCustomFieldValueDTO;
 import cn.cslg.pas.common.model.cronModel.Records;
 import cn.cslg.pas.common.model.request.*;
 import cn.cslg.pas.common.utils.Response;
+import cn.cslg.pas.common.utils.StringUtils;
 import cn.cslg.pas.common.vo.business.EsCountVO;
 import cn.cslg.pas.common.vo.business.PatentKinVO;
 import cn.cslg.pas.common.vo.business.PatentNoVO;
@@ -40,6 +41,7 @@ import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
 import java.util.*;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 
@@ -216,15 +218,11 @@ public class EventServiceTests {
     @Test
     void test3() throws IOException {
         List<String> stringList = Arrays.asList("US369258147", "US258369147", "14528");
-        EsPatentFamilyDTO test = esService.addEsPatentFamily(stringList, "test");
-        System.out.println(test);
     }
 
     @Test
     void test4() throws IOException {
         List<String> stringList = Arrays.asList("US369258147", "US258369147", "14528");
-        EsPatentFamilyDTO test = esService.addEsPatentFamily(stringList, "test");
-        System.out.println(test);
     }
 
     @Test
@@ -258,18 +256,18 @@ public class EventServiceTests {
 
     @Test
     void test9() throws IOException {
-        PatentNoVO vo = new PatentNoVO();
-        vo.setPatentNo("CN201910069334.7");
-        PatentColumnDTO columnDTO = patentService.selectPatentDetail(vo);
-        System.out.println(columnDTO);
-
-//        String s = "asfassafsafe";
-//        Map<Character, Long> map = s.chars().mapToObj(c->(char)c).collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
-//        System.out.println(map);
-//
-//        List<String> stringList = Arrays.asList("apple", "apple", "balana", "origin", "apple", "balana");
-//        Map<String, Long> collect = stringList.stream().collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
-//        System.out.println("----" + collect);
+//        PatentNoVO vo = new PatentNoVO();
+//        vo.setPatentNo("CN201910069334.7");
+//        PatentColumnDTO columnDTO = patentService.selectPatentDetail(vo);
+//        System.out.println(columnDTO);
+
+        String s = "asfassafsafe";
+        Map<Character, Long> map = s.chars().mapToObj(c->(char)c).collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
+        System.out.println(map);
+
+        List<String> stringList = Arrays.asList("apple", "apple", "balana", "origin", "apple", "balana");
+        Map<String, Long> collect = stringList.stream().collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
+        System.out.println("----" + collect);
     }
 
     @Test
@@ -476,4 +474,30 @@ public class EventServiceTests {
         System.out.println(ids);
     }
 
+    @Test
+    public void test102() {
+        String s = "a47efjerAksu&*s/e";
+        String s2 = s.replaceAll("[^a-zA-Z]", "").toLowerCase(Locale.ROOT);
+        String p = s.replace("/", "P");
+        System.out.println(p);
+        System.out.println("s2 = " + s2);
+        List<Character> list1 = Arrays.asList('a', 'b', 'c', 'd','e','f','g','h','i','j','k','l','m','n');
+        String s1 = s.toLowerCase(Locale.ROOT);
+        int length = s1.length();
+        List<Character> list = new ArrayList<>();
+        for (int i = 0; i < length; i++) {
+            char c = s1.charAt(i);
+            if (list1.contains(c)) {
+                list.add(c);
+            }
+        }
+        Collections.sort(list);
+        System.out.println(list);
+        String join = StringUtils.join(list, "");
+        System.out.println("------" + join);
+
+        Map<Character, Long> collect = list.stream().collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
+        System.out.println(collect);
+    }
+
 }