Przeglądaj źródła

Merge remote-tracking branch 'origin/master'

lwhhszx 1 rok temu
rodzic
commit
1813116c14

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

@@ -1,6 +1,7 @@
 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;
@@ -14,7 +15,13 @@ public class MatchPhaseQueryBuilder implements IQueryBuilder{
 
     @Override
     public Query creteQuery() throws ParseException {
-        return null;
+        Query query = null;
+        if (value.contains(" ")) {
+            query = QueryBuilders.matchPhrase(i -> i.field(field).query(value));
+        } else {
+            query = QueryBuilders.matchPhrase(i -> i.field(field).query(value).slop(2));
+        }
+        return query;
     }
 
     public String getField() {

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

@@ -45,6 +45,7 @@ public class CustomAnalysisItemSettingService extends ServiceImpl<CustomAnalysis
         configDTO.setLine(JsonUtils.jsonToPojo(temp.getLineConfig(), CustomSettingLineConfigDTO.class));
         configDTO.setTable(JsonUtils.jsonToList(temp.getTableConfig(), CustomSettingTableConfigDTO.class));
         temp.setConfig(configDTO);
+        temp.setShow(temp.getShow1());
         temp.setColorConfig(null);
         temp.setLineConfig(null);
         temp.setTableConfig(null);

+ 158 - 46
src/main/java/cn/cslg/pas/service/business/MergePersonService.java

@@ -294,7 +294,7 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
         for (Hit<Patent> hit : hits) {
             String id1 = hit.id();
             Patent patent = hit.source();
-            if (mergeType.equals("merge_applicat")) {
+            if (mergeType.equals("merge_applicant")) {
                 if (!CollectionUtils.isEmpty(patent.getMergeApplicant())) {
                     map.put(id1, patent.getMergeApplicant());
                 }
@@ -321,6 +321,8 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
     public Integer mergePersonAgain(MergePersonAgainVO vo) throws Exception {
         List<String> mergedNames = vo.getNeedMergedName();
         List<String> mergeName = vo.getMergedName();
+        Integer type = vo.getType();
+        Integer projectId = vo.getProjectId();
         List<String> nameList = new ArrayList<>();
         if (!CollectionUtils.isEmpty(mergedNames)) {
             for (String mergedName : mergedNames) {
@@ -331,10 +333,116 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
                 List<String> getNames = JSONArray.parseArray(name, String.class);
                 nameList.addAll(getNames);
 
-                MergePersonIdVO personIdVO = new MergePersonIdVO();
-                personIdVO.setId(person.getId());
-                personIdVO.setType(person.getType());
-                this.delMergePerson(personIdVO);
+                Map<String, Patent> map = this.getDelPatent(type, projectId, mergedName);
+                if (!CollectionUtils.isEmpty(map)) {
+                    for (String id : map.keySet()) {
+                        Patent patent = map.get(id);
+                        List<PatentMergePerson> appPersonList = new ArrayList<>();
+                        List<PatentMergePerson> rightPersonList = new ArrayList<>();
+                        List<PatentMergePerson> inventorPersonList = new ArrayList<>();
+                        if (type == 0) {
+                            if (!CollectionUtils.isEmpty(patent.getApplicant())) {
+                                List<PatentPerson> applicant = patent.getApplicant();
+                                for (PatentPerson patentPerson : applicant) {
+                                    PatentMergePerson merge = new PatentMergePerson();
+                                    merge.setName(patentPerson.getName());
+                                    merge.setType(patentPerson.getType());
+                                    merge.setOrder(patentPerson.getOrder());
+                                    merge.setProjectId(String.valueOf(projectId));
+                                    appPersonList.add(merge);
+                                }
+                            }
+                            if (!CollectionUtils.isEmpty(patent.getRightHolder())) {
+                                List<PatentPerson> rightHolder = patent.getRightHolder();
+                                for (PatentPerson patentPerson : rightHolder) {
+                                    PatentMergePerson merge = new PatentMergePerson();
+                                    merge.setName(patentPerson.getName());
+                                    merge.setType(patentPerson.getType());
+                                    merge.setOrder(patentPerson.getOrder());
+                                    merge.setProjectId(String.valueOf(projectId));
+                                    rightPersonList.add(merge);
+                                }
+                            }
+                        } else {
+                            if (!CollectionUtils.isEmpty(patent.getInventor())) {
+                                List<PatentPerson> inventor = patent.getInventor();
+                                for (PatentPerson patentPerson : inventor) {
+                                    PatentMergePerson merge = new PatentMergePerson();
+                                    merge.setName(patentPerson.getName());
+                                    merge.setType(patentPerson.getType());
+                                    merge.setOrder(patentPerson.getOrder());
+                                    merge.setProjectId(String.valueOf(projectId));
+                                    inventorPersonList.add(merge);
+                                }
+                            }
+                        }
+
+                        if (type == 0) {
+                            //申请人
+                            Map<String, List<PatentMergePerson>> appMap = this.getChildMergePerson(id, projectId, "merge_applicant");
+                            if (!CollectionUtils.isEmpty(appMap)) {
+                                for (String appId : appMap.keySet()) {
+                                    //添加子文档
+                                    Patent newPatent = new Patent();
+                                    PatentJoin patentJoin = new PatentJoin();
+                                    patentJoin.setParent(id);
+                                    patentJoin.setName("merge_applicat");
+                                    newPatent.setPatentJoin(patentJoin);
+                                    newPatent.setMergeApplicant(appPersonList);
+                                    String child = this.addChild(newPatent, id);
+                                    if (StringUtils.isEmpty(child)) {
+                                        throw new XiaoShiException("删除失败");
+                                    } else {
+                                        //删除原子文档
+                                        this.delete(Arrays.asList(appId));
+                                    }
+                                }
+                            }
+                            //权利人
+                            Map<String, List<PatentMergePerson>> rightMap = this.getChildMergePerson(id, projectId, "merge_right_holder");
+                            if (!CollectionUtils.isEmpty(rightMap)) {
+                                for (String rightId : rightMap.keySet()) {
+                                    //添加子文档
+                                    Patent newPatent = new Patent();
+                                    PatentJoin patentJoin = new PatentJoin();
+                                    patentJoin.setParent(id);
+                                    patentJoin.setName("merge_right_holder");
+                                    newPatent.setPatentJoin(patentJoin);
+                                    newPatent.setMergeInventor(rightPersonList);
+                                    String child = this.addChild(newPatent, id);
+                                    if (StringUtils.isEmpty(child)) {
+                                        throw new XiaoShiException("删除失败");
+                                    } else {
+                                        //删除原子文档
+                                        this.delete(Arrays.asList(rightId));
+                                    }
+                                }
+                            }
+                        } else {
+                            //发明人
+                            Map<String, List<PatentMergePerson>> inventorMap = this.getChildMergePerson(id, projectId, "merge_inventor");
+                            if (!CollectionUtils.isEmpty(inventorMap)) {
+                                for (String inventorId : inventorMap.keySet()) {
+                                    //添加子文档
+                                    Patent newPatent = new Patent();
+                                    PatentJoin patentJoin = new PatentJoin();
+                                    patentJoin.setParent(id);
+                                    patentJoin.setName("merge_inventor");
+                                    newPatent.setPatentJoin(patentJoin);
+                                    newPatent.setMergeInventor(inventorPersonList);
+                                    String child = this.addChild(newPatent, id);
+                                    if (StringUtils.isEmpty(child)) {
+                                        throw new XiaoShiException("删除失败");
+                                    } else {
+                                        //删除原子文档
+                                        this.delete(Arrays.asList(inventorId));
+                                    }
+                                }
+                            }
+                        }
+                    }
+                    mergePersonMapper.deleteById(person.getId());
+                }
             }
         }
 
@@ -343,8 +451,8 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
         }
 
         MergePersonVO personVO = new MergePersonVO();
-        personVO.setProjectId(vo.getProjectId());
-        personVO.setType(vo.getType());
+        personVO.setProjectId(projectId);
+        personVO.setType(type);
         personVO.setName(vo.getName());
         personVO.setAbbreviation(vo.getAbbreviation());
         personVO.setCountry(vo.getCountry());
@@ -957,7 +1065,7 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
                         if (!CollectionUtils.isEmpty(inventorMap)) {
                             for (String inventorId : inventorMap.keySet()) {
                                 if (CollectionUtils.isEmpty(nameDatas)) {
-                                    this.delSingleMerge(inventorId, type, mergedName);
+                                    this.delSingleMerge(inventorId, type, name);
                                 }
 
                                 ArrayList<PatentMergePerson> inventorMergeList = new ArrayList<>(mergePersonList);
@@ -1011,43 +1119,7 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
 
             List<String> list = JSONArray.parseArray(mergedName, String.class);
             if (!CollectionUtils.isEmpty(list)) {
-
-                SearchRequest.Builder builder = new SearchRequest.Builder();
-                //设置查询索引
-                builder.index("patent");
-                List<Query> queries = new ArrayList<>();
-                if (type == 0) {
-                    //合并申请人
-                    Query idQ1 = QueryBuilders.term(i -> i.field("merge_applicant.project_id").value(projectId));
-                    Query q1 = QueryBuilders.term(i -> i.field("merge_applicant.name.raw").value(name));
-                    Query bool = QueryBuilders.bool(i -> i.must(idQ1, q1));
-                    Query query1 = QueryBuilders.nested(i -> i.path("merge_applicant").query(bool));
-                    Query childQ1 = QueryBuilders.hasChild(i -> i.type("merge_applicat").query(query1));
-                    //合并权利人
-                    Query idQ2 = QueryBuilders.term(i -> i.field("merge_right_holder.project_id").value(projectId));
-                    Query q2 = QueryBuilders.term(i -> i.field("merge_right_holder.name.raw").value(name));
-                    Query bool1 = QueryBuilders.bool(i -> i.must(idQ2, q2));
-                    Query query2 = QueryBuilders.nested(i -> i.path("merge_right_holder").query(bool1));
-                    Query childQ2 = QueryBuilders.hasChild(i -> i.type("merge_right_holder").query(query2));
-                    queries.add(childQ1);
-                    queries.add(childQ2);
-                } else {
-                    Query idQ = QueryBuilders.term(i -> i.field("merge_inventor.project_id").value(projectId));
-                    Query q = QueryBuilders.term(i -> i.field("merge_inventor.name.raw").value(name));
-                    Query bool = QueryBuilders.bool(i -> i.must(idQ, q));
-                    Query query = QueryBuilders.nested(i -> i.path("merge_inventor").query(bool));
-                    Query childQ = QueryBuilders.hasChild(i -> i.type("merge_inventor").query(query));
-                    queries.add(childQ);
-                }
-                Query query = QueryBuilders.bool(i -> i.should(queries));
-                builder.query(query);
-                SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
-                List<Hit<Patent>> hits = response.hits().hits();
-                Map<String, Patent> map = new HashMap<>();
-                for (Hit<Patent> hit : hits) {
-                    String id = hit.id();
-                    map.put(id, hit.source());
-                }
+                Map<String, Patent> map = this.getDelPatent(type, projectId, name);
 
                 if (!CollectionUtils.isEmpty(map)) {
                     for (String id : map.keySet()) {
@@ -1191,6 +1263,46 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
         return vo.getId();
     }
 
+    public Map<String, Patent> getDelPatent(Integer type, Integer projectId, String name) throws IOException {
+        SearchRequest.Builder builder = new SearchRequest.Builder();
+        //设置查询索引
+        builder.index("patent");
+        List<Query> queries = new ArrayList<>();
+        if (type == 0) {
+            //合并申请人
+            Query idQ1 = QueryBuilders.term(i -> i.field("merge_applicant.project_id").value(projectId));
+            Query q1 = QueryBuilders.term(i -> i.field("merge_applicant.name.raw").value(name));
+            Query bool = QueryBuilders.bool(i -> i.must(idQ1, q1));
+            Query query1 = QueryBuilders.nested(i -> i.path("merge_applicant").query(bool));
+            Query childQ1 = QueryBuilders.hasChild(i -> i.type("merge_applicat").query(query1));
+            //合并权利人
+            Query idQ2 = QueryBuilders.term(i -> i.field("merge_right_holder.project_id").value(projectId));
+            Query q2 = QueryBuilders.term(i -> i.field("merge_right_holder.name.raw").value(name));
+            Query bool1 = QueryBuilders.bool(i -> i.must(idQ2, q2));
+            Query query2 = QueryBuilders.nested(i -> i.path("merge_right_holder").query(bool1));
+            Query childQ2 = QueryBuilders.hasChild(i -> i.type("merge_right_holder").query(query2));
+            queries.add(childQ1);
+            queries.add(childQ2);
+        } else {
+            Query idQ = QueryBuilders.term(i -> i.field("merge_inventor.project_id").value(projectId));
+            Query q = QueryBuilders.term(i -> i.field("merge_inventor.name.raw").value(name));
+            Query bool = QueryBuilders.bool(i -> i.must(idQ, q));
+            Query query = QueryBuilders.nested(i -> i.path("merge_inventor").query(bool));
+            Query childQ = QueryBuilders.hasChild(i -> i.type("merge_inventor").query(query));
+            queries.add(childQ);
+        }
+        Query query = QueryBuilders.bool(i -> i.should(queries));
+        builder.query(query);
+        SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
+        List<Hit<Patent>> hits = response.hits().hits();
+        Map<String, Patent> map = new HashMap<>();
+        for (Hit<Patent> hit : hits) {
+            String id = hit.id();
+            map.put(id, hit.source());
+        }
+        return map;
+    }
+
     /**
      * 获取所有国家列表查询
      * @return
@@ -1247,7 +1359,7 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
     }
 
     //更新patent
-    public Integer updateChild(Patent patent, String id) {
+    public Integer updateChild(Patent patent, String id, String routing) {
         UpdateRequest<Patent, Patent> req;
         req = UpdateRequest.of(
                 b -> b.index("patent")

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

@@ -136,7 +136,7 @@
     "value": "abstractStr",
     "field": "AB",
     "esField": "abstract_str.text_content",
-    "esClass": "matchQueryBuilder",
+    "esClass": "matchPhaseQueryBuilder",
     "ifSearch": "true",
     "ifGroup": "true",
     "ifShow": "true",
@@ -151,7 +151,7 @@
     "value": "title",
     "field": "TI",
     "esField": "title.text_content",
-    "esClass": "matchQueryBuilder",
+    "esClass": "matchPhaseQueryBuilder",
     "ifSearch": "true",
     "ifGroup": "true",
     "ifShow": "true",
@@ -203,10 +203,10 @@
   },
   {
     "name": "合并申请人",
-    "type": "String",
+    "type": "Array",
     "value": "mergeApplicant",
     "field": "MAT",
-    "esField": "merge_applicant.name",
+    "esField": "merge_applicant.name.raw",
     "esClass": "nestedQueryBuilder",
     "ifSearch": "true",
     "ifGroup": "true",
@@ -234,7 +234,7 @@
     "type": "Array",
     "value": "mergeInventor",
     "field": "MIN",
-    "esField": "merge_inventor.name",
+    "esField": "merge_inventor.name.raw",
     "esClass": "nestedQueryBuilder",
     "ifSearch": "true",
     "ifGroup": "true",
@@ -273,10 +273,10 @@
   },
   {
     "name": "合并权利人",
-    "type": "String",
+    "type": "Array",
     "value": "mergeRightHolder",
     "field": "MRH",
-    "esField": "merge_right_holder.name",
+    "esField": "merge_right_holder.name.raw",
     "esClass": "nestedQueryBuilder",
     "ifSearch": "true",
     "ifGroup": "true",
@@ -319,7 +319,7 @@
     "value": "agency",
     "field": "AGN",
     "esField": "agency.key",
-    "esClass": "keyWordQueryBuilder",
+    "esClass": "wildcardQueryBuilder",
     "ifSearch": "true",
     "ifGroup": "true",
     "ifShow": "true",
@@ -333,7 +333,7 @@
     "value": "agent",
     "field": "AG",
     "esField": "agent.key",
-    "esClass": "keyWordQueryBuilder",
+    "esClass": "wildcardQueryBuilder",
     "ifSearch": "true",
     "ifGroup": "true",
     "ifShow": "true",
@@ -573,7 +573,7 @@
     "groupBy": "classify"
   },
   {
-    "name": "IPC分类号一级",
+    "name": "IPC分类号",
     "type": "String",
     "value": "ipcLevel1",
     "field": "IC",
@@ -586,7 +586,7 @@
     "ifAsCondition": "true"
   },
   {
-    "name": "IPC分类号二级",
+    "name": "IPC分类号大类",
     "type": "String",
     "value": "ipcLevel2",
     "field": "IC2",
@@ -599,7 +599,7 @@
     "ifAsCondition": "true"
   },
   {
-    "name": "IPC分类号三级",
+    "name": "IPC分类号小类",
     "type": "String",
     "value": "ipcLevel3",
     "field": "IC3",
@@ -612,7 +612,7 @@
     "ifAsCondition": "true"
   },
   {
-    "name": "IPC分类号四级",
+    "name": "IPC分类号大组",
     "type": "String",
     "value": "ipcLevel4",
     "field": "IC4",
@@ -625,7 +625,7 @@
     "ifAsCondition": "true"
   },
   {
-    "name": "IPC分类号五级",
+    "name": "IPC分类号小组",
     "type": "String",
     "value": "ipcLevel5",
     "field": "IC5",
@@ -652,7 +652,7 @@
     "groupBy": "classify"
   },
   {
-    "name": "CPC分类号一级",
+    "name": "CPC分类号",
     "type": "String",
     "value": "cpcLevel1",
     "field": "cpcLevel1",
@@ -665,7 +665,7 @@
     "ifAsCondition": "true"
   },
   {
-    "name": "CPC分类号二级",
+    "name": "CPC分类号大类",
     "type": "String",
     "value": "cpcLevel2",
     "field": "cpcLevel2",
@@ -678,7 +678,7 @@
     "ifAsCondition": "true"
   },
   {
-    "name": "CPC分类号三级",
+    "name": "CPC分类号小类",
     "type": "String",
     "value": "cpcLevel3",
     "field": "cpcLevel3",
@@ -691,7 +691,7 @@
     "ifAsCondition": "true"
   },
   {
-    "name": "CPC分类号四级",
+    "name": "CPC分类号大组",
     "type": "String",
     "value": "cpcLevel4",
     "field": "cpcLevel4",
@@ -704,7 +704,7 @@
     "ifAsCondition": "true"
   },
   {
-    "name": "CPC分类号五级",
+    "name": "CPC分类号小组",
     "type": "String",
     "value": "cpcLevel5",
     "field": "cpcLevel5",
@@ -731,7 +731,7 @@
     "groupBy": "classify"
   },
   {
-    "name": "UPC分类号一级",
+    "name": "UPC分类号",
     "type": "String",
     "value": "upcLevel1",
     "field": "upcLevel1",
@@ -744,7 +744,7 @@
     "ifAsCondition": "true"
   },
   {
-    "name": "UPC分类号二级",
+    "name": "UPC分类号大类",
     "type": "String",
     "value": "upcLevel2",
     "field": "upcLevel2",
@@ -757,7 +757,7 @@
     "ifAsCondition": "true"
   },
   {
-    "name": "UPC分类号三级",
+    "name": "UPC分类号小类",
     "type": "String",
     "value": "upcLevel3",
     "field": "upcLevel3",
@@ -784,7 +784,7 @@
     "groupBy": "classify"
   },
   {
-    "name": "LOC分类号一级",
+    "name": "LOC分类号",
     "type": "String",
     "value": "locLevel1",
     "field": "locLevel1",
@@ -797,7 +797,7 @@
     "ifAsCondition": "true"
   },
   {
-    "name": "LOC分类号二级",
+    "name": "LOC分类号大类",
     "type": "String",
     "value": "locLevel2",
     "field": "locLevel2",
@@ -810,7 +810,7 @@
     "ifAsCondition": "true"
   },
   {
-    "name": "LOC分类号三级",
+    "name": "LOC分类号小类",
     "type": "String",
     "value": "locLevel3",
     "field": "locLevel3",
@@ -828,7 +828,7 @@
     "value": "claim",
     "field": "CL",
     "esField": "claim.text_content",
-    "esClass": "matchQueryBuilder",
+    "esClass": "matchPhaseQueryBuilder",
     "ifSearch": "true",
     "ifGroup": "true",
     "ifShow": "false",
@@ -1066,7 +1066,7 @@
     "esClass": "customChildQueryBuilder",
     "ifSearch": "false",
     "ifGroup": "false",
-    "ifShow": "true",
+    "ifShow": "false",
     "ifAsCondition": "true"
   },
   {
@@ -1078,7 +1078,7 @@
     "esClass": "customChildQueryBuilder",
     "ifSearch": "false",
     "ifGroup": "false",
-    "ifShow": "true",
+    "ifShow": "false",
     "ifAsCondition": "true"
   },
   {