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:
parent
f17fa7a838
commit
a3e5b1660e
@ -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());
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user