public List<PricePolicyConditionDTO> queryEs(OrderPriceOutDTO param, List<String> materialCodeList, List<String> categoryCodeList) {BoolQueryBuilder mainQueryBoolBuilder = new BoolQueryBuilder();//销售组织if (CharSequenceUtil.isNotEmpty(param.getSalesOrgCode())) {mainQueryBoolBuilder.must(QueryBuilders.termQuery(PricePolicyEsDataDTO.Fields.salesOrgCode + KEYWORD_SUFFIX, param.getSalesOrgCode()));}//价格类型if (CharSequenceUtil.isNotEmpty(param.getPriceTypeName())) {mainQueryBoolBuilder.must(QueryBuilders.termQuery(PricePolicyEsDataDTO.Fields.priceType + KEYWORD_SUFFIX, param.getPriceTypeName()));}//and ((policy_type = 'Foc') or (policy_type != 'Foc' and currency= #{currncy}))if (CharSequenceUtil.isNotEmpty(param.getCurrency())) {BoolQueryBuilder query1 = QueryBuilders.boolQuery();query1.must(QueryBuilders.termQuery(PricePolicyEsDataDTO.Fields.policyType + KEYWORD_SUFFIX, CommonConstant.FOC));BoolQueryBuilder query2 = QueryBuilders.boolQuery();query2.mustNot(QueryBuilders.termsQuery(PricePolicyEsDataDTO.Fields.policyType + KEYWORD_SUFFIX, CommonConstant.FOC));query2.must(QueryBuilders.termQuery(PricePolicyEsDataDTO.Fields.currency + KEYWORD_SUFFIX, param.getCurrency()));BoolQueryBuilder query3 = QueryBuilders.boolQuery();query3.should(query1);query3.should(query2);mainQueryBoolBuilder.must(query3);}//and policy_start_date >= sysdaye() and policy_end_date <= sysdaye()mainQueryBoolBuilder.must(QueryBuilders.rangeQuery(PricePolicyEsDataDTO.Fields.policyStartDate).lte(LocalTimeUnit.getNowTime()));mainQueryBoolBuilder.must(QueryBuilders.rangeQuery(PricePolicyEsDataDTO.Fields.policyEndDate).gte(LocalTimeUnit.getNowTime()));// and [ (object_type = 'Product' and (object_code like '' or object_code like '' ) ) OR// (object_type = 'ProductCategory' and (object_code like '' or object_code like '' ) )// ]if (CollUtil.isNotEmpty(materialCodeList) || CollUtil.isNotEmpty(categoryCodeList)) {BoolQueryBuilder query4 = QueryBuilders.boolQuery();if (CollUtil.isNotEmpty(materialCodeList)) {BoolQueryBuilder query3 = QueryBuilders.boolQuery();BoolQueryBuilder query1 = QueryBuilders.boolQuery();query1.must(QueryBuilders.termQuery(PricePolicyEsDataDTO.Fields.objectType + KEYWORD_SUFFIX, CommonConstant.PRODUCT));query3.must(query1);BoolQueryBuilder query2 = QueryBuilders.boolQuery();materialCodeList.forEach(v -> {WildcardQueryBuilder queryBuilder1 = QueryBuilders.wildcardQuery(PricePolicyEsDataDTO.Fields.objectCode + KEYWORD_SUFFIX, "*" + v + "*");query2.should(queryBuilder1);});query3.must(query2);query4.should(query3);}if (CollUtil.isNotEmpty(categoryCodeList)) {BoolQueryBuilder query3 = QueryBuilders.boolQuery();BoolQueryBuilder query1 = QueryBuilders.boolQuery();query1.must(QueryBuilders.termQuery(PricePolicyEsDataDTO.Fields.objectType + KEYWORD_SUFFIX, CommonConstant.PRODUCT_CATEGORY));query3.must(query1);BoolQueryBuilder query2 = QueryBuilders.boolQuery();categoryCodeList.forEach(v -> {WildcardQueryBuilder queryBuilder1 = QueryBuilders.wildcardQuery(PricePolicyEsDataDTO.Fields.objectCode + KEYWORD_SUFFIX, "*" + v + "*");query2.should(queryBuilder1);});query3.must(query2);query4.should(query3);}mainQueryBoolBuilder.must(query4);}Query query = new NativeSearchQueryBuilder().withQuery(mainQueryBoolBuilder).build();SearchHits<PricePolicyEsDataDTO> searchHits = elasticsearchRestTemplate.search(query, PricePolicyEsDataDTO.class);List<PricePolicyEsDataDTO> collect = searchHits.getSearchHits().stream().map(SearchHit::getContent).collect(Collectors.toList());List<PricePolicyConditionDTO> policyConditionList = BeanUtil.copyToList(collect, PricePolicyConditionDTO.class);return dataScopeFilter(param, policyConditionList);}