Bläddra i källkod

Merge remote-tracking branch 'origin/master'

lwhhszx 1 år sedan
förälder
incheckning
233746c5dc

+ 3 - 5
src/main/java/cn/cslg/pas/common/utils/PatentNoUtil.java

@@ -33,12 +33,10 @@ public class PatentNoUtil {
         if(!matcher.find()){
             patentNo ="CN"+patentNo;
         }
-        String numbers = patentNo.replaceAll("[^\\d]", "");
+
         char secondLastChar = patentNo.charAt(patentNo.length() - 2);
-        if(numbers.length()==13&&secondLastChar!='.'){
-            StringBuilder stringBuilder =new StringBuilder(patentNo);
-            stringBuilder.insert(patentNo.length() - 1,".");
-            patentNo =stringBuilder.toString();
+        if(patentNo.length()==15&&secondLastChar!='.'){
+         patentNo=patentNo.substring(0,patentNo.length()-1);
         }
         return patentNo;
     }

+ 8 - 1
src/main/java/cn/cslg/pas/factorys/EsBuilderFactory/NumberQueryBuilder.java

@@ -6,6 +6,8 @@ import co.elastic.clients.json.JsonData;
 import org.springframework.stereotype.Component;
 
 import java.text.ParseException;
+import java.util.HashMap;
+import java.util.Map;
 
 @Component
 public class NumberQueryBuilder implements IQueryBuilder{
@@ -22,7 +24,12 @@ public class NumberQueryBuilder implements IQueryBuilder{
     @Override
     public Query creteQuery() throws ParseException {
         Query query = null;
-        if (operator.equals(GT)) {
+        if (value.contains("~")) {
+            String[] dates = value.split("~");
+            String date1 = dates[0];
+            String date2 = dates[1];
+            query = QueryBuilders.range(range -> range.field(field).gte(JsonData.of(date1)).lte(JsonData.of(date2)));
+        } else if (operator.equals(GT)) {
             query = QueryBuilders.range(range -> range.field(field).gt(JsonData.of(value)));
         } else if (operator.equals(GTE)) {
             query = QueryBuilders.range(range -> range.field(field).gte(JsonData.of(value)));

+ 74 - 0
src/main/java/cn/cslg/pas/factorys/EsBuilderFactory/PrioritiesNONestedQueryBuilder.java

@@ -0,0 +1,74 @@
+package cn.cslg.pas.factorys.EsBuilderFactory;
+
+import co.elastic.clients.elasticsearch._types.query_dsl.Query;
+import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
+import org.springframework.stereotype.Component;
+
+import java.text.ParseException;
+import java.util.ArrayList;
+import java.util.List;
+
+@Component
+public class PrioritiesNONestedQueryBuilder implements IQueryBuilder{
+    private String field = "";
+    private String value = "";
+    private String operator = "";
+    public String path = "";
+    public Integer projectId = null;
+
+
+    @Override
+    public Query creteQuery() throws ParseException {
+        List<Query> queries = new ArrayList<>();
+        String[] valueStrs = value.split("[,,]|(\\r\\n)+|\\r+|\\n+");
+        for (int i = 0; i < valueStrs.length; i++) {
+            String temValue = valueStrs[i];
+            String str = "*";
+            String s = str.concat(temValue).concat("*");
+            Query query = QueryBuilders.wildcard(n -> n.field(field).value(s));
+            Query nestedQuery = QueryBuilders.nested(z -> z.path(path).query(query));
+            queries.add(nestedQuery);
+        }
+        return QueryBuilders.bool(m -> m.should(queries));
+    }
+
+    public String getField() {
+        return field;
+    }
+
+    public void setField(String field) {
+        this.field = field;
+    }
+
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    public String getOperator() {
+        return operator;
+    }
+
+    public void setOperator(String operator) {
+        this.operator = operator;
+    }
+
+    public String getPath() {
+        return path;
+    }
+
+    public void setPath(String path) {
+        this.path = path;
+    }
+
+    public Integer getProjectId() {
+        return projectId;
+    }
+
+    public void setProjectId(Integer projectId) {
+        this.projectId = projectId;
+    }
+}

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

@@ -24,7 +24,7 @@ public class WildcardNosQueryBuilder implements IQueryBuilder {
         Query query = null;
 
         List<Query> queries = new ArrayList<>();
-        String[] valueStrs = value.split("\\r\\n|,|\\r|\\n|,");
+        String[] valueStrs = value.split("[,,]|(\\r\\n)+|\\r+|\\n+");
 
 
         for (int i = 0; i < valueStrs.length; i++) {

+ 1 - 1
src/main/java/cn/cslg/pas/factorys/WebQueryFactory/GetWebAppNosQuery.java

@@ -22,7 +22,7 @@ public class GetWebAppNosQuery implements FormWebQueryFieldImp {
             option = "/";
         }
         value = value.trim();
-        String[] valueStrs = value.split("\\s+");
+        String[] valueStrs = value.split("[,,]|(\\r\\n)+|\\r+|\\n+");
         List<String> queryLists = new ArrayList<>();
 
         for (int i = 0; i < valueStrs.length; i++) {

+ 2 - 2
src/main/java/cn/cslg/pas/factorys/WebQueryFactory/GetWebDateQuery.java

@@ -52,7 +52,7 @@ public class GetWebDateQuery implements FormWebQueryFieldImp {
             Date date = new Date();
             SimpleDateFormat sf1 = new SimpleDateFormat("yyyyMMdd");
             String nowDate = sf1.format(date);
-            String date1 = FormWebQueryDateUtil.formatDate(value, true);
+            String date1 = FormWebQueryDateUtil.formatDate(value, false);
             value = date1 + ">" + nowDate;
             reQuery = value + option + filed;
         }
@@ -61,7 +61,7 @@ public class GetWebDateQuery implements FormWebQueryFieldImp {
 
             SimpleDateFormat sf1 = new SimpleDateFormat("yyyyMMdd");
             String lastDate = "18000101";
-            String dateStr1 = FormWebQueryDateUtil.formatDate(value, true);
+            String dateStr1 = FormWebQueryDateUtil.formatDate(value, false);
             try {
                 Date date1 = sf1.parse(dateStr1);
                 Calendar calendar = Calendar.getInstance();

+ 1 - 1
src/main/java/cn/cslg/pas/factorys/WebQueryFactory/GetWebNosQuery.java

@@ -24,7 +24,7 @@ public class GetWebNosQuery implements FormWebQueryFieldImp {
             option = "/";
         }
         value =value.trim();
-        String[] valueStrs =value.split("\\r\\n|,|\\r|\\n|,");
+        String[] valueStrs =value.split("[,,]|(\\r\\n)+|\\r+|\\n+");
 
         List<String> queryLists=new ArrayList<>();
 

+ 1 - 1
src/main/java/cn/cslg/pas/factorys/WebQueryFactory/GetWebPatentNosQuery.java

@@ -24,7 +24,7 @@ public class GetWebPatentNosQuery implements FormWebQueryFieldImp {
             option = "/";
         }
         value = value.trim();
-        String[] valueStrs = value.split("\\s+");
+        String[] valueStrs = value.split("[,,]|(\\r\\n)+|\\r+|\\n+");
         List<String> queryLists = new ArrayList<>();
 
         for (int i = 0; i < valueStrs.length; i++) {

+ 15 - 14
src/main/java/cn/cslg/pas/service/business/es/EsExportService.java

@@ -69,7 +69,7 @@ public class EsExportService {
             list.add(exportDTO);
         }
         for (ExportDTO exportDTO : list) {
-            if (StringUtils.isNotEmpty(exportDTO.getEstimatedTree())) {
+            if (StringUtils.isNotEmpty(exportDTO.getCondition())) {
                 treeNode tree = null;
                 try {
                     tree = expressManager.getInstance().Parse(exportDTO.getCondition(), false);
@@ -96,21 +96,22 @@ public class EsExportService {
                 } else {
                     exportDTO.setQueryFlag("T");
                 }
-            }
-            if (StringUtils.isNotEmpty(exportDTO.getOutCondition()) && !exportDTO.getOutCondition().contains("+")) {
-                String outQueryStr = null;
-                try {
-                    outQueryStr = formatQueryService.reQuery(exportDTO.getOutCondition(), "webSearchConfig");
-                } catch (Exception e) {
-                    System.out.println(exportDTO.getOutCondition() + "转换外部接口检索表达式错误");
-                }
-                exportDTO.setActualOutQuery(outQueryStr);
-                if (outQueryStr == null || exportDTO.getEstimatedOutQuery() == null || !outQueryStr.equalsIgnoreCase(exportDTO.getEstimatedOutQuery().trim())) {
-                    exportDTO.setOutQueryFlag("F");
-                } else {
-                    exportDTO.setOutQueryFlag("T");
+                if (StringUtils.isNotEmpty(exportDTO.getOutCondition()) && !exportDTO.getOutCondition().contains("+")) {
+                    String outQueryStr = null;
+                    try {
+                        outQueryStr = formatQueryService.reQuery(exportDTO.getOutCondition(), "webSearchConfig");
+                    } catch (Exception e) {
+                        System.out.println(exportDTO.getOutCondition() + "转换外部接口检索表达式错误");
+                    }
+                    exportDTO.setActualOutQuery(outQueryStr);
+                    if (outQueryStr == null || exportDTO.getEstimatedOutQuery() == null || !outQueryStr.equalsIgnoreCase(exportDTO.getEstimatedOutQuery().trim())) {
+                        exportDTO.setOutQueryFlag("F");
+                    } else {
+                        exportDTO.setOutQueryFlag("T");
+                    }
                 }
             }
+
         }
         if (!CollectionUtils.isEmpty(list)) {
             this.loadExportTree(list);

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

@@ -196,6 +196,22 @@ System.out.println("search time:"+(end-start));
         return null;
     }
 
+    public String getFormatCondition(String condition) {
+        String s = condition.substring(condition.indexOf("=") + 1);
+        String s1 = s.replaceAll("[()]", "");
+        String[] valueStrs = s1.split("[,,]|(\\r\\n)+|\\r+|\\n+");
+        StringBuilder stringBuilder = new StringBuilder();
+        for (int i = 0; i < valueStrs.length; i++) {
+            final String value = valueStrs[i];
+            if (i != valueStrs.length - 1) {
+                stringBuilder.append(value).append(",");
+            } else {
+                stringBuilder.append(value);
+            }
+        }
+        return stringBuilder.toString();
+    }
+
     public List<PatentStarListDTO> getSplitedConditions(PatentStarListDTO patentStarListDTO, int patentNum) throws IOException {
         DateTime nowDate = new DateTime();
         DateTime date = DateUtils2.formStrToDateTime("1900-01-01");
@@ -862,6 +878,10 @@ System.out.println("search time:"+(end-start));
             if (item.getLG() != null) {
                 patentColumnDTO.setSimpleStatus(item.getLG().toString());
             }
+            //装载专利类型
+            if (item.getPatentType() != null) {
+                patentColumnDTO.setPatentType(item.getPatentType().toString());
+            }
             //装载摘要
             List<Text> abstractList = new ArrayList<>();
             Text text = new Text();
@@ -942,28 +962,41 @@ System.out.println("search time:"+(end-start));
                 patentColumnDTO.setPublicDate(DateUtils.strToDate(item.getPublicDate()));
             }
 
+            //装载公开日
+            if (item.getPublicAccreditDate() != null && !item.getPublicAccreditDate().trim().equals("")) {
+                patentColumnDTO.setGrantDate(DateUtils.strToDate(item.getPublicAccreditDate()));
+            }
+
             //装载申请人
             if (item.getApplicantStr() != null && !item.getApplicantStr().trim().equals("")) {
                 List<String> names = Arrays.asList(item.getApplicantStr().split(";"));
                 patentColumnDTO.setApplicant(names);
+            } else {
+                patentColumnDTO.setApplicant(new ArrayList<>());
             }
 
             //装载发明人
             if (item.getInventorStr() != null && !item.getInventorStr().trim().equals("")) {
                 List<String> names = Arrays.asList(item.getInventorStr().split(";"));
                 patentColumnDTO.setInventor(names);
+            } else {
+                patentColumnDTO.setInventor(new ArrayList<>());
             }
 
             //装载权利人
             if (item.getCurrentApplicantStr() != null && !item.getCurrentApplicantStr().trim().equals("")) {
                 List<String> names = Arrays.asList(item.getCurrentApplicantStr().split(";"));
                 patentColumnDTO.setRightHolder(names);
+            } else {
+                patentColumnDTO.setRightHolder(new ArrayList<>());
             }
 
             //装载代理人
             if (item.getAgentStr() != null && !item.getAgentStr().trim().equals("")) {
                 List<String> names = Arrays.asList(item.getAgentStr().split(";"));
                 patentColumnDTO.setAgent(names);
+            } else {
+                patentColumnDTO.setAgent(new ArrayList<>());
             }
 
             //装载代理机构

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

@@ -5,7 +5,7 @@
     "value": "patentNo",
     "field": "NO",
     "esField": "patent_no.keyword",
-    "esClass": "wildcardQueryBuilder",
+    "esClass": "wildcardNosQueryBuilder",
     "ifSearch": "true",
     "ifGroup": "true",
     "ifShow": "true",
@@ -21,7 +21,7 @@
     "value": "appNo",
     "field": "AN",
     "esField": "app_no.keyword",
-    "esClass": "wildcardQueryBuilder",
+    "esClass": "wildcardNosQueryBuilder",
     "ifSearch": "true",
     "ifGroup": "true",
     "ifShow": "true",
@@ -37,7 +37,7 @@
     "value": "publicNo",
     "field": "PN",
     "esField": "public_no.keyword",
-    "esClass": "wildcardQueryBuilder",
+    "esClass": "wildcardNosQueryBuilder",
     "ifSearch": "true",
     "ifGroup": "true",
     "ifShow": "true",
@@ -53,7 +53,7 @@
     "value": "grantNo",
     "field": "GN",
     "esField": "grant_no.keyword",
-    "esClass": "wildcardQueryBuilder",
+    "esClass": "wildcardNosQueryBuilder",
     "ifSearch": "true",
     "ifGroup": "true",
     "ifShow": "true",
@@ -1156,7 +1156,7 @@
     "value": "priorityNo",
     "field": "PRN",
     "esField": "priorities.priorityno",
-    "esClass": "nestedPersonQueryBuilder",
+    "esClass": "prioritiesNONestedQueryBuilder",
     "ifSearch": "true",
     "ifGroup": "true",
     "ifShow": "true",

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

@@ -69,7 +69,7 @@
     "type": "Integer",
     "value": "ANO",
     "field": "ANO",
-    "sqlField": "TX",
+    "sqlField": "ANO",
     "sqlClass": "getWebNosQuery",
     "orderClass": "",
     "groupClass": "",

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 1253 - 226
src/test/java/cn/cslg/pas/service/EsSearchingTest.java


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

@@ -27,7 +27,12 @@ import cn.cslg.pas.service.business.ReportTempleService;
 import cn.cslg.pas.service.business.es.*;
 import cn.cslg.pas.service.common.FileManagerService;
 import cn.cslg.pas.service.common.TranslateService;
+import cn.cslg.pas.service.query.FormatQueryService;
+import co.elastic.clients.elasticsearch.ElasticsearchClient;
 import co.elastic.clients.elasticsearch._types.query_dsl.Query;
+import co.elastic.clients.elasticsearch.core.SearchRequest;
+import co.elastic.clients.elasticsearch.core.SearchResponse;
+import co.elastic.clients.elasticsearch.core.search.Hit;
 import com.alibaba.fastjson.JSONObject;
 import org.apache.http.entity.ContentType;
 import org.junit.jupiter.api.Test;
@@ -593,4 +598,82 @@ public class EventServiceTests {
 
     }
 
+    @Autowired
+    private FormatQueryService formatQueryService;
+
+    @Autowired
+    private  ElasticsearchClient client;
+    @Test
+    public void test107() throws Exception {
+        String s = "IFN=3~4"; //条件
+        SearchRequest.Builder builder = new SearchRequest.Builder();
+        //设置查询索引
+        builder.index("patent");
+        //2、根据条件生成树结构
+        treeNode tree = expressManager.getInstance().Parse(s, false);
+        Query query = formatQueryService.EsQueryToQuery((operateNode) tree, "patent", 331);
+        builder.query(query);
+        SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
+        final List<Hit<Patent>> hits = response.hits().hits();
+        for (Hit<Patent> hit : hits) {
+            System.out.println(1);
+        }
+    }
+
+    @Test
+    public void test108() {
+        int size = 4;
+        int num = 2;
+        String s = "CN202311743859.7,CN202311695772.7,CN202311695122.2,CN202380013186.1,CN202321985312.3,CN202321795870.3,CN202321466063.7,CN202321458147.6,CN202321047372.0,CN202321021503.8";
+        String[] valueStrs = s.split("[,,]|(\\r\\n)+|\\r+|\\n+");
+        StringBuilder builder = new StringBuilder();
+        builder.append("NO").append("=").append("(");
+        for (int i = (num-1)*size; i < (num*size); i++) {
+            final String valueStr = valueStrs[i];
+            System.out.println(valueStr);
+            if (i != valueStrs.length - 1) {
+                builder.append(valueStr).append(",");
+            } else {
+                builder.append(valueStr);
+            }
+        }
+        final String s2 = builder.append(")").toString();
+        System.out.println(s2);
+        System.out.println("---------------------");
+        StringBuilder stringBuilder = new StringBuilder();
+        for (int i = 0; i < valueStrs.length; i++) {
+            final String value = valueStrs[i];
+            if (i != valueStrs.length - 1) {
+                stringBuilder.append(value).append("|");
+            } else {
+                stringBuilder.append(value);
+            }
+        }
+        final String s1 = stringBuilder.toString();
+        System.out.println(s1);
+    }
+
+    @Test
+    public void test109() {
+//        String s = condition.substring(condition.indexOf("=") + 1);
+//        String s1 = s.replaceAll("[()]", "");
+
+        int size = 4;
+        int num = 2;
+        String s = "CN202311743859.7,CN202311695772.7,CN202311695122.2,CN202380013186.1,CN202321985312.3,CN202321795870.3,CN202321466063.7,CN202321458147.6,CN202321047372.0,CN202321021503.8";
+        String[] valueStrs = s.split("[,,]|(\\r\\n)+|\\r+|\\n+");
+        StringBuilder builder = new StringBuilder();
+        builder.append("NO").append("=").append("(");
+        for (int i = (num-1)*size; i < (num*size); i++) {
+            final String valueStr = valueStrs[i];
+            System.out.println(valueStr);
+            if (i != valueStrs.length - 1) {
+                builder.append(valueStr).append(",");
+            } else {
+                builder.append(valueStr);
+            }
+        }
+        final String s2 = builder.append(")").toString();
+        System.out.println(s2);
+    }
 }