zero 1 anno fa
parent
commit
7c214000ae

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

@@ -29,34 +29,11 @@ public class  ElasticSearchClientConfig {
     @Configuration
     public class ElasticSearchConfig {
         //注入IOC容器
-        @Bean
-        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"));
-            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);
-        }
-//                @Bean
-//                public ElasticsearchClient elasticsearchClient() throws Exception {
-//                    RestClientBuilder builder = RestClient.builder(new HttpHost("47.101.137.223", 9200, "http"));
-//                    RestClient client = builder.build();
-//                    ElasticsearchTransport transport = new RestClientTransport(client, new JacksonJsonpMapper());
-//
-//                    return new ElasticsearchClient(transport);
-//                }
-
-
 //        @Bean
 //        public ElasticsearchClient elasticsearchClient() throws Exception {
-//            RestClientBuilder builder = RestClient.builder(new HttpHost("47.101.137.223", 9200, "http"));
+//            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();
@@ -65,5 +42,28 @@ public class  ElasticSearchClientConfig {
 //            ElasticsearchTransport transport = new RestClientTransport(client,new JacksonJsonpMapper());
 //            return new ElasticsearchClient(transport);
 //        }
+//                @Bean
+//                public ElasticsearchClient elasticsearchClient() throws Exception {
+//                    RestClientBuilder builder = RestClient.builder(new HttpHost("47.101.137.223", 9200, "http"));
+//                    RestClient client = builder.build();
+//                    ElasticsearchTransport transport = new RestClientTransport(client, new JacksonJsonpMapper());
+//
+//                    return new ElasticsearchClient(transport);
+//                }
+
+
+        @Bean
+        public ElasticsearchClient elasticsearchClient() throws Exception {
+            RestClientBuilder builder = RestClient.builder(new HttpHost("192.168.2.24", 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);
+        }
     }
 }

+ 5 - 0
src/main/java/cn/cslg/pas/domain/es/ESCustomField.java

@@ -66,4 +66,9 @@ public class ESCustomField {
     @JsonProperty("create_time")
     Date createTime;
 
+    /**
+     * 是否最新
+     */
+    @JsonProperty("if_new")
+    Integer ifNew;
 }

+ 3 - 1
src/main/java/cn/cslg/pas/factorys/EsBuilderFactory/CustomChildQueryBuilder.java

@@ -59,8 +59,10 @@ public class CustomChildQueryBuilder implements IQueryBuilder {
             q = QueryBuilders.term(n -> n.field(field).value(value));
         }
         Query finalQ = q;
+        Query q2 = QueryBuilders.term(i -> i.field("custom_field.if_new").value(1));
+        Query bool = QueryBuilders.bool(i -> i.must(finalQ, q2));
         Query query = QueryBuilders.hasChild(i -> i.type("project_customfield")
-                .query(finalQ));
+                .query(bool));
         return query;
     }
 

+ 35 - 27
src/main/java/cn/cslg/pas/factorys/EsCountAnalyseBuilderFactory/ChildCountAnalysisBuilder.java

