BoolQueryBuilder q = QueryBuilders.boolQuery(); Sort sort = new Sort(Sort.Direction.DESC,"createdTime"); if(f.getType()==null){ throw new ServiceException(ErrorConstants.APPROVAL_FIND_TYPE_NOT_EXISTENT, Constants.APPROVAL_FIND_TYPE_NOT_EXISTENT); }else if(f.getType()==1){ //我发起的 if(f.getGroupBy()!=null){ q.must(QueryBuilders.matchPhraseQuery("groupBy",f.getGroupBy())); } if(f.getStatus()==null){ throw new ServiceException(ErrorConstants.APPROVAL_FIND_STATUS__ERROR, Constants.APPROVAL_FIND_STATUS__ERROR); }else if(f.getStatus()==0){ //已完成 q.must(QueryBuilders.matchPhraseQuery("createdBy",userDetails.getOpenId())); q.must(QueryBuilders.boolQuery().mustNot(QueryBuilders.existsQuery("endTime"))); }else if(f.getStatus()==1){ //未完成 q.must(QueryBuilders.matchPhraseQuery("createdBy",userDetails.getOpenId())); q.must(QueryBuilders.existsQuery("endTime")); }else { throw new ServiceException(ErrorConstants.APPROVAL_FIND_STATUS__ERROR, Constants.APPROVAL_FIND_STATUS__ERROR); } }else if(f.getType()==2){ //我审批的 if(f.getGroupBy()!=null){ q.must(QueryBuilders.matchPhraseQuery("groupBy",f.getGroupBy())); } if(f.getStatus()==null){ throw new ServiceException(ErrorConstants.APPROVAL_FIND_STATUS__ERROR, Constants.APPROVAL_FIND_STATUS__ERROR); }else if(f.getStatus()==0){ //未审批 q.must(QueryBuilders.termQuery("notApproversId",userDetails.getOpenId())); }else if(f.getStatus()==1){ //已审批 q.must(QueryBuilders.termQuery("approversId",userDetails.getOpenId())); }else { throw new ServiceException(ErrorConstants.APPROVAL_FIND_STATUS__ERROR, Constants.APPROVAL_FIND_STATUS__ERROR); } }else if(f.getType()==3){ //抄送我的 if(f.getGroupBy()!=null){ q.must(QueryBuilders.matchPhraseQuery("groupBy",f.getGroupBy())); } if(f.getStatus()==null){ throw new ServiceException(ErrorConstants.APPROVAL_FIND_STATUS__ERROR, Constants.APPROVAL_FIND_STATUS__ERROR); }else if(f.getStatus()==0){ //未读:查询notCopyId包含当前用户,并且adopt为总的通过 q.must(QueryBuilders.termQuery("notCopyId",userDetails.getOpenId())); q.must(QueryBuilders.matchPhraseQuery("adopt","1")); }else if(f.getStatus()==1){ //已读:查询copyId包含当前用户; q.must(QueryBuilders.termQuery("copyId",userDetails.getOpenId())); }else { throw new ServiceException(ErrorConstants.APPROVAL_FIND_STATUS__ERROR, Constants.APPROVAL_FIND_STATUS__ERROR); } }else if(f.getType()==4){ //个人的 if(f.getGroupBy()!=null){ q.must(QueryBuilders.matchPhraseQuery("groupBy",f.getGroupBy())); } if(f.getGroupBy()==null){ //个人的所有的 //条件1我发起的未完成的 BoolQueryBuilder q1 = QueryBuilders.boolQuery(); q1.must(QueryBuilders.matchPhraseQuery("createBy",userDetails.getOpenId())); q1.must(QueryBuilders.boolQuery().mustNot(QueryBuilders.existsQuery("endTime"))); //条件2该我审批的 BoolQueryBuilder q2 = QueryBuilders.boolQuery(); q2.must(QueryBuilders.termQuery("notApproversId",userDetails.getOpenId())); //条件3审批草稿 BoolQueryBuilder q3 = QueryBuilders.boolQuery(); q3 .must(QueryBuilders.matchPhraseQuery("approveType","4")); q.should(q1); q.should(q2); q.should(q3); }else { //个人的团队的的加上groupBy BoolQueryBuilder q1 = QueryBuilders.boolQuery(); q1.must(QueryBuilders.matchPhraseQuery("groupBy",f.getGroupBy())); q1.must(QueryBuilders.matchPhraseQuery("createdBy",userDetails.getOpenId())); q1.must(QueryBuilders.boolQuery().mustNot(QueryBuilders.existsQuery("endTime"))); BoolQueryBuilder q2 = QueryBuilders.boolQuery(); q2.must(QueryBuilders.matchPhraseQuery("groupBy",f.getGroupBy())); q2.must(QueryBuilders.termQuery("notApproversId",userDetails.getOpenId())); BoolQueryBuilder q3 = QueryBuilders.boolQuery(); q3.must(QueryBuilders.matchPhraseQuery("groupBy",f.getGroupBy())); q3.must(QueryBuilders.matchPhraseQuery("approveType","4")); q.should(q1); q.should(q2); q.should(q3); } }else { throw new ServiceException(ErrorConstants.APPROVAL_FIND_TYPE_NOT_EXISTENT, Constants.APPROVAL_FIND_TYPE_NOT_EXISTENT); } Pageable pageable1 = new PageRequest(pageable.getPageNumber(),pageable.getPageSize(),sort); Page<ApproveElasticSearch> search = approveElasticSearchRepository.search(q, pageable1);
es复杂查询
最新推荐文章于 2024-08-14 16:13:39 发布