浏览代码

fixed 合并

zero 1 年之前
父节点
当前提交
f08301e76f
共有 1 个文件被更改,包括 33 次插入289 次删除
  1. 33 289
      src/main/java/cn/cslg/pas/service/business/MergePersonService.java

+ 33 - 289
src/main/java/cn/cslg/pas/service/business/MergePersonService.java

@@ -643,235 +643,24 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
      * @return
      * @throws Exception
      */
-    public Records getMergePerson(GetAllPersonVO vo) throws Exception {
+    public Records getAllMergePerson(GetAllPersonVO vo) throws Exception {
         Integer projectId = vo.getProjectId();
         Long pageNum = vo.getPageNum();
         Long pageSize = vo.getPageSize();
         Integer type = vo.getType();
         String condition = vo.getSearchQuery();
 
-        List<String> conditionList = new ArrayList<>();
-        long total = 0l;
-        if (StringUtils.isNotEmpty(condition)) {
-            String s = condition.substring(condition.indexOf("=") + 1);
-            if (s.contains("or")) {
-                String[] split = s.split("or");
-                conditionList.addAll(Arrays.asList(split));
-            } else {
-                conditionList.add(s);
-            }
-        }
-
-        List<GetEsAllPersonDTO> personDTOS = new ArrayList<>();
-        SearchRequest.Builder builder = new SearchRequest.Builder();
-        //设置查询索引
-        builder.index("patent");
-//        Query query11 = null;
-//        if (type == 0) {
-//            if (StringUtils.isNotEmpty(condition)) {
-//                String s = condition.substring(condition.indexOf("=")+1);
-//                //1. 解析检索条件
-//                treeNode tree = expressManager.getInstance().Parse(condition, false);
-//                //2. 从es中检索数据
-//                query11 = formatQueryService.EsQueryToQuery((operateNode) tree, "patent",projectId);
-//            }
-//        } else {
-//
-//        }
-
-        if (!CollectionUtils.isEmpty(conditionList)) {
-            for (String name : conditionList) {
-                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 bool = QueryBuilders.bool(i -> i.should(queries));
-                builder.query(bool);
-                //分页
-                if (pageNum > 0 && pageSize > 0) {
-                    builder.from((pageNum.intValue() - 1) * pageSize.intValue()).size(pageSize.intValue());
-                }
-//                builder.trackTotalHits(i -> i.enabled(true));
-                SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
-                total = response.hits().total().value();
-                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());
-                }
-
-                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);
-                    }
-                }
-            }
-        } else {
-            List<Query> queries = new ArrayList<>();
-            if (type == 0) {
-                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 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 query2 = QueryBuilders.nested(i -> i.path("merge_right_holder").query(q2));
-                Query childQ2 = QueryBuilders.hasChild(i -> i.type("merge_right_holder").query(query2));
-                queries.add(childQ2);
-            } else {
-                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 childQ = QueryBuilders.hasChild(i -> i.type("merge_inventor").query(query));
-                queries.add(childQ);
-            }
-            Query bool = QueryBuilders.bool(i -> i.should(queries));
-//            builder.size(99);
-            builder.query(bool);
-            //分页
-            if (pageNum > 0 && pageSize > 0) {
-                builder.from((pageNum.intValue() - 1) * pageSize.intValue()).size(pageSize.intValue());
-            }
-
-            builder.trackTotalHits(i -> i.enabled(true));
-            SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
-            List<Hit<Patent>> hits = response.hits().hits();
-            total = response.hits().total().value();
-            Map<String, Patent> map = new HashMap<>();
-            for (Hit<Patent> hit : hits) {
-                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);
-                }
-            }
-        }
-
-
-        //es申请人/权利人
-        List<String> mergeList = new ArrayList<>();
-        if (!CollectionUtils.isEmpty(personDTOS)) {
-            if (type == 0) {
-                for (GetEsAllPersonDTO personDTO : personDTOS) {
-                    List<String> appList = new ArrayList<>();
-                    if (!CollectionUtils.isEmpty(personDTO.getMergeApplicant())) {
-                        appList = personDTO.getMergeApplicant();
-                        mergeList.addAll(appList);
-                    }
-                    List<String> rightList = new ArrayList<>();
-                    if (!CollectionUtils.isEmpty(personDTO.getMergeRightHolder())) {
-                        rightList = personDTO.getMergeRightHolder();
-                        mergeList.addAll(rightList);
-                    }
-                }
-            } else {
-                for (GetEsAllPersonDTO personDTO : personDTOS) {
-                    List<String> inventorList = new ArrayList<>();
-                    if (!CollectionUtils.isEmpty(personDTO.getMergeInventor())) {
-                        inventorList = personDTO.getMergeInventor();
-                        mergeList.addAll(inventorList);
-                    }
-
-                }
-            }
-        }
-
         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> mergedList = new ArrayList<>();
