提交 f5446161 作者: 925993793@qq.com

报告数据接口增加 ids 筛选条件

上级 46cfcd1e
......@@ -240,6 +240,7 @@ public class ReportDataController {
}
return Result.OK(list);
}
/**
* 标签分析(按标签分组)
*
......@@ -293,7 +294,6 @@ public class ReportDataController {
}
/**
* 事件对应专题库的资讯分页列表
*
......@@ -375,147 +375,152 @@ public class ReportDataController {
private BoolQueryBuilder buildQuery(SearchCondition searchCondition) {
//创建查询对象
BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();
String subjectId = searchCondition.getSubjectId();
boolQuery.must(QueryBuilders.termsQuery("subjectId.keyword", subjectId));
String searchScope = searchCondition.getSearchScope();
String searchWord = searchCondition.getSearchWord();
if (StringUtils.isNotEmpty(searchWord)) {
if ("all".equalsIgnoreCase(searchScope)) {
boolQuery.must(QueryBuilders.multiMatchQuery(searchWord, "title", "content", "origin"));
} else {
boolQuery.must(QueryBuilders.matchPhraseQuery(searchScope, searchWord));
List<String> ids = searchCondition.getIds();
if (CollectionUtils.isNotEmpty(ids)) {
boolQuery.must(QueryBuilders.termsQuery("id", ids));
} else {
String subjectId = searchCondition.getSubjectId();
boolQuery.must(QueryBuilders.termsQuery("subjectId.keyword", subjectId));
String searchScope = searchCondition.getSearchScope();
String searchWord = searchCondition.getSearchWord();
if (StringUtils.isNotEmpty(searchWord)) {
if ("all".equalsIgnoreCase(searchScope)) {
boolQuery.must(QueryBuilders.multiMatchQuery(searchWord, "title", "content", "origin"));
} else {
boolQuery.must(QueryBuilders.matchPhraseQuery(searchScope, searchWord));
}
}
}
//高级查询数据处理
BoolQueryBuilder superQuery = buildSuperQuery(searchCondition.getSuperQueryMatchType(), searchCondition.getSuperQueryParams());
if (superQuery != null) {
boolQuery.must(superQuery);
}
//审核状态
Integer status = searchCondition.getAuditStatus();
if (status != null) {
if (status == 1) {
searchCondition.setCheckStatus(1);
} else if (status == 2) {
searchCondition.setCheckStatus(0);
searchCondition.setDeleteFlag(0);
} else if (status == 3) {
searchCondition.setCheckStatus(3);
} else if (status == 4) {
searchCondition.setDeleteFlag(1);
} else if (status == 5) {
searchCondition.setIsFreeCheck(1);
//高级查询数据处理
BoolQueryBuilder superQuery = buildSuperQuery(searchCondition.getSuperQueryMatchType(), searchCondition.getSuperQueryParams());
if (superQuery != null) {
boolQuery.must(superQuery);
}
}
Integer checkStatus = searchCondition.getCheckStatus();
Integer deleteFlag = searchCondition.getDeleteFlag();
if (checkStatus != null) {
if (checkStatus == 0) {
BoolQueryBuilder checkStatusBoolQuery = QueryBuilders.boolQuery();
checkStatusBoolQuery.should(QueryBuilders.termQuery("checkStatus", checkStatus));
checkStatusBoolQuery.should(QueryBuilders.boolQuery().mustNot(QueryBuilders.existsQuery("checkStatus")));
boolQuery.must(checkStatusBoolQuery);
//审核状态
Integer status = searchCondition.getAuditStatus();
if (status != null) {
if (status == 1) {
searchCondition.setCheckStatus(1);
} else if (status == 2) {
searchCondition.setCheckStatus(0);
searchCondition.setDeleteFlag(0);
} else if (status == 3) {
searchCondition.setCheckStatus(3);
} else if (status == 4) {
searchCondition.setDeleteFlag(1);
} else if (status == 5) {
searchCondition.setIsFreeCheck(1);
}
}
Integer checkStatus = searchCondition.getCheckStatus();
Integer deleteFlag = searchCondition.getDeleteFlag();
if (checkStatus != null) {
if (checkStatus == 0) {
BoolQueryBuilder checkStatusBoolQuery = QueryBuilders.boolQuery();
checkStatusBoolQuery.should(QueryBuilders.termQuery("checkStatus", checkStatus));
checkStatusBoolQuery.should(QueryBuilders.boolQuery().mustNot(QueryBuilders.existsQuery("checkStatus")));
boolQuery.must(checkStatusBoolQuery);
} else {
boolQuery.must(QueryBuilders.termQuery("checkStatus", checkStatus));
}
} else {
boolQuery.must(QueryBuilders.termQuery("checkStatus", checkStatus));
if (deleteFlag == null) {
deleteFlag = 0;
}
}
} else {
if (deleteFlag == null) {
deleteFlag = 0;
//删除状态查询
if (deleteFlag != null) {
if (deleteFlag != 0) {
boolQuery.must(QueryBuilders.termQuery("deleteFlag", "1"));
} else {
boolQuery.mustNot(QueryBuilders.termQuery("deleteFlag", "1"));
}
}
}
//删除状态查询
if (deleteFlag != null) {
if (deleteFlag != 0) {
boolQuery.must(QueryBuilders.termQuery("deleteFlag", "1"));
//免审核状态
if (searchCondition.getIsFreeCheck() != null) {
boolQuery.must(QueryBuilders.termQuery("isFreeCheck", searchCondition.getClassificationType()));
}
boolQuery.mustNot(QueryBuilders.matchQuery("type", "video"));
//专题库类别筛选
if (CollectionUtils.isNotEmpty(searchCondition.getClassificationType())) {
boolQuery.must(QueryBuilders.termsQuery("classificationType", searchCondition.getClassificationType()));
}
//是否原创
if (StringUtils.isNotEmpty(searchCondition.getOriginality())) {
boolQuery.must(QueryBuilders.matchQuery("originality", searchCondition.getOriginality()));
}
//得分范围筛选
Integer minScore = searchCondition.getMinScore();
if (minScore != null) {
boolQuery.filter(QueryBuilders.rangeQuery("score").gte(minScore));
}
Integer maxScore = searchCondition.getMaxScore();
if (maxScore != null) {
boolQuery.filter(QueryBuilders.rangeQuery("score").lte(maxScore));
}
//时间过滤筛选-前端传参
if (searchCondition.getStartTime() != null) {
boolQuery.filter(QueryBuilders.rangeQuery("publishDate").gte(EsDateUtil.esFieldDateFormat(DateUtil.dateToString(searchCondition.getStartTime()))));
}
if (searchCondition.getEndTime() != null) {
boolQuery.filter(QueryBuilders.rangeQuery("publishDate").lte(EsDateUtil.esFieldDateFormat(DateUtil.dateToString(searchCondition.getEndTime()))));
} else {
boolQuery.mustNot(QueryBuilders.termQuery("deleteFlag", "1"));
boolQuery.filter(QueryBuilders.rangeQuery("publishDate").lte(EsDateUtil.esFieldDateFormat(DateUtil.dateToString(new Date()))));
}
}
//免审核状态
if (searchCondition.getIsFreeCheck() != null) {
boolQuery.must(QueryBuilders.termQuery("isFreeCheck", searchCondition.getClassificationType()));
}
boolQuery.mustNot(QueryBuilders.matchQuery("type", "video"));
//专题库类别筛选
if (CollectionUtils.isNotEmpty(searchCondition.getClassificationType())) {
boolQuery.must(QueryBuilders.termsQuery("classificationType", searchCondition.getClassificationType()));
}
//是否原创
if (StringUtils.isNotEmpty(searchCondition.getOriginality())) {
boolQuery.must(QueryBuilders.matchQuery("originality", searchCondition.getOriginality()));
}
//得分范围筛选
Integer minScore = searchCondition.getMinScore();
if (minScore != null) {
boolQuery.filter(QueryBuilders.rangeQuery("score").gte(minScore));
}
Integer maxScore = searchCondition.getMaxScore();
if (maxScore != null) {
boolQuery.filter(QueryBuilders.rangeQuery("score").lte(maxScore));
}
//时间过滤筛选-前端传参
if (searchCondition.getStartTime() != null) {
boolQuery.filter(QueryBuilders.rangeQuery("publishDate").gte(EsDateUtil.esFieldDateFormat(DateUtil.dateToString(searchCondition.getStartTime()))));
}
if (searchCondition.getEndTime() != null) {
boolQuery.filter(QueryBuilders.rangeQuery("publishDate").lte(EsDateUtil.esFieldDateFormat(DateUtil.dateToString(searchCondition.getEndTime()))));
} else {
boolQuery.filter(QueryBuilders.rangeQuery("publishDate").lte(EsDateUtil.esFieldDateFormat(DateUtil.dateToString(new Date()))));
}
//组合标签查询(不同类标签之间是与的关系,同一类标签之间是或的关系),示例: "a1,a2;c1,c2;e1,e2"
String composeSearchLabelIds = searchCondition.getComposeSearchLabelIds();
if (StringUtils.isNotEmpty(composeSearchLabelIds)) {
//分号隔开的标签查询用且的关系
String[] split = composeSearchLabelIds.split(";");
for (String items : split) {
List<String> ids = Arrays.asList(items.split(","));
NestedQueryBuilder nestedQueryBuilder = QueryBuilders
.nestedQuery("labels", QueryBuilders.termsQuery("labels.relationId", ids), ScoreMode.None);
boolQuery.must(nestedQueryBuilder);
//组合标签查询(不同类标签之间是与的关系,同一类标签之间是或的关系),示例: "a1,a2;c1,c2;e1,e2"
String composeSearchLabelIds = searchCondition.getComposeSearchLabelIds();
if (StringUtils.isNotEmpty(composeSearchLabelIds)) {
//分号隔开的标签查询用且的关系
String[] split = composeSearchLabelIds.split(";");
for (String items : split) {
List<String> labelIds = Arrays.asList(items.split(","));
NestedQueryBuilder nestedQueryBuilder = QueryBuilders
.nestedQuery("labels", QueryBuilders.termsQuery("labels.relationId", labelIds), ScoreMode.None);
boolQuery.must(nestedQueryBuilder);
}
}
}
//关联标签id集合
List<String> labelIds = searchCondition.getLabelIds();
if (CollectionUtils.isNotEmpty(labelIds)) {
Set<String> relationIdSet = new HashSet<>(labelIds);
TermsQueryBuilder relationIdQuery = QueryBuilders.termsQuery("labels.relationId", relationIdSet);
boolQuery.must(QueryBuilders.nestedQuery("labels", relationIdQuery, ScoreMode.None));
}
//正面标签
String tendencyLabelId = searchCondition.getTendencyLabelId();
if (StringUtils.isNotBlank(tendencyLabelId)) {
TermQueryBuilder relationIdQuery = QueryBuilders.termQuery("labels.relationId", tendencyLabelId);
boolQuery.must(QueryBuilders.nestedQuery("labels", relationIdQuery, ScoreMode.None));
}
//地域标签
List<String> areaLabelIds = searchCondition.getAreaLabelIds();
if (CollectionUtils.isNotEmpty(areaLabelIds)) {
Set<String> relationIdSet = new HashSet<>(areaLabelIds);
TermsQueryBuilder relationIdQuery = QueryBuilders.termsQuery("labels.relationId", relationIdSet);
boolQuery.must(QueryBuilders.nestedQuery("labels", relationIdQuery, ScoreMode.None));
}
//企业标签
List<String> enterpriseLabelTypeIds = searchCondition.getEnterpriseLabelTypeIds();
List<String> socialCreditCodeList = searchCondition.getSocialCreditCodeList();
if (CollectionUtils.isNotEmpty(socialCreditCodeList) || CollectionUtils.isNotEmpty(enterpriseLabelTypeIds)) {
if (CollectionUtils.isEmpty(socialCreditCodeList)) {
socialCreditCodeList = commonService.codesByLabels(enterpriseLabelTypeIds);
//关联标签id集合
List<String> labelIds = searchCondition.getLabelIds();
if (CollectionUtils.isNotEmpty(labelIds)) {
Set<String> relationIdSet = new HashSet<>(labelIds);
TermsQueryBuilder relationIdQuery = QueryBuilders.termsQuery("labels.relationId", relationIdSet);
boolQuery.must(QueryBuilders.nestedQuery("labels", relationIdQuery, ScoreMode.None));
}
//正面标签
String tendencyLabelId = searchCondition.getTendencyLabelId();
if (StringUtils.isNotBlank(tendencyLabelId)) {
TermQueryBuilder relationIdQuery = QueryBuilders.termQuery("labels.relationId", tendencyLabelId);
boolQuery.must(QueryBuilders.nestedQuery("labels", relationIdQuery, ScoreMode.None));
}
//地域标签
List<String> areaLabelIds = searchCondition.getAreaLabelIds();
if (CollectionUtils.isNotEmpty(areaLabelIds)) {
Set<String> relationIdSet = new HashSet<>(areaLabelIds);
TermsQueryBuilder relationIdQuery = QueryBuilders.termsQuery("labels.relationId", relationIdSet);
boolQuery.must(QueryBuilders.nestedQuery("labels", relationIdQuery, ScoreMode.None));
}
//企业标签
List<String> enterpriseLabelTypeIds = searchCondition.getEnterpriseLabelTypeIds();
List<String> socialCreditCodeList = searchCondition.getSocialCreditCodeList();
if (CollectionUtils.isNotEmpty(socialCreditCodeList) || CollectionUtils.isNotEmpty(enterpriseLabelTypeIds)) {
if (CollectionUtils.isEmpty(socialCreditCodeList)) {
socialCreditCodeList = commonService.codesByLabels(enterpriseLabelTypeIds);
}
Set<String> codeSet = new HashSet<>(socialCreditCodeList);
TermsQueryBuilder relationIdQuery = QueryBuilders.termsQuery("labels.relationId", codeSet);
boolQuery.must(QueryBuilders.nestedQuery("labels", relationIdQuery, ScoreMode.None));
}
//信息源标签
List<Label> labelList = searchCondition.getInfoSourceLabelList();
if (CollectionUtils.isNotEmpty(labelList)) {
List<String> collect = labelList.stream().map(label -> label.getLabelMark() + "-" + label.getRelationId()).collect(Collectors.toList());
TermsQueryBuilder relationIdQuery = QueryBuilders.termsQuery("labels.relationId", collect);
boolQuery.must(QueryBuilders.nestedQuery("labels", relationIdQuery, ScoreMode.None));
}
Set<String> codeSet = new HashSet<>(socialCreditCodeList);
TermsQueryBuilder relationIdQuery = QueryBuilders.termsQuery("labels.relationId", codeSet);
boolQuery.must(QueryBuilders.nestedQuery("labels", relationIdQuery, ScoreMode.None));
}
//信息源标签
List<Label> labelList = searchCondition.getInfoSourceLabelList();
if (CollectionUtils.isNotEmpty(labelList)) {
List<String> collect = labelList.stream().map(label -> label.getLabelMark() + "-" + label.getRelationId()).collect(Collectors.toList());
TermsQueryBuilder relationIdQuery = QueryBuilders.termsQuery("labels.relationId", collect);
boolQuery.must(QueryBuilders.nestedQuery("labels", relationIdQuery, ScoreMode.None));
}
return boolQuery;
}
private String[] getIndex(String subjectId){
private String[] getIndex(String subjectId) {
List<String> subjectIdList = new ArrayList<>();
subjectIdList.add(subjectId);
String minDate = subjectService.getMinCreateTime(subjectIdList);
......
......@@ -11,6 +11,9 @@ import java.util.List;
@Data
public class SearchCondition {
//资讯id集合,和下面所有查询条件互斥
private List<String> ids;
//专题id
@FieldDescription(value = "专题id")
private String subjectId;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论