@@ -32,8 +32,8 @@ public class ChildCountAnalysisBuilder implements IEsCountAnalysisBuilder {
     public Aggregation createCountAnalyseAgg() throws Exception {
         Aggregation aggregation = null;
         List<Query> queryList = new ArrayList<>();
-        Query q = null;
         Query q1 = QueryBuilders.term(i -> i.field("custom_field.field").value(fieldId));
+        Query q = QueryBuilders.term(i -> i.field("custom_field.if_new").value(1));
         if (taskId != null) {
             Query q3 = QueryBuilders.term(i -> i.field("custom_field.task_id").value(taskId));
             queryList.add(q3);
@@ -41,9 +41,10 @@ public class ChildCountAnalysisBuilder implements IEsCountAnalysisBuilder {
             if (projectId != null) {
                 Query q2 = QueryBuilders.term(i -> i.field("custom_field.project_id").value(projectId));
                 queryList.add(q2);
-                q = QueryBuilders.exists(i -> i.field("custom_field.task_id"));
+//                q = QueryBuilders.exists(i -> i.field("custom_field.task_id"));
             }
         }
+        queryList.add(q);
         queryList.add(q1);
         Aggregation termAgg = null;
         if (ifHaveChild) {
@@ -62,18 +63,22 @@ public class ChildCountAnalysisBuilder implements IEsCountAnalysisBuilder {
                     queryList.add(query);
                 }
                 Aggregation terms = AggregationBuilders.terms(i -> i.field("custom_field.stats_value.raw").size(topN));
-                if (taskId != null) {
-                    termAgg = new Aggregation.Builder().filter(n -> n.bool(k -> k.must(queryList)))
-                            .aggregations(new HashMap() {{
-                                put("filterAgg", terms);
-                            }}).build();
-                } else {
-                    Query finalQ = q;
-                    termAgg = new Aggregation.Builder().filter(n -> n.bool(k -> k.must(queryList).mustNot(finalQ)))
-                            .aggregations(new HashMap() {{
-                                put("filterAgg", terms);
-                            }}).build();
-                }
+                termAgg = new Aggregation.Builder().filter(n -> n.bool(k -> k.must(queryList)))
+                        .aggregations(new HashMap() {{
+                            put("filterAgg", terms);
+                        }}).build();
+//                if (taskId != null) {
+//                    termAgg = new Aggregation.Builder().filter(n -> n.bool(k -> k.must(queryList)))
+//                            .aggregations(new HashMap() {{
+//                                put("filterAgg", terms);
+//                            }}).build();
+//                } else {
+//                    Query finalQ = q;
+//                    termAgg = new Aggregation.Builder().filter(n -> n.bool(k -> k.must(queryList).mustNot(finalQ)))
+//                            .aggregations(new HashMap() {{
+//                                put("filterAgg", terms);
+//                            }}).build();
+//                }
 
             }
         } else {
@@ -92,18 +97,22 @@ public class ChildCountAnalysisBuilder implements IEsCountAnalysisBuilder {
                     queryList.add(query);
                 }
                 Aggregation terms = AggregationBuilders.terms(i -> i.field("custom_field.field_value.raw").size(topN));
-                if (taskId != null) {
-                    termAgg = new Aggregation.Builder().filter(n -> n.bool(k -> k.must(queryList)))
-                            .aggregations(new HashMap() {{
-                                put("filterAgg", terms);
-                            }}).build();
-                } else {
-                    Query finalQ = q;
-                    termAgg = new Aggregation.Builder().filter(n -> n.bool(k -> k.must(queryList).mustNot(finalQ)))
-                            .aggregations(new HashMap() {{
-                                put("filterAgg", terms);
-                            }}).build();
-                }
+                termAgg = new Aggregation.Builder().filter(n -> n.bool(k -> k.must(queryList)))
+                        .aggregations(new HashMap() {{
+                            put("filterAgg", terms);
+                        }}).build();
+//                if (taskId != null) {
+//                    termAgg = new Aggregation.Builder().filter(n -> n.bool(k -> k.must(queryList)))
+//                            .aggregations(new HashMap() {{
+//                                put("filterAgg", terms);
+//                            }}).build();
+//                } else {
+//                    Query finalQ = q;
+//                    termAgg = new Aggregation.Builder().filter(n -> n.bool(k -> k.must(queryList).mustNot(finalQ)))
+//                            .aggregations(new HashMap() {{
+//                                put("filterAgg", terms);
+//                            }}).build();
+//                }
             }
         }
 
@@ -114,7 +123,6 @@ public class ChildCountAnalysisBuilder implements IEsCountAnalysisBuilder {
                     put("termAgg", finalTermAgg);
                 }}).build();
 
