Browse Source

fixed:合并

zero 1 year ago
parent
commit
9981423953

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

@@ -236,14 +236,24 @@ public class PatentController {
     @Operation(summary = "发明人/权利人/申请人合并后的名称移除")
     @Operation(summary = "发明人/权利人/申请人合并后的名称移除")
     @PostMapping("/delMergedName")
     @PostMapping("/delMergedName")
     public Response delMergedName(@RequestBody MergedNameVO vo) throws Exception {
     public Response delMergedName(@RequestBody MergedNameVO vo) throws Exception {
-        Integer id = mergePersonService.delMergedName(vo);
+        Integer id = null;
+        try {
+            id = mergePersonService.delMergedName(vo);
+        } catch (Exception e) {
+            return Response.success(e.getMessage());
+        }
         return Response.success(id);
         return Response.success(id);
     }
     }
 
 
     @Operation(summary = "发明人/权利人/申请人合并记录删除")
     @Operation(summary = "发明人/权利人/申请人合并记录删除")
     @PostMapping("/delMergePerson")
     @PostMapping("/delMergePerson")
     public Response delMergePerson(@RequestBody MergePersonIdVO vo) throws Exception {
     public Response delMergePerson(@RequestBody MergePersonIdVO vo) throws Exception {
-        Integer id = mergePersonService.delMergePerson(vo);
+        Integer id = null;
+        try {
+            id = mergePersonService.delMergePerson(vo);
+        } catch (Exception e) {
+            return Response.success(e.getMessage());
+        }
         return Response.success(id);
         return Response.success(id);
     }
     }
 
 

+ 115 - 91
src/main/java/cn/cslg/pas/service/business/MergePersonService.java

@@ -177,7 +177,10 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
                                 for (String mergedName : mergedNames) {
                                 for (String mergedName : mergedNames) {
                                     this.delSingleMerge(appId, type, mergedName);
                                     this.delSingleMerge(appId, type, mergedName);
                                 }
                                 }
-                                this.add(appId, type, mergePersonList);
+                                Integer num = this.add(appId, type, mergePersonList);
+                                if (num < 0) {
+                                    throw new XiaoShiException("合并失败");
+                                }
                             }
                             }
                         }
                         }
                     }
                     }
@@ -191,7 +194,10 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
                                 for (String mergedName : mergedNames) {
                                 for (String mergedName : mergedNames) {
                                     this.delSingleMerge(rightId, type, mergedName);
                                     this.delSingleMerge(rightId, type, mergedName);
                                 }
                                 }
-                                this.add(rightId, type, mergePersonList);
+                                Integer num = this.add(rightId, type, mergePersonList);
+                                if (num < 0) {
+                                    throw new XiaoShiException("合并失败");
+                                }
                             }
                             }
                         }
                         }
                     }
                     }
@@ -205,12 +211,17 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
                                 for (String mergedName : mergedNames) {
                                 for (String mergedName : mergedNames) {
                                     this.delSingleMerge(inventorId, type, mergedName);
                                     this.delSingleMerge(inventorId, type, mergedName);
                                 }
                                 }
-                                this.add(inventorId, type, mergePersonList);
+                                Integer add = this.add(inventorId, type, mergePersonList);
+                                if (add < 0) {
+                                    throw new XiaoShiException("合并失败");
+                                }
                             }
                             }
                         }
                         }
                     }
                     }
                 }
                 }
             }
             }
+        } else {
+            throw new XiaoShiException("合并失败");
         }
         }
         return person.getId();
         return person.getId();
     }
     }
@@ -250,31 +261,6 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
         return map;
         return map;
     }
     }
 
 
