Переглянути джерело

Merge remote-tracking branch 'origin/master'

lwhhszx 1 рік тому
батько
коміт
960015e46d

+ 1 - 1
src/main/java/cn/cslg/pas/controller/TortController.java

@@ -87,7 +87,7 @@ public class TortController {
 
     @Operation(summary = "添加侵权分析协同任务")
     @PostMapping("/addTortTask")
-    public Response addTortTask(@RequestBody TortTaskDTO tortTaskDTO){
+    public Response addTortTask(@RequestBody TortTaskDTO tortTaskDTO) throws Exception {
         Integer id = projectTaskService.addTortTask(tortTaskDTO);
         Records records = new Records();
         records.setData(id);

+ 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);

+ 7 - 2
src/main/java/cn/cslg/pas/service/business/ProjectTaskService.java

@@ -36,6 +36,7 @@ import org.joda.time.format.FormatUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.multipart.MultipartFile;
@@ -828,7 +829,10 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
     /**
      * 添加侵权分析协同任务
      */
-    public Integer addTortTask(TortTaskDTO tortTaskDTO) {
+    @Transactional(propagation = Propagation.REQUIRED,rollbackFor = Throwable.class)
+    public Integer addTortTask(TortTaskDTO tortTaskDTO) throws Exception {
+        Integer projectId = tortTaskDTO.getProjectId();
+        List<String> patentNos = tortTaskDTO.getPatentNos();
         //1.保存任务信息 project_task表
         if (tortTaskDTO == null) {
             throw new XiaoShiException("入参不能为空!");
@@ -871,7 +875,8 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
         //3.从侵权分析中获得对比结果,并复制保存
         tortCompareRecordService.copyTortCompareRecords(tortTaskDTO.getProjectId(), taskId, personnelVO.getId());
         //4.发送邮件通知协同人和抄送人
-        //TODO
+        //保存es
+        this.addCompareLiteratureByNosToEs(patentNos, taskId, projectId);
         return projectTask.getId();
     }
 

+ 136 - 52
src/main/java/cn/cslg/pas/service/business/es/EsCountService.java

@@ -111,43 +111,6 @@ public class EsCountService {
         return esCountDTO;
     }
 
-    public String getDateFormat(String field,String value) {
-        String condition = "";
-        if (value.contains("Q") || value.contains("H") || value.length() == 9) {
-            String year = value.substring(0, value.indexOf("-"));
-            int nextYear = Integer.parseInt(year) + 1;
-            String start = "";
-            String end = "";
-            if (value.contains("Q1")) {
-                start = year + "-01";
-                end = year + "-04";
-            } else if (value.contains("Q2")) {
-                start = year + "-04";
-                end = year + "-07";
-            } else if (value.contains("Q3")) {
-                start = year + "-07";
-                end = year + "-10";
-            } else if (value.contains("Q4")) {
-                start = year + "-10";
-                end = nextYear + "-01";
-            } else if (value.contains("H1")) {
-                start = year + "-01";
-                end = year + "-07";
-            } else if (value.contains("H2")) {
-                start = year + "-07";
-                end = nextYear + "-01";
-            } else if (value.length() == 9) {
-                start = year;
-                end = value.substring(value.indexOf("-") + 1);
-            }
-            condition = field + ">=" + start + " " + "AND" + " " + field + "<" + end;
-        } else {
-            condition = field + " = " + value;
-        }
-
-        return condition;
-    }
-
     public void getReturnData(String searchCondition,String condition, List<EsCustomFieldValueDTO> customFields, Integer taskId,
                               Integer projectId, List<EsCountVO> countVOS, List<EsCountDetailDTO> detailDTOS,
                               EsCountDTO esCountDTO, String firstName, Map<String, List<EsCountDetailDTO>> map) throws Exception {
@@ -160,21 +123,6 @@ public class EsCountService {
             }
         }
 
-//        if (countVOS.size() == 1) {
-//            EsCountVO countVO = countVOS.get(0);
-//            String field = countVO.getField();
-//            String valueOne = countVO.getValueOne();
-//            String valueTwo = countVO.getValueTwo();
-//            if (StringUtils.isNotEmpty(valueOne) && StringUtils.isEmpty(valueTwo)) {
-//                String filterCondition = field + " = " + valueOne;
-//                if (searchCondition != null && !"".equals(searchCondition.trim())) {
-//                    searchCondition = filterCondition + " AND " + searchCondition;
-//                } else {
-//                    searchCondition = filterCondition;
-//                }
-//            }
-//        }
-
         if (!CollectionUtils.isEmpty(customFields)) {
             searchCondition = esService.parseCustomField(customFields,projectId,taskId);
         }
@@ -354,6 +302,106 @@ public class EsCountService {
         }
     }
 
+    public void getReturnData1(String searchCondition,String condition, List<EsCustomFieldValueDTO> customFields, Integer taskId,
+                              Integer projectId, List<EsCountVO> countVOS, List<EsCountDetailDTO> detailDTOS,
+                              EsCountDTO esCountDTO, String firstName, Map<String, List<EsCountDetailDTO>> map) throws Exception {
+
+        if (StringUtils.isNotEmpty(condition)) {
+            if (searchCondition != null && !"".equals(searchCondition.trim())) {
+                searchCondition = condition + " AND " + searchCondition;
+            } else {
+                searchCondition = condition;
+            }
+        }
+
+        if (!CollectionUtils.isEmpty(customFields)) {
+            searchCondition = esService.parseCustomField(customFields,projectId,taskId);
+        }
+
+        searchCondition = this.getCondition(searchCondition, taskId, projectId);
+
+        SearchRequest.Builder builder = new SearchRequest.Builder();
+        //设置查询索引
+        builder.index("patent");
+        Query query = null;
+        if (StringUtils.isNotEmpty(searchCondition)) {
+            //1. 解析检索条件
+            treeNode tree = expressManager.getInstance().Parse(searchCondition, false);
+            //格式化检索式
+            //3. 从es中检索数据
+            query = formatQueryService.EsQueryToQuery((operateNode) tree, "patent",projectId);
+            builder.query(query);
+        }
+
+        for (EsCountVO countVO : countVOS) {
+            String field = countVO.getField();
+            Integer topN = countVO.getTopN();
+            String valueOne = countVO.getValueOne();
+            String valueTwo = countVO.getValueTwo();
+            Integer fieldType = null;
+            String type = countVO.getFieldType();
+            if (StringUtils.isNotEmpty(type) && type.equals("tree")) {
+                fieldType = 6;
+            }
+            String format = countVO.getFormat();
+            List<String> values = countVO.getValues();
+            Aggregation aggregation = this.getAggregation(countVO, projectId, taskId);
+            builder.aggregations("Agg", aggregation);
+            //解除最大条数限制
+            builder.trackTotalHits(i -> i.enabled(true));
+            SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
+            Aggregate agg = response.aggregations().get("Agg");
+
+            if (StringUtils.isNotEmpty(field)) {
+                if (dateList.contains(field)) {
+                    if (CollectionUtils.isEmpty(values)) {
+                        this.getDateCountDTOS(agg, field, topN, format, detailDTOS, esCountDTO,valueOne,valueTwo);
+                    } else {
+                        this.getDateAnalysisDTOS(agg, field, topN, detailDTOS, esCountDTO, firstName, map, values);
+                    }
+                } else if (nestedList.contains(field)) {
+                    this.getNestedCountDTOS(agg, field, topN, detailDTOS, esCountDTO, firstName, map, values,valueOne);
+                    if (!CollectionUtils.isEmpty(values)) {
+                        esCountDTO.setAllNumber(agg.nested().docCount());
+                    }
+                } else if (nestDateList.contains(field)) {
+                    if (CollectionUtils.isEmpty(values)) {
+                        Aggregate termsAgg = agg.nested().aggregations().get("terms_agg");
+                        this.getDateCountDTOS(termsAgg, field, topN, format, detailDTOS, esCountDTO,valueOne,valueTwo);
+                    } else {
+                        Aggregate termsAgg = agg.nested().aggregations().get("terms_agg");
+                        this.getDateAnalysisDTOS(termsAgg, field, topN, detailDTOS, esCountDTO, firstName, map, values);
+                    }
+                } else if (nestChildList.contains(field)) {
+                    Aggregate childAgg = agg.children().aggregations().get("childAgg");
+                    this.getNestedCountDTOS(childAgg, field, topN, detailDTOS, esCountDTO, firstName, map, values,valueOne);
+                    if (!CollectionUtils.isEmpty(values)) {
+                        esCountDTO.setAllNumber(childAgg.nested().docCount());
+                    }
+                } else if (childList.contains(field)) {
+                    if (CollectionUtils.isEmpty(values)) {
+                        this.getChildCountDTOS(agg, field, fieldType, topN, detailDTOS, esCountDTO,projectId,taskId);
+                    } else {
+                        this.getChildAnalysisDTOS(agg, field, fieldType, topN,
+                                detailDTOS, esCountDTO, firstName, map, values);
+                    }
+                } else if (numberList.contains(field)) {
+                    if (CollectionUtils.isEmpty(values)) {
+
+                    } else {
+                        this.getNumberAnalysisDTOS(agg, field, topN, detailDTOS, esCountDTO, firstName, map, values);
+                    }
+                } else {
+                    this.getTermCountDTOS(agg, field, topN, detailDTOS, esCountDTO, firstName, map, values,valueOne);
+                }
+            } else {
+                this.getFilterCountDTO(agg, searchCondition, detailDTOS);
+            }
+            esCountDTO.setCondition(searchCondition);
+            esCountDTO.setAnalyseMap(map);
+        }
+    }
+
     public EsDateRangeDTO getFieldRange(EsDateRangeVO rangeVO) throws Exception {
         String searchCondition = rangeVO.getCondition();
         String field = rangeVO.getField();
@@ -1207,4 +1255,40 @@ public class EsCountService {
         }
     }
 
+    public String getDateFormat(String field,String value) {
+        String condition = "";
+        if (value.contains("Q") || value.contains("H") || value.length() == 9) {
+            String year = value.substring(0, value.indexOf("-"));
+            int nextYear = Integer.parseInt(year) + 1;
+            String start = "";
+            String end = "";
+            if (value.contains("Q1")) {
+                start = year + "-01";
+                end = year + "-04";
+            } else if (value.contains("Q2")) {
+                start = year + "-04";
+                end = year + "-07";
+            } else if (value.contains("Q3")) {
+                start = year + "-07";
+                end = year + "-10";
+            } else if (value.contains("Q4")) {
+                start = year + "-10";
+                end = nextYear + "-01";
+            } else if (value.contains("H1")) {
+                start = year + "-01";
+                end = year + "-07";
+            } else if (value.contains("H2")) {
+                start = year + "-07";
+                end = nextYear + "-01";
+            } else if (value.length() == 9) {
+                start = year;
+                end = value.substring(value.indexOf("-") + 1);
+            }
+            condition = field + ">=" + start + " " + "AND" + " " + field + "<" + end;
+        } else {
+            condition = field + " = " + value;
+        }
+
+        return condition;
+    }
 }