zero 1 anno fa
parent
commit
643cac4e65

+ 1 - 1
src/main/java/cn/cslg/pas/common/model/request/QueryRequest.java

@@ -17,6 +17,6 @@ public class QueryRequest {
     private String groupFieldValue;
     private List<OrderDTO> orderDTOList;
     private Integer projectId;
-    private Boolean ifHaveChild;
+    private Boolean ifHaveChild = false;
     private List<EsCustomFieldValueDTO> customFields;
 }

+ 49 - 139
src/main/java/cn/cslg/pas/service/business/es/EsService.java

@@ -17,11 +17,9 @@ import cn.cslg.pas.common.utils.FormatUtil;
 import cn.cslg.pas.common.utils.parseQueryToTree.expressManager;
 import cn.cslg.pas.common.utils.parseQueryToTree.operateNode;
 import cn.cslg.pas.common.utils.parseQueryToTree.treeNode;
-import cn.cslg.pas.common.vo.ChinaLeagalStatus;
-import cn.cslg.pas.common.vo.ContentVO;
-import cn.cslg.pas.common.vo.PatentWithIdVO;
-import cn.cslg.pas.common.vo.StarPatentVO;
+import cn.cslg.pas.common.vo.*;
 import cn.cslg.pas.domain.es.*;
+import cn.cslg.pas.service.business.CommonService;
 import cn.cslg.pas.service.common.PatentStarApiService;
 import cn.cslg.pas.service.query.FormatQueryService;
 import co.elastic.clients.elasticsearch.ElasticsearchClient;