-    public List<EsMergePersonDTO> getChildMergePersonDTO(String id, Integer projectId, String mergeType) throws IOException {
-        List<EsMergePersonDTO> list = new ArrayList<>();
-        String path = mergeType + "." + "project_id";
-        SearchRequest.Builder builder = new SearchRequest.Builder();
-        //设置查询索引
-        builder.index("patent");
-        Query idQ = QueryBuilders.term(i -> i.field(path).value(projectId));
-        Query query = QueryBuilders.nested(i -> i.path(mergeType).query(idQ));
-        IdsQuery idsQuery = IdsQuery.of(n -> n.values(Arrays.asList(id)));
-        Query q = QueryBuilders.hasParent(i -> i.parentType("patent").query(j -> j.ids(idsQuery)));
-        Query bool = QueryBuilders.bool(i -> i.must(q, query));
-        builder.query(bool);
-        SearchResponse<PatentMergePerson> response = client.search(builder.build(), PatentMergePerson.class);
-        List<Hit<PatentMergePerson>> hits = response.hits().hits();
-        for (Hit<PatentMergePerson> hit : hits) {
-            PatentMergePerson person = hit.source();
-            EsMergePersonDTO dto = new EsMergePersonDTO();
-            dto.setId(hit.id());
-            dto.setRouting(hit.routing());
-            BeanUtils.copyProperties(person, dto);
-            list.add(dto);
-        }
-        return list;
-    }
-
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
     public Integer mergePersonAgain(MergePersonAgainVO vo) throws Exception {
     public Integer mergePersonAgain(MergePersonAgainVO vo) throws Exception {
         List<String> mergedNames = vo.getNeedMergedName();
         List<String> mergedNames = vo.getNeedMergedName();
@@ -368,7 +354,6 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
                     Query q = QueryBuilders.term(i -> i.field("merge_inventor.name.raw").value(name));
                     Query q = QueryBuilders.term(i -> i.field("merge_inventor.name.raw").value(name));
                     Query bool = QueryBuilders.bool(i -> i.must(idQ, q));
                     Query bool = QueryBuilders.bool(i -> i.must(idQ, q));
                     Query query = QueryBuilders.nested(i -> i.path("merge_inventor").query(bool));
                     Query query = QueryBuilders.nested(i -> i.path("merge_inventor").query(bool));
-//                    Query bool = QueryBuilders.bool(i -> i.must(idQ, q));
                     Query childQ = QueryBuilders.hasChild(i -> i.type("merge_inventor").query(query));
                     Query childQ = QueryBuilders.hasChild(i -> i.type("merge_inventor").query(query));
                     queries.add(childQ);
                     queries.add(childQ);
                 }
                 }
@@ -409,6 +394,8 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
                             }
                             }
                         }
                         }
                     }
                     }
