Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
B
brandkbs2
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
shenjunjie
brandkbs2
Commits
e087d58d
Commit
e087d58d
authored
Apr 30, 2024
by
shenjunjie
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'release' into 'master'
Release See merge request
!497
parents
d54b248f
89341941
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
66 additions
and
23 deletions
+66
-23
src/main/java/com/zhiwei/brandkbs2/es/EsQueryTools.java
+16
-0
src/main/java/com/zhiwei/brandkbs2/service/impl/MarkDataServiceImpl.java
+50
-23
No files found.
src/main/java/com/zhiwei/brandkbs2/es/EsQueryTools.java
View file @
e087d58d
...
...
@@ -211,10 +211,26 @@ public class EsQueryTools {
return
channelBoolQueryBuilder
;
}
/**
* source模糊匹配
* @param sourceKeyword
* @return
*/
public
static
BoolQueryBuilder
assembleSourceQuery
(
String
sourceKeyword
)
{
return
assembleFiledKeywordQuery
(
"source"
,
sourceKeyword
);
}
/**
* source精确匹配
* @param sourceKeyword
* @return
*/
public
static
BoolQueryBuilder
assembleSourceKeywordQuery
(
String
sourceKeyword
)
{
BoolQueryBuilder
queryBuilder
=
QueryBuilders
.
boolQuery
();
queryBuilder
.
should
(
QueryBuilders
.
termQuery
(
"source"
,
sourceKeyword
));
return
queryBuilder
;
}
public
static
void
platformMustNot
(
BoolQueryBuilder
boolQueryBuilder
,
String
...
platformNames
)
{
if
(
null
==
platformNames
)
{
return
;
...
...
src/main/java/com/zhiwei/brandkbs2/service/impl/MarkDataServiceImpl.java
View file @
e087d58d
...
...
@@ -2509,13 +2509,11 @@ public class MarkDataServiceImpl implements MarkDataService {
JSONObject
res
=
new
JSONObject
();
try
{
List
<
JSONObject
>
list
=
new
ArrayList
<>();
List
<
String
>
importantPlatforms
=
new
ArrayList
<>();
String
projectId
=
UserThreadLocal
.
getProjectId
();
dto
.
setProjectId
(
projectId
);
for
(
String
platformNames
:
Arrays
.
asList
(
"微博"
,
"微信"
,
"抖音"
,
"小红书"
,
"今日头条"
,
"网媒"
))
{
importantPlatforms
.
add
(
GlobalPojo
.
getPlatformIdByName
(
platformNames
));
if
(
CollectionUtils
.
isEmpty
(
dto
.
getPlatforms
()
))
{
dto
.
setPlatforms
(
Stream
.
of
(
"微博"
,
"微信"
,
"抖音"
,
"小红书"
,
"今日头条"
,
"网媒"
).
map
(
GlobalPojo:
:
getPlatformIdByName
).
collect
(
Collectors
.
toList
()
));
}
dto
.
setPlatforms
(
importantPlatforms
);
Long
total
=
getYuqingAnalyzeCount
(
dto
);
// 平台聚合
SearchResponse
searchResponse
=
platformAggSearchResponse
(
dto
);
...
...
@@ -2580,8 +2578,10 @@ public class MarkDataServiceImpl implements MarkDataService {
* @throws IOException
*/
private
List
<
JSONObject
>
getPlatformPercentage
(
MarkSearchDTO
dto
)
throws
IOException
{
if
(
CollectionUtils
.
isEmpty
(
dto
.
getPlatforms
()))
{
List
<
String
>
platforms
=
commonService
.
getQbjcPlatform
().
stream
().
map
(
jsonObject
->
jsonObject
.
getString
(
"id"
)).
collect
(
Collectors
.
toList
());
dto
.
setPlatforms
(
platforms
);
}
List
<
JSONObject
>
list
=
new
ArrayList
<>();
// total
dto
.
setProjectId
(
UserThreadLocal
.
getProjectId
());
...
...
@@ -2815,19 +2815,46 @@ public class MarkDataServiceImpl implements MarkDataService {
@Override
public
PageVO
<
MarkFlowEntity
>
getYuqingAnalyzeDetail
(
MarkSearchDTO
dto
)
{
try
{
//设置默认的时间、页码、排序方式等
defaultMarkSearch
(
dto
);
PageVO
<
MarkFlowEntity
>
yuqingMarkList
;
if
(
Objects
.
isNull
(
dto
.
getPlanId
())){
yuqingMarkList
=
getYuqingMarkList
(
dto
);
}
else
{
yuqingMarkList
=
getNonManualMarkList
(
dto
);
String
[]
indexes
=
esClientDao
.
getIndexes
();
BoolQueryBuilder
postFilter
=
yuqingAnalyzeQuery
(
dto
);
FieldSortBuilder
sort
=
null
;
if
(
null
!=
dto
.
getSorter
())
{
for
(
Map
.
Entry
<
String
,
Object
>
entry
:
dto
.
getSorter
().
entrySet
())
{
String
key
=
entry
.
getKey
();
if
(
null
==
entry
.
getValue
()
||
entry
.
getValue
().
toString
().
contains
(
"desc"
))
{
sort
=
SortBuilders
.
fieldSort
(
key
).
order
(
SortOrder
.
DESC
);
}
else
{
sort
=
SortBuilders
.
fieldSort
(
key
).
order
(
SortOrder
.
ASC
);
}
}
}
int
from
=
(
dto
.
getPage
()
-
1
)
*
dto
.
getPageSize
();
int
size
=
dto
.
getPageSize
();
SearchHits
hits
=
esClientDao
.
searchHits
(
indexes
,
postFilter
,
null
,
null
,
sort
,
from
,
size
,
null
);
// 总量
long
total
=
hits
.
getTotalHits
().
value
;
// 消息列表
List
<
MarkFlowEntity
>
flowEntityList
;
if
(
Objects
.
nonNull
(
dto
.
getPlanId
()))
{
flowEntityList
=
getNonManualMarkFlowEntity
(
dto
,
hits
);
}
else
{
flowEntityList
=
getMarkFlowEntity
(
dto
,
hits
);
}
JSONObject
jsonObject
=
new
JSONObject
();
// 高亮关键词
jsonObject
.
put
(
"highlightWord"
,
GlobalPojo
.
HIGHLIGHT_MAP
.
get
(
UserThreadLocal
.
getProjectId
()));
// 列表数据最小mgid
MarkFlowEntity
markFlowEntity
=
yuqingMarkList
.
getList
()
.
stream
()
MarkFlowEntity
markFlowEntity
=
flowEntityList
.
stream
()
.
min
(
Comparator
.
comparingLong
(
entity
->
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
entity
.
getData
())).
getLongValue
(
"mgid"
))).
orElse
(
null
);
yuqingMarkList
.
getInfo
().
put
(
"pageGid"
,
Objects
.
isNull
(
markFlowEntity
)
?
Long
.
MAX_VALUE
:
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
markFlowEntity
.
getData
())).
getLongValue
(
"mgid"
));
return
yuqingMarkList
;
jsonObject
.
put
(
"pageGid"
,
Objects
.
isNull
(
markFlowEntity
)
?
Long
.
MAX_VALUE
:
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
markFlowEntity
.
getData
())).
getLongValue
(
"mgid"
));
return
PageVO
.
createPageVo
(
total
,
dto
.
getPage
(),
dto
.
getPageSize
(),
flowEntityList
).
setInfo
(
jsonObject
);
}
catch
(
Exception
e
){
ExceptionCast
.
cast
(
CommonCodeEnum
.
FAIL
,
"新舆情分析详情页getYuqingAnalyzeDetail异常-"
,
e
);
}
return
PageVO
.
createPageVo
(
0
,
dto
.
getPage
(),
dto
.
getPageSize
(),
Collections
.
emptyList
());
}
@Override
...
...
@@ -3066,17 +3093,15 @@ public class MarkDataServiceImpl implements MarkDataService {
String
[]
indexes
=
esClientDao
.
getIndexes
();
dto
.
setProjectId
(
UserThreadLocal
.
getProjectId
());
// query
if
(
Objects
.
nonNull
(
dto
.
getPlatforms
())
&&
Objects
.
nonNull
(
dto
.
getPlatforms
().
get
(
0
))){
dto
.
setPlatforms
(
Collections
.
singletonList
(
GlobalPojo
.
getPlatformIdByName
(
dto
.
getPlatforms
().
get
(
0
))));
}
BoolQueryBuilder
query
=
yuqingAnalyzeQuery
(
dto
);
if
(
Objects
.
equals
(
"其他"
,
dto
.
getPlatforms
().
get
(
0
))){
List
<
String
>
platforms
=
getPlatformPercentage
(
dto
).
stream
().
map
(
json
->
json
.
getString
(
"platform"
)).
collect
(
Collectors
.
toList
());
List
<
String
>
allPlatforms
=
GlobalPojo
.
PLATFORMS
.
stream
().
map
(
MessagePlatform:
:
getName
).
collect
(
Collectors
.
toList
());
allPlatforms
.
removeAll
(
platforms
);
dto
.
setPlatforms
(
allPlatforms
.
stream
().
map
(
GlobalPojo:
:
getPlatformIdByName
).
collect
(
Collectors
.
toList
()));
query
=
yuqingAnalyzeQuery
(
dto
);
}
else
{
dto
.
setPlatforms
(
Collections
.
singletonList
(
GlobalPojo
.
getPlatformIdByName
(
dto
.
getPlatforms
().
get
(
0
))));
}
BoolQueryBuilder
query
=
yuqingAnalyzeQuery
(
dto
);
// sort
FieldSortBuilder
sort
=
SortBuilders
.
fieldSort
(
"time"
).
order
(
SortOrder
.
DESC
);
// response
...
...
@@ -3190,9 +3215,12 @@ public class MarkDataServiceImpl implements MarkDataService {
private
Map
<
String
,
List
<
LineVO
>>
getPlatformSpreadTendency
(
MarkSearchDTO
dto
)
throws
IOException
{
Map
<
String
,
List
<
LineVO
>>
res
=
new
HashMap
<>(
4
);
// 平台
List
<
String
>
platforms
=
new
ArrayList
<>();
for
(
String
platformNames
:
Arrays
.
asList
(
"微博"
,
"微信"
,
"抖音"
,
"小红书"
))
{
platforms
.
add
(
GlobalPojo
.
getPlatformIdByName
(
platformNames
));
// List<String> platforms = new ArrayList<>();
// for (String platformNames : Arrays.asList("微博", "微信", "抖音", "小红书")) {
// platforms.add(GlobalPojo.getPlatformIdByName(platformNames));
// }
if
(
CollectionUtils
.
isEmpty
(
dto
.
getPlatforms
())){
dto
.
setPlatforms
(
Stream
.
of
(
"微博"
,
"微信"
,
"抖音"
,
"小红书"
).
map
(
GlobalPojo:
:
getPlatformIdByName
).
collect
(
Collectors
.
toList
()));
}
String
[]
indexes
=
esClientDao
.
getIndexes
();
// 聚合请求
...
...
@@ -3204,7 +3232,6 @@ public class MarkDataServiceImpl implements MarkDataService {
}
else
{
daysAggregationBuilder
=
AggregationBuilders
.
dateHistogram
(
"timeAgg"
).
field
(
"time"
).
calendarInterval
(
DateHistogramInterval
.
DAY
);
}
dto
.
setPlatforms
(
platforms
);
// query
BoolQueryBuilder
query
=
yuqingAnalyzeQuery
(
dto
);
// response
...
...
@@ -3334,7 +3361,7 @@ public class MarkDataServiceImpl implements MarkDataService {
// 新增channelEmotion
BoolQueryBuilder
postFilter
=
EsQueryTools
.
assembleCacheMapsQuery
(
projectId
,
contendId
,
dto
.
getPoliticsLevel
(),
dto
.
getField
(),
dto
.
getRegion
(),
dto
.
getMainBodyType
(),
dto
.
getChannelEmotion
());
if
(
Objects
.
nonNull
(
dto
.
getPlanId
())){
postFilter
=
EsQueryTools
.
assembleCacheMapsPlanQuery
(
projectId
,
dto
.
getPlanId
());
postFilter
=
EsQueryTools
.
assembleCacheMapsPlanQuery
(
projectId
,
dto
.
getPlanId
()
,
dto
.
getPoliticsLevel
()
);
}
// time
postFilter
.
must
(
QueryBuilders
.
rangeQuery
(
"time"
).
gte
(
dto
.
getStartTime
()).
lt
(
dto
.
getEndTime
()));
...
...
@@ -3367,7 +3394,7 @@ public class MarkDataServiceImpl implements MarkDataService {
}
// sourceKeyword
if
(
StringUtils
.
isNotEmpty
(
dto
.
getSourceKeyword
()))
{
postFilter
.
must
(
EsQueryTools
.
assembleSourceQuery
(
dto
.
getSourceKeyword
()));
postFilter
.
must
(
EsQueryTools
.
assembleSource
Keyword
Query
(
dto
.
getSourceKeyword
()));
}
// hostKeyword
if
(
StringUtils
.
isNotEmpty
(
dto
.
getHostKeyword
()))
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment