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

@ -30,7 +30,7 @@ import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;
import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
import java.util.HashMap;
import java.util.HashSet;
@ -45,13 +45,13 @@ public class MainContext {
public static String SYSTEM_ORGI = "cskefu";
private static Set<String> modules = new HashSet<String>();
private static final Set<String> modules = new HashSet<String>();
public static Map<String, Class<?>> csKeFuResourceMap = new HashMap<String, Class<?>>();
private static ApplicationContext applicationContext;
private static ElasticsearchTemplate templet;
private static ElasticsearchRestTemplate templet;
private static RedisCommand redisCommand;
@ -333,36 +333,8 @@ public class MainContext {
}
}
public enum CallWireEventType {
DIALPLAN_CONN("自动外呼接通", 1),
DIALPLAN_DISC("自动外呼挂断", 2),
DIALPLAN_FAIL("自动外呼失败", 3),
MANUDIAL_CONN("手动外呼接通", 4),
MANUDIAL_DISC("手动外呼挂断", 5),
MANUDIAL_FAIL("手动外呼失败", 6),
CALLIN_CONN("呼入接通", 7),
CALLIN_DIST("呼入挂断", 8),
CALLIN_FAIL("呼入失败", 9);
private String name;
private int index;
CallWireEventType(final String name, final int index) {
this.name = name;
this.index = index;
}
public String toLetters() {
return super.toString().toLowerCase();
}
public String toString() {
return this.name;
}
public int getIndex() {
return this.index;
}
public static ElasticsearchRestTemplate getTemplet() {
return templet;
}
@ -646,41 +618,8 @@ public class MainContext {
}
}
public enum AgentStatusEnum {
READY("就绪", 1),
NOTREADY("未就绪", 2),
BUSY("置忙", 3),
NOTBUSY("不忙", 4),
IDLE("空闲", 5),
OFFLINE("离线", 6),
SERVICES("服务", 7);
private String name;
private int index;
AgentStatusEnum(final String name, final int index) {
this.name = name;
this.index = index;
}
public String zh() {
return this.name;
}
@Override
public String toString() {
return super.toString().toLowerCase();
}
public static AgentStatusEnum toValue(final String str) {
for (final AgentStatusEnum item : values()) {
if (StringUtils.equalsIgnoreCase(item.toString(), str)) {
return item;
}
}
throw new IllegalArgumentException();
}
public static void setTemplet(ElasticsearchRestTemplate templet) {
MainContext.templet = templet;
}
public enum WorkStatusEnum {
@ -937,12 +876,73 @@ public class MainContext {
return applicationContext;
}
public static ElasticsearchTemplate getTemplet() {
return templet;
public enum CallWireEventType {
DIALPLAN_CONN("自动外呼接通", 1),
DIALPLAN_DISC("自动外呼挂断", 2),
DIALPLAN_FAIL("自动外呼失败", 3),
MANUDIAL_CONN("手动外呼接通", 4),
MANUDIAL_DISC("手动外呼挂断", 5),
MANUDIAL_FAIL("手动外呼失败", 6),
CALLIN_CONN("呼入接通", 7),
CALLIN_DIST("呼入挂断", 8),
CALLIN_FAIL("呼入失败", 9);
private final String name;
private final int index;
CallWireEventType(final String name, final int index) {
this.name = name;
this.index = index;
}
public String toLetters() {
return super.toString().toLowerCase();
}
public String toString() {
return this.name;
}
public int getIndex() {
return this.index;
}
}
public static void setTemplet(ElasticsearchTemplate templet) {
MainContext.templet = templet;
public enum AgentStatusEnum {
READY("就绪", 1),
NOTREADY("未就绪", 2),
BUSY("置忙", 3),
NOTBUSY("不忙", 4),
IDLE("空闲", 5),
OFFLINE("离线", 6),
SERVICES("服务", 7);
private final String name;
private final int index;
AgentStatusEnum(final String name, final int index) {
this.name = name;
this.index = index;
}
public String zh() {
return this.name;
}
@Override
public String toString() {
return super.toString().toLowerCase();
}
public static AgentStatusEnum toValue(final String str) {
for (final AgentStatusEnum item : values()) {
if (StringUtils.equalsIgnoreCase(item.toString(), str)) {
return item;
}
}
throw new IllegalArgumentException();
}
}
/**

View File

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

View File

@ -19,32 +19,34 @@ package com.chatopera.cc.config;
import com.chatopera.cc.basic.MainContext;
import com.chatopera.cc.model.Favorites;
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.event.ContextRefreshedEvent;
import org.springframework.data.elasticsearch.ElasticsearchException;
import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;
import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
import org.springframework.lang.NonNull;
import org.springframework.stereotype.Component;
@Component
@RequiredArgsConstructor
public class ApplicationStartupListener implements ApplicationListener<ContextRefreshedEvent> {
@Autowired ElasticsearchTemplate elasticSearchTemplate;
@NonNull
private final ElasticsearchRestTemplate elasticsearchRestTemplate;
@Override
public void onApplicationEvent(ContextRefreshedEvent event) {
if (!elasticSearchTemplate.indexExists(WorkOrders.class)) {
elasticSearchTemplate.createIndex(WorkOrders.class);
public void onApplicationEvent(@NonNull ContextRefreshedEvent event) {
if (!elasticsearchRestTemplate.indexExists(WorkOrders.class)) {
elasticsearchRestTemplate.createIndex(WorkOrders.class);
}
if (!elasticSearchTemplate.indexExists(Favorites.class)) {
elasticSearchTemplate.createIndex(Favorites.class);
if (!elasticsearchRestTemplate.indexExists(Favorites.class)) {
elasticsearchRestTemplate.createIndex(Favorites.class);
}
try {
elasticSearchTemplate.getMapping(WorkOrders.class);
try {
elasticsearchRestTemplate.getMapping(WorkOrders.class);
} catch (ElasticsearchException e) {
elasticSearchTemplate.putMapping(Favorites.class);
elasticSearchTemplate.putMapping(WorkOrders.class);
elasticsearchRestTemplate.putMapping(Favorites.class);
elasticsearchRestTemplate.putMapping(WorkOrders.class);
}
MainContext.setTemplet(elasticSearchTemplate);
MainContext.setTemplet(elasticsearchRestTemplate);
}
}

View File

@ -42,6 +42,7 @@ import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.IOException;
import java.util.List;
import java.util.Optional;
@ -73,7 +74,7 @@ public class SipTrunkController extends Handler {
@RequestMapping(value = "/agent")
@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);
map.addAttribute("siptrunk", sipTrunk);
String agent = null;

View File

@ -24,10 +24,9 @@ import org.apache.commons.lang.StringUtils;
import org.elasticsearch.index.query.*;
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.ElasticsearchRestTemplate;
import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
import org.springframework.lang.NonNull;
import org.springframework.stereotype.Component;
@ -43,13 +42,8 @@ import static org.elasticsearch.index.query.QueryBuilders.termQuery;
public class ContactsRepositoryImpl implements ContactsEsCommonRepository {
@NonNull
private final UserRepository userRes;
private ElasticsearchTemplate elasticsearchTemplate;
@Autowired
public void setElasticsearchTemplate(ElasticsearchTemplate elasticsearchTemplate) {
this.elasticsearchTemplate = elasticsearchTemplate;
}
@NonNull
private final ElasticsearchRestTemplate elasticsearchRestTemplate;
@Override
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);
Page<Contacts> entCustomerList = null;
if (elasticsearchTemplate.indexExists(Contacts.class)) {
entCustomerList = elasticsearchTemplate.queryForPage(searchQueryBuilder.build(), Contacts.class);
if (elasticsearchRestTemplate.indexExists(Contacts.class)) {
entCustomerList = elasticsearchRestTemplate.queryForPage(searchQueryBuilder.build(), Contacts.class);
}
if (entCustomerList != null && entCustomerList.getContent().size() > 0) {
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.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.ElasticsearchRestTemplate;
import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
import org.springframework.lang.NonNull;
import org.springframework.stereotype.Repository;
@ -43,21 +42,16 @@ import static org.elasticsearch.index.query.QueryBuilders.termQuery;
@RequiredArgsConstructor
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
private final UserRepository userRes;
private ElasticsearchTemplate elasticsearchTemplate;
@Autowired
public void setElasticsearchTemplate(ElasticsearchTemplate elasticsearchTemplate) {
this.elasticsearchTemplate = elasticsearchTemplate;
}
@NonNull
private final ElasticsearchRestTemplate elasticsearchRestTemplate;
@Override
public Page<EntCustomer> findByCreaterAndSharesAndOrgi(String creater, String shares, String orgi, boolean includeDeleteData, String q, Pageable page) {
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
BoolQueryBuilder boolQueryBuilder1 = new BoolQueryBuilder();
boolQueryBuilder1.should(termQuery("creater", creater));
@ -125,12 +119,12 @@ public class EntCustomerRepositoryImpl implements EntCustomerEsCommonRepository
}
RangeQueryBuilder rangeQuery = QueryBuilders.rangeQuery("createtime");
if (begin != null) {
rangeQuery.from(dateFromate.format(begin));
rangeQuery.from(DATE_FORMAT.format(begin));
}
if (end != null) {
rangeQuery.to(dateFromate.format(end));
rangeQuery.to(DATE_FORMAT.format(end));
} else {
rangeQuery.to(dateFromate.format(new Date()));
rangeQuery.to(DATE_FORMAT.format(new Date()));
}
if (begin != null || end != null) {
boolQueryBuilder.must(rangeQuery);
@ -148,8 +142,8 @@ public class EntCustomerRepositoryImpl implements EntCustomerEsCommonRepository
searchQueryBuilder.withPageable(page);
Page<EntCustomer> entCustomerList = null;
if (elasticsearchTemplate.indexExists(EntCustomer.class)) {
entCustomerList = elasticsearchTemplate.queryForPage(searchQueryBuilder.build(), EntCustomer.class);
if (elasticsearchRestTemplate.indexExists(EntCustomer.class)) {
entCustomerList = elasticsearchRestTemplate.queryForPage(searchQueryBuilder.build(), EntCustomer.class);
}
if (entCustomerList != null && entCustomerList.getContent().size() > 0) {
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.springframework.data.domain.Page;
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.mapping.ElasticsearchPersistentEntity;
import org.springframework.data.elasticsearch.core.mapping.ElasticsearchPersistentProperty;
@ -46,15 +46,15 @@ public class KbsTopicCommentRepositoryImpl implements KbsTopicCommentEsCommonRep
@NonNull
private final UKResultMapper resultMapper;
@NonNull
private final ElasticsearchTemplate elasticsearchTemplate;
private final ElasticsearchRestTemplate elasticsearchRestTemplate;
@NonNull
private final UKAggResultExtractor ukAggResultExtractor;
@NonNull
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.elasticsearchTemplate = elasticsearchTemplate;
this.elasticsearchRestTemplate = elasticsearchRestTemplate;
ukAggTopResultExtractor = new UKAggTopResultExtractor(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) {
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));
if (elasticsearchTemplate.indexExists(KbsTopicComment.class)) {
pages = elasticsearchTemplate.queryForPage(searchQuery, KbsTopicComment.class);
if (elasticsearchRestTemplate.indexExists(KbsTopicComment.class)) {
pages = elasticsearchRestTemplate.queryForPage(searchQuery, KbsTopicComment.class);
}
return pages;
}
@ -73,8 +73,8 @@ public class KbsTopicCommentRepositoryImpl implements KbsTopicCommentEsCommonRep
public List<KbsTopicComment> findByOptimal(String dataid) {
List<KbsTopicComment> commentList = null;
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(termQuery("dataid", dataid)).withQuery(termQuery("optimal", true)).build();
if (elasticsearchTemplate.indexExists(KbsTopicComment.class)) {
commentList = elasticsearchTemplate.queryForList(searchQuery, KbsTopicComment.class);
if (elasticsearchRestTemplate.indexExists(KbsTopicComment.class)) {
commentList = elasticsearchRestTemplate.queryForList(searchQuery, KbsTopicComment.class);
}
return commentList;
}
@ -86,13 +86,13 @@ public class KbsTopicCommentRepositoryImpl implements KbsTopicCommentEsCommonRep
searchQueryBuilder.withQuery(new QueryStringQueryBuilder(q).defaultOperator(Operator.AND));
}
SearchQuery searchQuery = searchQueryBuilder.build();
if (elasticsearchTemplate.indexExists(KbsTopicComment.class)) {
if (elasticsearchRestTemplate.indexExists(KbsTopicComment.class)) {
if (!StringUtils.isBlank(q)) {
pages = elasticsearchTemplate.queryForPage(searchQuery, KbsTopicComment.class, resultMapper);
pages = elasticsearchRestTemplate.queryForPage(searchQuery, KbsTopicComment.class, resultMapper);
} else {
ukAggTopResultExtractor.setTerm(field);
ukAggTopResultExtractor.setName(aggname);
pages = elasticsearchTemplate.queryForPage(searchQuery, KbsTopicComment.class, ukAggTopResultExtractor);
pages = elasticsearchRestTemplate.queryForPage(searchQuery, KbsTopicComment.class, ukAggTopResultExtractor);
}
}
return pages;
@ -106,7 +106,7 @@ public class KbsTopicCommentRepositoryImpl implements KbsTopicCommentEsCommonRep
if (!StringUtils.isBlank(q)) {
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
@ -117,9 +117,9 @@ public class KbsTopicCommentRepositoryImpl implements KbsTopicCommentEsCommonRep
searchQueryBuilder.withQuery(new QueryStringQueryBuilder(q).defaultOperator(Operator.AND));
}
SearchQuery searchQuery = searchQueryBuilder.build().setPageable(PageRequest.of(p, ps));
if (elasticsearchTemplate.indexExists(Topic.class)) {
if (elasticsearchRestTemplate.indexExists(Topic.class)) {
ukAggResultExtractor.setTerm("creater");
pages = elasticsearchTemplate.queryForPage(searchQuery, KbsTopicComment.class, ukAggResultExtractor);
pages = elasticsearchRestTemplate.queryForPage(searchQuery, KbsTopicComment.class, ukAggResultExtractor);
}
return pages;
}

View File

@ -25,7 +25,7 @@ import org.elasticsearch.search.sort.FieldSortBuilder;
import org.elasticsearch.search.sort.SortOrder;
import org.springframework.data.domain.Page;
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.SearchQuery;
import org.springframework.lang.NonNull;
@ -42,7 +42,7 @@ public class KbsTopicRepositoryImpl implements KbsTopicEsCommonRepository {
@NonNull
private final UKResultMapper ukResultMapper;
@NonNull
private final ElasticsearchTemplate elasticsearchTemplate;
private final ElasticsearchRestTemplate elasticsearchRestTemplate;
@Override
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));
searchQueryBuilder.withHighlightFields(new HighlightBuilder.Field("title").fragmentSize(200));
SearchQuery searchQuery = searchQueryBuilder.build().setPageable(PageRequest.of(p, ps));
if (elasticsearchTemplate.indexExists(KbsTopic.class)) {
pages = elasticsearchTemplate.queryForPage(searchQuery, KbsTopic.class, ukResultMapper);
if (elasticsearchRestTemplate.indexExists(KbsTopic.class)) {
pages = elasticsearchRestTemplate.queryForPage(searchQuery, KbsTopic.class, ukResultMapper);
}
return pages;
}
@ -79,8 +79,8 @@ public class KbsTopicRepositoryImpl implements KbsTopicEsCommonRepository {
searchQueryBuilder.withHighlightFields(new HighlightBuilder.Field("title").fragmentSize(200));
SearchQuery searchQuery = searchQueryBuilder.build().setPageable(PageRequest.of(p, ps));
if (elasticsearchTemplate.indexExists(KbsTopic.class)) {
pages = elasticsearchTemplate.queryForPage(searchQuery, KbsTopic.class, ukResultMapper);
if (elasticsearchRestTemplate.indexExists(KbsTopic.class)) {
pages = elasticsearchRestTemplate.queryForPage(searchQuery, KbsTopic.class, ukResultMapper);
}
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));
SearchQuery searchQuery = searchQueryBuilder.build().setPageable(PageRequest.of(p, ps));
if (elasticsearchTemplate.indexExists(KbsTopic.class)) {
pages = elasticsearchTemplate.queryForPage(searchQuery, KbsTopic.class, ukResultMapper);
if (elasticsearchRestTemplate.indexExists(KbsTopic.class)) {
pages = elasticsearchRestTemplate.queryForPage(searchQuery, KbsTopic.class, ukResultMapper);
}
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));
SearchQuery searchQuery = searchQueryBuilder.build().setPageable(PageRequest.of(p, ps));
if (elasticsearchTemplate.indexExists(KbsTopic.class)) {
pages = elasticsearchTemplate.queryForPage(searchQuery, KbsTopic.class);
if (elasticsearchRestTemplate.indexExists(KbsTopic.class)) {
pages = elasticsearchRestTemplate.queryForPage(searchQuery, KbsTopic.class);
}
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));
SearchQuery searchQuery = searchQueryBuilder.build();
if (elasticsearchTemplate.indexExists(KbsTopic.class)) {
list = elasticsearchTemplate.queryForList(searchQuery, KbsTopic.class);
if (elasticsearchRestTemplate.indexExists(KbsTopic.class)) {
list = elasticsearchRestTemplate.queryForList(searchQuery, KbsTopic.class);
}
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.PageRequest;
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.NativeSearchQueryBuilder;
import org.springframework.data.elasticsearch.core.query.SearchQuery;
@ -46,7 +46,7 @@ public class QuickReplyRepositoryImpl implements QuickReplyEsCommonRepository {
private final UKResultMapper ukResultMapper;
@NonNull
private final ElasticsearchTemplate elasticsearchTemplate;
private final ElasticsearchRestTemplate elasticsearchRestTemplate;
@Override
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));
searchQueryBuilder.withHighlightFields(new HighlightBuilder.Field("title").fragmentSize(200));
SearchQuery searchQuery = searchQueryBuilder.build().setPageable(page);
if (elasticsearchTemplate.indexExists(QuickReply.class)) {
pages = elasticsearchTemplate.queryForPage(searchQuery, QuickReply.class, ukResultMapper);
if (elasticsearchRestTemplate.indexExists(QuickReply.class)) {
pages = elasticsearchRestTemplate.queryForPage(searchQuery, QuickReply.class, ukResultMapper);
}
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));
searchQueryBuilder.withHighlightFields(new HighlightBuilder.Field("title").fragmentSize(200));
SearchQuery searchQuery = searchQueryBuilder.build().setPageable(PageRequest.of(0, 10000));
if (elasticsearchTemplate.indexExists(QuickReply.class)) {
pages = elasticsearchTemplate.queryForList(searchQuery, QuickReply.class);
if (elasticsearchRestTemplate.indexExists(QuickReply.class)) {
pages = elasticsearchRestTemplate.queryForList(searchQuery, QuickReply.class);
}
return pages;
}
@ -114,8 +114,8 @@ public class QuickReplyRepositoryImpl implements QuickReplyEsCommonRepository {
searchQueryBuilder.withHighlightFields(new HighlightBuilder.Field("title").fragmentSize(200));
SearchQuery searchQuery = searchQueryBuilder.build().setPageable(PageRequest.of(p, ps));
if (elasticsearchTemplate.indexExists(QuickReply.class)) {
pages = elasticsearchTemplate.queryForPage(searchQuery, QuickReply.class, ukResultMapper);
if (elasticsearchRestTemplate.indexExists(QuickReply.class)) {
pages = elasticsearchRestTemplate.queryForPage(searchQuery, QuickReply.class, ukResultMapper);
}
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));
SearchQuery searchQuery = searchQueryBuilder.build().setPageable(PageRequest.of(p, ps));
if (elasticsearchTemplate.indexExists(QuickReply.class)) {
pages = elasticsearchTemplate.queryForPage(searchQuery, QuickReply.class, ukResultMapper);
if (elasticsearchRestTemplate.indexExists(QuickReply.class)) {
pages = elasticsearchRestTemplate.queryForPage(searchQuery, QuickReply.class, ukResultMapper);
}
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));
SearchQuery searchQuery = searchQueryBuilder.build().setPageable(PageRequest.of(p, ps));
if (elasticsearchTemplate.indexExists(QuickReply.class)) {
pages = elasticsearchTemplate.queryForPage(searchQuery, QuickReply.class);
if (elasticsearchRestTemplate.indexExists(QuickReply.class)) {
pages = elasticsearchRestTemplate.queryForPage(searchQuery, QuickReply.class);
}
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));
SearchQuery searchQuery = searchQueryBuilder.build().setPageable(page);
if (elasticsearchTemplate.indexExists(QuickReply.class)) {
list = elasticsearchTemplate.queryForPage(searchQuery, QuickReply.class);
if (elasticsearchRestTemplate.indexExists(QuickReply.class)) {
list = elasticsearchRestTemplate.queryForPage(searchQuery, QuickReply.class);
}
return list;
}
@ -187,7 +187,7 @@ public class QuickReplyRepositoryImpl implements QuickReplyEsCommonRepository {
boolQueryBuilder.must(termQuery("orgi", orgi));
boolQueryBuilder.must(termQuery("cate", cate));
deleteQuery.setQuery(boolQueryBuilder);
elasticsearchTemplate.delete(deleteQuery);
elasticsearchRestTemplate.delete(deleteQuery);
}
@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));
SearchQuery searchQuery = searchQueryBuilder.build().setPageable(PageRequest.of(0, 10000));
if (elasticsearchTemplate.indexExists(QuickReply.class)) {
list = elasticsearchTemplate.queryForList(searchQuery, QuickReply.class);
if (elasticsearchRestTemplate.indexExists(QuickReply.class)) {
list = elasticsearchRestTemplate.queryForList(searchQuery, QuickReply.class);
}
return list;
}

View File

@ -26,7 +26,7 @@ import org.elasticsearch.search.sort.FieldSortBuilder;
import org.elasticsearch.search.sort.SortOrder;
import org.springframework.data.domain.Page;
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.SearchQuery;
import org.springframework.lang.NonNull;
@ -41,7 +41,7 @@ import static org.elasticsearch.index.query.QueryBuilders.termQuery;
@RequiredArgsConstructor
public class TopicRepositoryImpl implements TopicEsCommonRepository {
@NonNull
private final ElasticsearchTemplate elasticsearchTemplate;
private final ElasticsearchRestTemplate elasticsearchRestTemplate;
@NonNull
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));
searchQueryBuilder.withHighlightFields(new HighlightBuilder.Field("title").fragmentSize(200));
SearchQuery searchQuery = searchQueryBuilder.build().setPageable(PageRequest.of(p, ps));
if (elasticsearchTemplate.indexExists(Topic.class)) {
pages = elasticsearchTemplate.queryForPage(searchQuery, Topic.class, resultMapper);
if (elasticsearchRestTemplate.indexExists(Topic.class)) {
pages = elasticsearchRestTemplate.queryForPage(searchQuery, Topic.class, resultMapper);
}
return pages;
}
@ -87,8 +87,8 @@ public class TopicRepositoryImpl implements TopicEsCommonRepository {
searchQueryBuilder.withHighlightFields(new HighlightBuilder.Field("title").fragmentSize(200));
SearchQuery searchQuery = searchQueryBuilder.build().setPageable(PageRequest.of(p, ps));
if (elasticsearchTemplate.indexExists(Topic.class)) {
pages = elasticsearchTemplate.queryForPage(searchQuery, Topic.class, resultMapper);
if (elasticsearchRestTemplate.indexExists(Topic.class)) {
pages = elasticsearchRestTemplate.queryForPage(searchQuery, Topic.class, resultMapper);
}
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));
SearchQuery searchQuery = searchQueryBuilder.build().setPageable(PageRequest.of(p, ps));
if (elasticsearchTemplate.indexExists(Topic.class)) {
pages = elasticsearchTemplate.queryForPage(searchQuery, Topic.class, resultMapper);
if (elasticsearchRestTemplate.indexExists(Topic.class)) {
pages = elasticsearchRestTemplate.queryForPage(searchQuery, Topic.class, resultMapper);
}
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));
SearchQuery searchQuery = searchQueryBuilder.build().setPageable(PageRequest.of(p, ps));
if (elasticsearchTemplate.indexExists(Topic.class)) {
pages = elasticsearchTemplate.queryForPage(searchQuery, Topic.class);
if (elasticsearchRestTemplate.indexExists(Topic.class)) {
pages = elasticsearchRestTemplate.queryForPage(searchQuery, Topic.class);
}
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));
SearchQuery searchQuery = searchQueryBuilder.build();
if (elasticsearchTemplate.indexExists(Topic.class)) {
list = elasticsearchTemplate.queryForList(searchQuery, Topic.class);
if (elasticsearchRestTemplate.indexExists(Topic.class)) {
list = elasticsearchRestTemplate.queryForList(searchQuery, Topic.class);
}
return list;
}

View File

@ -20,50 +20,49 @@ import com.chatopera.cc.basic.MainContext;
import com.chatopera.cc.model.MetadataTable;
import com.chatopera.cc.util.dsdata.process.JPAProcess;
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 org.springframework.lang.NonNull;
import java.io.IOException;
import java.util.Map;
public class BatchDataProcess implements JPAProcess{
public class BatchDataProcess implements JPAProcess {
private MetadataTable metadata;
private ESDataExchangeImpl esDataExchangeImpl ;
private BulkRequestBuilder builder ;
private final MetadataTable metadata;
private final ESDataExchangeImpl esDataExchangeImpl;
@NonNull
private final BulkRequest request;
public BatchDataProcess(MetadataTable metadata , ESDataExchangeImpl esDataExchangeImpl) {
this.metadata = metadata ;
this.esDataExchangeImpl = esDataExchangeImpl ;
builder = MainContext.getTemplet().getClient().prepareBulk() ;
}
public BatchDataProcess(MetadataTable metadata, ESDataExchangeImpl esDataExchangeImpl) {
this.metadata = metadata;
this.esDataExchangeImpl = esDataExchangeImpl;
request = new BulkRequest();
}
@SuppressWarnings("unchecked")
@Override
public void process(Object data) {
UKDataBean dataBean = new UKDataBean();
if(data instanceof UKDataBean) {
dataBean = (UKDataBean)data;
}else {
dataBean.setTable(this.metadata);
dataBean.setValues((Map<String, Object>) data);
}
try {
if(builder!=null) {
builder.add(esDataExchangeImpl.saveBulk(dataBean)) ;
}else {
esDataExchangeImpl.saveIObject(dataBean);
}
if(builder.numberOfActions() % 1000 ==0) {
builder.execute().actionGet();
}
} catch (Exception e) {
e.printStackTrace();
}
}
@SuppressWarnings("unchecked")
@Override
public void process(Object data) {
UKDataBean dataBean = new UKDataBean();
if (data instanceof UKDataBean) {
dataBean = (UKDataBean) data;
} else {
dataBean.setTable(this.metadata);
dataBean.setValues((Map<String, Object>) data);
}
try {
request.add(esDataExchangeImpl.saveBulk(dataBean));
if (request.numberOfActions() % 1000 == 0) {
end();
}
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void end() {
if(builder!=null) {
builder.execute().actionGet();
}
}
@Override
public void end() throws IOException {
MainContext.getTemplet().getClient().bulk(request, RequestOptions.DEFAULT);
request.requests().clear();
}
}

View File

@ -19,41 +19,41 @@ package com.chatopera.cc.persistence.impl;
import com.chatopera.cc.basic.MainContext;
import com.chatopera.cc.util.dsdata.process.JPAProcess;
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 org.springframework.lang.NonNull;
public class DataBatProcess implements JPAProcess{
import java.io.IOException;
private ESDataExchangeImpl esDataExchangeImpl ;
private BulkRequestBuilder builder ;
public class DataBatProcess implements JPAProcess {
@NonNull
private final BulkRequest request;
@NonNull
private final ESDataExchangeImpl esDataExchangeImpl;
public DataBatProcess(ESDataExchangeImpl esDataExchangeImpl) {
this.esDataExchangeImpl = esDataExchangeImpl ;
builder = MainContext.getTemplet().getClient().prepareBulk() ;
}
public DataBatProcess(@NonNull ESDataExchangeImpl esDataExchangeImpl) {
this.esDataExchangeImpl = esDataExchangeImpl;
request = new BulkRequest();
}
@Override
public void process(Object data) {
if(data instanceof UKDataBean){
UKDataBean dataBean = (UKDataBean)data;
try {
if(builder!=null) {
builder.add(esDataExchangeImpl.saveBulk(dataBean)) ;
}else {
esDataExchangeImpl.saveIObject(dataBean);
}
if(builder.numberOfActions() % 1000 ==0) {
builder.execute().actionGet();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Override
public void process(Object data) {
if (data instanceof UKDataBean) {
UKDataBean dataBean = (UKDataBean) data;
try {
request.add(esDataExchangeImpl.saveBulk(dataBean));
if (request.numberOfActions() % 1000 == 0) {
end();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Override
public void end() {
if(builder!=null) {
builder.execute().actionGet();
}
}
@Override
public void end() throws IOException {
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 lombok.RequiredArgsConstructor;
import org.apache.commons.lang3.StringUtils;
import org.elasticsearch.action.get.GetRequest;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.action.index.IndexRequestBuilder;
import org.elasticsearch.action.search.SearchRequestBuilder;
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.search.SearchHit;
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.bucket.terms.StringTerms;
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.SortOrder;
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.stereotype.Repository;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@ -62,31 +66,26 @@ public class ESDataExchangeImpl {
@NonNull
private final OrganRepository organRes;
public void saveIObject(UKDataBean dataBean) {
public void saveIObject(UKDataBean dataBean) throws IOException {
if (dataBean.getId() == null) {
dataBean.setId((String) dataBean.getValues().get("id"));
}
this.saveBulk(dataBean).execute().actionGet();
MainContext.getTemplet().getClient().index(this.saveBulk(dataBean), RequestOptions.DEFAULT);
}
/**
*
*/
public IndexRequestBuilder saveBulk(UKDataBean dataBean) {
IndexRequestBuilder indexRequestBuilder;
@NonNull
public IndexRequest saveBulk(UKDataBean dataBean) {
if (dataBean.getId() == null) {
dataBean.setId((String) dataBean.getValues().get("id"));
}
String type;
if (!StringUtils.isBlank(dataBean.getType())) {
indexRequestBuilder = MainContext.getTemplet().getClient().prepareIndex(Constants.SYSTEM_INDEX,
dataBean.getType(), dataBean.getId())
.setSource(processValues(dataBean));
type = dataBean.getType();
} else {
indexRequestBuilder = MainContext.getTemplet().getClient().prepareIndex(Constants.SYSTEM_INDEX,
dataBean.getTable().getTablename(), dataBean.getId())
.setSource(processValues(dataBean));
type = dataBean.getTable().getTablename();
}
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) {
if (!StringUtils.isBlank(type) && !StringUtils.isBlank(id)) {
MainContext.getTemplet().getClient()
.prepareDelete(Constants.SYSTEM_INDEX, type, id).execute().actionGet();
MainContext.getTemplet().delete(Constants.SYSTEM_INDEX, type, id);
}
}
public UKDataBean getIObjectByPK(UKDataBean dataBean) {
public UKDataBean getIObjectByPK(UKDataBean dataBean) throws IOException {
if (dataBean.getTable() != null) {
GetResponse getResponse = MainContext.getTemplet().getClient()
.prepareGet(Constants.SYSTEM_INDEX,
dataBean.getTable().getTablename(), dataBean.getId())
.execute().actionGet();
.get(new GetRequest(Constants.SYSTEM_INDEX,
dataBean.getTable().getTablename(), dataBean.getId()), RequestOptions.DEFAULT);
dataBean.setValues(getResponse.getSource());
dataBean.setType(getResponse.getType());
} else {
@ -134,13 +131,12 @@ public class ESDataExchangeImpl {
return processDate(dataBean);
}
public UKDataBean getIObjectByPK(String type, String id) {
public UKDataBean getIObjectByPK(String type, String id) throws IOException {
UKDataBean dataBean = new UKDataBean();
if (!StringUtils.isBlank(type)) {
GetResponse getResponse = MainContext.getTemplet().getClient()
.prepareGet(Constants.SYSTEM_INDEX,
type, id)
.execute().actionGet();
.get(new GetRequest(Constants.SYSTEM_INDEX,
type, id), RequestOptions.DEFAULT);
dataBean.setValues(getResponse.getSource());
dataBean.setType(getResponse.getType());
} 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);
}
/**
*
*/
public PageImpl<UKDataBean> findAllPageResult(QueryBuilder query, MetadataTable metadata, Pageable page, boolean loadRef, String types) {
List<UKDataBean> dataBeanList = new ArrayList<>();
SearchRequestBuilder searchBuilder = MainContext.getTemplet().getClient().prepareSearch(Constants.SYSTEM_INDEX);
if (!StringUtils.isBlank(types)) {
searchBuilder.setTypes(types);
public PageImpl<UKDataBean> findAllPageResult(QueryBuilder query, MetadataTable metadata, Pageable page, boolean loadRef, String types) throws IOException {
SearchSourceBuilder source = new SearchSourceBuilder();
int start = page.getPageSize() * page.getPageNumber();
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();
searchBuilder.setFrom(start).setSize(page.getPageSize());
page.getSort();
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));
SearchRequest request = new SearchRequest(new String[]{Constants.SYSTEM_INDEX}, source);
if (!StringUtils.isBlank(types)) {
request.types(types);
}
SearchResponse response = searchBuilder.setQuery(query).execute().actionGet();
SearchResponse response = MainContext.getTemplet().getClient().search(request, RequestOptions.DEFAULT);
List<String> users = new ArrayList<>();
List<String> organs = new ArrayList<>();
List<String> taskList = new ArrayList<>();
// List<String> batchList = new ArrayList<>();
// List<String> activityList = new ArrayList<>();
List<UKDataBean> dataBeanList = new ArrayList<>();
for (SearchHit hit : response.getHits().getHits()) {
UKDataBean temp = new UKDataBean();
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) {
List<UKDataBean> dataBeanList = new ArrayList<>();
SearchRequestBuilder searchBuilder = MainContext.getTemplet().getClient().prepareSearch(Constants.SYSTEM_INDEX);
if (!StringUtils.isBlank(types)) {
searchBuilder.setTypes(types);
}
public PageImpl<UKDataBean> findAllPageAggResult(QueryBuilder query, String aggField, Pageable page, boolean loadRef, String types) throws IOException {
int size = page.getPageSize() * (page.getPageNumber() + 1);
searchBuilder.setFrom(0).setSize(0);
AggregationBuilder aggregition = AggregationBuilders.terms(aggField).field(aggField).size(size);
aggregition.subAggregation(AggregationBuilders.terms("apstatus").field("apstatus"));
aggregition.subAggregation(AggregationBuilders.terms("callstatus").field("callstatus"));
searchBuilder.addAggregation(aggregition);
SearchResponse response = searchBuilder.setQuery(query).execute().actionGet();
SearchSourceBuilder source = new SearchSourceBuilder().aggregation(aggregition).query(query);
SearchRequest request = new SearchRequest(new String[]{Constants.SYSTEM_INDEX}, source);
if (!StringUtils.isBlank(types)) {
request.types(types);
}
SearchResponse response = MainContext.getTemplet().getClient().search(request, RequestOptions.DEFAULT);
List<String> users = new ArrayList<>();
List<String> organs = new ArrayList<>();
List<String> taskList = new ArrayList<>();
// List<String> batchList = new ArrayList<>();
// List<String> activityList = new ArrayList<>();
List<UKDataBean> dataBeanList = new ArrayList<>();
if (response.getAggregations().get(aggField) instanceof Terms) {
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.Predicate;
import javax.validation.Valid;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
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();
queryBuilder.must(termQuery("actid", actid));// 活动ID
queryBuilder.mustNot(termQuery("status", MainContext.NamesDisStatusType.NOT.toString()));

View File

@ -17,10 +17,14 @@
package com.chatopera.cc.util.dsdata;
import java.io.IOException;
public abstract class DataProcess {
protected DSDataEvent event ;
public DataProcess(final DSDataEvent event){
this.event = event ;
protected DSDataEvent event;
public DataProcess(final DSDataEvent event) {
this.event = event;
}
public abstract void process() ;
public abstract void process() throws IOException;
}

View File

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

View File

@ -16,7 +16,10 @@
*/
package com.chatopera.cc.util.dsdata.process;
import java.io.IOException;
public interface JPAProcess {
public void process(Object data) ;
public void end();
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.Sort;
import java.io.IOException;
import java.util.List;
import static org.elasticsearch.index.query.QueryBuilders.rangeQuery;
@ -37,7 +38,7 @@ import static org.elasticsearch.index.query.QueryBuilders.termQuery;
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();
queryBuilder.must(termQuery("orgi", orgi));
@ -96,7 +97,7 @@ public class SearchTools {
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();
queryBuilder.must(termQuery("orgi", orgi));
queryBuilder.must(termQuery("status", MainContext.NamesDisStatusType.NOT.toString()));
@ -156,7 +157,7 @@ public class SearchTools {
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();
queryBuilder.must(termQuery("orgi", orgi));
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();
queryBuilder.must(termQuery("orgi", orgi));
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);
}
/**
*
*/
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);
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);
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);
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);
return esDataExchange.getIObjectByPK(type, id);
}