+                } else {
+                    throw new XiaoShiException("编辑失败");
                 }
                 }
             }
             }
         } else {
         } else {
@@ -550,36 +537,18 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
             if (type == 0) {
             if (type == 0) {
                 Query q1 = QueryBuilders.term(i -> i.field("merge_applicant.project_id").value(projectId));
                 Query q1 = QueryBuilders.term(i -> i.field("merge_applicant.project_id").value(projectId));
                 Query query1 = QueryBuilders.nested(i -> i.path("merge_applicant").query(q1));
                 Query query1 = QueryBuilders.nested(i -> i.path("merge_applicant").query(q1));
-                if (StringUtils.isNotEmpty(name)) {
-                    Query q3 = QueryBuilders.match(i -> i.field("merge_applicant.name").query(name));
-                    Query query3 = QueryBuilders.nested(i -> i.path("merge_applicant").query(q3));
-                    Query bool = QueryBuilders.bool(i -> i.must(query1).should(query3));
-                    queries.add(bool);
-                } else {
-                    queries.add(query1);
-                }
+                Query childQ1 = QueryBuilders.hasChild(i -> i.type("merge_applicat").query(query1));
+                queries.add(childQ1);
 
 
                 Query q2 = QueryBuilders.term(i -> i.field("merge_right_holder.project_id").value(projectId));
                 Query q2 = QueryBuilders.term(i -> i.field("merge_right_holder.project_id").value(projectId));
                 Query query2 = QueryBuilders.nested(i -> i.path("merge_right_holder").query(q2));
                 Query query2 = QueryBuilders.nested(i -> i.path("merge_right_holder").query(q2));
-                if (StringUtils.isNotEmpty(name)) {
-                    Query q4 = QueryBuilders.match(i -> i.field("merge_right_holder.name").query(name));
-                    Query query4 = QueryBuilders.nested(i -> i.path("merge_applicant").query(q4));
-                    Query bool1 = QueryBuilders.bool(i -> i.must(query2).should(query4));
-                    queries.add(bool1);
-                } else {
-                    queries.add(query2);
-                }
+                Query childQ2 = QueryBuilders.hasChild(i -> i.type("merge_right_holder").query(query2));
+                queries.add(childQ2);
             } else {
             } else {
                 Query q = QueryBuilders.term(i -> i.field("merge_inventor.project_id").value(projectId));
                 Query q = QueryBuilders.term(i -> i.field("merge_inventor.project_id").value(projectId));
                 Query query = QueryBuilders.nested(i -> i.path("merge_inventor").query(q));
                 Query query = QueryBuilders.nested(i -> i.path("merge_inventor").query(q));
-                if (StringUtils.isNotEmpty(name)) {
-                    Query q5 = QueryBuilders.match(i -> i.field("merge_inventor.name").query(name));
-                    Query query5 = QueryBuilders.nested(i -> i.path("merge_inventor").query(q5));
-                    Query bool1 = QueryBuilders.bool(i -> i.must(query).should(query5));
-                    queries.add(bool1);
-                } else {
-                    queries.add(query);
-                }
+                Query childQ = QueryBuilders.hasChild(i -> i.type("merge_inventor").query(query));
+                queries.add(childQ);
             }
             }
             Query bool = QueryBuilders.bool(i -> i.should(queries));
             Query bool = QueryBuilders.bool(i -> i.should(queries));
             builder.query(bool);
             builder.query(bool);
@@ -591,26 +560,53 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
             SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
             SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
             List<Hit<Patent>> hits = response.hits().hits();
             List<Hit<Patent>> hits = response.hits().hits();
 
 
+            Map<String, Patent> map = new HashMap<>();
             for (Hit<Patent> hit : hits) {
             for (Hit<Patent> hit : hits) {
-                Patent esMess = hit.source();
-                GetEsAllPersonDTO personDTO = new GetEsAllPersonDTO();
-                if (!CollectionUtils.isEmpty(esMess.getMergeInventor())) {
-                    personDTO.setMergeApplicant(esPatentService.loadMergeName(esMess.getMergeApplicant()));
-                }
-                if (!CollectionUtils.isEmpty(esMess.getMergeRightHolder())) {
-                    personDTO.setMergeRightHolder(esPatentService.loadMergeName(esMess.getMergeRightHolder()));
-                }
-                if (!CollectionUtils.isEmpty(esMess.getMergeInventor())) {
-                    personDTO.setMergeInventor(esPatentService.loadMergeName(esMess.getMergeInventor()));
+                String id = hit.id();
+                map.put(id, hit.source());
+            }
+
+            if (!CollectionUtils.isEmpty(map)) {
+                for (String id : map.keySet()) {
+                    GetEsAllPersonDTO personDTO = new GetEsAllPersonDTO();
+                    if (type == 0) {
+                        //申请人
+                        Map<String, List<PatentMergePerson>> appMap = this.getChildMergePerson(id, projectId, "merge_applicant");
+                        if (!CollectionUtils.isEmpty(appMap)) {
+                            for (String appId : appMap.keySet()) {
+                                List<PatentMergePerson> appList = appMap.get(appId);
+                                List<String> collect = appList.stream().map(PatentMergePerson::getName).collect(Collectors.toList());
+                                personDTO.setMergeApplicant(collect);
+                            }
+                        }
+                        //权利人
+                        Map<String, List<PatentMergePerson>> rightMap = this.getChildMergePerson(id, projectId, "merge_right_holder");
+                        if (!CollectionUtils.isEmpty(rightMap)) {
+                            for (String rightId : rightMap.keySet()) {
+                                List<PatentMergePerson> rightList = rightMap.get(rightId);
+                                List<String> collect = rightList.stream().map(PatentMergePerson::getName).collect(Collectors.toList());
+                                personDTO.setMergeRightHolder(collect);
+                            }
+                        }
+                    } else {
+                        //发明人
+                        Map<String, List<PatentMergePerson>> inventorMap = this.getChildMergePerson(id, projectId, "merge_inventor");
+                        if (!CollectionUtils.isEmpty(inventorMap)) {
+                            for (String inventorId : inventorMap.keySet()) {
+                                List<PatentMergePerson> inventorList = inventorMap.get(inventorId);
+                                List<String> collect = inventorList.stream().map(PatentMergePerson::getName).collect(Collectors.toList());
+                                personDTO.setMergeInventor(collect);
+                            }
+                        }
+                    }
+                    personDTOS.add(personDTO);
                 }
                 }
-                personDTOS.add(personDTO);
             }
             }
         }
         }
 
 
 
 
 
 
         //es申请人/权利人
         //es申请人/权利人
