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

Replace setRefresh() with setRefreshPolicy()

This commit is contained in:
dengchao@xgtl 2020-04-16 16:23:22 +08:00
parent f17fa7a838
commit a3e5b1660e
3 changed files with 615 additions and 765 deletions

View File

@ -100,7 +100,7 @@ public class ActivityResource extends Resource {
//回收数据 , 需要传入回收的目标 包括 批次ID任务ID筛选ID活动ID
dataList = SearchTools.recoversearch(this.jobDetail.getOrgi(), this.jobDetail.getExectype(), this.jobDetail.getExectarget(), metadataTable, (int) Math.ceil(this.jobDetail.getStartindex() / 50000.0), 50000);
} else {
dataList = SearchTools.dissearch(this.jobDetail.getOrgi(), formFilter, formFilterList, metadataTable, (int) Math.ceil(this.jobDetail.getStartindex() / 50000.0), 50000);
dataList = SearchTools.dissearch(this.jobDetail.getOrgi(), formFilterList, metadataTable, (int) Math.ceil(this.jobDetail.getStartindex() / 50000.0), 50000);
}
}
this.callAgentList = MainContext.getContext().getBean(CallAgentRepository.class).findByActidAndOrgi(this.jobDetail.getId(), this.jobDetail.getOrgi());

View File