@@ -132,7 +130,7 @@ public class EsService {
         String searchCondition = "";
         List<EsCustomFieldValueDTO> customFields = queryRequest.getCustomFields();
         if (!CollectionUtils.isEmpty(customFields)) {
-            searchCondition = this.parseCustomField(customFields);
+            searchCondition = this.parseCustomField(customFields,queryRequest.getIfHaveChild());
         }
         Integer projectId = queryRequest.getProjectId();
         Long current = queryRequest.getCurrent();
@@ -171,116 +169,22 @@ public class EsService {
         //4. 返回数据
         builder.query(q);
         //排序
-        List<OrderDTO> dtoList = queryRequest.getOrderDTOList();
-        if (!CollectionUtils.isEmpty(dtoList)) {
-//            for (OrderDTO orderDTO : dtoList) {
-//                if (orderDTO.getOrderType().equals(IfConstant.NO)) {
-//                    builder.sort(sortOptionsBuilder -> sortOptionsBuilder
-//                            .field(fieldSortBuilder -> fieldSortBuilder
-//                                    .field(orderDTO.getOrderBy()).order(SortOrder.Asc)));
-//                } else {
-//                    builder.sort(sortOptionsBuilder -> sortOptionsBuilder
-//                            .field(fieldSortBuilder -> fieldSortBuilder
-//                                    .field(orderDTO.getOrderBy()).order(SortOrder.Desc)));
-//                }
-//            }
-        } else {
-            builder.sort(sortOptionsBuilder -> sortOptionsBuilder
-                    .field(fieldSortBuilder -> fieldSortBuilder
-                            .field("patent_no.keyword").order(SortOrder.Desc)));
-        }
-
-        //分页
-        if (current > 0 && size > 0) {
-            builder.from((current.intValue() - 1) * size.intValue()).size(size.intValue());
-        }
-
-        SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
-        List<PatentColumnDTO> list = new ArrayList<>();
-        List<Hit<Patent>> hits = response.hits().hits();
-        long total = response.hits().total().value();
-        for (Hit<Patent> hit : hits) {
-            Patent esMess = hit.source();
-            PatentColumnDTO columnDTO = new PatentColumnDTO();
-//            columnDTO.setPatentNo(esMess.getPatentNo());
-            BeanUtils.copyProperties(esMess, columnDTO);
-            ContentVO titleVO = new ContentVO();
-            String title = StringUtils.strip(JSON.toJSONString(esMess.getTitle()), "[]");
-            ContentDetailDTO titleContent = JSONObject.parseObject(title, ContentDetailDTO.class);
-            titleVO.setContent(titleContent.getTextContent());
-            columnDTO.setTitle(titleVO);
-            ContentVO abstractVO = new ContentVO();
-            String abstractStr = StringUtils.strip(JSON.toJSONString(esMess.getAbstractStr()), "[]");
-            ContentDetailDTO abstractContent = JSONObject.parseObject(abstractStr, ContentDetailDTO.class);
-            abstractVO.setContent(abstractContent.getTextContent());
-            columnDTO.setAbstractStr(abstractVO);
-            list.add(columnDTO);
-
-        }
-        this.loadCoulumnDTO(list);
-        dto.setTotal(total);
-        dto.setPatents(list);
-        dto.setPageNum(current);
-        dto.setPageSize(size);
-        return dto;
-    }
-
-    public PatentDTO esSearch(QueryRequest queryRequest, List<EsCustomFieldValueDTO> customFields) throws Exception {
-        PatentDTO dto = new PatentDTO();
-
-        String searchCondition = "";
-//        List<EsCustomFieldValueDTO> customFields = queryRequest.getCustomFields();
-        if (!CollectionUtils.isEmpty(customFields)) {
-            searchCondition = this.parseCustomField(customFields);
-        }
-        Integer projectId = queryRequest.getProjectId();
-        Long current = queryRequest.getCurrent();
-        Long size = queryRequest.getSize();
-        //判断表达式
-        if (queryRequest instanceof StringRequest) {
-            searchCondition = ((StringRequest) queryRequest).getSearchQuery();
-        } else if (queryRequest instanceof MapRequest) {
-            Map<String, Object> map = ((MapRequest) queryRequest).getSearchQuery();
-            StringBuilder stringBuilder = new StringBuilder();
-            for (String key : map.keySet()) {
-                Object value = map.get(key);
-                if (!"".contentEquals(stringBuilder)) {
-                    stringBuilder = stringBuilder.append(" AND ").append(key).append("=").append(value);
-                } else {
-                    stringBuilder = stringBuilder.append(key).append("=").append(value);
-                }
-            }
-            searchCondition = stringBuilder.toString();
-        }
-        if (projectId != null) {
-            if (searchCondition != null && !"".equals(searchCondition.trim())) {
-                searchCondition = "projectId = " + projectId + " AND " + searchCondition;
-            } else {
-                searchCondition = "projectId = " + projectId;
-            }
-        }
-        SearchRequest.Builder builder = new SearchRequest.Builder();
-        //设置查询索引
-        builder.index("patent");
-        //1. 解析检索条件
-        treeNode tree = expressManager.getInstance().Parse(searchCondition, false);
-        //格式化检索式
-        //3. 从es中检索数据
-        Query q = formatQueryService.EsQueryToQuery((operateNode) tree, "patent");
-        //4. 返回数据
-        builder.query(q);
-        //排序
-        List<OrderDTO> dtoList = queryRequest.getOrderDTOList();
+//        List<OrderDTO> dtoList = queryRequest.getOrderDTOList();
 //        if (!CollectionUtils.isEmpty(dtoList)) {
+//            String json = CommonService.readJsonFile("patent.json");
+//            List<EsConfigVO> esConfigVOS = JSON.parseArray(json, EsConfigVO.class);
 //            for (OrderDTO orderDTO : dtoList) {
-//                if (orderDTO.getOrderType().equals(IfConstant.NO)) {
-//                    builder.sort(sortOptionsBuilder -> sortOptionsBuilder
-//                            .field(fieldSortBuilder -> fieldSortBuilder
-//                                    .field(orderDTO.getOrderBy()).order(SortOrder.Asc)));
-//                } else {
-//                    builder.sort(sortOptionsBuilder -> sortOptionsBuilder
-//                            .field(fieldSortBuilder -> fieldSortBuilder
-//                                    .field(orderDTO.getOrderBy()).order(SortOrder.Desc)));
+//                EsConfigVO configVO = esConfigVOS.stream().filter(item -> item.getField().equals(orderDTO.getOrderBy())).findFirst().orElse(null);
+//                if (configVO != null) {
+//                    if (orderDTO.getOrderType().equals(IfConstant.NO)) {
+//                        builder.sort(sortOptionsBuilder -> sortOptionsBuilder
+//                                .field(fieldSortBuilder -> fieldSortBuilder
+//                                        .field(configVO.getEsField()).order(SortOrder.Asc)));
+//                    } else {
+//                        builder.sort(sortOptionsBuilder -> sortOptionsBuilder
+//                                .field(fieldSortBuilder -> fieldSortBuilder
+//                                        .field(configVO.getEsField()).order(SortOrder.Desc)));
+//                    }
 //                }
 //            }
 //        } else {
@@ -330,31 +234,31 @@ public class EsService {
      * @param customFields
      * @return
      */
-    public String parseCustomField(List<EsCustomFieldValueDTO> customFields) {
+    public String parseCustomField(List<EsCustomFieldValueDTO> customFields,Boolean ifHaveChild) {
         int m = 1;
         int n = 0;
         StringBuilder builder = new StringBuilder();
         long start = System.currentTimeMillis();
         if (customFields.size() > m) {
-            builder.append("(");
             for (int i = 0; i < customFields.size(); i++) {
                 EsCustomFieldValueDTO customField = customFields.get(i);
                 if (i != n) {
                     builder.append(" ").append("and").append(" ").append("(");
-                    this.appendStr(customField, builder, m);
+                    this.appendStr(customField, builder, m,ifHaveChild);
                 } else {
-                    this.appendStr(customField, builder, m);
+                    builder.append("(");
+                    this.appendStr(customField, builder, m,ifHaveChild);
                 }
             }
         } else {
             for (int i = 0; i < customFields.size(); i++) {
                 EsCustomFieldValueDTO customField = customFields.get(i);
-                int num = customFields.size() - m;
                 if (i != n) {
                     builder.append(" ").append("and").append(" ");
-                    this.appendStr(customField, builder, m);
+                    this.appendStr(customField, builder, m,ifHaveChild);
                 } else {
-                    this.appendStr(customField, builder, m);
+                    builder.append("(");
+                    this.appendStr(customField, builder, m,ifHaveChild);
                 }
             }
         }
@@ -364,31 +268,37 @@ public class EsService {
         return builder.toString();
     }
 
-
-    public void appendStr(EsCustomFieldValueDTO customField, StringBuilder builder, int m) {
-        List<String> values = customField.getFieldValue();
+    public void appendStr(EsCustomFieldValueDTO customField, StringBuilder builder, int m,boolean ifHaveChild) {
         builder.append("field").append("=").append(customField.getFieldId());
-        builder.append(" ").append("and").append(" ");
-        builder.append("fieldValue").append("=");
-        if (values.size() > m) {
-            builder.append("(");
-            for (int j = 0; j < values.size(); j++) {
-                String s = values.get(j);
-                if (j != values.size() - m) {
-                    builder.append(s).append(" ").append("or").append(" ");
-                } else {
-                    builder.append(s).append(")").append(")");
-                }
+        List<String> values = customField.getFieldValue();
+        if (!CollectionUtils.isEmpty(values)) {
+            builder.append(" ").append("and").append(" ");
+            if (ifHaveChild) {
+                builder.append("statsValue").append("=");
+            } else {
+                builder.append("fieldValue").append("=");
             }
-        }
-        else {
-            for (String value : values) {
-                builder.append(value);
+
+            if (values.size() > m) {
+                builder.append("(");
+                for (int j = 0; j < values.size(); j++) {
+                    String s = values.get(j);
+                    if (j != values.size() - m) {
+                        builder.append(s).append(" ").append("or").append(" ");
+                    } else {
+                        builder.append(s).append(")").append(")");
+                    }
+                }
+            } else {
+                for (String value : values) {
+                    builder.append(value).append(")");
+                }
             }
+        } else {
+            builder.append(")");
         }
     }
 
-
     /**
      * @param key
      * @param page