-        List<GetAllPersonDTO> personDTOList = new ArrayList<>();
         List<String> mergeList = new ArrayList<>();
         List<String> mergeList = new ArrayList<>();
         if (!CollectionUtils.isEmpty(personDTOS)) {
         if (!CollectionUtils.isEmpty(personDTOS)) {
             if (type == 0) {
             if (type == 0) {
@@ -625,8 +621,6 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
                         rightList = personDTO.getMergeRightHolder();
                         rightList = personDTO.getMergeRightHolder();
                         mergeList.addAll(rightList);
                         mergeList.addAll(rightList);
                     }
                     }
-
-
                 }
                 }
             } else {
             } else {
                 for (GetEsAllPersonDTO personDTO : personDTOS) {
                 for (GetEsAllPersonDTO personDTO : personDTOS) {
@@ -640,26 +634,44 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
             }
             }
         }
         }
 
 
+        List<GetAllPersonDTO> personDTOList = new ArrayList<>();
+        List<GetAllPersonDTO> mergePersonList = new ArrayList<>();
+        List<GetAllPersonDTO> personList = new ArrayList<>();
+
         List<String> nameList = mergeList.stream().distinct().collect(Collectors.toList());
         List<String> nameList = mergeList.stream().distinct().collect(Collectors.toList());
         for (String key : nameList) {
         for (String key : nameList) {
-            GetAllPersonDTO dto = new GetAllPersonDTO();
-            dto.setName(key);
             MergePerson person = mergePersonMapper.selectOne(new LambdaQueryWrapper<MergePerson>()
             MergePerson person = mergePersonMapper.selectOne(new LambdaQueryWrapper<MergePerson>()
-                    .eq(MergePerson::getName, key));
+                    .eq(MergePerson::getName, key)
+                    .eq(MergePerson::getProjectId, projectId));
             if (ObjectUtils.isNotEmpty(person)) {
             if (ObjectUtils.isNotEmpty(person)) {
+                GetAllPersonDTO dto = new GetAllPersonDTO();
+                dto.setName(person.getName());
                 dto.setMergeId(person.getId());
                 dto.setMergeId(person.getId());
                 dto.setType(person.getType());
                 dto.setType(person.getType());
                 dto.setRemark(person.getRemark());
                 dto.setRemark(person.getRemark());
                 dto.setAbbreviation(person.getAbbreviation());
                 dto.setAbbreviation(person.getAbbreviation());
                 dto.setCountry(person.getCountry());
                 dto.setCountry(person.getCountry());
                 dto.setProvince(person.getProvince());
                 dto.setProvince(person.getProvince());
+                dto.setAddress(person.getAddress());
+                mergePersonList.add(dto);
+            } else {
+                GetAllPersonDTO dto = new GetAllPersonDTO();
+                dto.setName(key);
+                personList.add(dto);
             }
             }
-            personDTOList.add(dto);
         }
         }
 
 