@ -1,462 +1,395 @@
/*
* Copyright (C) 2017 优客服-多渠道客服系统
* Modifications copyright (C) 2018-2019 Chatopera Inc, <https://www.chatopera.com>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.chatopera.cc.persistence.impl;
import com.chatopera.cc.basic.Constants;
import com.chatopera.cc.basic.MainContext;
import com.chatopera.cc.model.*;
import com.chatopera.cc.persistence.repository.OrganRepository;
import com.chatopera.cc.persistence.repository.UKefuCallOutTaskRepository;
import com.chatopera.cc.persistence.repository.UserRepository;
import com.chatopera.cc.util.es.UKDataBean;
import org.apache.commons.lang3.StringUtils;
import org.elasticsearch.action.bulk.BulkRequestBuilder;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.action.index.IndexRequestBuilder;
import org.elasticsearch.action.search.SearchRequestBuilder;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.action.search.SearchType;
import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.aggregations.Aggregation;
import org.elasticsearch.search.aggregations.AggregationBuilder;
import org.elasticsearch.search.aggregations.AggregationBuilders;
import org.elasticsearch.search.aggregations.bucket.histogram.InternalDateHistogram;
import org.elasticsearch.search.aggregations.bucket.terms.StringTerms;
import org.elasticsearch.search.aggregations.bucket.terms.Terms;
import org.elasticsearch.search.sort.FieldSortBuilder;
import org.elasticsearch.search.sort.SortOrder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort.Order;
import org.springframework.stereotype.Repository;
import java.util.*;
@Repository("esdataservice")
public class ESDataExchangeImpl{
@Autowired
private UserRepository userRes ;
@Autowired
private UKefuCallOutTaskRepository taskRes ;
@Autowired
private OrganRepository organRes ;
public void saveIObject(UKDataBean dataBean) throws Exception {
if(dataBean.getId() == null) {
dataBean.setId((String) dataBean.getValues().get("id"));
}
this.saveBulk(dataBean).execute().actionGet() ;
}
/**
* 实时刷新仅限于 回收到部门和回收到 公共使用其他地方禁用
* @param dataBean
* @param refresh
* @throws Exception
*/
public void saveIObject(UKDataBean dataBean , boolean refresh) throws Exception {
if(dataBean.getId() == null) {
dataBean.setId((String) dataBean.getValues().get("id"));
}
this.saveBulk(dataBean).setRefresh(refresh).execute().actionGet() ;
}
/**
* @param dataBean
* @return
* @throws Exception
*/
public IndexRequestBuilder saveBulk(UKDataBean dataBean) throws Exception {
IndexRequestBuilder indexRequestBuilder ;
if(dataBean.getId() == null) {
dataBean.setId((String) dataBean.getValues().get("id"));
}
if(!StringUtils.isBlank(dataBean.getType())) {
indexRequestBuilder = MainContext.getTemplet().getClient().prepareIndex(Constants.SYSTEM_INDEX,
dataBean.getType(), dataBean.getId())
.setSource(processValues(dataBean));
}else {
indexRequestBuilder = MainContext.getTemplet().getClient().prepareIndex(Constants.SYSTEM_INDEX,
dataBean.getTable().getTablename(), dataBean.getId())
.setSource(processValues(dataBean));
}
return indexRequestBuilder ;
}
/**
* 处理数据包含 自然语言处理算法计算 智能处理字段
* @param dataBean
* @return
* @throws Exception
*/
private Map<String , Object> processValues(UKDataBean dataBean) throws Exception{
Map<String , Object> values = new HashMap<String , Object>() ;
if(dataBean.getTable()!=null) {
for(TableProperties tp : dataBean.getTable().getTableproperty()){
if(dataBean.getValues().get(tp.getFieldname())!=null){
values.put(tp.getFieldname(), dataBean.getValues().get(tp.getFieldname())) ;
}else if(tp.getDatatypename().equals("nlp") && dataBean.getValues()!=null){
//智能处理 需要计算过滤HTML内容自动获取关键词摘要实体识别情感分析信息指纹 等功能
values.put(tp.getFieldname(), dataBean.getValues().get(tp.getFieldname())) ;
}else{
values.put(tp.getFieldname(), dataBean.getValues().get(tp.getFieldname())) ;
}
}
}else {
values.putAll(dataBean.getValues());
}
return values ;
}
public void deleteIObject(UKDataBean dataBean ) throws Exception {
if(dataBean.getTable()!=null){
MainContext.getTemplet().getClient().prepareDelete(Constants.SYSTEM_INDEX, dataBean.getTable().getTablename(), dataBean.getId()).setRefresh(true).execute().actionGet();
}
}
/**
* 批量删除单次最大删除 10000条
* @param query
* @param index
* @param type
* @throws Exception
*/
public void deleteByCon(QueryBuilder query ,String type) throws Exception {
BulkRequestBuilder bulkRequest = MainContext.getTemplet().getClient().prepareBulk();
SearchResponse response = MainContext.getTemplet().getClient().prepareSearch(Constants.SYSTEM_INDEX).setTypes(type)
.setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
.setQuery(query)
.setFrom(0).setSize(10000).setExplain(true).execute().actionGet();
if(response.getHits().getTotalHits() > 0) {
for(SearchHit hit : response.getHits()){
String id = hit.getId();
bulkRequest.add(MainContext.getTemplet().getClient().prepareDelete(Constants.SYSTEM_INDEX, type, id).request());
}
bulkRequest.get();
}
}
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();
}
}
public UKDataBean getIObjectByPK(UKDataBean dataBean , String id) {
if(dataBean.getTable()!=null){
GetResponse getResponse = MainContext.getTemplet().getClient()
.prepareGet(Constants.SYSTEM_INDEX,
dataBean.getTable().getTablename(), dataBean.getId())
.execute().actionGet();
dataBean.setValues(getResponse.getSource());
dataBean.setType(getResponse.getType());
}else{
dataBean.setValues(new HashMap<String,Object>());
}
return processDate(dataBean);
}
public UKDataBean getIObjectByPK(String type , String id) {
UKDataBean dataBean = new UKDataBean() ;
if(!StringUtils.isBlank(type)){
GetResponse getResponse = MainContext.getTemplet().getClient()
.prepareGet(Constants.SYSTEM_INDEX,
type, id)
.execute().actionGet();
dataBean.setValues(getResponse.getSource());
dataBean.setType(getResponse.getType());
}else{
dataBean.setValues(new HashMap<String,Object>());
}
return dataBean;
}
public void updateIObject(UKDataBean dataBean) throws Exception {
if(dataBean.getId() == null) {
dataBean.setId((String) dataBean.getValues().get("id"));
}
UKDataBean oldDataBean = this.getIObjectByPK(dataBean , dataBean.getId());
for(TableProperties tp : dataBean.getTable().getTableproperty()){
if(oldDataBean.getValues()!=null&&oldDataBean.getValues().get(tp.getFieldname())!=null){
if(dataBean.getValues().get(tp.getFieldname())==null){
dataBean.getValues().put(tp.getFieldname(), oldDataBean.getValues().get(tp.getFieldname())) ;
}
}
}
MainContext.getTemplet().getClient()
.prepareUpdate(Constants.SYSTEM_INDEX,
dataBean.getTable().getTablename(), dataBean.getId()).setDoc(processValues(dataBean)).execute().actionGet();
}
/**
*
* @param dataBean
* @param ps
* @param start
* @return
*/
public PageImpl<UKDataBean> findPageResult(QueryBuilder query,String index ,MetadataTable metadata, Pageable page , boolean loadRef) {
return findAllPageResult(query, index, metadata, page, loadRef, metadata!=null ? metadata.getTablename() : null);
}
/**
*
* @param dataBean
* @param ps
* @param start
* @return
*/
public PageImpl<UKDataBean> findAllPageResult(QueryBuilder query,String index ,MetadataTable metadata, Pageable page , boolean loadRef , String types) {
List<UKDataBean> dataBeanList = new ArrayList<UKDataBean>() ;
SearchRequestBuilder searchBuilder = MainContext.getTemplet().getClient().prepareSearch(Constants.SYSTEM_INDEX);
if(!StringUtils.isBlank(types)) {
searchBuilder.setTypes(types) ;
}
int start = page.getPageSize() * page.getPageNumber();
searchBuilder.setFrom(start).setSize(page.getPageSize());
if(page!=null && page.getSort()!=null) {
Iterator<Order> iterator = page.getSort().iterator();
while(iterator.hasNext()) {
Order order = iterator.next() ;
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();
List<String> users = new ArrayList<String>() , organs = new ArrayList<String>() , taskList = new ArrayList<String>(),batchList = new ArrayList<String>(),activityList = new ArrayList<String>();
for(SearchHit hit : response.getHits().getHits()){
UKDataBean temp = new UKDataBean() ;
temp.setType(hit.getType());
temp.setTable(metadata);
temp.setValues(hit.getSource());
temp.setId((String)temp.getValues().get("id"));
dataBeanList.add(processDate(temp)) ;
if(loadRef == true) {
if(!StringUtils.isBlank((String)temp.getValues().get(Constants.CSKEFU_SYSTEM_DIS_AGENT))) {
users.add((String)temp.getValues().get(Constants.CSKEFU_SYSTEM_DIS_AGENT)) ;
}
if(!StringUtils.isBlank((String)temp.getValues().get(Constants.CSKEFU_SYSTEM_ASSUSER))) {
users.add((String)temp.getValues().get(Constants.CSKEFU_SYSTEM_ASSUSER)) ;
}
if(!StringUtils.isBlank((String)temp.getValues().get(Constants.CSKEFU_SYSTEM_DIS_ORGAN))) {
organs.add((String)temp.getValues().get(Constants.CSKEFU_SYSTEM_DIS_ORGAN)) ;
}
if(!StringUtils.isBlank((String)temp.getValues().get("taskid"))) {
taskList.add((String)temp.getValues().get("taskid")) ;
}
if(!StringUtils.isBlank((String)temp.getValues().get("batid"))) {
batchList.add((String)temp.getValues().get("batid")) ;
}
if(!StringUtils.isBlank((String)temp.getValues().get("actid"))) {
activityList.add((String)temp.getValues().get("actid")) ;
}
}
}
if(loadRef) {
if(users.size() > 0) {
List<User> userList = userRes.findAll(users) ;
for(UKDataBean dataBean : dataBeanList) {
String userid = (String)dataBean.getValues().get(Constants.CSKEFU_SYSTEM_DIS_AGENT) ;
if(!StringUtils.isBlank(userid)) {
for(User user : userList) {
if(user.getId().equals(userid)) {
dataBean.setUser(user);
break ;
}
}
}
String assuer = (String)dataBean.getValues().get(Constants.CSKEFU_SYSTEM_ASSUSER) ;
if(!StringUtils.isBlank(assuer)) {
for(User user : userList) {
if(user.getId().equals(assuer)) {
dataBean.setAssuser(user);
break ;
}
}
}
}
}
if(organs.size() > 0) {
List<Organ> organList = organRes.findAll(organs) ;
for(UKDataBean dataBean : dataBeanList) {
String organid = (String)dataBean.getValues().get(Constants.CSKEFU_SYSTEM_DIS_ORGAN) ;
if(!StringUtils.isBlank(organid)) {
for(Organ organ : organList) {
if(organ.getId().equals(organid)) {
dataBean.setOrgan(organ);
break ;
}
}
}
}
}
if(taskList.size() > 0) {
List<UKefuCallOutTask> ukefuCallOutTaskList = taskRes.findAll(taskList) ;
for(UKDataBean dataBean : dataBeanList) {
String taskid = (String)dataBean.getValues().get("taskid") ;
if(!StringUtils.isBlank(taskid)) {
for(UKefuCallOutTask task : ukefuCallOutTaskList) {
if(task.getId().equals(taskid)) {
dataBean.setTask(task);
break ;
}
}
}
}
}
}
return new PageImpl<UKDataBean>(dataBeanList,page , (int)response.getHits().getTotalHits());
}
/**
*
* @param dataBean
* @param ps
* @param start
* @return
*/
public PageImpl<UKDataBean> findAllPageAggResult(QueryBuilder query,String aggField,Pageable page , boolean loadRef , String types) {
List<UKDataBean> dataBeanList = new ArrayList<UKDataBean>() ;
SearchRequestBuilder searchBuilder = MainContext.getTemplet().getClient().prepareSearch(Constants.SYSTEM_INDEX);
if(!StringUtils.isBlank(types)) {
searchBuilder.setTypes(types) ;
}
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();
List<String> users = new ArrayList<String>() , organs = new ArrayList<String>() , taskList = new ArrayList<String>(),batchList = new ArrayList<String>(),activityList = new ArrayList<String>();
if(response.getAggregations().get(aggField) instanceof Terms){
Terms agg = response.getAggregations().get(aggField) ;
if(agg!=null){
if(loadRef == true) {
if(aggField.equals(Constants.CSKEFU_SYSTEM_DIS_AGENT)) {
users.add(agg.getName()) ;
}
if(aggField.equals(Constants.CSKEFU_SYSTEM_DIS_ORGAN)) {
organs.add(agg.getName()) ;
}
if(aggField.equals("taskid")) {
taskList.add(agg.getName()) ;
}
if(aggField.equals("batid")) {
batchList.add(agg.getName()) ;
}
if(aggField.equals("actid")) {
activityList.add(agg.getName()) ;
}
}
if(agg.getBuckets()!=null && agg.getBuckets().size()>0){
for (Terms.Bucket entry : agg.getBuckets()) {
UKDataBean dataBean = new UKDataBean();
dataBean.getValues().put("id", entry.getKeyAsString()) ;
dataBean.getValues().put(aggField, entry.getKeyAsString()) ;
dataBean.setId(agg.getName());
dataBean.setType(aggField);
dataBean.getValues().put("total", entry.getDocCount()) ;
for (Aggregation temp : entry.getAggregations()) {
if(temp instanceof StringTerms) {
StringTerms agg2 = (StringTerms) temp ;
for (Terms.Bucket entry2 : agg2.getBuckets()) {
dataBean.getValues().put(temp.getName()+"."+entry2.getKeyAsString(), entry2.getDocCount()) ;
}
}
}
dataBeanList.add(dataBean) ;
}
}
}
}else if(response.getAggregations().get(aggField) instanceof InternalDateHistogram){
// InternalDateHistogram agg = response.getAggregations().get(aggField) ;
// long total = response.getHits().getTotalHits() ;
}
if(loadRef) {
if(users.size() > 0) {
List<User> userList = userRes.findAll(users) ;
for(UKDataBean dataBean : dataBeanList) {
String userid = (String)dataBean.getValues().get(Constants.CSKEFU_SYSTEM_DIS_AGENT) ;
if(!StringUtils.isBlank(userid)) {
for(User user : userList) {
if(user.getId().equals(userid)) {
dataBean.setUser(user);
break ;
}
}
}
}
}
if(organs.size() > 0) {
List<Organ> organList = organRes.findAll(organs) ;
for(UKDataBean dataBean : dataBeanList) {
String organid = (String)dataBean.getValues().get(Constants.CSKEFU_SYSTEM_DIS_ORGAN) ;
if(!StringUtils.isBlank(organid)) {
for(Organ organ : organList) {
if(organ.getId().equals(organid)) {
dataBean.setOrgan(organ);
break ;
}
}
}
}
}
if(taskList.size() > 0) {
List<UKefuCallOutTask> ukefuCallOutTaskList = taskRes.findAll(taskList) ;
for(UKDataBean dataBean : dataBeanList) {
String taskid = (String)dataBean.getValues().get("taskid") ;
if(!StringUtils.isBlank(taskid)) {
for(UKefuCallOutTask task : ukefuCallOutTaskList) {
if(task.getId().equals(taskid)) {
dataBean.setTask(task);
break ;
}
}
}
}
}
}
return new PageImpl<UKDataBean>(dataBeanList,page , (int)response.getHits().getTotalHits());
}
/**
*
* @param dataBean
*/
public UKDataBean processDate(UKDataBean dataBean) {
return dataBean;
}
}
/*
* Copyright (C) 2017 优客服-多渠道客服系统
* Modifications copyright (C) 2018-2019 Chatopera Inc, <https://www.chatopera.com>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.chatopera.cc.persistence.impl;
import com.chatopera.cc.basic.Constants;
import com.chatopera.cc.basic.MainContext;
import com.chatopera.cc.model.*;
import com.chatopera.cc.persistence.repository.OrganRepository;
import com.chatopera.cc.persistence.repository.UKefuCallOutTaskRepository;
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.GetResponse;
import org.elasticsearch.action.index.IndexRequestBuilder;
import org.elasticsearch.action.search.SearchRequestBuilder;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.aggregations.Aggregation;
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.sort.FieldSortBuilder;
import org.elasticsearch.search.sort.SortOrder;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort.Order;
import org.springframework.lang.NonNull;
import org.springframework.stereotype.Repository;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@RequiredArgsConstructor
@Repository("esdataservice")
public class ESDataExchangeImpl {
@NonNull
private final UserRepository userRes;
@NonNull
private final UKefuCallOutTaskRepository taskRes;
@NonNull
private final OrganRepository organRes;
public void saveIObject(UKDataBean dataBean) {
if (dataBean.getId() == null) {
dataBean.setId((String) dataBean.getValues().get("id"));
}
this.saveBulk(dataBean).execute().actionGet();
}
/**
*
*/
public IndexRequestBuilder saveBulk(UKDataBean dataBean) {
IndexRequestBuilder indexRequestBuilder;
if (dataBean.getId() == null) {
dataBean.setId((String) dataBean.getValues().get("id"));
}
if (!StringUtils.isBlank(dataBean.getType())) {
indexRequestBuilder = MainContext.getTemplet().getClient().prepareIndex(Constants.SYSTEM_INDEX,
dataBean.getType(), dataBean.getId())
.setSource(processValues(dataBean));
} else {
indexRequestBuilder = MainContext.getTemplet().getClient().prepareIndex(Constants.SYSTEM_INDEX,
dataBean.getTable().getTablename(), dataBean.getId())
.setSource(processValues(dataBean));
}
return indexRequestBuilder;
}
/**
* 处理数据包含 自然语言处理算法计算 智能处理字段
*/
private Map<String, Object> processValues(UKDataBean dataBean) {
Map<String, Object> values = new HashMap<>();
if (dataBean.getTable() != null) {
for (TableProperties tp : dataBean.getTable().getTableproperty()) {
if (dataBean.getValues().get(tp.getFieldname()) != null) {
values.put(tp.getFieldname(), dataBean.getValues().get(tp.getFieldname()));
} else if (tp.getDatatypename().equals("nlp") && dataBean.getValues() != null) {
//智能处理 需要计算过滤HTML内容自动获取关键词摘要实体识别情感分析信息指纹 等功能
values.put(tp.getFieldname(), dataBean.getValues().get(tp.getFieldname()));
} else {
values.put(tp.getFieldname(), dataBean.getValues().get(tp.getFieldname()));
}
}
} else {
values.putAll(dataBean.getValues());
}
return values;
}
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();
}
}
public UKDataBean getIObjectByPK(UKDataBean dataBean) {
if (dataBean.getTable() != null) {
GetResponse getResponse = MainContext.getTemplet().getClient()
.prepareGet(Constants.SYSTEM_INDEX,
dataBean.getTable().getTablename(), dataBean.getId())
.execute().actionGet();
dataBean.setValues(getResponse.getSource());
dataBean.setType(getResponse.getType());
} else {
dataBean.setValues(new HashMap<>());
}
return processDate(dataBean);
}
public UKDataBean getIObjectByPK(String type, String id) {
UKDataBean dataBean = new UKDataBean();
if (!StringUtils.isBlank(type)) {
GetResponse getResponse = MainContext.getTemplet().getClient()
.prepareGet(Constants.SYSTEM_INDEX,
type, id)
.execute().actionGet();
dataBean.setValues(getResponse.getSource());
dataBean.setType(getResponse.getType());
} else {
dataBean.setValues(new HashMap<>());
}
return dataBean;
}
/**
*
*/
public PageImpl<UKDataBean> findPageResult(QueryBuilder query, MetadataTable metadata, Pageable page, boolean loadRef) {
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);
}
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));
}
SearchResponse response = searchBuilder.setQuery(query).execute().actionGet();
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<>();
for (SearchHit hit : response.getHits().getHits()) {
UKDataBean temp = new UKDataBean();
temp.setType(hit.getType());
temp.setTable(metadata);
temp.setValues(hit.getSourceAsMap());
temp.setId((String) temp.getValues().get("id"));
dataBeanList.add(processDate(temp));
if (loadRef) {
if (!StringUtils.isBlank((String) temp.getValues().get(Constants.CSKEFU_SYSTEM_DIS_AGENT))) {
users.add((String) temp.getValues().get(Constants.CSKEFU_SYSTEM_DIS_AGENT));
}
if (!StringUtils.isBlank((String) temp.getValues().get(Constants.CSKEFU_SYSTEM_ASSUSER))) {
users.add((String) temp.getValues().get(Constants.CSKEFU_SYSTEM_ASSUSER));
}
if (!StringUtils.isBlank((String) temp.getValues().get(Constants.CSKEFU_SYSTEM_DIS_ORGAN))) {
organs.add((String) temp.getValues().get(Constants.CSKEFU_SYSTEM_DIS_ORGAN));
}
if (!StringUtils.isBlank((String) temp.getValues().get("taskid"))) {
taskList.add((String) temp.getValues().get("taskid"));
}
// if (!StringUtils.isBlank((String) temp.getValues().get("batid"))) {
// batchList.add((String) temp.getValues().get("batid"));
// }
// if (!StringUtils.isBlank((String) temp.getValues().get("actid"))) {
// activityList.add((String) temp.getValues().get("actid"));
// }
}
}
if (loadRef) {
if (users.size() > 0) {
List<User> userList = userRes.findAllById(users);
for (UKDataBean dataBean : dataBeanList) {
String userid = (String) dataBean.getValues().get(Constants.CSKEFU_SYSTEM_DIS_AGENT);
if (!StringUtils.isBlank(userid)) {
for (User user : userList) {
if (user.getId().equals(userid)) {
dataBean.setUser(user);
break;
}
}
}
String assuer = (String) dataBean.getValues().get(Constants.CSKEFU_SYSTEM_ASSUSER);
if (!StringUtils.isBlank(assuer)) {
for (User user : userList) {
if (user.getId().equals(assuer)) {
dataBean.setAssuser(user);
break;
}
}
}
}
}
if (organs.size() > 0) {
List<Organ> organList = organRes.findAllById(organs);
for (UKDataBean dataBean : dataBeanList) {
String organid = (String) dataBean.getValues().get(Constants.CSKEFU_SYSTEM_DIS_ORGAN);
if (!StringUtils.isBlank(organid)) {
for (Organ organ : organList) {
if (organ.getId().equals(organid)) {
dataBean.setOrgan(organ);
break;
}
}
}
}
}
if (taskList.size() > 0) {
List<UKefuCallOutTask> ukefuCallOutTaskList = taskRes.findAllById(taskList);
for (UKDataBean dataBean : dataBeanList) {
String taskid = (String) dataBean.getValues().get("taskid");
if (!StringUtils.isBlank(taskid)) {
for (UKefuCallOutTask task : ukefuCallOutTaskList) {
if (task.getId().equals(taskid)) {
dataBean.setTask(task);
break;
}
}
}
}
}
}
return new PageImpl<>(dataBeanList, page, (int) response.getHits().getTotalHits());
}
/**
*
*/
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);
}
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();
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<>();
if (response.getAggregations().get(aggField) instanceof Terms) {
Terms agg = response.getAggregations().get(aggField);
if (agg != null) {
if (loadRef) {
if (aggField.equals(Constants.CSKEFU_SYSTEM_DIS_AGENT)) {
users.add(agg.getName());
}
if (aggField.equals(Constants.CSKEFU_SYSTEM_DIS_ORGAN)) {
organs.add(agg.getName());
}
if (aggField.equals("taskid")) {
taskList.add(agg.getName());
}
// if (aggField.equals("batid")) {
// batchList.add(agg.getName());
// }
// if (aggField.equals("actid")) {
// activityList.add(agg.getName());
// }
}
if (agg.getBuckets() != null && agg.getBuckets().size() > 0) {
for (Terms.Bucket entry : agg.getBuckets()) {
UKDataBean dataBean = new UKDataBean();
dataBean.getValues().put("id", entry.getKeyAsString());
dataBean.getValues().put(aggField, entry.getKeyAsString());
dataBean.setId(agg.getName());
dataBean.setType(aggField);
dataBean.getValues().put("total", entry.getDocCount());
for (Aggregation temp : entry.getAggregations()) {
if (temp instanceof StringTerms) {
StringTerms agg2 = (StringTerms) temp;
for (Terms.Bucket entry2 : agg2.getBuckets()) {
dataBean.getValues().put(temp.getName() + "." + entry2.getKeyAsString(), entry2.getDocCount());
}
}
}
dataBeanList.add(dataBean);
}
}
}
} else {
response.getAggregations().get(aggField);// InternalDateHistogram agg = response.getAggregations().get(aggField) ;
// long total = response.getHits().getTotalHits() ;
}
if (loadRef) {
if (users.size() > 0) {
List<User> userList = userRes.findAllById(users);
for (UKDataBean dataBean : dataBeanList) {
String userid = (String) dataBean.getValues().get(Constants.CSKEFU_SYSTEM_DIS_AGENT);
if (!StringUtils.isBlank(userid)) {
for (User user : userList) {
if (user.getId().equals(userid)) {
dataBean.setUser(user);
break;
}
}
}
}
}
if (organs.size() > 0) {
List<Organ> organList = organRes.findAllById(organs);
for (UKDataBean dataBean : dataBeanList) {
String organid = (String) dataBean.getValues().get(Constants.CSKEFU_SYSTEM_DIS_ORGAN);
if (!StringUtils.isBlank(organid)) {
for (Organ organ : organList) {
if (organ.getId().equals(organid)) {
dataBean.setOrgan(organ);
break;
}
}
}
}
}
if (taskList.size() > 0) {
List<UKefuCallOutTask> ukefuCallOutTaskList = taskRes.findAllById(taskList);
for (UKDataBean dataBean : dataBeanList) {
String taskid = (String) dataBean.getValues().get("taskid");
if (!StringUtils.isBlank(taskid)) {
for (UKefuCallOutTask task : ukefuCallOutTaskList) {
if (task.getId().equals(taskid)) {
dataBean.setTask(task);
break;
}
}
}
}
}
}
return new PageImpl<>(dataBeanList, page, (int) response.getHits().getTotalHits());
}
/**
*
*/
public UKDataBean processDate(UKDataBean dataBean) {
return dataBean;
}
}

