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
6744d566
Commit
6744d566
authored
May 08, 2024
by
shenjunjie
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'feature' into 'dev'
Feature See merge request
!500
parents
b8dea545
e865e06d
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
183 additions
and
41 deletions
+183
-41
src/main/java/com/zhiwei/brandkbs2/controller/admin/ProjectController.java
+6
-0
src/main/java/com/zhiwei/brandkbs2/controller/app/AppArticleController.java
+2
-1
src/main/java/com/zhiwei/brandkbs2/es/EsQueryTools.java
+16
-0
src/main/java/com/zhiwei/brandkbs2/pojo/Project.java
+5
-0
src/main/java/com/zhiwei/brandkbs2/service/MarkDataService.java
+14
-0
src/main/java/com/zhiwei/brandkbs2/service/ProjectService.java
+6
-0
src/main/java/com/zhiwei/brandkbs2/service/impl/MarkDataServiceImpl.java
+78
-40
src/main/java/com/zhiwei/brandkbs2/service/impl/ProjectServiceImpl.java
+56
-0
No files found.
src/main/java/com/zhiwei/brandkbs2/controller/admin/ProjectController.java
View file @
6744d566
...
@@ -308,4 +308,10 @@ public class ProjectController extends BaseController {
...
@@ -308,4 +308,10 @@ public class ProjectController extends BaseController {
ProjectService
.
adjustNonManualProjectDataBalance
(
json
.
getString
(
"projectId"
),
json
.
getInteger
(
"count"
));
ProjectService
.
adjustNonManualProjectDataBalance
(
json
.
getString
(
"projectId"
),
json
.
getInteger
(
"count"
));
return
ResponseResult
.
success
();
return
ResponseResult
.
success
();
}
}
@ApiOperation
(
"非人工项目-数据源切换"
)
@PutMapping
(
"/non-manual/data-source/{id}"
)
public
ResponseResult
switchExternalDataSource
(
@PathVariable
String
id
){
return
ProjectService
.
switchExternalDataSource
(
id
);
}
}
}
src/main/java/com/zhiwei/brandkbs2/controller/app/AppArticleController.java
View file @
6744d566
...
@@ -259,7 +259,7 @@ public class AppArticleController extends BaseController {
...
@@ -259,7 +259,7 @@ public class AppArticleController extends BaseController {
@ApiOperation
(
"舆情简报-全部报告列表"
)
@ApiOperation
(
"舆情简报-全部报告列表"
)
@GetMapping
(
"/report/list"
)
@GetMapping
(
"/report/list"
)
@LogRecord
(
description
=
"舆情库-
舆情
简报"
)
@LogRecord
(
description
=
"舆情库-
其他
简报"
)
public
ResponseResult
findReportList
(
ReportSearchDTO
reportSearch
)
{
public
ResponseResult
findReportList
(
ReportSearchDTO
reportSearch
)
{
return
ResponseResult
.
success
(
reportService
.
findReportList
(
reportSearch
));
return
ResponseResult
.
success
(
reportService
.
findReportList
(
reportSearch
));
}
}
...
@@ -540,6 +540,7 @@ public class AppArticleController extends BaseController {
...
@@ -540,6 +540,7 @@ public class AppArticleController extends BaseController {
@ApiOperation
(
"舆情简报-每日一报列表"
)
@ApiOperation
(
"舆情简报-每日一报列表"
)
@GetMapping
(
"/daily-report/list"
)
@GetMapping
(
"/daily-report/list"
)
@LogRecord
(
description
=
"舆情简报-每日一报"
)
public
ResponseResult
getDailyReportList
(
@RequestParam
(
value
=
"page"
,
defaultValue
=
"1"
)
Integer
page
,
public
ResponseResult
getDailyReportList
(
@RequestParam
(
value
=
"page"
,
defaultValue
=
"1"
)
Integer
page
,
@RequestParam
(
value
=
"pageSize"
,
defaultValue
=
"10"
)
Integer
pageSize
)
{
@RequestParam
(
value
=
"pageSize"
,
defaultValue
=
"10"
)
Integer
pageSize
)
{
return
ResponseResult
.
success
(
markDataService
.
getDailyReportList
(
page
,
pageSize
));
return
ResponseResult
.
success
(
markDataService
.
getDailyReportList
(
page
,
pageSize
));
...
...
src/main/java/com/zhiwei/brandkbs2/es/EsQueryTools.java
View file @
6744d566
...
@@ -211,10 +211,26 @@ public class EsQueryTools {
...
@@ -211,10 +211,26 @@ public class EsQueryTools {
return
channelBoolQueryBuilder
;
return
channelBoolQueryBuilder
;
}
}
/**
* source模糊匹配
* @param sourceKeyword
* @return
*/
public
static
BoolQueryBuilder
assembleSourceQuery
(
String
sourceKeyword
)
{
public
static
BoolQueryBuilder
assembleSourceQuery
(
String
sourceKeyword
)
{
return
assembleFiledKeywordQuery
(
"source"
,
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
)
{
public
static
void
platformMustNot
(
BoolQueryBuilder
boolQueryBuilder
,
String
...
platformNames
)
{
if
(
null
==
platformNames
)
{
if
(
null
==
platformNames
)
{
return
;
return
;
...
...
src/main/java/com/zhiwei/brandkbs2/pojo/Project.java
View file @
6744d566
...
@@ -111,6 +111,11 @@ public class Project extends AbstractProject {
...
@@ -111,6 +111,11 @@ public class Project extends AbstractProject {
private
int
dataBalance
;
private
int
dataBalance
;
/**
/**
* 仅非人工项目,数据源:true:商业数据(星光)|false:内部数据(底层数据)
*/
private
Boolean
externalDataSource
;
/**
* 项目主品牌配置信息转换
* 项目主品牌配置信息转换
*
*
* @return 项目对象
* @return 项目对象
...
...
src/main/java/com/zhiwei/brandkbs2/service/MarkDataService.java
View file @
6744d566
...
@@ -400,12 +400,26 @@ public interface MarkDataService {
...
@@ -400,12 +400,26 @@ public interface MarkDataService {
ResponseResult
addNonManualProjectPlan
(
NonManualProjectPlanDTO
dto
);
ResponseResult
addNonManualProjectPlan
(
NonManualProjectPlanDTO
dto
);
/**
/**
* 添加非人工项目方案订阅任务
* @param dto
* @return
*/
String
addIStarShineSubjectTask
(
NonManualProjectPlanDTO
dto
);
/**
* 删除非人工项目方案
* 删除非人工项目方案
* @param id
* @param id
*/
*/
ResponseResult
deleteNonManualProjectPlan
(
String
id
);
ResponseResult
deleteNonManualProjectPlan
(
String
id
);
/**
/**
* 删除非人工项目方案的数据订阅任务
* @param id
* @return
*/
ResponseResult
deleteIStarShineSubjectTask
(
String
id
);
/**
* 获取非人工项目方案详情
* 获取非人工项目方案详情
* @param id
* @param id
*/
*/
...
...
src/main/java/com/zhiwei/brandkbs2/service/ProjectService.java
View file @
6744d566
...
@@ -210,4 +210,10 @@ public interface ProjectService {
...
@@ -210,4 +210,10 @@ public interface ProjectService {
* @return
* @return
*/
*/
ResponseResult
getUserProjectPageData
(
String
userId
,
String
keyword
,
int
page
,
int
pageSize
);
ResponseResult
getUserProjectPageData
(
String
userId
,
String
keyword
,
int
page
,
int
pageSize
);
/**
* 切换非人工项目数据源
* @param projectId
*/
ResponseResult
switchExternalDataSource
(
String
projectId
);
}
}
src/main/java/com/zhiwei/brandkbs2/service/impl/MarkDataServiceImpl.java
View file @
6744d566
...
@@ -1900,13 +1900,21 @@ public class MarkDataServiceImpl implements MarkDataService {
...
@@ -1900,13 +1900,21 @@ public class MarkDataServiceImpl implements MarkDataService {
@Override
@Override
public
ResponseResult
deleteNonManualProjectPlan
(
String
id
)
{
public
ResponseResult
deleteNonManualProjectPlan
(
String
id
)
{
ResponseResult
responseResult
=
deleteIStarShineSubjectTask
(
id
);
if
(
responseResult
.
isStatus
()){
nonManualProjectPlanDao
.
deleteOneById
(
id
);
}
return
responseResult
;
}
@Override
public
ResponseResult
deleteIStarShineSubjectTask
(
String
id
)
{
String
iStarShineSubjectTaskId
=
nonManualProjectPlanDao
.
findOneById
(
id
).
getIStarShineSubjectTaskId
();
String
iStarShineSubjectTaskId
=
nonManualProjectPlanDao
.
findOneById
(
id
).
getIStarShineSubjectTaskId
();
JSONObject
body
=
restTemplate
.
getForEntity
(
deleteIStarShineSubjectTaskUrl
,
JSONObject
.
class
,
iStarShineSubjectTaskId
,
UserThreadLocal
.
getNickname
()).
getBody
();
JSONObject
body
=
restTemplate
.
getForEntity
(
deleteIStarShineSubjectTaskUrl
,
JSONObject
.
class
,
iStarShineSubjectTaskId
,
UserThreadLocal
.
getNickname
()).
getBody
();
if
(
Objects
.
isNull
(
body
)
||
body
.
isEmpty
()
||
!
body
.
getBoolean
(
"status"
)){
if
(
Objects
.
isNull
(
body
)
||
body
.
isEmpty
()
||
!
body
.
getBoolean
(
"status"
)){
log
.
info
(
id
+
"-删除快搜订阅任务失败,接口返回信息-"
+
body
);
log
.
error
(
id
+
"-删除快搜订阅任务失败,接口返回信息-"
+
body
);
return
ResponseResult
.
failure
(
"删除失败"
);
return
ResponseResult
.
failure
(
"删除失败"
);
}
}
nonManualProjectPlanDao
.
deleteOneById
(
id
);
return
ResponseResult
.
success
();
return
ResponseResult
.
success
();
}
}
...
@@ -1935,7 +1943,8 @@ public class MarkDataServiceImpl implements MarkDataService {
...
@@ -1935,7 +1943,8 @@ public class MarkDataServiceImpl implements MarkDataService {
* @param dto
* @param dto
* @return
* @return
*/
*/
private
String
addIStarShineSubjectTask
(
NonManualProjectPlanDTO
dto
){
@Override
public
String
addIStarShineSubjectTask
(
NonManualProjectPlanDTO
dto
){
JSONObject
param
=
new
JSONObject
();
JSONObject
param
=
new
JSONObject
();
param
.
put
(
"creatUser"
,
UserThreadLocal
.
getNickname
());
param
.
put
(
"creatUser"
,
UserThreadLocal
.
getNickname
());
param
.
put
(
"groupId"
,
UserThreadLocal
.
getProjectId
());
param
.
put
(
"groupId"
,
UserThreadLocal
.
getProjectId
());
...
@@ -1954,12 +1963,12 @@ public class MarkDataServiceImpl implements MarkDataService {
...
@@ -1954,12 +1963,12 @@ public class MarkDataServiceImpl implements MarkDataService {
HttpEntity
<
String
>
request
=
new
HttpEntity
<>(
param
.
toJSONString
(),
httpHeaders
);
HttpEntity
<
String
>
request
=
new
HttpEntity
<>(
param
.
toJSONString
(),
httpHeaders
);
JSONObject
body
=
restTemplate
.
postForEntity
(
addIStarShineSubjectTaskUrl
,
request
,
JSONObject
.
class
).
getBody
();
JSONObject
body
=
restTemplate
.
postForEntity
(
addIStarShineSubjectTaskUrl
,
request
,
JSONObject
.
class
).
getBody
();
if
(
Objects
.
isNull
(
body
)
||
body
.
isEmpty
()
||
!
body
.
getBoolean
(
"status"
)){
if
(
Objects
.
isNull
(
body
)
||
body
.
isEmpty
()
||
!
body
.
getBoolean
(
"status"
)){
log
.
info
(
JSONObject
.
toJSONString
(
dto
)
+
"-添加快搜订阅任务失败"
+
body
);
log
.
error
(
JSONObject
.
toJSONString
(
dto
)
+
"-添加快搜订阅任务失败"
+
body
);
return
null
;
return
null
;
}
}
JSONObject
data
=
body
.
getJSONObject
(
"data"
);
JSONObject
data
=
body
.
getJSONObject
(
"data"
);
if
(
Objects
.
isNull
(
data
)
||
data
.
isEmpty
()){
if
(
Objects
.
isNull
(
data
)
||
data
.
isEmpty
()){
log
.
info
(
JSONObject
.
toJSONString
(
dto
)
+
"-添加快搜订阅任务失败"
+
body
);
log
.
error
(
JSONObject
.
toJSONString
(
dto
)
+
"-添加快搜订阅任务失败"
+
body
);
return
null
;
return
null
;
}
}
return
data
.
getString
(
"id"
);
return
data
.
getString
(
"id"
);
...
@@ -2509,13 +2518,11 @@ public class MarkDataServiceImpl implements MarkDataService {
...
@@ -2509,13 +2518,11 @@ public class MarkDataServiceImpl implements MarkDataService {
JSONObject
res
=
new
JSONObject
();
JSONObject
res
=
new
JSONObject
();
try
{
try
{
List
<
JSONObject
>
list
=
new
ArrayList
<>();
List
<
JSONObject
>
list
=
new
ArrayList
<>();
List
<
String
>
importantPlatforms
=
new
ArrayList
<>();
String
projectId
=
UserThreadLocal
.
getProjectId
();
String
projectId
=
UserThreadLocal
.
getProjectId
();
dto
.
setProjectId
(
projectId
);
dto
.
setProjectId
(
projectId
);
for
(
String
platformNames
:
Arrays
.
asList
(
"微博"
,
"微信"
,
"抖音"
,
"小红书"
,
"今日头条"
,
"网媒"
))
{
if
(
CollectionUtils
.
isEmpty
(
dto
.
getPlatforms
()
))
{
importantPlatforms
.
add
(
GlobalPojo
.
getPlatformIdByName
(
platformNames
));
dto
.
setPlatforms
(
Stream
.
of
(
"微博"
,
"微信"
,
"抖音"
,
"小红书"
,
"今日头条"
,
"网媒"
).
map
(
GlobalPojo:
:
getPlatformIdByName
).
collect
(
Collectors
.
toList
()
));
}
}
dto
.
setPlatforms
(
importantPlatforms
);
Long
total
=
getYuqingAnalyzeCount
(
dto
);
Long
total
=
getYuqingAnalyzeCount
(
dto
);
// 平台聚合
// 平台聚合
SearchResponse
searchResponse
=
platformAggSearchResponse
(
dto
);
SearchResponse
searchResponse
=
platformAggSearchResponse
(
dto
);
...
@@ -2580,8 +2587,10 @@ public class MarkDataServiceImpl implements MarkDataService {
...
@@ -2580,8 +2587,10 @@ public class MarkDataServiceImpl implements MarkDataService {
* @throws IOException
* @throws IOException
*/
*/
private
List
<
JSONObject
>
getPlatformPercentage
(
MarkSearchDTO
dto
)
throws
IOException
{
private
List
<
JSONObject
>
getPlatformPercentage
(
MarkSearchDTO
dto
)
throws
IOException
{
List
<
String
>
platforms
=
commonService
.
getQbjcPlatform
().
stream
().
map
(
jsonObject
->
jsonObject
.
getString
(
"id"
)).
collect
(
Collectors
.
toList
());
if
(
CollectionUtils
.
isEmpty
(
dto
.
getPlatforms
()))
{
dto
.
setPlatforms
(
platforms
);
List
<
String
>
platforms
=
commonService
.
getQbjcPlatform
().
stream
().
map
(
jsonObject
->
jsonObject
.
getString
(
"id"
)).
collect
(
Collectors
.
toList
());
dto
.
setPlatforms
(
platforms
);
}
List
<
JSONObject
>
list
=
new
ArrayList
<>();
List
<
JSONObject
>
list
=
new
ArrayList
<>();
// total
// total
dto
.
setProjectId
(
UserThreadLocal
.
getProjectId
());
dto
.
setProjectId
(
UserThreadLocal
.
getProjectId
());
...
@@ -2774,7 +2783,7 @@ public class MarkDataServiceImpl implements MarkDataService {
...
@@ -2774,7 +2783,7 @@ public class MarkDataServiceImpl implements MarkDataService {
}
catch
(
Exception
e
){
}
catch
(
Exception
e
){
ExceptionCast
.
cast
(
CommonCodeEnum
.
FAIL
,
"新舆情分析getActiveChannels异常-"
,
e
);
ExceptionCast
.
cast
(
CommonCodeEnum
.
FAIL
,
"新舆情分析getActiveChannels异常-"
,
e
);
}
}
return
list
.
stream
().
limit
(
20
).
collect
(
Collectors
.
toList
());
return
list
.
stream
().
limit
(
size
).
collect
(
Collectors
.
toList
());
}
}
@Override
@Override
...
@@ -2815,19 +2824,46 @@ public class MarkDataServiceImpl implements MarkDataService {
...
@@ -2815,19 +2824,46 @@ public class MarkDataServiceImpl implements MarkDataService {
@Override
@Override
public
PageVO
<
MarkFlowEntity
>
getYuqingAnalyzeDetail
(
MarkSearchDTO
dto
)
{
public
PageVO
<
MarkFlowEntity
>
getYuqingAnalyzeDetail
(
MarkSearchDTO
dto
)
{
//设置默认的时间、页码、排序方式等
try
{
defaultMarkSearch
(
dto
);
//设置默认的时间、页码、排序方式等
PageVO
<
MarkFlowEntity
>
yuqingMarkList
;
defaultMarkSearch
(
dto
);
if
(
Objects
.
isNull
(
dto
.
getPlanId
())){
String
[]
indexes
=
esClientDao
.
getIndexes
();
yuqingMarkList
=
getYuqingMarkList
(
dto
);
BoolQueryBuilder
postFilter
=
yuqingAnalyzeQuery
(
dto
);
}
else
{
FieldSortBuilder
sort
=
null
;
yuqingMarkList
=
getNonManualMarkList
(
dto
);
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
=
flowEntityList
.
stream
()
.
min
(
Comparator
.
comparingLong
(
entity
->
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
entity
.
getData
())).
getLongValue
(
"mgid"
))).
orElse
(
null
);
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
);
}
}
// 列表数据最小mgid
return
PageVO
.
createPageVo
(
0
,
dto
.
getPage
(),
dto
.
getPageSize
(),
Collections
.
emptyList
());
MarkFlowEntity
markFlowEntity
=
yuqingMarkList
.
getList
().
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
;
}
}
@Override
@Override
...
@@ -2939,10 +2975,11 @@ public class MarkDataServiceImpl implements MarkDataService {
...
@@ -2939,10 +2975,11 @@ public class MarkDataServiceImpl implements MarkDataService {
String
projectId
=
UserThreadLocal
.
getProjectId
();
String
projectId
=
UserThreadLocal
.
getProjectId
();
dto
.
setProjectId
(
projectId
);
dto
.
setProjectId
(
projectId
);
String
linkedGroupId
=
projectService
.
getProjectById
(
projectId
).
getBrandLinkedGroupId
();
String
linkedGroupId
=
projectService
.
getProjectById
(
projectId
).
getBrandLinkedGroupId
();
String
aggTitle
=
dto
.
getAggTitle
();
CompletableFuture
<
JSONObject
>
firstArticleFuture
=
CompletableFuture
.
supplyAsync
(()
->
{
CompletableFuture
<
JSONObject
>
firstArticleFuture
=
CompletableFuture
.
supplyAsync
(()
->
{
try
{
try
{
// 最早发布
// 最早发布
BaseMap
firstArticle
=
getAnalyzeFirstArticle
(
dto
,
null
);
BaseMap
firstArticle
=
getAnalyzeFirstArticle
(
dto
,
aggTitle
);
// 匹配重要渠道
// 匹配重要渠道
JSONObject
firstSensitiveChannel
=
channelService
.
matchYuQingSensitiveChannel
(
linkedGroupId
,
firstArticle
.
getSource
());
JSONObject
firstSensitiveChannel
=
channelService
.
matchYuQingSensitiveChannel
(
linkedGroupId
,
firstArticle
.
getSource
());
JSONObject
firstArticleJson
=
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
firstArticle
));
JSONObject
firstArticleJson
=
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
firstArticle
));
...
@@ -2955,7 +2992,7 @@ public class MarkDataServiceImpl implements MarkDataService {
...
@@ -2955,7 +2992,7 @@ public class MarkDataServiceImpl implements MarkDataService {
CompletableFuture
<
JSONObject
>
lastArticleFuture
=
CompletableFuture
.
supplyAsync
(()
->
{
CompletableFuture
<
JSONObject
>
lastArticleFuture
=
CompletableFuture
.
supplyAsync
(()
->
{
try
{
try
{
// 最新发布
// 最新发布
BaseMap
lastArticle
=
getAnalyzeLastArticle
(
dto
,
null
);
BaseMap
lastArticle
=
getAnalyzeLastArticle
(
dto
,
aggTitle
);
// 匹配重要渠道
// 匹配重要渠道
JSONObject
lastSensitiveChannel
=
channelService
.
matchYuQingSensitiveChannel
(
linkedGroupId
,
lastArticle
.
getSource
());
JSONObject
lastSensitiveChannel
=
channelService
.
matchYuQingSensitiveChannel
(
linkedGroupId
,
lastArticle
.
getSource
());
JSONObject
lastArticleJson
=
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
lastArticle
));
JSONObject
lastArticleJson
=
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
lastArticle
));
...
@@ -2993,7 +3030,7 @@ public class MarkDataServiceImpl implements MarkDataService {
...
@@ -2993,7 +3030,7 @@ public class MarkDataServiceImpl implements MarkDataService {
dto
.
setProjectId
(
UserThreadLocal
.
getProjectId
());
dto
.
setProjectId
(
UserThreadLocal
.
getProjectId
());
BoolQueryBuilder
query
=
yuqingAnalyzeQuery
(
dto
);
BoolQueryBuilder
query
=
yuqingAnalyzeQuery
(
dto
);
DateHistogramAggregationBuilder
daysAggregationBuilder
=
DateHistogramAggregationBuilder
daysAggregationBuilder
=
AggregationBuilders
.
dateHistogram
(
"timeAgg"
).
field
(
"time"
).
calendarInterval
(
DateHistogramInterval
.
DAY
);
AggregationBuilders
.
dateHistogram
(
"timeAgg"
).
field
(
"time"
).
calendarInterval
(
DateHistogramInterval
.
DAY
)
.
offset
(
"16h"
)
;
TermsAggregationBuilder
sourceAggregationBuilder
=
AggregationBuilders
.
terms
(
"sourceAgg"
).
field
(
"source"
).
size
(
10000
);
TermsAggregationBuilder
sourceAggregationBuilder
=
AggregationBuilders
.
terms
(
"sourceAgg"
).
field
(
"source"
).
size
(
10000
);
// response
// response
SearchResponse
searchResponse
=
esClientDao
.
searchResponse
(
indexes
,
null
,
query
,
SearchResponse
searchResponse
=
esClientDao
.
searchResponse
(
indexes
,
null
,
query
,
...
@@ -3066,17 +3103,15 @@ public class MarkDataServiceImpl implements MarkDataService {
...
@@ -3066,17 +3103,15 @@ public class MarkDataServiceImpl implements MarkDataService {
String
[]
indexes
=
esClientDao
.
getIndexes
();
String
[]
indexes
=
esClientDao
.
getIndexes
();
dto
.
setProjectId
(
UserThreadLocal
.
getProjectId
());
dto
.
setProjectId
(
UserThreadLocal
.
getProjectId
());
// query
// 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
))){
if
(
Objects
.
equals
(
"其他"
,
dto
.
getPlatforms
().
get
(
0
))){
List
<
String
>
platforms
=
getPlatformPercentage
(
dto
).
stream
().
map
(
json
->
json
.
getString
(
"platform"
)).
collect
(
Collectors
.
toList
());
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
());
List
<
String
>
allPlatforms
=
GlobalPojo
.
PLATFORMS
.
stream
().
map
(
MessagePlatform:
:
getName
).
collect
(
Collectors
.
toList
());
allPlatforms
.
removeAll
(
platforms
);
allPlatforms
.
removeAll
(
platforms
);
dto
.
setPlatforms
(
allPlatforms
.
stream
().
map
(
GlobalPojo:
:
getPlatformIdByName
).
collect
(
Collectors
.
toList
()));
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
// sort
FieldSortBuilder
sort
=
SortBuilders
.
fieldSort
(
"time"
).
order
(
SortOrder
.
DESC
);
FieldSortBuilder
sort
=
SortBuilders
.
fieldSort
(
"time"
).
order
(
SortOrder
.
DESC
);
// response
// response
...
@@ -3190,9 +3225,12 @@ public class MarkDataServiceImpl implements MarkDataService {
...
@@ -3190,9 +3225,12 @@ public class MarkDataServiceImpl implements MarkDataService {
private
Map
<
String
,
List
<
LineVO
>>
getPlatformSpreadTendency
(
MarkSearchDTO
dto
)
throws
IOException
{
private
Map
<
String
,
List
<
LineVO
>>
getPlatformSpreadTendency
(
MarkSearchDTO
dto
)
throws
IOException
{
Map
<
String
,
List
<
LineVO
>>
res
=
new
HashMap
<>(
4
);
Map
<
String
,
List
<
LineVO
>>
res
=
new
HashMap
<>(
4
);
// 平台
// 平台
List
<
String
>
platforms
=
new
ArrayList
<>();
// List<String> platforms = new ArrayList<>();
for
(
String
platformNames
:
Arrays
.
asList
(
"微博"
,
"微信"
,
"抖音"
,
"小红书"
))
{
// for (String platformNames : Arrays.asList("微博", "微信", "抖音", "小红书")) {
platforms
.
add
(
GlobalPojo
.
getPlatformIdByName
(
platformNames
));
// platforms.add(GlobalPojo.getPlatformIdByName(platformNames));
// }
if
(
CollectionUtils
.
isEmpty
(
dto
.
getPlatforms
())){
dto
.
setPlatforms
(
Stream
.
of
(
"微博"
,
"微信"
,
"抖音"
,
"小红书"
).
map
(
GlobalPojo:
:
getPlatformIdByName
).
collect
(
Collectors
.
toList
()));
}
}
String
[]
indexes
=
esClientDao
.
getIndexes
();
String
[]
indexes
=
esClientDao
.
getIndexes
();
// 聚合请求
// 聚合请求
...
@@ -3204,7 +3242,6 @@ public class MarkDataServiceImpl implements MarkDataService {
...
@@ -3204,7 +3242,6 @@ public class MarkDataServiceImpl implements MarkDataService {
}
else
{
}
else
{
daysAggregationBuilder
=
AggregationBuilders
.
dateHistogram
(
"timeAgg"
).
field
(
"time"
).
calendarInterval
(
DateHistogramInterval
.
DAY
);
daysAggregationBuilder
=
AggregationBuilders
.
dateHistogram
(
"timeAgg"
).
field
(
"time"
).
calendarInterval
(
DateHistogramInterval
.
DAY
);
}
}
dto
.
setPlatforms
(
platforms
);
// query
// query
BoolQueryBuilder
query
=
yuqingAnalyzeQuery
(
dto
);
BoolQueryBuilder
query
=
yuqingAnalyzeQuery
(
dto
);
// response
// response
...
@@ -3334,7 +3371,7 @@ public class MarkDataServiceImpl implements MarkDataService {
...
@@ -3334,7 +3371,7 @@ public class MarkDataServiceImpl implements MarkDataService {
// 新增channelEmotion
// 新增channelEmotion
BoolQueryBuilder
postFilter
=
EsQueryTools
.
assembleCacheMapsQuery
(
projectId
,
contendId
,
dto
.
getPoliticsLevel
(),
dto
.
getField
(),
dto
.
getRegion
(),
dto
.
getMainBodyType
(),
dto
.
getChannelEmotion
());
BoolQueryBuilder
postFilter
=
EsQueryTools
.
assembleCacheMapsQuery
(
projectId
,
contendId
,
dto
.
getPoliticsLevel
(),
dto
.
getField
(),
dto
.
getRegion
(),
dto
.
getMainBodyType
(),
dto
.
getChannelEmotion
());
if
(
Objects
.
nonNull
(
dto
.
getPlanId
())){
if
(
Objects
.
nonNull
(
dto
.
getPlanId
())){
postFilter
=
EsQueryTools
.
assembleCacheMapsPlanQuery
(
projectId
,
dto
.
getPlanId
());
postFilter
=
EsQueryTools
.
assembleCacheMapsPlanQuery
(
projectId
,
dto
.
getPlanId
()
,
dto
.
getPoliticsLevel
()
);
}
}
// time
// time
postFilter
.
must
(
QueryBuilders
.
rangeQuery
(
"time"
).
gte
(
dto
.
getStartTime
()).
lt
(
dto
.
getEndTime
()));
postFilter
.
must
(
QueryBuilders
.
rangeQuery
(
"time"
).
gte
(
dto
.
getStartTime
()).
lt
(
dto
.
getEndTime
()));
...
@@ -3367,7 +3404,7 @@ public class MarkDataServiceImpl implements MarkDataService {
...
@@ -3367,7 +3404,7 @@ public class MarkDataServiceImpl implements MarkDataService {
}
}
// sourceKeyword
// sourceKeyword
if
(
StringUtils
.
isNotEmpty
(
dto
.
getSourceKeyword
()))
{
if
(
StringUtils
.
isNotEmpty
(
dto
.
getSourceKeyword
()))
{
postFilter
.
must
(
EsQueryTools
.
assembleSourceQuery
(
dto
.
getSourceKeyword
()));
postFilter
.
must
(
EsQueryTools
.
assembleSource
Keyword
Query
(
dto
.
getSourceKeyword
()));
}
}
// hostKeyword
// hostKeyword
if
(
StringUtils
.
isNotEmpty
(
dto
.
getHostKeyword
()))
{
if
(
StringUtils
.
isNotEmpty
(
dto
.
getHostKeyword
()))
{
...
@@ -3385,6 +3422,9 @@ public class MarkDataServiceImpl implements MarkDataService {
...
@@ -3385,6 +3422,9 @@ public class MarkDataServiceImpl implements MarkDataService {
if
(
Objects
.
nonNull
(
aggTitle
)){
if
(
Objects
.
nonNull
(
aggTitle
)){
postFilter
.
must
(
QueryBuilders
.
termQuery
(
"agg_title.keyword"
,
aggTitle
));
postFilter
.
must
(
QueryBuilders
.
termQuery
(
"agg_title.keyword"
,
aggTitle
));
}
}
if
(
Objects
.
isNull
(
aggTitle
)
&&
Objects
.
nonNull
(
dto
.
getAggTitle
())){
postFilter
.
must
(
QueryBuilders
.
termQuery
(
"agg_title.keyword"
,
dto
.
getAggTitle
()));
}
return
postFilter
;
return
postFilter
;
}
}
...
@@ -3910,5 +3950,4 @@ public class MarkDataServiceImpl implements MarkDataService {
...
@@ -3910,5 +3950,4 @@ public class MarkDataServiceImpl implements MarkDataService {
}
}
return
null
;
return
null
;
}
}
}
}
\ No newline at end of file
src/main/java/com/zhiwei/brandkbs2/service/impl/ProjectServiceImpl.java
View file @
6744d566
...
@@ -12,8 +12,10 @@ import com.zhiwei.brandkbs2.exception.ExceptionCast;
...
@@ -12,8 +12,10 @@ import com.zhiwei.brandkbs2.exception.ExceptionCast;
import
com.zhiwei.brandkbs2.model.CommonCodeEnum
;
import
com.zhiwei.brandkbs2.model.CommonCodeEnum
;
import
com.zhiwei.brandkbs2.model.ResponseResult
;
import
com.zhiwei.brandkbs2.model.ResponseResult
;
import
com.zhiwei.brandkbs2.pojo.*
;
import
com.zhiwei.brandkbs2.pojo.*
;
import
com.zhiwei.brandkbs2.pojo.dto.NonManualProjectPlanDTO
;
import
com.zhiwei.brandkbs2.pojo.vo.PageVO
;
import
com.zhiwei.brandkbs2.pojo.vo.PageVO
;
import
com.zhiwei.brandkbs2.pojo.vo.ProjectVO
;
import
com.zhiwei.brandkbs2.pojo.vo.ProjectVO
;
import
com.zhiwei.brandkbs2.service.MarkDataService
;
import
com.zhiwei.brandkbs2.service.ProjectService
;
import
com.zhiwei.brandkbs2.service.ProjectService
;
import
com.zhiwei.brandkbs2.service.UserService
;
import
com.zhiwei.brandkbs2.service.UserService
;
import
com.zhiwei.brandkbs2.util.MongoUtil
;
import
com.zhiwei.brandkbs2.util.MongoUtil
;
...
@@ -64,6 +66,9 @@ public class ProjectServiceImpl implements ProjectService {
...
@@ -64,6 +66,9 @@ public class ProjectServiceImpl implements ProjectService {
@Resource
(
name
=
"userServiceImpl"
)
@Resource
(
name
=
"userServiceImpl"
)
private
UserService
userService
;
private
UserService
userService
;
@Resource
(
name
=
"markDataServiceImpl"
)
private
MarkDataService
markDataService
;
@Resource
(
name
=
"eventMiddlewareDao"
)
@Resource
(
name
=
"eventMiddlewareDao"
)
private
EventMiddlewareDao
eventMiddlewareDao
;
private
EventMiddlewareDao
eventMiddlewareDao
;
...
@@ -499,6 +504,8 @@ public class ProjectServiceImpl implements ProjectService {
...
@@ -499,6 +504,8 @@ public class ProjectServiceImpl implements ProjectService {
return
ResponseResult
.
failure
(
ProjectCodeEnum
.
PROJECT_EXISTSNAME_ERROR
.
message
());
return
ResponseResult
.
failure
(
ProjectCodeEnum
.
PROJECT_EXISTSNAME_ERROR
.
message
());
}
}
Project
project
=
ProjectVO
.
createNonManualProject
(
projectVO
);
Project
project
=
ProjectVO
.
createNonManualProject
(
projectVO
);
// 添加时默认商业数据源
project
.
setExternalDataSource
(
true
);
projectDao
.
insertOneWithoutId
(
project
);
projectDao
.
insertOneWithoutId
(
project
);
// 绑定事件标签,默认已绑定情感标签
// 绑定事件标签,默认已绑定情感标签
eventMiddlewareDao
.
bindBrandkbs
(
project
.
getBrandLinkedGroup
(),
project
.
getBrandLinkedGroupId
(),
Collections
.
emptyList
(),
eventMiddlewareDao
.
bindBrandkbs
(
project
.
getBrandLinkedGroup
(),
project
.
getBrandLinkedGroupId
(),
Collections
.
emptyList
(),
...
@@ -547,6 +554,7 @@ public class ProjectServiceImpl implements ProjectService {
...
@@ -547,6 +554,7 @@ public class ProjectServiceImpl implements ProjectService {
result
.
put
(
"isStart"
,
project
.
isStart
());
result
.
put
(
"isStart"
,
project
.
isStart
());
result
.
put
(
"isShow"
,
project
.
isShow
());
result
.
put
(
"isShow"
,
project
.
isShow
());
result
.
put
(
"dataBalance"
,
project
.
getDataBalance
());
result
.
put
(
"dataBalance"
,
project
.
getDataBalance
());
result
.
put
(
"externalDataSource"
,
project
.
getExternalDataSource
());
return
result
;
return
result
;
}).
collect
(
Collectors
.
toList
());
}).
collect
(
Collectors
.
toList
());
MongoUtil
.
PageHelper
<
JSONObject
>
pageHelper
=
mongoUtil
.
pageHelper
(
count
,
resList
);
MongoUtil
.
PageHelper
<
JSONObject
>
pageHelper
=
mongoUtil
.
pageHelper
(
count
,
resList
);
...
@@ -635,6 +643,54 @@ public class ProjectServiceImpl implements ProjectService {
...
@@ -635,6 +643,54 @@ public class ProjectServiceImpl implements ProjectService {
return
ResponseResult
.
success
(
PageVO
.
createPageVo
(
total
,
page
,
pageSize
,
resList
));
return
ResponseResult
.
success
(
PageVO
.
createPageVo
(
total
,
page
,
pageSize
,
resList
));
}
}
@Override
public
ResponseResult
switchExternalDataSource
(
String
projectId
)
{
Project
project
=
projectDao
.
findOneById
(
projectId
);
if
(
Objects
.
isNull
(
project
))
{
return
ResponseResult
.
failure
(
"项目不存在"
);
}
List
<
NonManualProjectPlan
>
planList
=
nonManualProjectPlanDao
.
findList
(
new
Query
(
Criteria
.
where
(
"projectId"
).
is
(
project
.
getId
())));
// 若商业数据切换为内部数据,此时同时删除数据订阅任务
if
(
project
.
getExternalDataSource
()){
for
(
NonManualProjectPlan
plan
:
planList
)
{
markDataService
.
deleteIStarShineSubjectTask
(
plan
.
getId
());
}
}
// 若内部数据切换为商业数据,此时进行数据预估同时创建商业数据订阅任务
if
(!
project
.
getExternalDataSource
()){
// 数据预估
for
(
NonManualProjectPlan
plan
:
planList
)
{
Integer
dataCount
=
markDataService
.
getPlanDataPrediction
(
plan
.
getKeyword
(),
plan
.
getFilterWord
());
if
(
dataCount
>
10000
){
return
ResponseResult
.
failure
(
"方案:"
+
plan
.
getName
()
+
",预估数据量超过10000条/天,切换失败"
);
}
}
List
<
NonManualProjectPlan
>
successList
=
new
ArrayList
<>(
planList
.
size
());
// 添加商业数据订阅任务
for
(
NonManualProjectPlan
plan
:
planList
)
{
String
taskId
=
markDataService
.
addIStarShineSubjectTask
(
Tools
.
convertMap
(
plan
,
NonManualProjectPlanDTO
.
class
));
if
(
Objects
.
isNull
(
taskId
)){
for
(
NonManualProjectPlan
successPlan
:
successList
)
{
markDataService
.
deleteIStarShineSubjectTask
(
successPlan
.
getId
());
successPlan
.
setIStarShineSubjectTaskId
(
null
);
successPlan
.
setUTime
(
System
.
currentTimeMillis
());
nonManualProjectPlanDao
.
updateOne
(
successPlan
);
}
return
ResponseResult
.
failure
(
"切换失败"
);
}
plan
.
setIStarShineSubjectTaskId
(
taskId
);
plan
.
setUTime
(
System
.
currentTimeMillis
());
nonManualProjectPlanDao
.
updateOne
(
plan
);
successList
.
add
(
plan
);
}
}
Update
update
=
new
Update
();
update
.
set
(
"uTime"
,
System
.
currentTimeMillis
());
update
.
set
(
"externalDataSource"
,
!
project
.
getExternalDataSource
());
projectDao
.
updateOneByIdWithField
(
projectId
,
update
);
return
ResponseResult
.
success
();
}
/**
/**
* 获取舆情对应项目的情感标签
* 获取舆情对应项目的情感标签
* @param brandName
* @param brandName
...
...
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