+        if (!CollectionUtils.isEmpty(mergePersonList)) {
+            List<GetAllPersonDTO> collect = mergePersonList.stream().sorted(Comparator.comparing(GetAllPersonDTO::getName)).collect(Collectors.toList());
+            personDTOList.addAll(collect);
+        }
+
+        if (!CollectionUtils.isEmpty(personList)) {
+            List<GetAllPersonDTO> collect = personList.stream().sorted(Comparator.comparing(GetAllPersonDTO::getName)).collect(Collectors.toList());
+            personDTOList.addAll(collect);
+        }
 
 
-        List<GetAllPersonDTO> collect = personDTOList.stream().skip((pageNum - 1) * pageSize).limit(pageSize)
-                .sorted(Comparator.comparing(GetAllPersonDTO::getName).reversed()).collect(Collectors.toList());
+        List<GetAllPersonDTO> collect = personDTOList.stream().skip((pageNum - 1) * pageSize).limit(pageSize).collect(Collectors.toList());
 
 
         Records records = new Records();
         Records records = new Records();
         records.setCurrent(pageNum);
         records.setCurrent(pageNum);
@@ -804,6 +816,8 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
                     }
                     }
 
 
                 }
                 }
+            } else {
+                throw new XiaoShiException("移除失败");
             }
             }
         }
         }
         return mergePerson.getId();
         return mergePerson.getId();
@@ -932,8 +946,9 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
                             }
                             }
                         }
                         }
                     }
                     }
+                } else {
+                    throw new XiaoShiException("删除失败");
                 }
                 }
-
             }
             }
         }
         }
         return vo.getId();
         return vo.getId();
@@ -1054,24 +1069,33 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
 
 
 
 
     public Integer add(String id,Integer type,List<PatentMergePerson> mergePersonList) {
     public Integer add(String id,Integer type,List<PatentMergePerson> mergePersonList) {
-        String source = "";
-        if (type == 0) {
-            source = "if (ctx._source.merge_applicant != null) {ctx._source.merge_applicant.add(params.data)} else { List list = new ArrayList();list.add(params.data);ctx._source.merge_applicant = list;}" +
-                    "if (ctx._source.merge_right_holder  != null) { ctx._source.merge_right_holder.add(params.data)} else { List list = new ArrayList();list.add(params.data);ctx._source.merge_right_holder = list;}";
-        } else {
-            source = "if (ctx._source.merge_inventor != null) {ctx._source.merge_inventor.add(params.data)} else { List list = new ArrayList();list.add(params.data);ctx._source.merge_inventor = list;}";
-        }
-        String finalSource = source;
-        InlineScript inlineScript = InlineScript.of(i -> i.lang("painless").params("data", JsonData.of(mergePersonList)).source(finalSource));
-        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).query(query));
-        try {
-            client.updateByQuery(request);
-            return 1;
-        } catch (IOException e) {
-            return -1;
+        Integer flag = null;
+        for (PatentMergePerson mergePerson : mergePersonList) {
+            Map<String, JsonData> map = new HashMap<>();
+            map.put("name", JsonData.of(mergePerson.getName()));
+            map.put("project_id", JsonData.of(mergePerson.getProjectId()));
+            map.put("type", JsonData.of(mergePerson.getType()));
+            map.put("order", JsonData.of(mergePerson.getOrder()));
+            String source = "";
+            if (type == 0) {
+                source = "if (ctx._source.merge_applicant != null) {ctx._source.merge_applicant.add(params.data)} else { List list = new ArrayList();list.add(params.data);ctx._source.merge_applicant = list;}" +
+                        "if (ctx._source.merge_right_holder  != null) { ctx._source.merge_right_holder.add(params.data)} else { List list = new ArrayList();list.add(params.data);ctx._source.merge_right_holder = list;}";
+            } else {
+                source = "if (ctx._source.merge_inventor != null) {ctx._source.merge_inventor.add(params.data)} else { List list = new ArrayList();list.add(params.data);ctx._source.merge_inventor = list;}";
+            }
+            String finalSource = source;
+            InlineScript inlineScript = InlineScript.of(i -> i.lang("painless").params("data", JsonData.of(map)).source(finalSource));
+            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).query(query));
+            try {
+                client.updateByQuery(request);
+                flag += 1;
+            } catch (IOException e) {
+                flag += -1;
+            }
         }
         }
+        return flag;
     }
     }
 
 
     public Integer edit(String id,Integer type,String oldName, String newName) {
     public Integer edit(String id,Integer type,String oldName, String newName) {