package com.ukefu.webim.service.es; import java.util.List; import org.elasticsearch.action.bulk.BulkRequestBuilder; import org.elasticsearch.action.delete.DeleteRequest; import org.elasticsearch.index.query.BoolQueryBuilder; import org.elasticsearch.index.query.HasParentQueryBuilder; import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.search.sort.FieldSortBuilder; import org.elasticsearch.search.sort.SortOrder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.elasticsearch.core.ElasticsearchTemplate; import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder; import org.springframework.stereotype.Component; import com.ukefu.core.UKDataContext; import com.ukefu.webim.web.model.EkmKnowledgeCollect; import com.ukefu.webim.web.model.EkmKnowledgeTimes; @Component public class EkmKnowledgeCollectRepositoryImpl implements EkmKnowledgeCollectESRepository{ private ElasticsearchTemplate elasticsearchTemplate; @Autowired public void setElasticsearchTemplate(ElasticsearchTemplate elasticsearchTemplate) { this.elasticsearchTemplate = elasticsearchTemplate; } public void delete(List<EkmKnowledgeCollect> ekmKnowledgeCollectList){ BulkRequestBuilder bulkRequest = elasticsearchTemplate.getClient().prepareBulk(); if(ekmKnowledgeCollectList != null && ekmKnowledgeCollectList.size()>0) { for(EkmKnowledgeCollect collect : ekmKnowledgeCollectList){ bulkRequest.add(new DeleteRequest().index(UKDataContext.SYSTEM_INDEX).type("uk_ekm_kb_collect").id(collect.getId()).routing(collect.getKbid())); } bulkRequest.get(); } } @Override public List<EkmKnowledgeCollect> findByCreaterAndOrgi(String creater, String orgi) { BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); BoolQueryBuilder bq = QueryBuilders.boolQuery() ; bq.must(QueryBuilders.termQuery("creater", creater)) ; bq.must(QueryBuilders.termQuery("orgi", orgi)) ; boolQueryBuilder.must(bq); return this.proccessQuery(boolQueryBuilder); } @Override public List<EkmKnowledgeCollect> findByIdAndOrgi(String id, String orgi) { BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); BoolQueryBuilder bq = QueryBuilders.boolQuery() ; bq.must(QueryBuilders.termQuery("id", id)) ; bq.must(QueryBuilders.termQuery("orgi", orgi)) ; boolQueryBuilder.must(bq); return this.proccessQuery(boolQueryBuilder); } @Override public Page<EkmKnowledgeCollect> findByCreaterAndStatusAndOrgi(BoolQueryBuilder boolQuery, String creater, String status, String orgi, Pageable pageable) { HasParentQueryBuilder hasParentQueryBuilder=QueryBuilders.hasParentQuery("uk_ekm_kb_master",QueryBuilders.termQuery("datastatus", false)); boolQuery.must(hasParentQueryBuilder) ; boolQuery.must(QueryBuilders.termQuery("status", status)) ; boolQuery.must(QueryBuilders.termQuery("creater", creater)) ; boolQuery.must(QueryBuilders.termQuery("orgi", orgi)) ; NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQuery).withSort(new FieldSortBuilder("createtime").unmappedType("date").order(SortOrder.DESC)); searchQueryBuilder.withPageable(pageable) ; Page<EkmKnowledgeCollect> knowledgeCollectList = null ; if(elasticsearchTemplate.indexExists(EkmKnowledgeTimes.class)){ knowledgeCollectList = elasticsearchTemplate.queryForPage(searchQueryBuilder.build() , EkmKnowledgeCollect.class ) ; } return knowledgeCollectList; } @Override public List<EkmKnowledgeCollect> findByStatusAndCreaterAndOrgi( String status, String creater, String orgi) { BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); BoolQueryBuilder bq = QueryBuilders.boolQuery() ; bq.must(QueryBuilders.termQuery("status", status)) ; bq.must(QueryBuilders.termQuery("orgi", orgi)) ; bq.must(QueryBuilders.termQuery("creater", creater)) ; boolQueryBuilder.must(bq); HasParentQueryBuilder hasParentQueryBuilder=QueryBuilders.hasParentQuery("uk_ekm_kb_master",QueryBuilders.termQuery("datastatus", false)); boolQueryBuilder.must(hasParentQueryBuilder) ; return this.proccessQuery(boolQueryBuilder); } @Override public Page<EkmKnowledgeCollect> findByKnowledgeowerAndStatusAndOrgi(BoolQueryBuilder boolQuery, String knowledgeower, String status, String orgi, Pageable pageable) { HasParentQueryBuilder hasParentQueryBuilder=QueryBuilders.hasParentQuery("uk_ekm_kb_master",QueryBuilders.termQuery("datastatus", false)); boolQuery.must(hasParentQueryBuilder) ; boolQuery.must(QueryBuilders.termQuery("status", status)) ; boolQuery.must(QueryBuilders.termQuery("orgi", orgi)) ; boolQuery.must(QueryBuilders.termQuery("knowledgeower", knowledgeower)) ; NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQuery) ; searchQueryBuilder.withPageable(pageable) ; Page<EkmKnowledgeCollect> knowledgeCollectList = null ; if(elasticsearchTemplate.indexExists(EkmKnowledgeCollect.class)){ knowledgeCollectList = elasticsearchTemplate.queryForPage(searchQueryBuilder.build() , EkmKnowledgeCollect.class ) ; } return knowledgeCollectList ; } @Override public List<EkmKnowledgeCollect> findByKnowledgeowerAndStatusAndOrgi( String knowledgeower, String status, String orgi) { BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); BoolQueryBuilder bq = QueryBuilders.boolQuery() ; bq.must(QueryBuilders.termQuery("knowledgeower", knowledgeower)) ; bq.must(QueryBuilders.termQuery("orgi", orgi)) ; bq.must(QueryBuilders.termQuery("status", status)) ; boolQueryBuilder.must(bq); HasParentQueryBuilder hasParentQueryBuilder=QueryBuilders.hasParentQuery("uk_ekm_kb_master",QueryBuilders.termQuery("datastatus", false)); boolQueryBuilder.must(hasParentQueryBuilder) ; return this.proccessQuery(boolQueryBuilder); } @Override public List<EkmKnowledgeCollect> findByCreaterAndStatusAndFolderidAndOrgi( String creater, String status, String folderid, String orgi) { BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); BoolQueryBuilder bq = QueryBuilders.boolQuery() ; bq.must(QueryBuilders.termQuery("creater", creater)) ; bq.must(QueryBuilders.termQuery("orgi", orgi)) ; bq.must(QueryBuilders.termQuery("status", status)) ; bq.must(QueryBuilders.termQuery("folderid", folderid)) ; boolQueryBuilder.must(bq); return this.proccessQuery(boolQueryBuilder); } @Override public List<EkmKnowledgeCollect> findByCreaterAndStatusAndOrgi( String creater, String status, String orgi) { BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); BoolQueryBuilder bq = QueryBuilders.boolQuery() ; bq.must(QueryBuilders.termQuery("creater", creater)) ; bq.must(QueryBuilders.termQuery("orgi", orgi)) ; bq.must(QueryBuilders.termQuery("status", status)) ; boolQueryBuilder.must(bq); return this.proccessQuery(boolQueryBuilder); } @Override public EkmKnowledgeCollect findByCreaterAndKnowledgeidAndStatusAndOrgi( String creater, String knowledgeid, String status, String orgi) { BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); BoolQueryBuilder bq = QueryBuilders.boolQuery() ; bq.must(QueryBuilders.termQuery("creater", creater)) ; bq.must(QueryBuilders.termQuery("orgi", orgi)) ; bq.must(QueryBuilders.termQuery("status", status)) ; bq.must(QueryBuilders.termQuery("knowledgeid", knowledgeid)) ; boolQueryBuilder.must(bq); NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder) ; Page<EkmKnowledgeCollect> knowledgeCollectList = null ; if(elasticsearchTemplate.indexExists(EkmKnowledgeCollect.class)){ knowledgeCollectList = elasticsearchTemplate.queryForPage(searchQueryBuilder.build() , EkmKnowledgeCollect.class ) ; } if (knowledgeCollectList!=null && knowledgeCollectList.getContent().size()>0) { return knowledgeCollectList.getContent().get(0); }else { return null ; } } @Override public EkmKnowledgeCollect findByCreaterAndKbidAndStatusAndOrgi( String creater, String kbid, String status, String orgi) { BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); BoolQueryBuilder bq = QueryBuilders.boolQuery() ; bq.must(QueryBuilders.termQuery("creater", creater)) ; bq.must(QueryBuilders.termQuery("orgi", orgi)) ; bq.must(QueryBuilders.termQuery("status", status)) ; bq.must(QueryBuilders.termQuery("kbid", kbid)) ; boolQueryBuilder.must(bq); NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder) ; Page<EkmKnowledgeCollect> knowledgeCollectList = null ; if(elasticsearchTemplate.indexExists(EkmKnowledgeCollect.class)){ knowledgeCollectList = elasticsearchTemplate.queryForPage(searchQueryBuilder.build() , EkmKnowledgeCollect.class ) ; } if (knowledgeCollectList!=null && knowledgeCollectList.getContent().size()>0) { return knowledgeCollectList.getContent().get(0); }else { return null ; } } @Override public List<EkmKnowledgeCollect> findByKnowledgeidAndOrgi( String knowledgeid, String orgi) { BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); BoolQueryBuilder bq = QueryBuilders.boolQuery() ; bq.must(QueryBuilders.termQuery("knowledgeid", knowledgeid)) ; bq.must(QueryBuilders.termQuery("orgi", orgi)) ; boolQueryBuilder.must(bq); return this.proccessQuery(boolQueryBuilder); } @Override public List<EkmKnowledgeCollect> findByOrgi(String orgi) { BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); boolQueryBuilder.must(QueryBuilders.termQuery("orgi", orgi)) ; return this.proccessQuery(boolQueryBuilder); } public List<EkmKnowledgeCollect> proccessQuery(BoolQueryBuilder boolQueryBuilder){ NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder) ; Page<EkmKnowledgeCollect> knowledgeCollectList = null ; if(elasticsearchTemplate.indexExists(EkmKnowledgeCollect.class)){ knowledgeCollectList = elasticsearchTemplate.queryForPage(searchQueryBuilder.build() , EkmKnowledgeCollect.class ) ; } return knowledgeCollectList.getContent(); } @Override public List<EkmKnowledgeCollect> findByCreaterAndKnowledgeidAndOrgi(String creater, String knowledgeid, String orgi) { BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); BoolQueryBuilder bq = QueryBuilders.boolQuery() ; bq.must(QueryBuilders.termQuery("creater", creater)) ; bq.must(QueryBuilders.termQuery("knowledgeid", knowledgeid)) ; bq.must(QueryBuilders.termQuery("orgi", orgi)) ; boolQueryBuilder.must(bq); return this.proccessQuery(boolQueryBuilder); } }