Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
E
event
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
陈世强
event
Commits
a8d31b34
提交
a8d31b34
authored
7月 29, 2025
作者:
925993793@qq.com
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
导出excel以及接口逻辑修改
上级
a97d16a7
显示空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
203 行增加
和
16 行删除
+203
-16
EventAnalysisController.java
...va/com/zzsn/event/controller/EventAnalysisController.java
+12
-15
EventDataController.java
...a/com/zzsn/event/controller/yjzx/EventDataController.java
+114
-1
EsService.java
src/main/java/com/zzsn/event/es/EsService.java
+77
-0
没有找到文件。
src/main/java/com/zzsn/event/controller/EventAnalysisController.java
浏览文件 @
a8d31b34
...
...
@@ -155,14 +155,13 @@ public class EventAnalysisController {
@GetMapping
(
"/eventContext"
)
public
Result
<?>
eventContext
(
@RequestParam
String
eventId
,
@RequestParam
(
required
=
false
)
String
versionId
)
{
if
(
StringUtils
.
isEmpty
(
versionId
))
{
EventAnalysisVersion
eventAnalysisVersion
=
eventAnalysisVersionService
.
latestVersion
(
eventId
);
versionId
=
eventAnalysisVersion
.
getId
();
}
if
(
StringUtils
.
isNotEmpty
(
versionId
))
{
String
versionData
=
eventAnalysisVersionRecordService
.
getVersionData
(
versionId
,
AnalysisColumnEnum
.
EVENT_CONTEXT
.
getCode
());
//List<Map<String, Object>> versionData = eventContextService.eventContext(eventId);
return
Result
.
OK
(
JSON
.
parseArray
(
versionData
,
JSONObject
.
class
));
}
List
<
Map
<
String
,
Object
>>
versionData
=
eventContextService
.
eventContext
(
eventId
);
return
Result
.
OK
(
versionData
);
}
/**
* 事件脉络关键节点列表
...
...
@@ -247,14 +246,13 @@ public class EventAnalysisController {
@RequestParam
(
required
=
false
)
String
startTime
,
@RequestParam
(
required
=
false
)
String
endTime
,
@RequestParam
(
required
=
false
)
String
versionId
)
{
if
(
StringUtils
.
isEmpty
(
versionId
))
{
EventAnalysisVersion
eventAnalysisVersion
=
eventAnalysisVersionService
.
latestVersion
(
eventId
);
versionId
=
eventAnalysisVersion
.
getId
();
}
if
(
StringUtils
.
isNotEmpty
(
versionId
))
{
String
versionData
=
eventAnalysisVersionRecordService
.
getVersionData
(
versionId
,
AnalysisColumnEnum
.
KEYWORD_TREND
.
getCode
());
//List<CountVO> versionData = analysisService.wordTrend(eventId, startTime, endTime);
return
Result
.
OK
(
JSON
.
parseArray
(
versionData
,
JSONObject
.
class
));
}
List
<
CountVO
>
versionData
=
analysisService
.
wordTrend
(
eventId
,
startTime
,
endTime
);
return
Result
.
OK
(
versionData
);
}
/**
...
...
@@ -270,14 +268,13 @@ public class EventAnalysisController {
@RequestParam
(
required
=
false
)
String
startTime
,
@RequestParam
(
required
=
false
)
String
endTime
,
@RequestParam
(
required
=
false
)
String
versionId
)
{
if
(
StringUtils
.
isEmpty
(
versionId
))
{
EventAnalysisVersion
eventAnalysisVersion
=
eventAnalysisVersionService
.
latestVersion
(
eventId
);
versionId
=
eventAnalysisVersion
.
getId
();
}
if
(
StringUtils
.
isNotEmpty
(
versionId
))
{
String
versionData
=
eventAnalysisVersionRecordService
.
getVersionData
(
versionId
,
AnalysisColumnEnum
.
CO_OCCURRENCE
.
getCode
());
//List<CoOccurrenceVO> versionData = analysisService.coOccurrence(eventId, startTime, endTime);
return
Result
.
OK
(
JSON
.
parseArray
(
versionData
,
JSONObject
.
class
));
}
List
<
CoOccurrenceVO
>
versionData
=
analysisService
.
coOccurrence
(
eventId
,
startTime
,
endTime
);
return
Result
.
OK
(
versionData
);
}
/**
* 事件下情感类标签下资讯数量统计
...
...
src/main/java/com/zzsn/event/controller/yjzx/EventDataController.java
浏览文件 @
a8d31b34
...
...
@@ -19,11 +19,14 @@ import com.zzsn.event.util.*;
import
com.zzsn.event.util.user.UserUtil
;
import
com.zzsn.event.util.user.UserVo
;
import
com.zzsn.event.vo.*
;
import
com.zzsn.event.vo.es.Label
;
import
com.zzsn.event.xxljob.service.IXxlJobInfoService
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.poi.xssf.streaming.SXSSFWorkbook
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
...
...
@@ -32,6 +35,10 @@ import org.springframework.web.bind.annotation.*;
import
org.springframework.web.multipart.MultipartFile
;
import
javax.annotation.Resource
;
import
javax.servlet.http.HttpServletResponse
;
import
java.io.ByteArrayOutputStream
;
import
java.io.OutputStream
;
import
java.net.URLEncoder
;
import
java.util.*
;
import
java.util.concurrent.CompletableFuture
;
import
java.util.stream.Collectors
;
...
...
@@ -533,12 +540,91 @@ public class EventDataController {
frontList
.
forEach
(
e
->
subjectIdList
.
add
(
e
.
getId
()));
}
//获取数据
IPage
<
SubjectDataVo
>
pageList
=
esService
.
frontListByPage
(
subjectIdList
,
searchWord
,
position
,
category
,
origin
,
labelId
,
startTime
,
endTime
,
column
,
order
,
pageNo
,
pageSize
);
IPage
<
SubjectDataVo
>
pageList
=
esService
.
frontListByPage
(
subjectIdList
,
searchWord
,
position
,
category
,
origin
,
labelId
,
startTime
,
endTime
,
column
,
order
,
pageNo
,
pageSize
);
return
Result
.
OK
(
pageList
);
}
/**
* 导出excel
*
* @param projectId 项目id
* @param subjectId 事件id
* @param searchWord 搜索词
* @param position 搜索位置(title-标题;content-内容)
* @param category 匹配度(1-模糊;2-精确)
* @param origin 来源
* @param labelId 标签id
* @param startTime 开始时间
* @param endTime 结束时间
* @param column 排序字段
* @param order 排序方式(asc-正序;desc-倒序)
* @author lkg
* @date 2024/4/10
*/
@ApiOperation
(
value
=
"专题信息列表-导出excel"
,
notes
=
"专题信息列表-导出excel"
)
@GetMapping
(
value
=
"/exportExcel"
)
public
void
queryPageList
(
@RequestParam
(
name
=
"projectId"
,
defaultValue
=
"1476527644425682945"
)
String
projectId
,
@RequestParam
(
name
=
"ids"
,
required
=
false
)
List
<
String
>
ids
,
@RequestParam
(
name
=
"subjectId"
,
required
=
false
)
String
subjectId
,
@RequestParam
(
name
=
"searchWord"
,
required
=
false
)
String
searchWord
,
@RequestParam
(
name
=
"position"
,
required
=
false
)
String
position
,
@RequestParam
(
name
=
"category"
,
required
=
false
)
Integer
category
,
@RequestParam
(
name
=
"origin"
,
required
=
false
)
String
origin
,
@RequestParam
(
name
=
"labelId"
,
required
=
false
)
String
labelId
,
@RequestParam
(
name
=
"startTime"
,
required
=
false
)
String
startTime
,
@RequestParam
(
name
=
"endTime"
,
required
=
false
)
String
endTime
,
@RequestParam
(
name
=
"column"
,
defaultValue
=
"publishDate"
)
String
column
,
@RequestParam
(
name
=
"order"
,
defaultValue
=
"desc"
)
String
order
,
HttpServletResponse
response
)
{
UserVo
currentUser
=
UserUtil
.
getLoginUser
();
String
username
=
currentUser
.
getUsername
();
List
<
String
>
subjectIdList
=
new
ArrayList
<>();
if
(
StringUtils
.
isNotEmpty
(
subjectId
))
{
subjectIdList
.
add
(
subjectId
);
}
else
{
List
<
EventExcelVO
>
frontList
=
eventService
.
frontAllList
(
projectId
,
username
,
null
,
null
,
null
,
null
,
null
,
null
);
frontList
.
forEach
(
e
->
subjectIdList
.
add
(
e
.
getId
()));
}
//栏目字典
List
<
SysDictItem
>
dictItemList
=
dictItemService
.
listByDictCode
(
"eventView"
);
try
{
long
timestamp
=
System
.
currentTimeMillis
();
String
filename
=
subjectId
+
"_"
+
timestamp
+
".xlsx"
;
String
[]
arr
=
new
String
[]{
"标题"
,
"摘要"
,
"正文"
,
"来源"
,
"发布时间"
,
"原文链接"
,
"所属栏目"
};
List
<
String
>
headers
=
Arrays
.
asList
(
arr
);
SXSSFWorkbook
workbook
=
new
SXSSFWorkbook
();
int
pageSize
=
1000
;
for
(
int
i
=
0
;
;
i
++)
{
List
<
SubjectDataVo
>
informationList
=
esService
.
exportList
(
subjectIdList
,
ids
,
searchWord
,
position
,
category
,
origin
,
labelId
,
startTime
,
endTime
,
column
,
order
,
i
,
pageSize
);
log
.
info
(
"本次循环-{},数据量为-{}"
,
i
,
informationList
.
size
());
if
(
CollectionUtils
.
isEmpty
(
informationList
))
{
break
;
}
List
<
List
<
String
>>
rows
=
formatExportData
(
informationList
,
dictItemList
);
BigExcelExportUtil
.
exportExcelData
(
workbook
,
i
-
1
,
headers
,
rows
,
"sheet"
+
i
);
log
.
info
(
"第【{}】个sheet页写入成功"
,
i
);
}
// 将Workbook写入字节流
ByteArrayOutputStream
outStream
=
new
ByteArrayOutputStream
();
workbook
.
write
(
outStream
);
// 将字节流转换为InputStream
byte
[]
bytes
=
outStream
.
toByteArray
();
filename
=
URLEncoder
.
encode
(
filename
,
"UTF-8"
).
replace
(
"+"
,
" "
);
response
.
setHeader
(
"Access-Control-Expose-Headers"
,
"Content-Disposition"
);
response
.
setHeader
(
"Content-Disposition"
,
"attachment;filename="
+
filename
);
response
.
setContentLength
(
bytes
.
length
);
OutputStream
out
=
response
.
getOutputStream
();
out
.
write
(
bytes
);
out
.
flush
();
out
.
close
();
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
/**
* 资讯详情
*
* @return
...
...
@@ -640,4 +726,31 @@ public class EventDataController {
List
<
SubjectDataVo
>
recommendList
=
informationService
.
recommendList
(
subjectId
,
id
,
title
,
pageNo
,
pageSize
);
return
Result
.
OK
(
recommendList
);
}
private
List
<
List
<
String
>>
formatExportData
(
List
<
SubjectDataVo
>
list
,
List
<
SysDictItem
>
dictItemList
)
{
List
<
List
<
String
>>
rows
=
new
ArrayList
<>();
Map
<
String
,
String
>
eventViewMap
=
dictItemList
.
stream
().
collect
(
Collectors
.
toMap
(
SysDictItem:
:
getItemValue
,
SysDictItem:
:
getItemText
));
for
(
SubjectDataVo
subjectDataVo
:
list
)
{
List
<
String
>
row
=
new
ArrayList
<>();
row
.
add
(
StringUtils
.
isNotEmpty
(
subjectDataVo
.
getTitle
())
?
subjectDataVo
.
getTitle
()
:
""
);
row
.
add
(
StringUtils
.
isNotEmpty
(
subjectDataVo
.
getSummary
())
?
subjectDataVo
.
getSummary
()
:
""
);
row
.
add
(
StringUtils
.
isNotEmpty
(
subjectDataVo
.
getContent
())
?
subjectDataVo
.
getContent
()
:
""
);
row
.
add
(
StringUtils
.
isNotEmpty
(
subjectDataVo
.
getOrigin
())
?
subjectDataVo
.
getOrigin
()
:
""
);
row
.
add
(
StringUtils
.
isNotEmpty
(
subjectDataVo
.
getPublishDate
())
?
subjectDataVo
.
getPublishDate
()
:
""
);
row
.
add
(
StringUtils
.
isNotEmpty
(
subjectDataVo
.
getSourceAddress
())
?
subjectDataVo
.
getSourceAddress
()
:
""
);
List
<
Label
>
labels
=
subjectDataVo
.
getLabels
();
if
(
CollectionUtils
.
isNotEmpty
(
labels
))
{
List
<
Label
>
collect
=
labels
.
stream
().
filter
(
e
->
eventViewMap
.
containsKey
(
e
.
getRelationId
())).
collect
(
Collectors
.
toList
());
if
(
CollectionUtils
.
isNotEmpty
(
collect
))
{
row
.
add
(
collect
.
stream
().
map
(
e
->
eventViewMap
.
get
(
e
.
getRelationId
())).
collect
(
Collectors
.
joining
(
","
)));
}
else
{
row
.
add
(
""
);
}
}
else
{
row
.
add
(
""
);
}
rows
.
add
(
row
);
}
return
rows
;
}
}
src/main/java/com/zzsn/event/es/EsService.java
浏览文件 @
a8d31b34
...
...
@@ -325,6 +325,83 @@ public class EsService {
return
pageData
;
}
public
List
<
SubjectDataVo
>
exportList
(
List
<
String
>
subjectIdList
,
List
<
String
>
ids
,
String
searchWord
,
String
position
,
Integer
category
,
String
origin
,
String
labelId
,
String
startTime
,
String
endTime
,
String
column
,
String
order
,
int
pageNo
,
int
pageSize
)
{
SearchRequest
searchRequest
=
new
SearchRequest
(
Constants
.
SUBJECT_INDEX
);
SearchSourceBuilder
searchSourceBuilder
=
new
SearchSourceBuilder
();
//设置分页参数
searchSourceBuilder
.
size
(
pageSize
);
searchSourceBuilder
.
from
((
pageNo
-
1
)
*
pageSize
);
if
(
column
.
equals
(
"score"
))
{
if
(
order
.
equals
(
"asc"
))
{
searchSourceBuilder
.
sort
(
SortBuilders
.
scoreSort
().
order
(
SortOrder
.
ASC
));
searchSourceBuilder
.
sort
(
"publishDate"
,
SortOrder
.
ASC
);
}
else
if
(
order
.
equals
(
"desc"
))
{
searchSourceBuilder
.
sort
(
SortBuilders
.
scoreSort
().
order
(
SortOrder
.
DESC
));
searchSourceBuilder
.
sort
(
"publishDate"
,
SortOrder
.
DESC
);
}
}
else
if
(
column
.
equals
(
"publishDate"
))
{
if
(
order
.
equals
(
"desc"
))
{
searchSourceBuilder
.
sort
(
"publishDate"
,
SortOrder
.
DESC
);
searchSourceBuilder
.
sort
(
SortBuilders
.
scoreSort
().
order
(
SortOrder
.
DESC
));
}
else
if
(
order
.
equals
(
"asc"
))
{
searchSourceBuilder
.
sort
(
"publishDate"
,
SortOrder
.
ASC
);
searchSourceBuilder
.
sort
(
SortBuilders
.
scoreSort
().
order
(
SortOrder
.
ASC
));
}
}
String
[]
fetchFields
=
new
String
[]{
"id"
,
"title"
,
"summary"
,
"content"
,
"origin"
,
"publishDate"
,
"sourceAddress"
,
"labels"
};
searchSourceBuilder
.
fetchSource
(
fetchFields
,
null
);
//默认最大数量是10000,设置为true后,显示准确数量
searchSourceBuilder
.
trackTotalHits
(
true
);
//创建查询对象
BoolQueryBuilder
boolQuery
=
QueryBuilders
.
boolQuery
();
if
(
CollectionUtils
.
isNotEmpty
(
ids
))
{
boolQuery
.
must
(
QueryBuilders
.
termsQuery
(
"id"
,
ids
));
}
else
{
boolQuery
.
must
(
QueryBuilders
.
termsQuery
(
"subjectId.keyword"
,
subjectIdList
));
if
(
StringUtils
.
isNotBlank
(
searchWord
))
{
if
(
category
==
1
)
{
boolQuery
.
must
(
QueryBuilders
.
matchQuery
(
position
,
searchWord
));
}
else
if
(
category
==
2
)
{
boolQuery
.
must
(
QueryBuilders
.
matchPhraseQuery
(
position
,
searchWord
));
}
}
if
(
StringUtils
.
isNotBlank
(
origin
))
{
boolQuery
.
must
(
QueryBuilders
.
matchPhraseQuery
(
"origin"
,
origin
));
}
if
(
StringUtils
.
isNotBlank
(
labelId
))
{
boolQuery
.
must
(
QueryBuilders
.
nestedQuery
(
"labels"
,
QueryBuilders
.
termQuery
(
"labels.relationId"
,
labelId
),
ScoreMode
.
None
));
}
if
(
StringUtils
.
isNotBlank
(
startTime
)
||
StringUtils
.
isNotBlank
(
endTime
))
{
RangeQueryBuilder
rangeQueryBuilder
=
QueryBuilders
.
rangeQuery
(
"publishDate"
);
if
(
StringUtils
.
isNotBlank
(
startTime
))
{
rangeQueryBuilder
.
gte
(
EsDateUtil
.
esFieldDateFormat
(
startTime
));
}
if
(
StringUtils
.
isNotBlank
(
endTime
))
{
rangeQueryBuilder
.
lte
(
EsDateUtil
.
esFieldDateFormat
(
endTime
));
}
boolQuery
.
filter
(
rangeQueryBuilder
);
}
boolQuery
.
mustNot
(
QueryBuilders
.
termQuery
(
"deleteFlag"
,
"1"
));
}
searchSourceBuilder
.
query
(
boolQuery
);
searchRequest
.
source
(
searchSourceBuilder
);
List
<
SubjectDataVo
>
list
=
new
ArrayList
<>();
try
{
SearchResponse
searchResponse
=
client
.
search
(
searchRequest
,
RequestOptions
.
DEFAULT
);
SearchHit
[]
searchHits
=
searchResponse
.
getHits
().
getHits
();
for
(
SearchHit
hit
:
searchHits
)
{
String
queryInfo
=
hit
.
getSourceAsString
();
SubjectDataVo
info
=
JSONUtil
.
toBean
(
queryInfo
,
SubjectDataVo
.
class
);
info
.
setPublishDate
(
EsDateUtil
.
esFieldDateMapping
(
info
.
getPublishDate
()));
list
.
add
(
info
);
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
list
;
}
/**
* 查看资讯详情
*
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论