View File

@ -18,7 +18,6 @@ package com.chatopera.cc.util.es;
import com.chatopera.cc.basic.Constants;
import com.chatopera.cc.basic.MainContext;
import com.chatopera.cc.model.FormFilter;
import com.chatopera.cc.model.FormFilterItem;
import com.chatopera.cc.model.MetadataTable;
import com.chatopera.cc.persistence.impl.ESDataExchangeImpl;
@ -38,315 +37,233 @@ import static org.elasticsearch.index.query.QueryBuilders.termQuery;
public class SearchTools {
public static PageImpl<UKDataBean> search(String orgi , FormFilter formFilter , List<FormFilterItem> itemList , MetadataTable metadataTable , boolean loadRef , int p, int ps){
BoolQueryBuilder queryBuilder = new BoolQueryBuilder();
queryBuilder.must(termQuery("orgi", orgi)) ;
public static PageImpl<UKDataBean> search(String orgi, List<FormFilterItem> itemList, MetadataTable metadataTable, boolean loadRef, int p, int ps) {
BoolQueryBuilder queryBuilder = new BoolQueryBuilder();
queryBuilder.must(termQuery("orgi", orgi));
BoolQueryBuilder orBuilder = new BoolQueryBuilder();
int orNums = 0 ;
for(FormFilterItem formFilterItem : itemList) {
QueryBuilder tempQueryBuilder = null ;
if(formFilterItem.getField().equals("q")) {
tempQueryBuilder = new QueryStringQueryBuilder(formFilterItem.getValue()).defaultOperator(Operator.AND) ;
}else {
switch(formFilterItem.getCond()) {
case "01":
tempQueryBuilder = rangeQuery(formFilterItem.getField()).from(formFilterItem.getValue()).includeLower(false);
break;
case "02":
tempQueryBuilder = rangeQuery(formFilterItem.getField()).from(formFilterItem.getValue()).includeLower(true);
break;
case "03":
tempQueryBuilder = rangeQuery(formFilterItem.getField()).to(formFilterItem.getValue()).includeUpper(false);
break;
case "04":
tempQueryBuilder = rangeQuery(formFilterItem.getField()).to(formFilterItem.getValue()).includeUpper(true);
break;
case "05":
tempQueryBuilder = termQuery(formFilterItem.getField(), formFilterItem.getValue());
break;
case "06":
tempQueryBuilder = termQuery(formFilterItem.getField(), formFilterItem.getValue());
break;
case "07":
tempQueryBuilder = new QueryStringQueryBuilder(formFilterItem.getValue()).field(formFilterItem.getField()).defaultOperator(Operator.AND);
break;
default:
break;
}
}
if("AND".equalsIgnoreCase(formFilterItem.getComp())) {
if("06".equals(formFilterItem.getCond())) {
queryBuilder.mustNot(tempQueryBuilder) ;
}else {
queryBuilder.must(tempQueryBuilder) ;
}
}else {
orNums ++ ;
if("06".equals(formFilterItem.getCond())) {
orBuilder.mustNot(tempQueryBuilder) ;
}else {
orBuilder.should(tempQueryBuilder) ;
}
}
}
if(orNums > 0) {
queryBuilder.must(orBuilder) ;
}
BoolQueryBuilder orBuilder = new BoolQueryBuilder();
int orNums = 0;
for (FormFilterItem formFilterItem : itemList) {
QueryBuilder tempQueryBuilder = null;
if (formFilterItem.getField().equals("q")) {
tempQueryBuilder = new QueryStringQueryBuilder(formFilterItem.getValue()).defaultOperator(Operator.AND);
} else {
switch (formFilterItem.getCond()) {
case "01":
tempQueryBuilder = rangeQuery(formFilterItem.getField()).from(formFilterItem.getValue()).includeLower(false);
break;
case "02":
tempQueryBuilder = rangeQuery(formFilterItem.getField()).from(formFilterItem.getValue()).includeLower(true);
break;
case "03":
tempQueryBuilder = rangeQuery(formFilterItem.getField()).to(formFilterItem.getValue()).includeUpper(false);
break;
case "04":
tempQueryBuilder = rangeQuery(formFilterItem.getField()).to(formFilterItem.getValue()).includeUpper(true);
break;
case "05":
tempQueryBuilder = termQuery(formFilterItem.getField(), formFilterItem.getValue());
break;
case "06":
tempQueryBuilder = termQuery(formFilterItem.getField(), formFilterItem.getValue());
break;
case "07":
tempQueryBuilder = new QueryStringQueryBuilder(formFilterItem.getValue()).field(formFilterItem.getField()).defaultOperator(Operator.AND);
break;
default:
break;
}
}
if ("AND".equalsIgnoreCase(formFilterItem.getComp())) {
if ("06".equals(formFilterItem.getCond())) {
queryBuilder.mustNot(tempQueryBuilder);
} else {
queryBuilder.must(tempQueryBuilder);
}
} else {
orNums++;
if ("06".equals(formFilterItem.getCond())) {
orBuilder.mustNot(tempQueryBuilder);
} else {
orBuilder.should(tempQueryBuilder);
}
}
}
if (orNums > 0) {
queryBuilder.must(orBuilder);
}
return search(queryBuilder, metadataTable, loadRef, p, ps);
}
public static PageImpl<UKDataBean> dissearch(String orgi , FormFilter formFilter , List<FormFilterItem> itemList , MetadataTable metadataTable , int p, int ps){
BoolQueryBuilder queryBuilder = new BoolQueryBuilder();
queryBuilder.must(termQuery("orgi", orgi)) ;
queryBuilder.must(termQuery("status", MainContext.NamesDisStatusType.NOT.toString())) ;
queryBuilder.must(termQuery("validresult", "valid")) ;
BoolQueryBuilder orBuilder = new BoolQueryBuilder();
int orNums = 0 ;
for(FormFilterItem formFilterItem : itemList) {
QueryBuilder tempQueryBuilder = null ;
if(formFilterItem.getField().equals("q")) {
tempQueryBuilder = new QueryStringQueryBuilder(formFilterItem.getValue()).defaultOperator(Operator.AND) ;
}else {
switch(formFilterItem.getCond()) {
case "01":
tempQueryBuilder = rangeQuery(formFilterItem.getField()).from(formFilterItem.getValue()).includeLower(false);
break;
case "02":
tempQueryBuilder = rangeQuery(formFilterItem.getField()).from(formFilterItem.getValue()).includeLower(true);
break;
case "03":
tempQueryBuilder = rangeQuery(formFilterItem.getField()).to(formFilterItem.getValue()).includeUpper(false);
break;
case "04":
tempQueryBuilder = rangeQuery(formFilterItem.getField()).to(formFilterItem.getValue()).includeUpper(true);
break;
case "05":
tempQueryBuilder = termQuery(formFilterItem.getField(), formFilterItem.getValue());
break;
case "06":
tempQueryBuilder = termQuery(formFilterItem.getField(), formFilterItem.getValue());
break;
case "07":
tempQueryBuilder = new QueryStringQueryBuilder(formFilterItem.getValue()).field(formFilterItem.getField()).defaultOperator(Operator.AND);
break;
default:
break;
}
}
if("AND".equalsIgnoreCase(formFilterItem.getComp())) {
if("06".equals(formFilterItem.getCond())) {
queryBuilder.mustNot(tempQueryBuilder) ;
}else {
queryBuilder.must(tempQueryBuilder) ;
}
}else {
orNums ++ ;
if("06".equals(formFilterItem.getCond())) {
orBuilder.mustNot(tempQueryBuilder) ;
}else {
orBuilder.should(tempQueryBuilder) ;
}
}
}
if(orNums > 0) {
queryBuilder.must(orBuilder) ;
}
return search(queryBuilder, metadataTable, false, p, ps);
}
public static PageImpl<UKDataBean> recoversearch(String orgi , String cmd ,String id, MetadataTable metadataTable , int p, int ps){
BoolQueryBuilder queryBuilder = new BoolQueryBuilder();
queryBuilder.must(termQuery("orgi", orgi)) ;
queryBuilder.mustNot(termQuery("status", MainContext.NamesDisStatusType.NOT.toString())) ;
queryBuilder.must(termQuery("validresult", "valid")) ;
switch(cmd) {
case "actid" : queryBuilder.must(termQuery("actid", id)) ; break ;
case "batid" : queryBuilder.must(termQuery("batid", id)) ; break ;
case "taskid" : queryBuilder.must(termQuery("taskid", id)) ; break ;
case "filterid" : queryBuilder.must(termQuery("filterid", id)) ; break ;
case "agent" : queryBuilder.must(termQuery(Constants.CSKEFU_SYSTEM_DIS_AGENT, id)) ; break ;
case "skill" : queryBuilder.must(termQuery(Constants.CSKEFU_SYSTEM_DIS_ORGAN, id)) ; break ;
case "taskskill" : queryBuilder.must(termQuery("taskid", id)).must(termQuery("status", MainContext.NamesDisStatusType.DISAGENT.toString())) ; break ;
case "filterskill" : queryBuilder.must(termQuery("filterid", id)).must(termQuery("status", MainContext.NamesDisStatusType.DISAGENT.toString())) ; break ;
default : queryBuilder.must(termQuery("actid", "NOT_EXIST_KEY")) ; //必须传入一个进来;
}
return search(queryBuilder, metadataTable, false, p, ps);
}
/**
* @param orgi
* @param agent
* @param p
* @param ps
* @return
*/
public static PageImpl<UKDataBean> agentsearch(String orgi ,boolean excludeCalled , String agent , int p, int ps){
BoolQueryBuilder queryBuilder = new BoolQueryBuilder();
queryBuilder.must(termQuery("orgi", orgi)) ;
if(excludeCalled){
queryBuilder.must(termQuery("callstatus", MainContext.NameStatusType.NOTCALL.toString())) ;
}
queryBuilder.must(termQuery("validresult", "valid")) ;
queryBuilder.must(termQuery(Constants.CSKEFU_SYSTEM_DIS_AGENT, agent)) ;
queryBuilder.must(termQuery("status", MainContext.NamesDisStatusType.DISAGENT.toString())) ;
return search(queryBuilder, p, ps);
}
/**
*
* @param orgi
* @param agent
* @param p
* @param ps
* @return
*/
public static PageImpl<UKDataBean> agentapsearch(String orgi , String agent , int p, int ps){
BoolQueryBuilder queryBuilder = new BoolQueryBuilder();
queryBuilder.must(termQuery("orgi", orgi)) ;
queryBuilder.must(termQuery("validresult", "valid")) ;
queryBuilder.must(termQuery(Constants.CSKEFU_SYSTEM_DIS_AGENT, agent)) ;
queryBuilder.must(termQuery("apstatus", true)) ; //预约状态
queryBuilder.must(rangeQuery("aptime").to(System.currentTimeMillis())) ; //预约状态
return search(queryBuilder, p, ps);
}
/**
*
* @param orgi
* @param agent
* @param p
* @param ps
* @return
*/
public static PageImpl<UKDataBean> aisearch(String orgi , int p, int ps){
BoolQueryBuilder queryBuilder = new BoolQueryBuilder();
queryBuilder.must(termQuery("orgi", orgi)) ;
queryBuilder.must(termQuery("callstatus", MainContext.NameStatusType.NOTCALL.toString())) ;
queryBuilder.must(termQuery("validresult", "valid")) ;
queryBuilder.must(termQuery("status", MainContext.NamesDisStatusType.DISAI.toString())) ;
return search(queryBuilder, p, ps);
}
/**
*
* @param orgi
* @param agent
* @param p
* @param ps
* @return
*/
public static PageImpl<UKDataBean> namesearch(String orgi , String phonenum){
BoolQueryBuilder queryBuilder = new BoolQueryBuilder();
queryBuilder.must(termQuery("orgi", orgi)) ;
queryBuilder.must(termQuery("validresult", "valid")) ;
queryBuilder.must(termQuery("status", MainContext.NamesDisStatusType.DISAGENT.toString())) ;
StringBuffer strb = new StringBuffer();
if(!StringUtils.isBlank(phonenum)) {
strb.append(phonenum) ;
if(phonenum.startsWith("0")) {
strb.append(" ").append(phonenum.substring(1)) ;
}
}else {
strb.append(Constants.CSKEFU_SYSTEM_NO_DAT) ;
}
queryBuilder.must(new QueryStringQueryBuilder(strb.toString()).defaultOperator(Operator.OR) );
return search(queryBuilder, 0, 1);
}
/**
*
* @param orgi
* @param agent
* @param p
* @param ps
* @return
*/
public static PageImpl<UKDataBean> search(BoolQueryBuilder queryBuilder, int p, int ps){
return search(queryBuilder, null, true, p, ps);
}
/**
*
* @param queryBuilder
* @param metadataTable
* @param loadRef
* @param p
* @param ps
* @return
*/
private static PageImpl<UKDataBean> search(BoolQueryBuilder queryBuilder , MetadataTable metadataTable , boolean loadRef , int p, int ps){
ESDataExchangeImpl esDataExchange = MainContext.getContext().getBean(ESDataExchangeImpl.class);
return esDataExchange.findPageResult(queryBuilder, Constants.SYSTEM_INDEX, metadataTable, PageRequest.of(p, ps, Sort.Direction.ASC, "createtime"), loadRef);
return search(queryBuilder, metadataTable, loadRef, p, ps);
}
/**
*
* @param queryBuilder
* @param metadataTable
* @param loadRef
* @param p
* @param ps
* @return
*/
public static PageImpl<UKDataBean> aggregation(BoolQueryBuilder queryBuilder , String aggField, boolean loadRef , int p, int ps) {
public static PageImpl<UKDataBean> dissearch(String orgi, List<FormFilterItem> itemList, MetadataTable metadataTable, int p, int ps) {
BoolQueryBuilder queryBuilder = new BoolQueryBuilder();
queryBuilder.must(termQuery("orgi", orgi));
queryBuilder.must(termQuery("status", MainContext.NamesDisStatusType.NOT.toString()));
queryBuilder.must(termQuery("validresult", "valid"));
BoolQueryBuilder orBuilder = new BoolQueryBuilder();
int orNums = 0;
for (FormFilterItem formFilterItem : itemList) {
QueryBuilder tempQueryBuilder = null;
if (formFilterItem.getField().equals("q")) {
tempQueryBuilder = new QueryStringQueryBuilder(formFilterItem.getValue()).defaultOperator(Operator.AND);
} else {
switch (formFilterItem.getCond()) {
case "01":
tempQueryBuilder = rangeQuery(formFilterItem.getField()).from(formFilterItem.getValue()).includeLower(false);
break;
case "02":
tempQueryBuilder = rangeQuery(formFilterItem.getField()).from(formFilterItem.getValue()).includeLower(true);
break;
case "03":
tempQueryBuilder = rangeQuery(formFilterItem.getField()).to(formFilterItem.getValue()).includeUpper(false);
break;
case "04":
tempQueryBuilder = rangeQuery(formFilterItem.getField()).to(formFilterItem.getValue()).includeUpper(true);
break;
case "05":
tempQueryBuilder = termQuery(formFilterItem.getField(), formFilterItem.getValue());
break;
case "06":
tempQueryBuilder = termQuery(formFilterItem.getField(), formFilterItem.getValue());
break;
case "07":
tempQueryBuilder = new QueryStringQueryBuilder(formFilterItem.getValue()).field(formFilterItem.getField()).defaultOperator(Operator.AND);
break;
default:
break;
}
}
if ("AND".equalsIgnoreCase(formFilterItem.getComp())) {
if ("06".equals(formFilterItem.getCond())) {
queryBuilder.mustNot(tempQueryBuilder);
} else {
queryBuilder.must(tempQueryBuilder);
}
} else {
orNums++;
if ("06".equals(formFilterItem.getCond())) {
orBuilder.mustNot(tempQueryBuilder);
} else {
orBuilder.should(tempQueryBuilder);
}
}
}
if (orNums > 0) {
queryBuilder.must(orBuilder);
}
return search(queryBuilder, metadataTable, false, p, ps);
}
public static PageImpl<UKDataBean> recoversearch(String orgi, String cmd, String id, MetadataTable metadataTable, int p, int ps) {
BoolQueryBuilder queryBuilder = new BoolQueryBuilder();
queryBuilder.must(termQuery("orgi", orgi));
queryBuilder.mustNot(termQuery("status", MainContext.NamesDisStatusType.NOT.toString()));
queryBuilder.must(termQuery("validresult", "valid"));
switch (cmd) {
case "actid":
queryBuilder.must(termQuery("actid", id));
break;
case "batid":
queryBuilder.must(termQuery("batid", id));
break;
case "taskid":
queryBuilder.must(termQuery("taskid", id));
break;
case "filterid":
queryBuilder.must(termQuery("filterid", id));
break;
case "agent":
queryBuilder.must(termQuery(Constants.CSKEFU_SYSTEM_DIS_AGENT, id));
break;
case "skill":
queryBuilder.must(termQuery(Constants.CSKEFU_SYSTEM_DIS_ORGAN, id));
break;
case "taskskill":
queryBuilder.must(termQuery("taskid", id)).must(termQuery("status", MainContext.NamesDisStatusType.DISAGENT.toString()));
break;
case "filterskill":
queryBuilder.must(termQuery("filterid", id)).must(termQuery("status", MainContext.NamesDisStatusType.DISAGENT.toString()));
break;
default:
queryBuilder.must(termQuery("actid", "NOT_EXIST_KEY")); //必须传入一个进来;
}
return search(queryBuilder, metadataTable, false, p, ps);
}
/**
*
*/
public static PageImpl<UKDataBean> namesearch(String orgi, String phonenum) {
BoolQueryBuilder queryBuilder = new BoolQueryBuilder();
queryBuilder.must(termQuery("orgi", orgi));
queryBuilder.must(termQuery("validresult", "valid"));
queryBuilder.must(termQuery("status", MainContext.NamesDisStatusType.DISAGENT.toString()));
StringBuilder strb = new StringBuilder();
if (!StringUtils.isBlank(phonenum)) {
strb.append(phonenum);
if (phonenum.startsWith("0")) {
strb.append(" ").append(phonenum.substring(1));
}
} else {
strb.append(Constants.CSKEFU_SYSTEM_NO_DAT);
}
queryBuilder.must(new QueryStringQueryBuilder(strb.toString()).defaultOperator(Operator.OR));
return search(queryBuilder, 0, 1);
}
/**
*
*/
public static PageImpl<UKDataBean> search(BoolQueryBuilder queryBuilder, int p, int ps) {
return search(queryBuilder, null, true, p, ps);
}
/**
*
*/
private static PageImpl<UKDataBean> search(BoolQueryBuilder queryBuilder, MetadataTable metadataTable, boolean loadRef, int p, int ps) {
ESDataExchangeImpl esDataExchange = MainContext.getContext().getBean(ESDataExchangeImpl.class);
return esDataExchange.findPageResult(queryBuilder, metadataTable, PageRequest.of(p, ps, Sort.Direction.ASC, "createtime"), loadRef);
}
/**
*
*/
public static PageImpl<UKDataBean> aggregation(BoolQueryBuilder queryBuilder, String aggField, boolean loadRef, int p, int ps) {
ESDataExchangeImpl esDataExchange = MainContext.getContext().getBean(ESDataExchangeImpl.class);
return esDataExchange.findAllPageAggResult(queryBuilder, aggField, PageRequest.of(p, ps, Sort.Direction.ASC, "createtime"), loadRef, null);
}
/**
*
* @param queryBuilder
* @param metadataTable
* @param loadRef
* @param p
* @param ps
* @return
*/
public static UKDataBean get(UKDataBean dataBean){
ESDataExchangeImpl esDataExchange = MainContext.getContext().getBean(ESDataExchangeImpl.class);
return esDataExchange.getIObjectByPK(dataBean, dataBean.getId());
}
/**
*
*/
public static UKDataBean get(UKDataBean dataBean) {
ESDataExchangeImpl esDataExchange = MainContext.getContext().getBean(ESDataExchangeImpl.class);
return esDataExchange.getIObjectByPK(dataBean);
}
/**
*
* @param queryBuilder
* @param metadataTable
* @param loadRef
* @param p
* @param ps
* @return
*/
public static UKDataBean get(String type, String id){
ESDataExchangeImpl esDataExchange = MainContext.getContext().getBean(ESDataExchangeImpl.class);
return esDataExchange.getIObjectByPK(type, id);
}
/**
*
*/
public static UKDataBean get(String type, String id) {
ESDataExchangeImpl esDataExchange = MainContext.getContext().getBean(ESDataExchangeImpl.class);
return esDataExchange.getIObjectByPK(type, id);
}
/**
*
* @param queryBuilder
* @param metadataTable
* @param loadRef
* @param p
* @param ps
* @return
*/
public static void save(UKDataBean dataBean){
ESDataExchangeImpl esDataExchange = MainContext.getContext().getBean(ESDataExchangeImpl.class);
try {
esDataExchange.saveIObject(dataBean);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
*
*/
public static void save(UKDataBean dataBean) {
ESDataExchangeImpl esDataExchange = MainContext.getContext().getBean(ESDataExchangeImpl.class);
try {
esDataExchange.saveIObject(dataBean);
} catch (Exception e) {
e.printStackTrace();
}
}
}