1
0
mirror of https://github.com/chatopera/cosin.git synced 2025-08-01 16:38:02 +08:00

Replace ElasticsearchTemplate with ElasticsearchRestTemplate

This commit is contained in:
dengchao@xgtl 2020-04-21 11:55:20 +08:00
parent 9208dcfa9e
commit 0d51674081
18 changed files with 1456 additions and 1460 deletions

View File

@ -31,6 +31,7 @@ import org.springframework.http.HttpStatus;
import org.springframework.lang.NonNull; import org.springframework.lang.NonNull;
import org.springframework.web.server.ResponseStatusException; import org.springframework.web.server.ResponseStatusException;
import java.io.IOException;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -74,7 +75,7 @@ public class ActivityResource extends Resource {
} }
@Override @Override
public void begin() { public void begin() throws IOException {
if (!StringUtils.isBlank(jobDetail.getFilterid())) { if (!StringUtils.isBlank(jobDetail.getFilterid())) {
formFilter = formFilterRes.findByIdAndOrgi(jobDetail.getFilterid(), this.jobDetail.getOrgi()); formFilter = formFilterRes.findByIdAndOrgi(jobDetail.getFilterid(), this.jobDetail.getOrgi());
List<FormFilterItem> formFilterList = formFilterItemRes.findByOrgiAndFormfilterid(this.jobDetail.getOrgi(), jobDetail.getFilterid()); List<FormFilterItem> formFilterList = formFilterItemRes.findByOrgiAndFormfilterid(this.jobDetail.getOrgi(), jobDetail.getFilterid());
@ -160,7 +161,7 @@ public class ActivityResource extends Resource {
} }
@Override @Override
public void end(boolean clear) { public void end(boolean clear) throws IOException {
if (this.atomInt.intValue() > 0) { if (this.atomInt.intValue() > 0) {
this.batchDataProcess.end(); this.batchDataProcess.end();
} }

View File

@ -1,50 +1,52 @@
/* /*
* Copyright (C) 2017 优客服-多渠道客服系统 * Copyright (C) 2017 优客服-多渠道客服系统
* Modifications copyright (C) 2018-2019 Chatopera Inc, <https://www.chatopera.com> * Modifications copyright (C) 2018-2019 Chatopera Inc, <https://www.chatopera.com>
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
* You may obtain a copy of the License at * You may obtain a copy of the License at
* *
* http://www.apache.org/licenses/LICENSE-2.0 * http://www.apache.org/licenses/LICENSE-2.0
* *
* Unless required by applicable law or agreed to in writing, software * Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, * distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
package com.chatopera.cc.config; package com.chatopera.cc.config;
import com.chatopera.cc.basic.MainContext; import com.chatopera.cc.basic.MainContext;
import com.chatopera.cc.model.Favorites; import com.chatopera.cc.model.Favorites;
import com.chatopera.cc.model.WorkOrders; import com.chatopera.cc.model.WorkOrders;
import org.springframework.beans.factory.annotation.Autowired; import lombok.RequiredArgsConstructor;
import org.springframework.context.ApplicationListener; import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextRefreshedEvent; import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.data.elasticsearch.ElasticsearchException; import org.springframework.data.elasticsearch.ElasticsearchException;
import org.springframework.data.elasticsearch.core.ElasticsearchTemplate; import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
import org.springframework.stereotype.Component; import org.springframework.lang.NonNull;
import org.springframework.stereotype.Component;
@Component
public class ApplicationStartupListener implements ApplicationListener<ContextRefreshedEvent> { @Component
@RequiredArgsConstructor
@Autowired ElasticsearchTemplate elasticSearchTemplate; public class ApplicationStartupListener implements ApplicationListener<ContextRefreshedEvent> {
@NonNull
@Override private final ElasticsearchRestTemplate elasticsearchRestTemplate;
public void onApplicationEvent(ContextRefreshedEvent event) {
if (!elasticSearchTemplate.indexExists(WorkOrders.class)) { @Override
elasticSearchTemplate.createIndex(WorkOrders.class); public void onApplicationEvent(@NonNull ContextRefreshedEvent event) {
} if (!elasticsearchRestTemplate.indexExists(WorkOrders.class)) {
if (!elasticSearchTemplate.indexExists(Favorites.class)) { elasticsearchRestTemplate.createIndex(WorkOrders.class);
elasticSearchTemplate.createIndex(Favorites.class); }
} if (!elasticsearchRestTemplate.indexExists(Favorites.class)) {
try { elasticsearchRestTemplate.createIndex(Favorites.class);
elasticSearchTemplate.getMapping(WorkOrders.class); }
} catch (ElasticsearchException e) { try {
elasticSearchTemplate.putMapping(Favorites.class); elasticsearchRestTemplate.getMapping(WorkOrders.class);
elasticSearchTemplate.putMapping(WorkOrders.class); } catch (ElasticsearchException e) {
} elasticsearchRestTemplate.putMapping(Favorites.class);
MainContext.setTemplet(elasticSearchTemplate); elasticsearchRestTemplate.putMapping(WorkOrders.class);
} }
} MainContext.setTemplet(elasticsearchRestTemplate);
}
}

View File

@ -42,6 +42,7 @@ import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid; import javax.validation.Valid;
import java.io.IOException;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
@ -73,7 +74,7 @@ public class SipTrunkController extends Handler {
@RequestMapping(value = "/agent") @RequestMapping(value = "/agent")
@Menu(type = "callcenter", subtype = "agent", access = true) @Menu(type = "callcenter", subtype = "agent", access = true)
public ModelAndView agent(ModelMap map, HttpServletResponse response, @Valid String ani, @Valid String sip) { public ModelAndView agent(ModelMap map, HttpServletResponse response, @Valid String ani, @Valid String sip) throws IOException {
SipTrunk sipTrunk = CallCenterUtils.siptrunk(sip, sipTrunkRes); SipTrunk sipTrunk = CallCenterUtils.siptrunk(sip, sipTrunkRes);
map.addAttribute("siptrunk", sipTrunk); map.addAttribute("siptrunk", sipTrunk);
String agent = null; String agent = null;

View File

@ -24,10 +24,9 @@ import org.apache.commons.lang.StringUtils;
import org.elasticsearch.index.query.*; import org.elasticsearch.index.query.*;
import org.elasticsearch.search.sort.FieldSortBuilder; import org.elasticsearch.search.sort.FieldSortBuilder;
import org.elasticsearch.search.sort.SortOrder; import org.elasticsearch.search.sort.SortOrder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.data.elasticsearch.core.ElasticsearchTemplate; import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder; import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
import org.springframework.lang.NonNull; import org.springframework.lang.NonNull;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@ -43,13 +42,8 @@ import static org.elasticsearch.index.query.QueryBuilders.termQuery;
public class ContactsRepositoryImpl implements ContactsEsCommonRepository { public class ContactsRepositoryImpl implements ContactsEsCommonRepository {
@NonNull @NonNull
private final UserRepository userRes; private final UserRepository userRes;
@NonNull
private ElasticsearchTemplate elasticsearchTemplate; private final ElasticsearchRestTemplate elasticsearchRestTemplate;
@Autowired
public void setElasticsearchTemplate(ElasticsearchTemplate elasticsearchTemplate) {
this.elasticsearchTemplate = elasticsearchTemplate;
}
@Override @Override
public Page<Contacts> findByCreaterAndSharesAndOrgi(String creater, String shares, String orgi, boolean includeDeleteData, String q, Pageable page) { public Page<Contacts> findByCreaterAndSharesAndOrgi(String creater, String shares, String orgi, boolean includeDeleteData, String q, Pageable page) {
@ -160,8 +154,8 @@ public class ContactsRepositoryImpl implements ContactsEsCommonRepository {
searchQueryBuilder.withPageable(page); searchQueryBuilder.withPageable(page);
Page<Contacts> entCustomerList = null; Page<Contacts> entCustomerList = null;
if (elasticsearchTemplate.indexExists(Contacts.class)) { if (elasticsearchRestTemplate.indexExists(Contacts.class)) {
entCustomerList = elasticsearchTemplate.queryForPage(searchQueryBuilder.build(), Contacts.class); entCustomerList = elasticsearchRestTemplate.queryForPage(searchQueryBuilder.build(), Contacts.class);
} }
if (entCustomerList != null && entCustomerList.getContent().size() > 0) { if (entCustomerList != null && entCustomerList.getContent().size() > 0) {
List<String> ids = new ArrayList<>(); List<String> ids = new ArrayList<>();

View File

@ -24,10 +24,9 @@ import org.apache.commons.lang.StringUtils;
import org.elasticsearch.index.query.*; import org.elasticsearch.index.query.*;
import org.elasticsearch.search.sort.FieldSortBuilder; import org.elasticsearch.search.sort.FieldSortBuilder;
import org.elasticsearch.search.sort.SortOrder; import org.elasticsearch.search.sort.SortOrder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.data.elasticsearch.core.ElasticsearchTemplate; import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder; import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
import org.springframework.lang.NonNull; import org.springframework.lang.NonNull;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
@ -43,21 +42,16 @@ import static org.elasticsearch.index.query.QueryBuilders.termQuery;
@RequiredArgsConstructor @RequiredArgsConstructor
public class EntCustomerRepositoryImpl implements EntCustomerEsCommonRepository { public class EntCustomerRepositoryImpl implements EntCustomerEsCommonRepository {
private final SimpleDateFormat dateFromate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@NonNull @NonNull
private final UserRepository userRes; private final UserRepository userRes;
private ElasticsearchTemplate elasticsearchTemplate; @NonNull
private final ElasticsearchRestTemplate elasticsearchRestTemplate;
@Autowired
public void setElasticsearchTemplate(ElasticsearchTemplate elasticsearchTemplate) {
this.elasticsearchTemplate = elasticsearchTemplate;
}
@Override @Override
public Page<EntCustomer> findByCreaterAndSharesAndOrgi(String creater, String shares, String orgi, boolean includeDeleteData, String q, Pageable page) { public Page<EntCustomer> findByCreaterAndSharesAndOrgi(String creater, String shares, String orgi, boolean includeDeleteData, String q, Pageable page) {
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
BoolQueryBuilder boolQueryBuilder1 = new BoolQueryBuilder(); BoolQueryBuilder boolQueryBuilder1 = new BoolQueryBuilder();
boolQueryBuilder1.should(termQuery("creater", creater)); boolQueryBuilder1.should(termQuery("creater", creater));
@ -125,12 +119,12 @@ public class EntCustomerRepositoryImpl implements EntCustomerEsCommonRepository
} }
RangeQueryBuilder rangeQuery = QueryBuilders.rangeQuery("createtime"); RangeQueryBuilder rangeQuery = QueryBuilders.rangeQuery("createtime");
if (begin != null) { if (begin != null) {
rangeQuery.from(dateFromate.format(begin)); rangeQuery.from(DATE_FORMAT.format(begin));
} }
if (end != null) { if (end != null) {
rangeQuery.to(dateFromate.format(end)); rangeQuery.to(DATE_FORMAT.format(end));
} else { } else {
rangeQuery.to(dateFromate.format(new Date())); rangeQuery.to(DATE_FORMAT.format(new Date()));
} }
if (begin != null || end != null) { if (begin != null || end != null) {
boolQueryBuilder.must(rangeQuery); boolQueryBuilder.must(rangeQuery);
@ -148,8 +142,8 @@ public class EntCustomerRepositoryImpl implements EntCustomerEsCommonRepository
searchQueryBuilder.withPageable(page); searchQueryBuilder.withPageable(page);
Page<EntCustomer> entCustomerList = null; Page<EntCustomer> entCustomerList = null;
if (elasticsearchTemplate.indexExists(EntCustomer.class)) { if (elasticsearchRestTemplate.indexExists(EntCustomer.class)) {
entCustomerList = elasticsearchTemplate.queryForPage(searchQueryBuilder.build(), EntCustomer.class); entCustomerList = elasticsearchRestTemplate.queryForPage(searchQueryBuilder.build(), EntCustomer.class);
} }
if (entCustomerList != null && entCustomerList.getContent().size() > 0) { if (entCustomerList != null && entCustomerList.getContent().size() > 0) {
List<String> ids = new ArrayList<>(); List<String> ids = new ArrayList<>();

View File

@ -26,7 +26,7 @@ import org.elasticsearch.search.sort.FieldSortBuilder;
import org.elasticsearch.search.sort.SortOrder; import org.elasticsearch.search.sort.SortOrder;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.PageRequest;
import org.springframework.data.elasticsearch.core.ElasticsearchTemplate; import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
import org.springframework.data.elasticsearch.core.EntityMapper; import org.springframework.data.elasticsearch.core.EntityMapper;
import org.springframework.data.elasticsearch.core.mapping.ElasticsearchPersistentEntity; import org.springframework.data.elasticsearch.core.mapping.ElasticsearchPersistentEntity;
import org.springframework.data.elasticsearch.core.mapping.ElasticsearchPersistentProperty; import org.springframework.data.elasticsearch.core.mapping.ElasticsearchPersistentProperty;
@ -46,15 +46,15 @@ public class KbsTopicCommentRepositoryImpl implements KbsTopicCommentEsCommonRep
@NonNull @NonNull
private final UKResultMapper resultMapper; private final UKResultMapper resultMapper;
@NonNull @NonNull
private final ElasticsearchTemplate elasticsearchTemplate; private final ElasticsearchRestTemplate elasticsearchRestTemplate;
@NonNull @NonNull
private final UKAggResultExtractor ukAggResultExtractor; private final UKAggResultExtractor ukAggResultExtractor;
@NonNull @NonNull
private final UKAggTopResultExtractor ukAggTopResultExtractor; private final UKAggTopResultExtractor ukAggTopResultExtractor;
public KbsTopicCommentRepositoryImpl(@NonNull UKResultMapper resultMapper, @NonNull ElasticsearchTemplate elasticsearchTemplate, @NonNull EntityMapper entityMapper, @NonNull MappingContext<? extends ElasticsearchPersistentEntity<?>, ElasticsearchPersistentProperty> mappingContext) { public KbsTopicCommentRepositoryImpl(@NonNull UKResultMapper resultMapper, @NonNull ElasticsearchRestTemplate elasticsearchRestTemplate, @NonNull EntityMapper entityMapper, @NonNull MappingContext<? extends ElasticsearchPersistentEntity<?>, ElasticsearchPersistentProperty> mappingContext) {
this.resultMapper = resultMapper; this.resultMapper = resultMapper;
this.elasticsearchTemplate = elasticsearchTemplate; this.elasticsearchRestTemplate = elasticsearchRestTemplate;
ukAggTopResultExtractor = new UKAggTopResultExtractor(entityMapper, mappingContext); ukAggTopResultExtractor = new UKAggTopResultExtractor(entityMapper, mappingContext);
ukAggResultExtractor = new UKAggResultExtractor(entityMapper, mappingContext); ukAggResultExtractor = new UKAggResultExtractor(entityMapper, mappingContext);
} }
@ -63,8 +63,8 @@ public class KbsTopicCommentRepositoryImpl implements KbsTopicCommentEsCommonRep
public Page<KbsTopicComment> findByDataid(String id, int p, int ps) { public Page<KbsTopicComment> findByDataid(String id, int p, int ps) {
Page<KbsTopicComment> pages = null; Page<KbsTopicComment> pages = null;
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(termQuery("dataid", id)).withSort(new FieldSortBuilder("optimal").unmappedType("boolean").order(SortOrder.DESC)).withSort(new FieldSortBuilder("updatetime").unmappedType("date").order(SortOrder.DESC)).build().setPageable(PageRequest.of(p, ps)); SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(termQuery("dataid", id)).withSort(new FieldSortBuilder("optimal").unmappedType("boolean").order(SortOrder.DESC)).withSort(new FieldSortBuilder("updatetime").unmappedType("date").order(SortOrder.DESC)).build().setPageable(PageRequest.of(p, ps));
if (elasticsearchTemplate.indexExists(KbsTopicComment.class)) { if (elasticsearchRestTemplate.indexExists(KbsTopicComment.class)) {
pages = elasticsearchTemplate.queryForPage(searchQuery, KbsTopicComment.class); pages = elasticsearchRestTemplate.queryForPage(searchQuery, KbsTopicComment.class);
} }
return pages; return pages;
} }
@ -73,8 +73,8 @@ public class KbsTopicCommentRepositoryImpl implements KbsTopicCommentEsCommonRep
public List<KbsTopicComment> findByOptimal(String dataid) { public List<KbsTopicComment> findByOptimal(String dataid) {
List<KbsTopicComment> commentList = null; List<KbsTopicComment> commentList = null;
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(termQuery("dataid", dataid)).withQuery(termQuery("optimal", true)).build(); SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(termQuery("dataid", dataid)).withQuery(termQuery("optimal", true)).build();
if (elasticsearchTemplate.indexExists(KbsTopicComment.class)) { if (elasticsearchRestTemplate.indexExists(KbsTopicComment.class)) {
commentList = elasticsearchTemplate.queryForList(searchQuery, KbsTopicComment.class); commentList = elasticsearchRestTemplate.queryForList(searchQuery, KbsTopicComment.class);
} }
return commentList; return commentList;
} }
@ -86,13 +86,13 @@ public class KbsTopicCommentRepositoryImpl implements KbsTopicCommentEsCommonRep
searchQueryBuilder.withQuery(new QueryStringQueryBuilder(q).defaultOperator(Operator.AND)); searchQueryBuilder.withQuery(new QueryStringQueryBuilder(q).defaultOperator(Operator.AND));
} }
SearchQuery searchQuery = searchQueryBuilder.build(); SearchQuery searchQuery = searchQueryBuilder.build();
if (elasticsearchTemplate.indexExists(KbsTopicComment.class)) { if (elasticsearchRestTemplate.indexExists(KbsTopicComment.class)) {
if (!StringUtils.isBlank(q)) { if (!StringUtils.isBlank(q)) {
pages = elasticsearchTemplate.queryForPage(searchQuery, KbsTopicComment.class, resultMapper); pages = elasticsearchRestTemplate.queryForPage(searchQuery, KbsTopicComment.class, resultMapper);
} else { } else {
ukAggTopResultExtractor.setTerm(field); ukAggTopResultExtractor.setTerm(field);
ukAggTopResultExtractor.setName(aggname); ukAggTopResultExtractor.setName(aggname);
pages = elasticsearchTemplate.queryForPage(searchQuery, KbsTopicComment.class, ukAggTopResultExtractor); pages = elasticsearchRestTemplate.queryForPage(searchQuery, KbsTopicComment.class, ukAggTopResultExtractor);
} }
} }
return pages; return pages;
@ -106,7 +106,7 @@ public class KbsTopicCommentRepositoryImpl implements KbsTopicCommentEsCommonRep
if (!StringUtils.isBlank(q)) { if (!StringUtils.isBlank(q)) {
searchQueryBuilder.withQuery(new QueryStringQueryBuilder(q).defaultOperator(Operator.AND)); searchQueryBuilder.withQuery(new QueryStringQueryBuilder(q).defaultOperator(Operator.AND));
} }
return elasticsearchTemplate.queryForPage(searchQueryBuilder.build(), KbsTopicComment.class, resultMapper); return elasticsearchRestTemplate.queryForPage(searchQueryBuilder.build(), KbsTopicComment.class, resultMapper);
} }
@Override @Override
@ -117,9 +117,9 @@ public class KbsTopicCommentRepositoryImpl implements KbsTopicCommentEsCommonRep
searchQueryBuilder.withQuery(new QueryStringQueryBuilder(q).defaultOperator(Operator.AND)); searchQueryBuilder.withQuery(new QueryStringQueryBuilder(q).defaultOperator(Operator.AND));
} }
SearchQuery searchQuery = searchQueryBuilder.build().setPageable(PageRequest.of(p, ps)); SearchQuery searchQuery = searchQueryBuilder.build().setPageable(PageRequest.of(p, ps));
if (elasticsearchTemplate.indexExists(Topic.class)) { if (elasticsearchRestTemplate.indexExists(Topic.class)) {
ukAggResultExtractor.setTerm("creater"); ukAggResultExtractor.setTerm("creater");
pages = elasticsearchTemplate.queryForPage(searchQuery, KbsTopicComment.class, ukAggResultExtractor); pages = elasticsearchRestTemplate.queryForPage(searchQuery, KbsTopicComment.class, ukAggResultExtractor);
} }
return pages; return pages;
} }

View File

@ -25,7 +25,7 @@ import org.elasticsearch.search.sort.FieldSortBuilder;
import org.elasticsearch.search.sort.SortOrder; import org.elasticsearch.search.sort.SortOrder;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.PageRequest;
import org.springframework.data.elasticsearch.core.ElasticsearchTemplate; import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder; import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
import org.springframework.data.elasticsearch.core.query.SearchQuery; import org.springframework.data.elasticsearch.core.query.SearchQuery;
import org.springframework.lang.NonNull; import org.springframework.lang.NonNull;
@ -42,7 +42,7 @@ public class KbsTopicRepositoryImpl implements KbsTopicEsCommonRepository {
@NonNull @NonNull
private final UKResultMapper ukResultMapper; private final UKResultMapper ukResultMapper;
@NonNull @NonNull
private final ElasticsearchTemplate elasticsearchTemplate; private final ElasticsearchRestTemplate elasticsearchRestTemplate;
@Override @Override
public Page<KbsTopic> getTopicByCate(String cate, String q, final int p, final int ps) { public Page<KbsTopic> getTopicByCate(String cate, String q, final int p, final int ps) {
@ -58,8 +58,8 @@ public class KbsTopicRepositoryImpl implements KbsTopicEsCommonRepository {
NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withSort(new FieldSortBuilder("createtime").unmappedType("date").order(SortOrder.DESC)); NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withSort(new FieldSortBuilder("createtime").unmappedType("date").order(SortOrder.DESC));
searchQueryBuilder.withHighlightFields(new HighlightBuilder.Field("title").fragmentSize(200)); searchQueryBuilder.withHighlightFields(new HighlightBuilder.Field("title").fragmentSize(200));
SearchQuery searchQuery = searchQueryBuilder.build().setPageable(PageRequest.of(p, ps)); SearchQuery searchQuery = searchQueryBuilder.build().setPageable(PageRequest.of(p, ps));
if (elasticsearchTemplate.indexExists(KbsTopic.class)) { if (elasticsearchRestTemplate.indexExists(KbsTopic.class)) {
pages = elasticsearchTemplate.queryForPage(searchQuery, KbsTopic.class, ukResultMapper); pages = elasticsearchRestTemplate.queryForPage(searchQuery, KbsTopic.class, ukResultMapper);
} }
return pages; return pages;
} }
@ -79,8 +79,8 @@ public class KbsTopicRepositoryImpl implements KbsTopicEsCommonRepository {
searchQueryBuilder.withHighlightFields(new HighlightBuilder.Field("title").fragmentSize(200)); searchQueryBuilder.withHighlightFields(new HighlightBuilder.Field("title").fragmentSize(200));
SearchQuery searchQuery = searchQueryBuilder.build().setPageable(PageRequest.of(p, ps)); SearchQuery searchQuery = searchQueryBuilder.build().setPageable(PageRequest.of(p, ps));
if (elasticsearchTemplate.indexExists(KbsTopic.class)) { if (elasticsearchRestTemplate.indexExists(KbsTopic.class)) {
pages = elasticsearchTemplate.queryForPage(searchQuery, KbsTopic.class, ukResultMapper); pages = elasticsearchRestTemplate.queryForPage(searchQuery, KbsTopic.class, ukResultMapper);
} }
return pages; return pages;
} }
@ -99,8 +99,8 @@ public class KbsTopicRepositoryImpl implements KbsTopicEsCommonRepository {
NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withQuery(termQuery("creater", user)).withSort(new FieldSortBuilder("top").unmappedType("boolean").order(SortOrder.DESC)).withSort(new FieldSortBuilder("updatetime").unmappedType("date").order(SortOrder.DESC)); NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withQuery(termQuery("creater", user)).withSort(new FieldSortBuilder("top").unmappedType("boolean").order(SortOrder.DESC)).withSort(new FieldSortBuilder("updatetime").unmappedType("date").order(SortOrder.DESC));
SearchQuery searchQuery = searchQueryBuilder.build().setPageable(PageRequest.of(p, ps)); SearchQuery searchQuery = searchQueryBuilder.build().setPageable(PageRequest.of(p, ps));
if (elasticsearchTemplate.indexExists(KbsTopic.class)) { if (elasticsearchRestTemplate.indexExists(KbsTopic.class)) {
pages = elasticsearchTemplate.queryForPage(searchQuery, KbsTopic.class, ukResultMapper); pages = elasticsearchRestTemplate.queryForPage(searchQuery, KbsTopic.class, ukResultMapper);
} }
return pages; return pages;
} }
@ -116,8 +116,8 @@ public class KbsTopicRepositoryImpl implements KbsTopicEsCommonRepository {
NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withFilter(QueryBuilders.boolQuery().must(beginFilter).must(endFilter)).withSort(new FieldSortBuilder("createtime").unmappedType("date").order(SortOrder.DESC)); NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withFilter(QueryBuilders.boolQuery().must(beginFilter).must(endFilter)).withSort(new FieldSortBuilder("createtime").unmappedType("date").order(SortOrder.DESC));
SearchQuery searchQuery = searchQueryBuilder.build().setPageable(PageRequest.of(p, ps)); SearchQuery searchQuery = searchQueryBuilder.build().setPageable(PageRequest.of(p, ps));
if (elasticsearchTemplate.indexExists(KbsTopic.class)) { if (elasticsearchRestTemplate.indexExists(KbsTopic.class)) {
pages = elasticsearchTemplate.queryForPage(searchQuery, KbsTopic.class); pages = elasticsearchRestTemplate.queryForPage(searchQuery, KbsTopic.class);
} }
return pages; return pages;
} }
@ -140,8 +140,8 @@ public class KbsTopicRepositoryImpl implements KbsTopicEsCommonRepository {
NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withSort(new FieldSortBuilder("top").unmappedType("boolean").order(SortOrder.DESC)).withSort(new FieldSortBuilder("updatetime").unmappedType("date").order(SortOrder.DESC)); NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withSort(new FieldSortBuilder("top").unmappedType("boolean").order(SortOrder.DESC)).withSort(new FieldSortBuilder("updatetime").unmappedType("date").order(SortOrder.DESC));
SearchQuery searchQuery = searchQueryBuilder.build(); SearchQuery searchQuery = searchQueryBuilder.build();
if (elasticsearchTemplate.indexExists(KbsTopic.class)) { if (elasticsearchRestTemplate.indexExists(KbsTopic.class)) {
list = elasticsearchTemplate.queryForList(searchQuery, KbsTopic.class); list = elasticsearchRestTemplate.queryForList(searchQuery, KbsTopic.class);
} }
return list; return list;
} }

View File

@ -27,7 +27,7 @@ import org.elasticsearch.search.sort.SortOrder;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.data.elasticsearch.core.ElasticsearchTemplate; import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
import org.springframework.data.elasticsearch.core.query.DeleteQuery; import org.springframework.data.elasticsearch.core.query.DeleteQuery;
import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder; import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
import org.springframework.data.elasticsearch.core.query.SearchQuery; import org.springframework.data.elasticsearch.core.query.SearchQuery;
@ -46,7 +46,7 @@ public class QuickReplyRepositoryImpl implements QuickReplyEsCommonRepository {
private final UKResultMapper ukResultMapper; private final UKResultMapper ukResultMapper;
@NonNull @NonNull
private final ElasticsearchTemplate elasticsearchTemplate; private final ElasticsearchRestTemplate elasticsearchRestTemplate;
@Override @Override
public Page<QuickReply> getByOrgiAndCate(String orgi, String cate, String q, Pageable page) { public Page<QuickReply> getByOrgiAndCate(String orgi, String cate, String q, Pageable page) {
@ -62,8 +62,8 @@ public class QuickReplyRepositoryImpl implements QuickReplyEsCommonRepository {
NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withSort(new FieldSortBuilder("createtime").unmappedType("date").order(SortOrder.DESC)); NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withSort(new FieldSortBuilder("createtime").unmappedType("date").order(SortOrder.DESC));
searchQueryBuilder.withHighlightFields(new HighlightBuilder.Field("title").fragmentSize(200)); searchQueryBuilder.withHighlightFields(new HighlightBuilder.Field("title").fragmentSize(200));
SearchQuery searchQuery = searchQueryBuilder.build().setPageable(page); SearchQuery searchQuery = searchQueryBuilder.build().setPageable(page);
if (elasticsearchTemplate.indexExists(QuickReply.class)) { if (elasticsearchRestTemplate.indexExists(QuickReply.class)) {
pages = elasticsearchTemplate.queryForPage(searchQuery, QuickReply.class, ukResultMapper); pages = elasticsearchRestTemplate.queryForPage(searchQuery, QuickReply.class, ukResultMapper);
} }
return pages; return pages;
} }
@ -95,8 +95,8 @@ public class QuickReplyRepositoryImpl implements QuickReplyEsCommonRepository {
NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withSort(new FieldSortBuilder("createtime").unmappedType("date").order(SortOrder.DESC)); NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withSort(new FieldSortBuilder("createtime").unmappedType("date").order(SortOrder.DESC));
searchQueryBuilder.withHighlightFields(new HighlightBuilder.Field("title").fragmentSize(200)); searchQueryBuilder.withHighlightFields(new HighlightBuilder.Field("title").fragmentSize(200));
SearchQuery searchQuery = searchQueryBuilder.build().setPageable(PageRequest.of(0, 10000)); SearchQuery searchQuery = searchQueryBuilder.build().setPageable(PageRequest.of(0, 10000));
if (elasticsearchTemplate.indexExists(QuickReply.class)) { if (elasticsearchRestTemplate.indexExists(QuickReply.class)) {
pages = elasticsearchTemplate.queryForList(searchQuery, QuickReply.class); pages = elasticsearchRestTemplate.queryForList(searchQuery, QuickReply.class);
} }
return pages; return pages;
} }
@ -114,8 +114,8 @@ public class QuickReplyRepositoryImpl implements QuickReplyEsCommonRepository {
searchQueryBuilder.withHighlightFields(new HighlightBuilder.Field("title").fragmentSize(200)); searchQueryBuilder.withHighlightFields(new HighlightBuilder.Field("title").fragmentSize(200));
SearchQuery searchQuery = searchQueryBuilder.build().setPageable(PageRequest.of(p, ps)); SearchQuery searchQuery = searchQueryBuilder.build().setPageable(PageRequest.of(p, ps));
if (elasticsearchTemplate.indexExists(QuickReply.class)) { if (elasticsearchRestTemplate.indexExists(QuickReply.class)) {
pages = elasticsearchTemplate.queryForPage(searchQuery, QuickReply.class, ukResultMapper); pages = elasticsearchRestTemplate.queryForPage(searchQuery, QuickReply.class, ukResultMapper);
} }
return pages; return pages;
} }
@ -134,8 +134,8 @@ public class QuickReplyRepositoryImpl implements QuickReplyEsCommonRepository {
NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withQuery(termQuery("creater", user)).withSort(new FieldSortBuilder("top").unmappedType("boolean").order(SortOrder.DESC)).withSort(new FieldSortBuilder("updatetime").unmappedType("date").order(SortOrder.DESC)); NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withQuery(termQuery("creater", user)).withSort(new FieldSortBuilder("top").unmappedType("boolean").order(SortOrder.DESC)).withSort(new FieldSortBuilder("updatetime").unmappedType("date").order(SortOrder.DESC));
SearchQuery searchQuery = searchQueryBuilder.build().setPageable(PageRequest.of(p, ps)); SearchQuery searchQuery = searchQueryBuilder.build().setPageable(PageRequest.of(p, ps));
if (elasticsearchTemplate.indexExists(QuickReply.class)) { if (elasticsearchRestTemplate.indexExists(QuickReply.class)) {
pages = elasticsearchTemplate.queryForPage(searchQuery, QuickReply.class, ukResultMapper); pages = elasticsearchRestTemplate.queryForPage(searchQuery, QuickReply.class, ukResultMapper);
} }
return pages; return pages;
} }
@ -151,8 +151,8 @@ public class QuickReplyRepositoryImpl implements QuickReplyEsCommonRepository {
NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withFilter(QueryBuilders.boolQuery().must(beginFilter).must(endFilter)).withSort(new FieldSortBuilder("createtime").unmappedType("date").order(SortOrder.DESC)); NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withFilter(QueryBuilders.boolQuery().must(beginFilter).must(endFilter)).withSort(new FieldSortBuilder("createtime").unmappedType("date").order(SortOrder.DESC));
SearchQuery searchQuery = searchQueryBuilder.build().setPageable(PageRequest.of(p, ps)); SearchQuery searchQuery = searchQueryBuilder.build().setPageable(PageRequest.of(p, ps));
if (elasticsearchTemplate.indexExists(QuickReply.class)) { if (elasticsearchRestTemplate.indexExists(QuickReply.class)) {
pages = elasticsearchTemplate.queryForPage(searchQuery, QuickReply.class); pages = elasticsearchRestTemplate.queryForPage(searchQuery, QuickReply.class);
} }
return pages; return pages;
} }
@ -174,8 +174,8 @@ public class QuickReplyRepositoryImpl implements QuickReplyEsCommonRepository {
NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withSort(new FieldSortBuilder("createtime").unmappedType("date").order(SortOrder.DESC)); NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withSort(new FieldSortBuilder("createtime").unmappedType("date").order(SortOrder.DESC));
SearchQuery searchQuery = searchQueryBuilder.build().setPageable(page); SearchQuery searchQuery = searchQueryBuilder.build().setPageable(page);
if (elasticsearchTemplate.indexExists(QuickReply.class)) { if (elasticsearchRestTemplate.indexExists(QuickReply.class)) {
list = elasticsearchTemplate.queryForPage(searchQuery, QuickReply.class); list = elasticsearchRestTemplate.queryForPage(searchQuery, QuickReply.class);
} }
return list; return list;
} }
@ -187,7 +187,7 @@ public class QuickReplyRepositoryImpl implements QuickReplyEsCommonRepository {
boolQueryBuilder.must(termQuery("orgi", orgi)); boolQueryBuilder.must(termQuery("orgi", orgi));
boolQueryBuilder.must(termQuery("cate", cate)); boolQueryBuilder.must(termQuery("cate", cate));
deleteQuery.setQuery(boolQueryBuilder); deleteQuery.setQuery(boolQueryBuilder);
elasticsearchTemplate.delete(deleteQuery); elasticsearchRestTemplate.delete(deleteQuery);
} }
@Override @Override
@ -210,8 +210,8 @@ public class QuickReplyRepositoryImpl implements QuickReplyEsCommonRepository {
NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withSort(new FieldSortBuilder("top").unmappedType("boolean").order(SortOrder.DESC)).withSort(new FieldSortBuilder("updatetime").unmappedType("date").order(SortOrder.DESC)); NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withSort(new FieldSortBuilder("top").unmappedType("boolean").order(SortOrder.DESC)).withSort(new FieldSortBuilder("updatetime").unmappedType("date").order(SortOrder.DESC));
SearchQuery searchQuery = searchQueryBuilder.build().setPageable(PageRequest.of(0, 10000)); SearchQuery searchQuery = searchQueryBuilder.build().setPageable(PageRequest.of(0, 10000));
if (elasticsearchTemplate.indexExists(QuickReply.class)) { if (elasticsearchRestTemplate.indexExists(QuickReply.class)) {
list = elasticsearchTemplate.queryForList(searchQuery, QuickReply.class); list = elasticsearchRestTemplate.queryForList(searchQuery, QuickReply.class);
} }
return list; return list;
} }

View File

@ -26,7 +26,7 @@ import org.elasticsearch.search.sort.FieldSortBuilder;
import org.elasticsearch.search.sort.SortOrder; import org.elasticsearch.search.sort.SortOrder;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.PageRequest;
import org.springframework.data.elasticsearch.core.ElasticsearchTemplate; import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder; import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
import org.springframework.data.elasticsearch.core.query.SearchQuery; import org.springframework.data.elasticsearch.core.query.SearchQuery;
import org.springframework.lang.NonNull; import org.springframework.lang.NonNull;
@ -41,7 +41,7 @@ import static org.elasticsearch.index.query.QueryBuilders.termQuery;
@RequiredArgsConstructor @RequiredArgsConstructor
public class TopicRepositoryImpl implements TopicEsCommonRepository { public class TopicRepositoryImpl implements TopicEsCommonRepository {
@NonNull @NonNull
private final ElasticsearchTemplate elasticsearchTemplate; private final ElasticsearchRestTemplate elasticsearchRestTemplate;
@NonNull @NonNull
private final XiaoEUKResultMapper resultMapper; private final XiaoEUKResultMapper resultMapper;
@ -61,8 +61,8 @@ public class TopicRepositoryImpl implements TopicEsCommonRepository {
NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withSort(new FieldSortBuilder("top").unmappedType("boolean").order(SortOrder.DESC)).withSort(new FieldSortBuilder("createtime").unmappedType("date").order(SortOrder.DESC)); NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withSort(new FieldSortBuilder("top").unmappedType("boolean").order(SortOrder.DESC)).withSort(new FieldSortBuilder("createtime").unmappedType("date").order(SortOrder.DESC));
searchQueryBuilder.withHighlightFields(new HighlightBuilder.Field("title").fragmentSize(200)); searchQueryBuilder.withHighlightFields(new HighlightBuilder.Field("title").fragmentSize(200));
SearchQuery searchQuery = searchQueryBuilder.build().setPageable(PageRequest.of(p, ps)); SearchQuery searchQuery = searchQueryBuilder.build().setPageable(PageRequest.of(p, ps));
if (elasticsearchTemplate.indexExists(Topic.class)) { if (elasticsearchRestTemplate.indexExists(Topic.class)) {
pages = elasticsearchTemplate.queryForPage(searchQuery, Topic.class, resultMapper); pages = elasticsearchRestTemplate.queryForPage(searchQuery, Topic.class, resultMapper);
} }
return pages; return pages;
} }
@ -87,8 +87,8 @@ public class TopicRepositoryImpl implements TopicEsCommonRepository {
searchQueryBuilder.withHighlightFields(new HighlightBuilder.Field("title").fragmentSize(200)); searchQueryBuilder.withHighlightFields(new HighlightBuilder.Field("title").fragmentSize(200));
SearchQuery searchQuery = searchQueryBuilder.build().setPageable(PageRequest.of(p, ps)); SearchQuery searchQuery = searchQueryBuilder.build().setPageable(PageRequest.of(p, ps));
if (elasticsearchTemplate.indexExists(Topic.class)) { if (elasticsearchRestTemplate.indexExists(Topic.class)) {
pages = elasticsearchTemplate.queryForPage(searchQuery, Topic.class, resultMapper); pages = elasticsearchRestTemplate.queryForPage(searchQuery, Topic.class, resultMapper);
} }
return pages; return pages;
} }
@ -107,8 +107,8 @@ public class TopicRepositoryImpl implements TopicEsCommonRepository {
NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withQuery(termQuery("creater", user)).withSort(new FieldSortBuilder("top").unmappedType("boolean").order(SortOrder.DESC)).withSort(new FieldSortBuilder("updatetime").unmappedType("date").order(SortOrder.DESC)); NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withQuery(termQuery("creater", user)).withSort(new FieldSortBuilder("top").unmappedType("boolean").order(SortOrder.DESC)).withSort(new FieldSortBuilder("updatetime").unmappedType("date").order(SortOrder.DESC));
SearchQuery searchQuery = searchQueryBuilder.build().setPageable(PageRequest.of(p, ps)); SearchQuery searchQuery = searchQueryBuilder.build().setPageable(PageRequest.of(p, ps));
if (elasticsearchTemplate.indexExists(Topic.class)) { if (elasticsearchRestTemplate.indexExists(Topic.class)) {
pages = elasticsearchTemplate.queryForPage(searchQuery, Topic.class, resultMapper); pages = elasticsearchRestTemplate.queryForPage(searchQuery, Topic.class, resultMapper);
} }
return pages; return pages;
} }
@ -123,8 +123,8 @@ public class TopicRepositoryImpl implements TopicEsCommonRepository {
NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withFilter(QueryBuilders.boolQuery().must(beginFilter).must(endFilter)).withSort(new FieldSortBuilder("createtime").unmappedType("date").order(SortOrder.DESC)); NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withFilter(QueryBuilders.boolQuery().must(beginFilter).must(endFilter)).withSort(new FieldSortBuilder("createtime").unmappedType("date").order(SortOrder.DESC));
SearchQuery searchQuery = searchQueryBuilder.build().setPageable(PageRequest.of(p, ps)); SearchQuery searchQuery = searchQueryBuilder.build().setPageable(PageRequest.of(p, ps));
if (elasticsearchTemplate.indexExists(Topic.class)) { if (elasticsearchRestTemplate.indexExists(Topic.class)) {
pages = elasticsearchTemplate.queryForPage(searchQuery, Topic.class); pages = elasticsearchRestTemplate.queryForPage(searchQuery, Topic.class);
} }
return pages; return pages;
} }
@ -147,8 +147,8 @@ public class TopicRepositoryImpl implements TopicEsCommonRepository {
NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withSort(new FieldSortBuilder("top").unmappedType("boolean").order(SortOrder.DESC)).withSort(new FieldSortBuilder("updatetime").unmappedType("date").order(SortOrder.DESC)); NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withSort(new FieldSortBuilder("top").unmappedType("boolean").order(SortOrder.DESC)).withSort(new FieldSortBuilder("updatetime").unmappedType("date").order(SortOrder.DESC));
SearchQuery searchQuery = searchQueryBuilder.build(); SearchQuery searchQuery = searchQueryBuilder.build();
if (elasticsearchTemplate.indexExists(Topic.class)) { if (elasticsearchRestTemplate.indexExists(Topic.class)) {
list = elasticsearchTemplate.queryForList(searchQuery, Topic.class); list = elasticsearchRestTemplate.queryForList(searchQuery, Topic.class);
} }
return list; return list;
} }

View File

@ -1,69 +1,68 @@
/* /*
* Copyright (C) 2017 优客服-多渠道客服系统 * Copyright (C) 2017 优客服-多渠道客服系统
* Modifications copyright (C) 2018-2019 Chatopera Inc, <https://www.chatopera.com> * Modifications copyright (C) 2018-2019 Chatopera Inc, <https://www.chatopera.com>
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
* You may obtain a copy of the License at * You may obtain a copy of the License at
* *
* http://www.apache.org/licenses/LICENSE-2.0 * http://www.apache.org/licenses/LICENSE-2.0
* *
* Unless required by applicable law or agreed to in writing, software * Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, * distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
package com.chatopera.cc.persistence.impl; package com.chatopera.cc.persistence.impl;
import com.chatopera.cc.basic.MainContext; import com.chatopera.cc.basic.MainContext;
import com.chatopera.cc.model.MetadataTable; import com.chatopera.cc.model.MetadataTable;
import com.chatopera.cc.util.dsdata.process.JPAProcess; import com.chatopera.cc.util.dsdata.process.JPAProcess;
import com.chatopera.cc.util.es.UKDataBean; import com.chatopera.cc.util.es.UKDataBean;
import org.elasticsearch.action.bulk.BulkRequestBuilder; import org.elasticsearch.action.bulk.BulkRequest;
import org.elasticsearch.client.RequestOptions;
import java.util.Map; import org.springframework.lang.NonNull;
public class BatchDataProcess implements JPAProcess{ import java.io.IOException;
import java.util.Map;
private MetadataTable metadata;
private ESDataExchangeImpl esDataExchangeImpl ; public class BatchDataProcess implements JPAProcess {
private BulkRequestBuilder builder ;
private final MetadataTable metadata;
public BatchDataProcess(MetadataTable metadata , ESDataExchangeImpl esDataExchangeImpl) { private final ESDataExchangeImpl esDataExchangeImpl;
this.metadata = metadata ; @NonNull
this.esDataExchangeImpl = esDataExchangeImpl ; private final BulkRequest request;
builder = MainContext.getTemplet().getClient().prepareBulk() ;
} public BatchDataProcess(MetadataTable metadata, ESDataExchangeImpl esDataExchangeImpl) {
this.metadata = metadata;
@SuppressWarnings("unchecked") this.esDataExchangeImpl = esDataExchangeImpl;
@Override request = new BulkRequest();
public void process(Object data) { }
UKDataBean dataBean = new UKDataBean();
if(data instanceof UKDataBean) { @SuppressWarnings("unchecked")
dataBean = (UKDataBean)data; @Override
}else { public void process(Object data) {
dataBean.setTable(this.metadata); UKDataBean dataBean = new UKDataBean();
dataBean.setValues((Map<String, Object>) data); if (data instanceof UKDataBean) {
} dataBean = (UKDataBean) data;
try { } else {
if(builder!=null) { dataBean.setTable(this.metadata);
builder.add(esDataExchangeImpl.saveBulk(dataBean)) ; dataBean.setValues((Map<String, Object>) data);
}else { }
esDataExchangeImpl.saveIObject(dataBean); try {
} request.add(esDataExchangeImpl.saveBulk(dataBean));
if(builder.numberOfActions() % 1000 ==0) { if (request.numberOfActions() % 1000 == 0) {
builder.execute().actionGet(); end();
} }
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
@Override @Override
public void end() { public void end() throws IOException {
if(builder!=null) { MainContext.getTemplet().getClient().bulk(request, RequestOptions.DEFAULT);
builder.execute().actionGet(); request.requests().clear();
} }
} }
}

View File

@ -1,59 +1,59 @@
/* /*
* Copyright (C) 2017 优客服-多渠道客服系统 * Copyright (C) 2017 优客服-多渠道客服系统
* Modifications copyright (C) 2018-2019 Chatopera Inc, <https://www.chatopera.com> * Modifications copyright (C) 2018-2019 Chatopera Inc, <https://www.chatopera.com>
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
* You may obtain a copy of the License at * You may obtain a copy of the License at
* *
* http://www.apache.org/licenses/LICENSE-2.0 * http://www.apache.org/licenses/LICENSE-2.0
* *
* Unless required by applicable law or agreed to in writing, software * Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, * distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
package com.chatopera.cc.persistence.impl; package com.chatopera.cc.persistence.impl;
import com.chatopera.cc.basic.MainContext; import com.chatopera.cc.basic.MainContext;
import com.chatopera.cc.util.dsdata.process.JPAProcess; import com.chatopera.cc.util.dsdata.process.JPAProcess;
import com.chatopera.cc.util.es.UKDataBean; import com.chatopera.cc.util.es.UKDataBean;
import org.elasticsearch.action.bulk.BulkRequestBuilder; import org.elasticsearch.action.bulk.BulkRequest;
import org.elasticsearch.client.RequestOptions;
public class DataBatProcess implements JPAProcess{ import org.springframework.lang.NonNull;
private ESDataExchangeImpl esDataExchangeImpl ; import java.io.IOException;
private BulkRequestBuilder builder ;
public class DataBatProcess implements JPAProcess {
public DataBatProcess(ESDataExchangeImpl esDataExchangeImpl) { @NonNull
this.esDataExchangeImpl = esDataExchangeImpl ; private final BulkRequest request;
builder = MainContext.getTemplet().getClient().prepareBulk() ; @NonNull
} private final ESDataExchangeImpl esDataExchangeImpl;
@Override public DataBatProcess(@NonNull ESDataExchangeImpl esDataExchangeImpl) {
public void process(Object data) { this.esDataExchangeImpl = esDataExchangeImpl;
if(data instanceof UKDataBean){ request = new BulkRequest();
UKDataBean dataBean = (UKDataBean)data; }
try {
if(builder!=null) { @Override
builder.add(esDataExchangeImpl.saveBulk(dataBean)) ; public void process(Object data) {
}else { if (data instanceof UKDataBean) {
esDataExchangeImpl.saveIObject(dataBean); UKDataBean dataBean = (UKDataBean) data;
} try {
if(builder.numberOfActions() % 1000 ==0) { request.add(esDataExchangeImpl.saveBulk(dataBean));
builder.execute().actionGet(); if (request.numberOfActions() % 1000 == 0) {
} end();
} catch (Exception e) { }
e.printStackTrace(); } catch (Exception e) {
} e.printStackTrace();
} }
} }
}
@Override
public void end() { @Override
if(builder!=null) { public void end() throws IOException {
builder.execute().actionGet(); MainContext.getTemplet().getClient().bulk(request, RequestOptions.DEFAULT);
} request.requests().clear();
} }
} }

View File

@ -25,10 +25,12 @@ import com.chatopera.cc.persistence.repository.UserRepository;
import com.chatopera.cc.util.es.UKDataBean; import com.chatopera.cc.util.es.UKDataBean;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.elasticsearch.action.get.GetRequest;
import org.elasticsearch.action.get.GetResponse; import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.action.index.IndexRequestBuilder; import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.action.search.SearchRequestBuilder; import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.index.query.QueryBuilder; import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.search.SearchHit; import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.aggregations.Aggregation; import org.elasticsearch.search.aggregations.Aggregation;
@ -36,6 +38,7 @@ import org.elasticsearch.search.aggregations.AggregationBuilder;
import org.elasticsearch.search.aggregations.AggregationBuilders; import org.elasticsearch.search.aggregations.AggregationBuilders;
import org.elasticsearch.search.aggregations.bucket.terms.StringTerms; import org.elasticsearch.search.aggregations.bucket.terms.StringTerms;
import org.elasticsearch.search.aggregations.bucket.terms.Terms; import org.elasticsearch.search.aggregations.bucket.terms.Terms;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.elasticsearch.search.sort.FieldSortBuilder; import org.elasticsearch.search.sort.FieldSortBuilder;
import org.elasticsearch.search.sort.SortOrder; import org.elasticsearch.search.sort.SortOrder;
import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.PageImpl;
@ -44,6 +47,7 @@ import org.springframework.data.domain.Sort.Order;
import org.springframework.lang.NonNull; import org.springframework.lang.NonNull;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
@ -62,31 +66,26 @@ public class ESDataExchangeImpl {
@NonNull @NonNull
private final OrganRepository organRes; private final OrganRepository organRes;
public void saveIObject(UKDataBean dataBean) { public void saveIObject(UKDataBean dataBean) throws IOException {
if (dataBean.getId() == null) { if (dataBean.getId() == null) {
dataBean.setId((String) dataBean.getValues().get("id")); dataBean.setId((String) dataBean.getValues().get("id"));
} }
this.saveBulk(dataBean).execute().actionGet(); MainContext.getTemplet().getClient().index(this.saveBulk(dataBean), RequestOptions.DEFAULT);
} }
/** @NonNull
* public IndexRequest saveBulk(UKDataBean dataBean) {
*/
public IndexRequestBuilder saveBulk(UKDataBean dataBean) {
IndexRequestBuilder indexRequestBuilder;
if (dataBean.getId() == null) { if (dataBean.getId() == null) {
dataBean.setId((String) dataBean.getValues().get("id")); dataBean.setId((String) dataBean.getValues().get("id"));
} }
String type;
if (!StringUtils.isBlank(dataBean.getType())) { if (!StringUtils.isBlank(dataBean.getType())) {
indexRequestBuilder = MainContext.getTemplet().getClient().prepareIndex(Constants.SYSTEM_INDEX, type = dataBean.getType();
dataBean.getType(), dataBean.getId())
.setSource(processValues(dataBean));
} else { } else {
indexRequestBuilder = MainContext.getTemplet().getClient().prepareIndex(Constants.SYSTEM_INDEX, type = dataBean.getTable().getTablename();
dataBean.getTable().getTablename(), dataBean.getId())
.setSource(processValues(dataBean));
} }
return indexRequestBuilder; return new IndexRequest(Constants.SYSTEM_INDEX,
type, dataBean.getId()).source(processValues(dataBean));
} }
/** /**
@ -113,18 +112,16 @@ public class ESDataExchangeImpl {
public void deleteById(String type, String id) { public void deleteById(String type, String id) {
if (!StringUtils.isBlank(type) && !StringUtils.isBlank(id)) { if (!StringUtils.isBlank(type) && !StringUtils.isBlank(id)) {
MainContext.getTemplet().getClient() MainContext.getTemplet().delete(Constants.SYSTEM_INDEX, type, id);
.prepareDelete(Constants.SYSTEM_INDEX, type, id).execute().actionGet();
} }
} }
public UKDataBean getIObjectByPK(UKDataBean dataBean) { public UKDataBean getIObjectByPK(UKDataBean dataBean) throws IOException {
if (dataBean.getTable() != null) { if (dataBean.getTable() != null) {
GetResponse getResponse = MainContext.getTemplet().getClient() GetResponse getResponse = MainContext.getTemplet().getClient()
.prepareGet(Constants.SYSTEM_INDEX, .get(new GetRequest(Constants.SYSTEM_INDEX,
dataBean.getTable().getTablename(), dataBean.getId()) dataBean.getTable().getTablename(), dataBean.getId()), RequestOptions.DEFAULT);
.execute().actionGet();
dataBean.setValues(getResponse.getSource()); dataBean.setValues(getResponse.getSource());
dataBean.setType(getResponse.getType()); dataBean.setType(getResponse.getType());
} else { } else {
@ -134,13 +131,12 @@ public class ESDataExchangeImpl {
return processDate(dataBean); return processDate(dataBean);
} }
public UKDataBean getIObjectByPK(String type, String id) { public UKDataBean getIObjectByPK(String type, String id) throws IOException {
UKDataBean dataBean = new UKDataBean(); UKDataBean dataBean = new UKDataBean();
if (!StringUtils.isBlank(type)) { if (!StringUtils.isBlank(type)) {
GetResponse getResponse = MainContext.getTemplet().getClient() GetResponse getResponse = MainContext.getTemplet().getClient()
.prepareGet(Constants.SYSTEM_INDEX, .get(new GetRequest(Constants.SYSTEM_INDEX,
type, id) type, id), RequestOptions.DEFAULT);
.execute().actionGet();
dataBean.setValues(getResponse.getSource()); dataBean.setValues(getResponse.getSource());
dataBean.setType(getResponse.getType()); dataBean.setType(getResponse.getType());
} else { } else {
@ -152,32 +148,35 @@ public class ESDataExchangeImpl {
/** /**
* *
*/ */
public PageImpl<UKDataBean> findPageResult(QueryBuilder query, MetadataTable metadata, Pageable page, boolean loadRef) { public PageImpl<UKDataBean> findPageResult(QueryBuilder query, MetadataTable metadata, Pageable page, boolean loadRef) throws IOException {
return findAllPageResult(query, metadata, page, loadRef, metadata != null ? metadata.getTablename() : null); return findAllPageResult(query, metadata, page, loadRef, metadata != null ? metadata.getTablename() : null);
} }
/** /**
* *
*/ */
public PageImpl<UKDataBean> findAllPageResult(QueryBuilder query, MetadataTable metadata, Pageable page, boolean loadRef, String types) { public PageImpl<UKDataBean> findAllPageResult(QueryBuilder query, MetadataTable metadata, Pageable page, boolean loadRef, String types) throws IOException {
List<UKDataBean> dataBeanList = new ArrayList<>();
SearchRequestBuilder searchBuilder = MainContext.getTemplet().getClient().prepareSearch(Constants.SYSTEM_INDEX); SearchSourceBuilder source = new SearchSourceBuilder();
if (!StringUtils.isBlank(types)) { int start = page.getPageSize() * page.getPageNumber();
searchBuilder.setTypes(types); source.from(start).size(page.getPageSize()).query(query);
for (Order order : page.getSort()) {
source.sort(new FieldSortBuilder(order.getProperty()).unmappedType(order.getProperty().equals("createtime") ? "long" : "string").order(order.isDescending() ? SortOrder.DESC : SortOrder.ASC));
} }
int start = page.getPageSize() * page.getPageNumber(); SearchRequest request = new SearchRequest(new String[]{Constants.SYSTEM_INDEX}, source);
searchBuilder.setFrom(start).setSize(page.getPageSize()); if (!StringUtils.isBlank(types)) {
page.getSort(); request.types(types);
for (Order order : page.getSort()) {
searchBuilder.addSort(new FieldSortBuilder(order.getProperty()).unmappedType(order.getProperty().equals("createtime") ? "long" : "string").order(order.isDescending() ? SortOrder.DESC : SortOrder.ASC));
} }
SearchResponse response = searchBuilder.setQuery(query).execute().actionGet();
SearchResponse response = MainContext.getTemplet().getClient().search(request, RequestOptions.DEFAULT);
List<String> users = new ArrayList<>(); List<String> users = new ArrayList<>();
List<String> organs = new ArrayList<>(); List<String> organs = new ArrayList<>();
List<String> taskList = new ArrayList<>(); List<String> taskList = new ArrayList<>();
// List<String> batchList = new ArrayList<>(); // List<String> batchList = new ArrayList<>();
// List<String> activityList = new ArrayList<>(); // List<String> activityList = new ArrayList<>();
List<UKDataBean> dataBeanList = new ArrayList<>();
for (SearchHit hit : response.getHits().getHits()) { for (SearchHit hit : response.getHits().getHits()) {
UKDataBean temp = new UKDataBean(); UKDataBean temp = new UKDataBean();
temp.setType(hit.getType()); temp.setType(hit.getType());
@ -268,29 +267,26 @@ public class ESDataExchangeImpl {
/** /**
* *
*/ */
public PageImpl<UKDataBean> findAllPageAggResult(QueryBuilder query, String aggField, Pageable page, boolean loadRef, String types) { public PageImpl<UKDataBean> findAllPageAggResult(QueryBuilder query, String aggField, Pageable page, boolean loadRef, String types) throws IOException {
List<UKDataBean> dataBeanList = new ArrayList<>();
SearchRequestBuilder searchBuilder = MainContext.getTemplet().getClient().prepareSearch(Constants.SYSTEM_INDEX);
if (!StringUtils.isBlank(types)) {
searchBuilder.setTypes(types);
}
int size = page.getPageSize() * (page.getPageNumber() + 1); int size = page.getPageSize() * (page.getPageNumber() + 1);
searchBuilder.setFrom(0).setSize(0);
AggregationBuilder aggregition = AggregationBuilders.terms(aggField).field(aggField).size(size); AggregationBuilder aggregition = AggregationBuilders.terms(aggField).field(aggField).size(size);
aggregition.subAggregation(AggregationBuilders.terms("apstatus").field("apstatus")); aggregition.subAggregation(AggregationBuilders.terms("apstatus").field("apstatus"));
aggregition.subAggregation(AggregationBuilders.terms("callstatus").field("callstatus")); aggregition.subAggregation(AggregationBuilders.terms("callstatus").field("callstatus"));
searchBuilder.addAggregation(aggregition); SearchSourceBuilder source = new SearchSourceBuilder().aggregation(aggregition).query(query);
SearchRequest request = new SearchRequest(new String[]{Constants.SYSTEM_INDEX}, source);
if (!StringUtils.isBlank(types)) {
SearchResponse response = searchBuilder.setQuery(query).execute().actionGet(); request.types(types);
}
SearchResponse response = MainContext.getTemplet().getClient().search(request, RequestOptions.DEFAULT);
List<String> users = new ArrayList<>(); List<String> users = new ArrayList<>();
List<String> organs = new ArrayList<>(); List<String> organs = new ArrayList<>();
List<String> taskList = new ArrayList<>(); List<String> taskList = new ArrayList<>();
// List<String> batchList = new ArrayList<>(); // List<String> batchList = new ArrayList<>();
// List<String> activityList = new ArrayList<>(); // List<String> activityList = new ArrayList<>();
List<UKDataBean> dataBeanList = new ArrayList<>();
if (response.getAggregations().get(aggField) instanceof Terms) { if (response.getAggregations().get(aggField) instanceof Terms) {
Terms agg = response.getAggregations().get(aggField); Terms agg = response.getAggregations().get(aggField);

View File

@ -32,6 +32,7 @@ import org.springframework.ui.ModelMap;
import javax.persistence.criteria.CriteriaBuilder.In; import javax.persistence.criteria.CriteriaBuilder.In;
import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Predicate;
import javax.validation.Valid; import javax.validation.Valid;
import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.LinkedHashSet; import java.util.LinkedHashSet;
@ -407,7 +408,7 @@ public class CallCenterUtils {
/** /**
* 获取指定活动已分配的名单数 * 获取指定活动已分配的名单数
*/ */
public static int getActDisnum(@Valid String actid, @Valid int p, @Valid int ps) { public static int getActDisnum(@Valid String actid, @Valid int p, @Valid int ps) throws IOException {
BoolQueryBuilder queryBuilder = new BoolQueryBuilder(); BoolQueryBuilder queryBuilder = new BoolQueryBuilder();
queryBuilder.must(termQuery("actid", actid));// 活动ID queryBuilder.must(termQuery("actid", actid));// 活动ID
queryBuilder.mustNot(termQuery("status", MainContext.NamesDisStatusType.NOT.toString())); queryBuilder.mustNot(termQuery("status", MainContext.NamesDisStatusType.NOT.toString()));

View File

@ -1,26 +1,30 @@
/* /*
* Copyright (C) 2017 优客服-多渠道客服系统 * Copyright (C) 2017 优客服-多渠道客服系统
* Modifications copyright (C) 2018-2019 Chatopera Inc, <https://www.chatopera.com> * Modifications copyright (C) 2018-2019 Chatopera Inc, <https://www.chatopera.com>
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
* You may obtain a copy of the License at * You may obtain a copy of the License at
* *
* http://www.apache.org/licenses/LICENSE-2.0 * http://www.apache.org/licenses/LICENSE-2.0
* *
* Unless required by applicable law or agreed to in writing, software * Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, * distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
package com.chatopera.cc.util.dsdata; package com.chatopera.cc.util.dsdata;
public abstract class DataProcess { import java.io.IOException;
protected DSDataEvent event ;
public DataProcess(final DSDataEvent event){ public abstract class DataProcess {
this.event = event ; protected DSDataEvent event;
}
public abstract void process() ; public DataProcess(final DSDataEvent event) {
} this.event = event;
}
public abstract void process() throws IOException;
}

View File

@ -51,12 +51,12 @@ public class ExcelImportProecess extends DataProcess {
} }
@Override @Override
public void process() { public void process() throws IOException {
processExcel(event); processExcel(event);
} }
@SuppressWarnings({"unchecked", "rawtypes"}) @SuppressWarnings({"unchecked", "rawtypes"})
private void processExcel(final DSDataEvent event) { private void processExcel(final DSDataEvent event) throws IOException {
InputStream is = null; InputStream is = null;
try { try {
event.getDSData().getReport().setTableid(event.getDSData().getTask().getId()); event.getDSData().getReport().setTableid(event.getDSData().getTask().getId());

View File

@ -1,22 +1,25 @@
/* /*
* Copyright (C) 2017 优客服-多渠道客服系统 * Copyright (C) 2017 优客服-多渠道客服系统
* Modifications copyright (C) 2018-2019 Chatopera Inc, <https://www.chatopera.com> * Modifications copyright (C) 2018-2019 Chatopera Inc, <https://www.chatopera.com>
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
* You may obtain a copy of the License at * You may obtain a copy of the License at
* *
* http://www.apache.org/licenses/LICENSE-2.0 * http://www.apache.org/licenses/LICENSE-2.0
* *
* Unless required by applicable law or agreed to in writing, software * Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, * distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
package com.chatopera.cc.util.dsdata.process; package com.chatopera.cc.util.dsdata.process;
public interface JPAProcess { import java.io.IOException;
public void process(Object data) ;
public void end(); public interface JPAProcess {
} void process(Object data);
void end() throws IOException;
}

View File

@ -30,6 +30,7 @@ import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort; import org.springframework.data.domain.Sort;
import java.io.IOException;
import java.util.List; import java.util.List;
import static org.elasticsearch.index.query.QueryBuilders.rangeQuery; import static org.elasticsearch.index.query.QueryBuilders.rangeQuery;
@ -37,7 +38,7 @@ import static org.elasticsearch.index.query.QueryBuilders.termQuery;
public class SearchTools { public class SearchTools {
public static PageImpl<UKDataBean> search(String orgi, List<FormFilterItem> itemList, MetadataTable metadataTable, boolean loadRef, int p, int ps) { public static PageImpl<UKDataBean> search(String orgi, List<FormFilterItem> itemList, MetadataTable metadataTable, boolean loadRef, int p, int ps) throws IOException {
BoolQueryBuilder queryBuilder = new BoolQueryBuilder(); BoolQueryBuilder queryBuilder = new BoolQueryBuilder();
queryBuilder.must(termQuery("orgi", orgi)); queryBuilder.must(termQuery("orgi", orgi));
@ -96,7 +97,7 @@ public class SearchTools {
return search(queryBuilder, metadataTable, loadRef, p, ps); return search(queryBuilder, metadataTable, loadRef, p, ps);
} }
public static PageImpl<UKDataBean> dissearch(String orgi, List<FormFilterItem> itemList, MetadataTable metadataTable, int p, int ps) { public static PageImpl<UKDataBean> dissearch(String orgi, List<FormFilterItem> itemList, MetadataTable metadataTable, int p, int ps) throws IOException {
BoolQueryBuilder queryBuilder = new BoolQueryBuilder(); BoolQueryBuilder queryBuilder = new BoolQueryBuilder();
queryBuilder.must(termQuery("orgi", orgi)); queryBuilder.must(termQuery("orgi", orgi));
queryBuilder.must(termQuery("status", MainContext.NamesDisStatusType.NOT.toString())); queryBuilder.must(termQuery("status", MainContext.NamesDisStatusType.NOT.toString()));
@ -156,7 +157,7 @@ public class SearchTools {
return search(queryBuilder, metadataTable, false, p, ps); return search(queryBuilder, metadataTable, false, p, ps);
} }
public static PageImpl<UKDataBean> recoversearch(String orgi, String cmd, String id, MetadataTable metadataTable, int p, int ps) { public static PageImpl<UKDataBean> recoversearch(String orgi, String cmd, String id, MetadataTable metadataTable, int p, int ps) throws IOException {
BoolQueryBuilder queryBuilder = new BoolQueryBuilder(); BoolQueryBuilder queryBuilder = new BoolQueryBuilder();
queryBuilder.must(termQuery("orgi", orgi)); queryBuilder.must(termQuery("orgi", orgi));
queryBuilder.mustNot(termQuery("status", MainContext.NamesDisStatusType.NOT.toString())); queryBuilder.mustNot(termQuery("status", MainContext.NamesDisStatusType.NOT.toString()));
@ -198,7 +199,7 @@ public class SearchTools {
/** /**
* *
*/ */
public static PageImpl<UKDataBean> namesearch(String orgi, String phonenum) { public static PageImpl<UKDataBean> namesearch(String orgi, String phonenum) throws IOException {
BoolQueryBuilder queryBuilder = new BoolQueryBuilder(); BoolQueryBuilder queryBuilder = new BoolQueryBuilder();
queryBuilder.must(termQuery("orgi", orgi)); queryBuilder.must(termQuery("orgi", orgi));
queryBuilder.must(termQuery("validresult", "valid")); queryBuilder.must(termQuery("validresult", "valid"));
@ -219,14 +220,14 @@ public class SearchTools {
/** /**
* *
*/ */
public static PageImpl<UKDataBean> search(BoolQueryBuilder queryBuilder, int p, int ps) { public static PageImpl<UKDataBean> search(BoolQueryBuilder queryBuilder, int p, int ps) throws IOException {
return search(queryBuilder, null, true, p, ps); return search(queryBuilder, null, true, p, ps);
} }
/** /**
* *
*/ */
private static PageImpl<UKDataBean> search(BoolQueryBuilder queryBuilder, MetadataTable metadataTable, boolean loadRef, int p, int ps) { private static PageImpl<UKDataBean> search(BoolQueryBuilder queryBuilder, MetadataTable metadataTable, boolean loadRef, int p, int ps) throws IOException {
ESDataExchangeImpl esDataExchange = MainContext.getContext().getBean(ESDataExchangeImpl.class); ESDataExchangeImpl esDataExchange = MainContext.getContext().getBean(ESDataExchangeImpl.class);
return esDataExchange.findPageResult(queryBuilder, metadataTable, PageRequest.of(p, ps, Sort.Direction.ASC, "createtime"), loadRef); return esDataExchange.findPageResult(queryBuilder, metadataTable, PageRequest.of(p, ps, Sort.Direction.ASC, "createtime"), loadRef);
} }
@ -234,7 +235,7 @@ public class SearchTools {
/** /**
* *
*/ */
public static PageImpl<UKDataBean> aggregation(BoolQueryBuilder queryBuilder, String aggField, boolean loadRef, int p, int ps) { public static PageImpl<UKDataBean> aggregation(BoolQueryBuilder queryBuilder, String aggField, boolean loadRef, int p, int ps) throws IOException {
ESDataExchangeImpl esDataExchange = MainContext.getContext().getBean(ESDataExchangeImpl.class); ESDataExchangeImpl esDataExchange = MainContext.getContext().getBean(ESDataExchangeImpl.class);
return esDataExchange.findAllPageAggResult(queryBuilder, aggField, PageRequest.of(p, ps, Sort.Direction.ASC, "createtime"), loadRef, null); return esDataExchange.findAllPageAggResult(queryBuilder, aggField, PageRequest.of(p, ps, Sort.Direction.ASC, "createtime"), loadRef, null);
} }
@ -242,7 +243,7 @@ public class SearchTools {
/** /**
* *
*/ */
public static UKDataBean get(UKDataBean dataBean) { public static UKDataBean get(UKDataBean dataBean) throws IOException {
ESDataExchangeImpl esDataExchange = MainContext.getContext().getBean(ESDataExchangeImpl.class); ESDataExchangeImpl esDataExchange = MainContext.getContext().getBean(ESDataExchangeImpl.class);
return esDataExchange.getIObjectByPK(dataBean); return esDataExchange.getIObjectByPK(dataBean);
} }
@ -250,7 +251,7 @@ public class SearchTools {
/** /**
* *
*/ */
public static UKDataBean get(String type, String id) { public static UKDataBean get(String type, String id) throws IOException {
ESDataExchangeImpl esDataExchange = MainContext.getContext().getBean(ESDataExchangeImpl.class); ESDataExchangeImpl esDataExchange = MainContext.getContext().getBean(ESDataExchangeImpl.class);
return esDataExchange.getIObjectByPK(type, id); return esDataExchange.getIObjectByPK(type, id);
} }