-
         aggregation = new Aggregation.Builder().children(new ChildrenAggregation.Builder()
                 .type("project_customfield").build())
                 .aggregations(new HashMap() {{

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

@@ -49,6 +49,7 @@ public class PatentLabelService {
                 esCustomField.setField("0");
                 esCustomField.setFieldValue(labels);
                 esCustomField.setStatsValue(labels);
+                esCustomField.setIfNew(1);
                 id = esCustomFieldService.addEsCustomFieldToEs(esCustomField, patentNo, null);
             }
         } catch (Exception e) {

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

@@ -267,6 +267,7 @@ public class EsCustomFieldService {
             esCustomFieldHistory.setCustomFieldId(id);
             this.addCustomFieldHistory(esCustomFieldHistory);
         } else {
+            esCustomField.setIfNew(1);
             this.addEsCustomFieldToEs(esCustomField, patentNo, patentId);
         }
         return id;

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

@@ -537,21 +537,88 @@ public class EsService {
         }
     }
 
-    /*POST /patent/_update_by_query
-    {
-        "script": {
-        "source": "ctx._source.project_id = 1",
-                "lang": "painless"
-    },
-        "query": {
-        "term": {
-            "_id": "yYVNzowBmzIo81_44OnV"
+    //获取父文档相关的所有自定义子文档,按照时间按倒序,首个改为最新数据,其他if——new改为0:不是最新
+    public Integer getIds(String parentId, Integer projectId, Integer taskId, String fieldId) throws Exception {
+        int ifNew = 0;
+        SearchRequest.Builder builder = new SearchRequest.Builder();
+        //设置查询索引
+        builder.index("patent");
+        Query q1 = QueryBuilders.hasParent(i -> i.parentType("patent").query(j -> j.ids(IdsQuery.of(k -> k.values(parentId)))));
+        Query q2 = QueryBuilders.exists(i -> i.field("custom_field"));
+        Query q3 = null;
+        if (taskId != null) {
+            q3 = QueryBuilders.term(i -> i.field("custom_field.task_id").value(taskId));
+        } else {
+            q3 = QueryBuilders.term(i -> i.field("custom_field.project_id").value(projectId));
+        }
+        Query q4 = QueryBuilders.term(i -> i.field("custom_field.field").value(fieldId));
+        Query finalQ = q3;
+        Query bool = QueryBuilders.bool(i -> i.must(q1, q2, finalQ, q4));
+        builder.query(bool);
+
+        List<SortOptions> optionsList = new ArrayList<>();
+        SortOptions sortOptions = SortOptions.of(i -> i.field(j -> j.field("custom_field.create_time").order(SortOrder.Desc).missing(-1)));
+        optionsList.add(sortOptions);
+        builder.sort(optionsList);
+
+        SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
+        List<Hit<Patent>> hits = response.hits().hits();
+        Map<String, ESCustomField> map = new HashMap<>();
+        for (Hit<Patent> hit : hits) {
+            String id = hit.id();
+            Patent patent = hit.source();
+            map.put(id, patent.getESCustomField());
+        }
+
+        if (!CollectionUtils.isEmpty(map)) {
+            if (map.size() > 1) {
+                for (String id : map.keySet()) {
+                    ESCustomField esCustomField = new ESCustomField();
+                    esCustomField.setIfNew(0);
+                    Patent patent = new Patent();
+                    patent.setESCustomField(esCustomField);
+                    this.updateCustomFieldIfNew(patent, id);
+                }
+            }
+            Iterator<Map.Entry<String, ESCustomField>> iterator = map.entrySet().iterator();
+            if (iterator.hasNext()) {
+                Map.Entry<String, ESCustomField> firstEntry = iterator.next();
+                String key = firstEntry.getKey();
+                ESCustomField esCustomField = new ESCustomField();
+                esCustomField.setIfNew(1);
+                Patent patent = new Patent();
+                patent.setESCustomField(esCustomField);
+                ifNew = this.updateCustomFieldIfNew(patent, key);
+            }
+        }
+        return ifNew;
+    }
+
+    //更新自定义文档是否是最新数据
+    public Integer updateCustomFieldIfNew(Patent patent, String id) throws IOException {
+        ESCustomField customField = patent.getESCustomField();
+        String source = "ctx._source.custom_field.if_new = " + customField.getIfNew();
+        InlineScript inlineScript = InlineScript.of(i -> i.lang("painless").source(source));
+        Script script = Script.of(i -> i.inline(inlineScript));
+        Query query = QueryBuilders.term(i -> i.field("_id").value(id));
+        UpdateByQueryRequest request = UpdateByQueryRequest.of(i -> i.index("patent").script(script).refresh(true).query(query));
+        try {
+            client.updateByQuery(request);
+            return 1;
+        } catch (IOException e) {
+            return -1;
         }
     }
-    }*/
+
     //更新子文档
-    public Integer updateByQuery(Patent patent, String id) throws IOException {
+    public Integer updateByQuery(Patent patent, String id) throws Exception {
         ESCustomField customField = patent.getESCustomField();
+        String parentId = patent.getPatentJoin().getParent();
+        Integer num = this.getIds(parentId, customField.getProjectId(), customField.getTaskId(), customField.getField());
+        if (num < 1) {
+            throw new XiaoShiException("子文档是否最新更新失败");
+        }
+
         String valueField = "[";
         List<String> fieldValueList = customField.getFieldValue();
         if (!CollectionUtils.isEmpty(fieldValueList)) {
@@ -586,6 +653,7 @@ public class EsService {
         String dateStr = "\'" + s + "\'";
         String projectId = "ctx._source.custom_field.project_id = " + customField.getProjectId() + ";";
         String taskId = "ctx._source.custom_field.task_id = " + customField.getTaskId() + ";";
+//        String ifNew = "ctx._source.custom_field.if_new = " + customField.getIfNew() + ";";
         String field = "ctx._source.custom_field.field=" + customField.getField() + ";";
         String fieldType = "ctx._source.custom_field.field_type = " + customField.getFieldType() + ";";
         String personId = "ctx._source.custom_field.person_id = " + customField.getPersonId() + ";";

+ 1 - 1
src/main/resources/application-dev.yml

@@ -65,7 +65,7 @@ authorUrl: http://localhost:8871
 PCSUrl: http://localhost:8871
 #OPSUrl: http://192.168.2.24:5001
 OPSUrl: http://139.224.24.90:5001
-PASUrl: http://localhost:8877
+PASUrl: http://localhost:8879
 FMSUrl: http://localhost:8802
 FileSource: 1
 ES:

+ 1 - 1
src/main/resources/application.yml

@@ -20,7 +20,7 @@ spring:
       max-file-size: 1000MB
       max-request-size: 1000MB
   profiles:
-    active: testNetIn
+    active: dev
   jackson:
     default-property-inclusion: non_null
     serialization:

+ 18 - 18
src/test/java/cn/cslg/pas/service/EsCustomFiedTests.java

@@ -34,43 +34,43 @@ public class EsCustomFiedTests {
 
     @Test
     public void addEsCustomField() throws Exception {
-String patentNo="CN200920148721.1";
-        ESCustomField esCustomField =new ESCustomField();
+        String patentNo = "CN200920148721.1";
+        ESCustomField esCustomField = new ESCustomField();
         esCustomField.setField("1");
         esCustomField.setProjectId(0);
-        Date date =new Date();
+        Date date = new Date();
         esCustomField.setCreateTime(date);
         esCustomField.setPersonId("1");
         esCustomField.setStatsValue(Arrays.asList("高相关"));
         esCustomField.setFieldValue(Arrays.asList("高相关"));
         esCustomField.setFieldType(1);
-String a =esCustomFieldService.addEsCustomFieldToEs(esCustomField,patentNo,"");
-System.out.println(a);
+        String a = esCustomFieldService.addEsCustomFieldToEs(esCustomField, patentNo, "");
+        System.out.println(a);
     }
 
     @Test
-    public  void getEsCustomField() throws Exception{
-        EsCustomFieldDTO esCustomFieldDTO =new EsCustomFieldDTO();
+    public void getEsCustomField() throws Exception {
+        EsCustomFieldDTO esCustomFieldDTO = new EsCustomFieldDTO();
         esCustomFieldDTO.setProjectId(0);
         esCustomFieldDTO.setFieldId("1");
 
-        String patentNo="CN200920148721.1";
- PatentWithIdVO patent = esCustomFieldService.getEsCustomField(esCustomFieldDTO);
- System.out.println(patent);
+        String patentNo = "CN200920148721.1";
+        PatentWithIdVO patent = esCustomFieldService.getEsCustomField(esCustomFieldDTO);
+        System.out.println(patent);
     }
 
     @Test
-    public  void getTree(){
-     List<String> a=new ArrayList<>();
-     a.add("s");
-     a.removeAll(new ArrayList<>());
-     System.out.println(
-             a
-     );
+    public void getTree() {
+        List<String> a = new ArrayList<>();
+        a.add("s");
+        a.removeAll(new ArrayList<>());
+        System.out.println(
+                a
+        );
     }
 
     @Test
-    public void getBackTo() throws Exception{
+    public void getBackTo() throws Exception {
         System.out.println("a");
     }
 }

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

@@ -527,5 +527,7 @@ public class EventServiceTests {
 //        if (s.contains("48")) {
 //            System.out.println("shduahdi");
 //        }
+//        String ids = esService.getIds("t53GZY8BdwlBaY8vOJFq", 319, null, "105");
+//        System.out.println(ids);
     }
 }