提交 f5446161 作者: 925993793@qq.com

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

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