-        for (String key : nameList) {
-            MergePerson person = mergePersonMapper.selectOne(new LambdaQueryWrapper<MergePerson>()
-                    .eq(MergePerson::getName, key)
-                    .eq(MergePerson::getProjectId, projectId));
-            if (ObjectUtils.isNotEmpty(person)) {
+        List<MergePerson> mergePeopleList = mergePersonMapper.selectList(new LambdaQueryWrapper<MergePerson>()
+                .eq(MergePerson::getProjectId, projectId));
+        int size = mergePeopleList.size();
+        if (!CollectionUtils.isEmpty(mergePeopleList)) {
+            for (MergePerson person : mergePeopleList) {
                 GetAllPersonDTO dto = new GetAllPersonDTO();
                 dto.setName(person.getName());
                 dto.setMergeId(person.getId());
@@ -885,61 +674,21 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
                 List<String> getNames = JSONArray.parseArray(mergedName, String.class);
                 mergedList.addAll(getNames);
                 mergePersonList.add(dto);
-            } else {
-                GetAllPersonDTO dto = new GetAllPersonDTO();
-                dto.setName(key);
-                personList.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)) {
-            if (!CollectionUtils.isEmpty(mergedList)) {
-                for (String s : mergedList) {
-                    personList.removeIf(i -> i.getName().equals(s));
-                }
-            }
-
-            List<GetAllPersonDTO> collect = personList.stream().filter(i -> !StringUtils.isEmpty(i.getName())).collect(Collectors.toList());
-            List<GetAllPersonDTO> list = collect.stream().sorted(Comparator.comparing(GetAllPersonDTO::getName)).collect(Collectors.toList());
-
-            personDTOList.addAll(list);
-        }
-
-//        List<GetAllPersonDTO> collect = personDTOList.stream().skip((pageNum - 1) * pageSize).limit(pageSize).collect(Collectors.toList());
-
-        Records records = new Records();
-        records.setCurrent(pageNum);
-        records.setSize(pageSize);
-        records.setData(personDTOList);
-        records.setTotal(total);
-        return records;
-    }
-
-    public Records getAllMergePerson(GetAllPersonVO vo) throws Exception {
-        Integer projectId = vo.getProjectId();
-        Long pageNum = vo.getPageNum();
-        Long pageSize = vo.getPageSize();
-        Integer type = vo.getType();
-        String condition = vo.getSearchQuery();
-
         SearchRequest.Builder builder = new SearchRequest.Builder();
         //设置查询索引
         builder.index("patent");
         builder.size(0);
-        String searchCondition = "";
         if (StringUtils.isNotEmpty(condition)) {
             //1. 解析检索条件
             treeNode tree = expressManager.getInstance().Parse(condition, false);
             //3. 从es中检索数据
-            Query q = formatQueryService.EsQueryToQuery((operateNode) tree, "patent",projectId);
+            Query q = formatQueryService.EsQueryToQuery((operateNode) tree, "patent", projectId);
             builder.query(q);
             if (type == 0) {
-                Aggregation bucketSort = AggregationBuilders.bucketSort(i -> i.from((pageNum.intValue() - 1) * pageSize.intValue()).size(pageSize.intValue()));
+                Aggregation bucketSort = AggregationBuilders.bucketSort(i -> i.from((pageNum.intValue() - 1) * pageSize.intValue()).size(pageSize.intValue() + size));
                 Aggregation termAgg = new Aggregation.Builder().terms(i -> i.field("merge_applicant.name.raw").size(100000))
                         .aggregations(new HashMap() {{
                             put("termAgg", bucketSort);
@@ -960,7 +709,7 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
                 builder.aggregations("totalAgg", totalAgg);
 
                 //权利人
-                Aggregation bucketSort1 = AggregationBuilders.bucketSort(i -> i.from((pageNum.intValue() - 1) * pageSize.intValue()).size(pageSize.intValue()));
+                Aggregation bucketSort1 = AggregationBuilders.bucketSort(i -> i.from((pageNum.intValue() - 1) * pageSize.intValue()).size(pageSize.intValue() + size));
                 Aggregation termAgg1 = new Aggregation.Builder().terms(i -> i.field("merge_right_holder.name.raw").size(100000))
                         .aggregations(new HashMap() {{
                             put("rightTermAgg", bucketSort1);
@@ -972,7 +721,7 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
                         }}).build();
                 builder.aggregations("rightAgg", aggregation1);
             } else {
-                Aggregation bucketSort = AggregationBuilders.bucketSort(i -> i.from((pageNum.intValue() - 1) * pageSize.intValue()).size(pageSize.intValue()));
+                Aggregation bucketSort = AggregationBuilders.bucketSort(i -> i.from((pageNum.intValue() - 1) * pageSize.intValue()).size(pageSize.intValue() + size));
                 Aggregation termAgg = new Aggregation.Builder().terms(i -> i.field("merge_inventor.name.raw").size(100000))
                         .aggregations(new HashMap() {{
                             put("termAgg", bucketSort);
@@ -1001,7 +750,7 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
                 Query nestedQ2 = QueryBuilders.nested(i -> i.path("merge_right_holder").query(q2));
                 Query bool = QueryBuilders.bool(i -> i.should(nestedQ1, nestedQ2));
                 builder.query(bool);
-                Aggregation bucketSort = AggregationBuilders.bucketSort(i -> i.from((pageNum.intValue() - 1) * pageSize.intValue()).size(pageSize.intValue()));
+                Aggregation bucketSort = AggregationBuilders.bucketSort(i -> i.from((pageNum.intValue() - 1) * pageSize.intValue()).size(pageSize.intValue() + size));
                 Aggregation termAgg = new Aggregation.Builder().terms(i -> i.field("merge_applicant.name.raw").size(100000))
                         .aggregations(new HashMap() {{
                             put("termAgg", bucketSort);
@@ -1022,7 +771,7 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
                 builder.aggregations("totalAgg", totalAgg);
 
                 //权利人
-                Aggregation bucketSort1 = AggregationBuilders.bucketSort(i -> i.from((pageNum.intValue() - 1) * pageSize.intValue()).size(pageSize.intValue()));
+                Aggregation bucketSort1 = AggregationBuilders.bucketSort(i -> i.from((pageNum.intValue() - 1) * pageSize.intValue()).size(pageSize.intValue() + size));
                 Aggregation termAgg1 = new Aggregation.Builder().terms(i -> i.field("merge_right_holder.name.raw").size(100000))
                         .aggregations(new HashMap() {{
                             put("rightTermAgg", bucketSort1);
@@ -1037,7 +786,7 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
                 Query q = QueryBuilders.term(i -> i.field("merge_inventor.project_id").value(projectId));
                 Query nestedQ = QueryBuilders.nested(i -> i.path("merge_inventor").query(q));
                 builder.query(nestedQ);
-                Aggregation bucketSort = AggregationBuilders.bucketSort(i -> i.from((pageNum.intValue() - 1) * pageSize.intValue()).size(pageSize.intValue()));
+                Aggregation bucketSort = AggregationBuilders.bucketSort(i -> i.from((pageNum.intValue() - 1) * pageSize.intValue()).size(pageSize.intValue() + size));
                 Aggregation termAgg = new Aggregation.Builder().terms(i -> i.field("merge_inventor.name.raw").size(100000))
                         .aggregations(new HashMap() {{
                             put("termAgg", bucketSort);
@@ -1081,31 +830,8 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
                 mergeList.add(value);
             }
         }
-
-        List<GetAllPersonDTO> personDTOList = new ArrayList<>();
-        List<GetAllPersonDTO> mergePersonList = new ArrayList<>();
-        List<GetAllPersonDTO> personList = new ArrayList<>();
-
         List<String> nameList = mergeList.stream().distinct().collect(Collectors.toList());
-        if (nameList.size() > pageSize) {
-            nameList.remove(nameList.size() - 1);
-        }
-        List<MergePerson> mergePeopleList = mergePersonMapper.selectList(new LambdaQueryWrapper<MergePerson>()
-                .eq(MergePerson::getProjectId, projectId));
-        if (!CollectionUtils.isEmpty(mergePeopleList)) {
-            for (MergePerson person : mergePeopleList) {
-                GetAllPersonDTO dto = new GetAllPersonDTO();
-                dto.setName(person.getName());
-                dto.setMergeId(person.getId());
-                dto.setType(person.getType());
-                dto.setRemark(person.getRemark());
-                dto.setAbbreviation(person.getAbbreviation());
-                dto.setCountry(person.getCountry());
-                dto.setProvince(person.getProvince());
-                dto.setAddress(person.getAddress());
-                mergePersonList.add(dto);
-            }
-        } else {
+        if (!CollectionUtils.isEmpty(nameList)) {
             for (String name : nameList) {
                 GetAllPersonDTO dto = new GetAllPersonDTO();
                 dto.setName(name);
@@ -1118,11 +844,29 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
             personDTOList.addAll(collect);
         }
         if (!CollectionUtils.isEmpty(personList)) {
+            if (!CollectionUtils.isEmpty(mergedList)) {
+                List<String> mergedList1 = mergedList.stream().distinct().collect(Collectors.toList());
+                for (String s : mergedList1) {
+                    personList.removeIf(i -> i.getName().equals(s));
+                }
+            }
             List<GetAllPersonDTO> collect = personList.stream().filter(i -> !StringUtils.isEmpty(i.getName())).collect(Collectors.toList());
+
+            while (collect.size() > pageSize) {
+                collect.remove(collect.size() - 1); // 从列表末尾开始删除
+            }
+
             List<GetAllPersonDTO> list = collect.stream().sorted(Comparator.comparing(GetAllPersonDTO::getName).reversed()).collect(Collectors.toList());
             personDTOList.addAll(list);
         }
 
+//        if (personDTOList.size() > pageSize) {
+//            personDTOList.remove(personDTOList.size() - 1);
+//        }
+        while (personDTOList.size() > pageSize) {
+            personDTOList.remove(personDTOList.size() - 1); // 从列表末尾开始删除
+        }
+
         Records records = new Records();
         records.setCurrent(pageNum);
         records.setSize(pageSize);