Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
E
event
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
陈世强
event
Commits
00256774
提交
00256774
authored
4月 03, 2024
作者:
chenshiqiang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
commit
上级
7fd0fc67
全部展开
显示空白字符变更
内嵌
并排
正在显示
35 个修改的文件
包含
975 行增加
和
104 行删除
+975
-104
pom.xml
pom.xml
+6
-0
Constants.java
src/main/java/com/zzsn/event/constant/Constants.java
+1
-1
KafkaConsumer.java
src/main/java/com/zzsn/event/consumer/KafkaConsumer.java
+1
-0
EventController.java
src/main/java/com/zzsn/event/controller/EventController.java
+0
-0
ReportApiController.java
...n/java/com/zzsn/event/controller/ReportApiController.java
+3
-11
CmsExpert.java
src/main/java/com/zzsn/event/entity/CmsExpert.java
+27
-0
Event.java
src/main/java/com/zzsn/event/entity/Event.java
+15
-0
SubjectAnalysis.java
src/main/java/com/zzsn/event/entity/SubjectAnalysis.java
+1
-0
SysBaseDomesticRegion.java
...ain/java/com/zzsn/event/entity/SysBaseDomesticRegion.java
+99
-0
EventMapper.java
src/main/java/com/zzsn/event/mapper/EventMapper.java
+1
-1
SysBaseDomesticRegionMapper.java
...va/com/zzsn/event/mapper/SysBaseDomesticRegionMapper.java
+17
-0
EventMapper.xml
src/main/java/com/zzsn/event/mapper/xml/EventMapper.xml
+9
-3
ColumnService.java
src/main/java/com/zzsn/event/service/ColumnService.java
+86
-1
EsService.java
src/main/java/com/zzsn/event/service/EsService.java
+38
-0
EsStatisticsService.java
...main/java/com/zzsn/event/service/EsStatisticsService.java
+2
-0
IEventService.java
src/main/java/com/zzsn/event/service/IEventService.java
+6
-4
ISysBaseDomesticRegionService.java
...com/zzsn/event/service/ISysBaseDomesticRegionService.java
+14
-0
SubjectDisplayServive.java
...in/java/com/zzsn/event/service/SubjectDisplayServive.java
+132
-5
AnalysisServiceImpl.java
...java/com/zzsn/event/service/impl/AnalysisServiceImpl.java
+38
-63
EsStatisticsServiceImpl.java
.../com/zzsn/event/service/impl/EsStatisticsServiceImpl.java
+26
-0
EventServiceImpl.java
...in/java/com/zzsn/event/service/impl/EventServiceImpl.java
+92
-8
SysBaseDomesticRegionServiceImpl.java
.../event/service/impl/SysBaseDomesticRegionServiceImpl.java
+19
-0
AnalysisTask.java
src/main/java/com/zzsn/event/task/AnalysisTask.java
+12
-5
CompanyUtil.java
src/main/java/com/zzsn/event/util/CompanyUtil.java
+0
-0
EsOpUtil.java
src/main/java/com/zzsn/event/util/EsOpUtil.java
+0
-0
FileUtil.java
src/main/java/com/zzsn/event/util/FileUtil.java
+151
-0
HanlpUtil.java
src/main/java/com/zzsn/event/util/HanlpUtil.java
+0
-0
SortUtil.java
src/main/java/com/zzsn/event/util/SortUtil.java
+65
-0
StopWordsUtil.java
src/main/java/com/zzsn/event/util/StopWordsUtil.java
+75
-0
StringUtil.java
src/main/java/com/zzsn/event/util/StringUtil.java
+0
-0
DisplayInfo.java
src/main/java/com/zzsn/event/vo/DisplayInfo.java
+1
-0
RepeatHold.java
src/main/java/com/zzsn/event/vo/RepeatHold.java
+14
-0
SpecialInformation.java
src/main/java/com/zzsn/event/vo/SpecialInformation.java
+1
-0
StatisticsKeyWordVo.java
src/main/java/com/zzsn/event/vo/StatisticsKeyWordVo.java
+21
-0
application.yml
src/main/resources/application.yml
+2
-2
没有找到文件。
pom.xml
浏览文件 @
00256774
...
@@ -50,6 +50,12 @@
...
@@ -50,6 +50,12 @@
<artifactId>
commons-lang3
</artifactId>
<artifactId>
commons-lang3
</artifactId>
<version>
3.12.0
</version>
<version>
3.12.0
</version>
</dependency>
</dependency>
<!--hanlp-->
<dependency>
<groupId>
com.hankcs
</groupId>
<artifactId>
hanlp
</artifactId>
<version>
portable-1.8.3
</version>
</dependency>
<!-- json-->
<!-- json-->
<dependency>
<dependency>
...
...
src/main/java/com/zzsn/event/constant/Constants.java
浏览文件 @
00256774
...
@@ -29,7 +29,7 @@ public class Constants {
...
@@ -29,7 +29,7 @@ public class Constants {
//专题事件脉络展示 伪事件脉络 的资讯数量阈值
//专题事件脉络展示 伪事件脉络 的资讯数量阈值
public
static
final
int
FAKE_NUM
=
6
;
public
static
final
int
FAKE_NUM
=
6
;
//kafka 发送分析命令 主题
//kafka 发送分析命令 主题
public
static
final
String
EVENT_
ANALYSIS_TOPIC
=
"event-analysis
"
;
public
static
final
String
EVENT_
VIEWPOINT_SEND_DATA
=
"event_viewpoint_send_data
"
;
//kafka 发送 事件脉络所需信息 主题
//kafka 发送 事件脉络所需信息 主题
public
static
final
String
EVENT_CONTEXT_SEND_TOPIC
=
"event_context_send_topic"
;
public
static
final
String
EVENT_CONTEXT_SEND_TOPIC
=
"event_context_send_topic"
;
//kafka 发送 伪事件脉络所需信息 主题
//kafka 发送 伪事件脉络所需信息 主题
...
...
src/main/java/com/zzsn/event/consumer/KafkaConsumer.java
浏览文件 @
00256774
...
@@ -46,6 +46,7 @@ public class KafkaConsumer {
...
@@ -46,6 +46,7 @@ public class KafkaConsumer {
@KafkaListener
(
topics
=
{
Constants
.
VIEWPOINT_RECEIVE_TOPIC
})
@KafkaListener
(
topics
=
{
Constants
.
VIEWPOINT_RECEIVE_TOPIC
})
public
void
viewPointAnalysis
(
ConsumerRecord
<
String
,
String
>
record
)
{
public
void
viewPointAnalysis
(
ConsumerRecord
<
String
,
String
>
record
)
{
String
value
=
record
.
value
();
String
value
=
record
.
value
();
log
.
info
(
"viewpointMessage:{}"
,
value
);
if
(
StringUtils
.
isNotEmpty
(
value
))
{
if
(
StringUtils
.
isNotEmpty
(
value
))
{
String
subjectId
=
null
;
String
subjectId
=
null
;
try
{
try
{
...
...
src/main/java/com/zzsn/event/controller/EventController.java
浏览文件 @
00256774
差异被折叠。
点击展开。
src/main/java/com/zzsn/event/controller/ReportApiController.java
浏览文件 @
00256774
...
@@ -604,13 +604,8 @@ public class ReportApiController {
...
@@ -604,13 +604,8 @@ public class ReportApiController {
* @param pageNo 当前页
* @param pageNo 当前页
* @param pageSize 返回条数
* @param pageSize 返回条数
* @param column 排序字段
* @param column 排序字段
* @param isCustomer 是否为客户 1是 0 否
* @param order 排序方式
* @param order 排序方式
* @param crawler
* @param crawler
* @param objectType
* @param objectId
* @param isSubject
* @param subjectType
* @param labelIds
* @param labelIds
* @param sourceId
* @param sourceId
* @author lkg
* @author lkg
...
@@ -622,22 +617,19 @@ public class ReportApiController {
...
@@ -622,22 +617,19 @@ public class ReportApiController {
@RequestParam
(
name
=
"subjectId"
,
defaultValue
=
""
)
String
subjectId
,
@RequestParam
(
name
=
"subjectId"
,
defaultValue
=
""
)
String
subjectId
,
@RequestParam
(
name
=
"video"
,
defaultValue
=
""
)
String
video
,
@RequestParam
(
name
=
"video"
,
defaultValue
=
""
)
String
video
,
@RequestParam
(
name
=
"pageNo"
,
defaultValue
=
"1"
)
Integer
pageNo
,
@RequestParam
(
name
=
"pageNo"
,
defaultValue
=
"1"
)
Integer
pageNo
,
@RequestParam
(
name
=
"isCustomer"
,
defaultValue
=
"0"
)
Integer
isCustomer
,
@RequestParam
(
name
=
"pageSize"
,
defaultValue
=
"10"
)
Integer
pageSize
,
@RequestParam
(
name
=
"pageSize"
,
defaultValue
=
"10"
)
Integer
pageSize
,
@RequestParam
(
name
=
"column"
,
defaultValue
=
"common"
)
String
column
,
@RequestParam
(
name
=
"column"
,
defaultValue
=
"common"
)
String
column
,
@RequestParam
(
name
=
"order"
,
defaultValue
=
"desc"
)
String
order
,
@RequestParam
(
name
=
"order"
,
defaultValue
=
"desc"
)
String
order
,
@RequestParam
(
name
=
"crawler"
,
defaultValue
=
""
)
String
crawler
,
@RequestParam
(
name
=
"crawler"
,
defaultValue
=
""
)
String
crawler
,
@RequestParam
(
name
=
"objectType"
,
defaultValue
=
""
,
required
=
false
)
String
objectType
,
@RequestParam
(
name
=
"objectId"
,
defaultValue
=
""
,
required
=
false
)
String
objectId
,
@RequestParam
(
name
=
"isSubject"
,
defaultValue
=
"1"
)
String
isSubject
,
@RequestParam
(
name
=
"subjectType"
,
defaultValue
=
"1"
)
String
subjectType
,
@RequestParam
(
name
=
"labelIds"
,
required
=
false
)
String
labelIds
,
@RequestParam
(
name
=
"labelIds"
,
required
=
false
)
String
labelIds
,
@RequestParam
(
name
=
"sourceId"
,
required
=
false
)
String
sourceId
)
throws
Exception
{
@RequestParam
(
name
=
"sourceId"
,
required
=
false
)
String
sourceId
)
throws
Exception
{
SubjectInfoVo
subjectInfoVo
=
new
SubjectInfoVo
();
SubjectInfoVo
subjectInfoVo
=
new
SubjectInfoVo
();
subjectInfoVo
.
setSubjectId
(
subjectId
);
subjectInfoVo
.
setSubjectId
(
subjectId
);
List
<
String
>
socialCreditCodeList
=
new
ArrayList
<>();
List
<
String
>
socialCreditCodeList
=
new
ArrayList
<>();
//获取数据
//获取数据
IPage
<
DisplayInfo
>
pageList
=
subjectDisplayServive
.
frontListByPage
(
objectType
,
objectId
,
null
,
subjectInfoVo
,
video
,
pageNo
,
pageSize
,
column
,
order
,
crawler
,
isSubject
,
subjectType
,
labelIds
,
socialCreditCodeList
,
sourceId
,
isCustomer
);
IPage
<
DisplayInfo
>
pageList
=
subjectDisplayServive
.
frontListByPage
(
subjectInfoVo
,
video
,
pageNo
,
pageSize
,
column
,
order
,
crawler
,
labelIds
,
socialCreditCodeList
,
sourceId
);
return
Result
.
OK
(
pageList
);
return
Result
.
OK
(
pageList
);
}
}
}
}
src/main/java/com/zzsn/event/entity/CmsExpert.java
0 → 100644
浏览文件 @
00256774
package
com
.
zzsn
.
event
.
entity
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
/**
* @Description: 专家
* @Author: jeecg-boot
* @Date: 2024-03-14
* @Version: V1.0
*/
@Data
@TableName
(
"cms_expert"
)
@Builder
@AllArgsConstructor
@NoArgsConstructor
public
class
CmsExpert
{
/**id*/
private
String
expertId
;
private
String
headPic
;
}
src/main/java/com/zzsn/event/entity/Event.java
浏览文件 @
00256774
...
@@ -127,6 +127,7 @@ public class Event {
...
@@ -127,6 +127,7 @@ public class Event {
private
Integer
otherHot
;
private
Integer
otherHot
;
private
Integer
publishStatus
;
private
Integer
publishStatus
;
private
String
relationEvents
;
private
String
relationEvents
;
private
String
publishDate
;
@TableField
(
exist
=
false
)
@TableField
(
exist
=
false
)
...
@@ -137,4 +138,18 @@ public class Event {
...
@@ -137,4 +138,18 @@ public class Event {
private
List
<
Event
>
relatedEventList
;
private
List
<
Event
>
relatedEventList
;
@TableField
(
exist
=
false
)
@TableField
(
exist
=
false
)
private
EventTag
eventTag
;
private
EventTag
eventTag
;
@TableField
(
exist
=
false
)
private
String
extractIndustryTag
;
@TableField
(
exist
=
false
)
private
String
extractCompanyTag
;
@TableField
(
exist
=
false
)
private
String
extractPersonTag
;
@TableField
(
exist
=
false
)
private
String
extractSentimentTag
;
@TableField
(
exist
=
false
)
private
String
extractKeywordsTag
;
@TableField
(
exist
=
false
)
private
String
extractLocationTag
;
@TableField
(
exist
=
false
)
private
String
extractTimeTag
;
}
}
src/main/java/com/zzsn/event/entity/SubjectAnalysis.java
浏览文件 @
00256774
...
@@ -46,4 +46,5 @@ public class SubjectAnalysis implements Serializable {
...
@@ -46,4 +46,5 @@ public class SubjectAnalysis implements Serializable {
/*分析时间*/
/*分析时间*/
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
private
Date
analysisDate
;
private
Date
analysisDate
;
private
String
professionName
;
}
}
src/main/java/com/zzsn/event/entity/SysBaseDomesticRegion.java
0 → 100644
浏览文件 @
00256774
package
com
.
zzsn
.
event
.
entity
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
org.jeecgframework.poi.excel.annotation.Excel
;
import
org.springframework.format.annotation.DateTimeFormat
;
import
java.io.Serializable
;
import
java.util.Date
;
/**
* @Description: 国内地域表
* @Author: jeecg-boot
* @Date: 2022-03-09
* @Version: V1.0
*/
@Data
@TableName
(
"sys_base_domestic_region"
)
@ApiModel
(
value
=
"sys_base_domestic_region对象"
,
description
=
"国内地域表"
)
public
class
SysBaseDomesticRegion
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
/**主键*/
@TableId
(
type
=
IdType
.
ASSIGN_ID
)
@ApiModelProperty
(
value
=
"主键"
)
private
String
id
;
/**名称*/
@Excel
(
name
=
"名称"
,
width
=
15
)
@ApiModelProperty
(
value
=
"名称"
)
private
String
name
;
/**别名*/
@Excel
(
name
=
"别名"
,
width
=
15
)
@ApiModelProperty
(
value
=
"别名"
)
private
String
alias
;
/**行政编码*/
@Excel
(
name
=
"行政编码"
,
width
=
15
)
@ApiModelProperty
(
value
=
"行政编码"
)
private
String
code
;
/**所属省或直辖市*/
@Excel
(
name
=
"所属省或直辖市"
,
width
=
15
)
@ApiModelProperty
(
value
=
"所属省或直辖市"
)
private
String
topId
;
/**地理区*/
@Excel
(
name
=
"地理区"
,
width
=
15
)
@ApiModelProperty
(
value
=
"地理区"
)
private
String
area
;
/**经济区*/
@Excel
(
name
=
"经济区"
,
width
=
15
)
@ApiModelProperty
(
value
=
"经济区"
)
private
String
economy
;
/**所有pid*/
@Excel
(
name
=
"所有pid"
,
width
=
15
)
@ApiModelProperty
(
value
=
"所有pid"
)
private
String
pathIds
;
/**组合词*/
@Excel
(
name
=
"组合词"
,
width
=
15
)
@ApiModelProperty
(
value
=
"组合词"
)
private
String
composeWords
;
/**层级*/
@Excel
(
name
=
"层级"
,
width
=
15
)
@ApiModelProperty
(
value
=
"层级"
)
private
Integer
level
;
/**创建人*/
@ApiModelProperty
(
value
=
"创建人"
)
private
String
createBy
;
/**创建日期*/
@JsonFormat
(
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
@ApiModelProperty
(
value
=
"创建日期"
)
private
Date
createTime
;
/**更新人*/
@ApiModelProperty
(
value
=
"更新人"
)
private
String
updateBy
;
/**更新日期*/
@JsonFormat
(
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
@ApiModelProperty
(
value
=
"更新日期"
)
private
Date
updateTime
;
/**所属部门*/
@ApiModelProperty
(
value
=
"所属部门"
)
private
String
sysOrgCode
;
/**父级节点*/
@Excel
(
name
=
"父级节点"
,
width
=
15
)
@ApiModelProperty
(
value
=
"父级节点"
)
private
String
pid
;
/**是否有子节点*/
@Excel
(
name
=
"是否有子节点"
,
width
=
15
,
dicCode
=
"yn"
)
@ApiModelProperty
(
value
=
"是否有子节点"
)
private
String
hasChild
;
/**经度*/
private
String
longitude
;
/**纬度*/
private
String
latitude
;
}
src/main/java/com/zzsn/event/mapper/EventMapper.java
浏览文件 @
00256774
...
@@ -21,7 +21,7 @@ public interface EventMapper extends BaseMapper<Event> {
...
@@ -21,7 +21,7 @@ public interface EventMapper extends BaseMapper<Event> {
List
<
SubjectKafkaVo
>
eventSubjectList
(
int
i
);
List
<
SubjectKafkaVo
>
eventSubjectList
(
int
i
);
List
<
Event
>
pageList
(
@Param
(
"event"
)
Event
event
,
Integer
offset
,
Integer
pageSize
);
List
<
Event
>
pageList
(
@Param
(
"event"
)
Event
event
,
Integer
offset
,
Integer
pageSize
,
String
order
,
String
orderType
);
Integer
totalCount
(
@Param
(
"event"
)
Event
event
);
Integer
totalCount
(
@Param
(
"event"
)
Event
event
);
...
...
src/main/java/com/zzsn/event/mapper/SysBaseDomesticRegionMapper.java
0 → 100644
浏览文件 @
00256774
package
com
.
zzsn
.
event
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.zzsn.event.entity.SysBaseDomesticRegion
;
import
org.apache.ibatis.annotations.Mapper
;
/**
* @Description: 国内地域表
* @Author: jeecg-boot
* @Date: 2022-03-09
* @Version: V1.0
*/
@Mapper
public
interface
SysBaseDomesticRegionMapper
extends
BaseMapper
<
SysBaseDomesticRegion
>
{
}
src/main/java/com/zzsn/event/mapper/xml/EventMapper.xml
浏览文件 @
00256774
...
@@ -10,8 +10,9 @@
...
@@ -10,8 +10,9 @@
</select>
</select>
<select
id=
"pageList"
resultType=
"com.zzsn.event.entity.Event"
>
<select
id=
"pageList"
resultType=
"com.zzsn.event.entity.Event"
>
select t2.type_name,t1.* from event t1
select t2.type_name,t1.*
,t3.*
from event t1
left join event_category t2 on t1.event_type =t2.id
left join event_category t2 on t1.event_type =t2.id
left join event_tag t3 on t1.id=t3.event_id
where 1=1
where 1=1
<if
test=
"event.eventName!=null and event.eventName != ''"
>
<if
test=
"event.eventName!=null and event.eventName != ''"
>
and t1.event_name like CONCAT('%',#{event.eventName},'%')
and t1.event_name like CONCAT('%',#{event.eventName},'%')
...
@@ -25,7 +26,12 @@
...
@@ -25,7 +26,12 @@
<if
test=
"event.endDate!=null and event.endDate != ''"
>
<if
test=
"event.endDate!=null and event.endDate != ''"
>
and t1.create_time
<![CDATA[ <= ]]>
#{event.endDate}
and t1.create_time
<![CDATA[ <= ]]>
#{event.endDate}
</if>
</if>
order by t1.create_time desc
<if
test=
"order!=null and order != ''"
>
order by t1.${order}
<if
test=
"orderType!=null and orderType != ''"
>
${orderType}
</if>
</if>
limit #{offset}, #{pageSize}
limit #{offset}, #{pageSize}
</select>
</select>
<select
id=
"totalCount"
resultType=
"java.lang.Integer"
>
<select
id=
"totalCount"
resultType=
"java.lang.Integer"
>
...
@@ -50,7 +56,7 @@
...
@@ -50,7 +56,7 @@
select s.id,s.event_name as subject_name,s.start_time as time_enable,s.end_time as time_disable,s.incre_ana_rule,
select s.id,s.event_name as subject_name,s.start_time as time_enable,s.end_time as time_disable,s.incre_ana_rule,
s.total_ana_rule,s.time_ana_rule,s.analysis_time,s.event_time
s.total_ana_rule,s.time_ana_rule,s.analysis_time,s.event_time
from event s
from event s
where 1=1
and id='1702575766171996162'
where 1=1
<if
test=
"endDate != null"
>
<if
test=
"endDate != null"
>
and (s.end_time is null or s.end_time
<![CDATA[ >= ]]>
#{endDate})
and (s.end_time is null or s.end_time
<![CDATA[ >= ]]>
#{endDate})
</if>
</if>
...
...
src/main/java/com/zzsn/event/service/ColumnService.java
浏览文件 @
00256774
...
@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
...
@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.zzsn.event.constant.Constants
;
import
com.zzsn.event.constant.Constants
;
import
com.zzsn.event.entity.SysBaseDomesticRegion
;
import
com.zzsn.event.enums.InfluenceEnum
;
import
com.zzsn.event.enums.InfluenceEnum
;
import
com.zzsn.event.enums.SourceEnum
;
import
com.zzsn.event.enums.SourceEnum
;
import
com.zzsn.event.util.CalculateUtil
;
import
com.zzsn.event.util.CalculateUtil
;
...
@@ -57,6 +58,8 @@ public class ColumnService {
...
@@ -57,6 +58,8 @@ public class ColumnService {
private
RestHighLevelClient
client
;
private
RestHighLevelClient
client
;
@Autowired
@Autowired
private
IInfoSourceService
infoSourceService
;
private
IInfoSourceService
infoSourceService
;
@Autowired
private
ISysBaseDomesticRegionService
domesticRegionService
;
/**
/**
* 获取栏目或栏目组下的信息数量
* 获取栏目或栏目组下的信息数量
...
@@ -494,7 +497,7 @@ public class ColumnService {
...
@@ -494,7 +497,7 @@ public class ColumnService {
dataTypeBoolQuery
.
should
(
QueryBuilders
.
boolQuery
().
mustNot
(
QueryBuilders
.
existsQuery
(
"dataType"
)));
dataTypeBoolQuery
.
should
(
QueryBuilders
.
boolQuery
().
mustNot
(
QueryBuilders
.
existsQuery
(
"dataType"
)));
boolQuery
.
must
(
dataTypeBoolQuery
);
boolQuery
.
must
(
dataTypeBoolQuery
);
if
(
StringUtils
.
isNotEmpty
(
subjectId
))
{
if
(
StringUtils
.
isNotEmpty
(
subjectId
))
{
boolQuery
.
must
(
QueryBuilders
.
term
Query
(
"subjectId.keyword"
,
subjectId
));
boolQuery
.
must
(
QueryBuilders
.
term
sQuery
(
"subjectId.keyword"
,
subjectId
.
split
(
","
)
));
}
}
if
(
StringUtils
.
isNotEmpty
(
startTime
))
{
if
(
StringUtils
.
isNotEmpty
(
startTime
))
{
boolQuery
.
filter
(
QueryBuilders
.
rangeQuery
(
"publishDate"
).
gte
(
EsDateUtil
.
esFieldDateFormat
(
startTime
)));
boolQuery
.
filter
(
QueryBuilders
.
rangeQuery
(
"publishDate"
).
gte
(
EsDateUtil
.
esFieldDateFormat
(
startTime
)));
...
@@ -528,4 +531,86 @@ public class ColumnService {
...
@@ -528,4 +531,86 @@ public class ColumnService {
return
percentage
;
return
percentage
;
}
}
/**
* 地域分布
*
* @param column 栏目id或栏目组id,多个逗号隔开
* @param ynGroup 是否栏目组
* @param subjectId 专题id
* @param startTime 开始时间
* @param endTime 结束时间
* @author lkg
* @date 2024/2/2
*/
public
List
<
CountVO
>
region
(
String
column
,
Boolean
ynGroup
,
String
subjectId
,
String
startTime
,
String
endTime
)
{
List
<
CountVO
>
list
=
new
ArrayList
<>();
SearchRequest
searchRequest
=
new
SearchRequest
(
Constants
.
ES_DATA_FOR_SUBJECT
);
SearchSourceBuilder
searchSourceBuilder
=
getSearchSourceBuilder
(
column
,
ynGroup
,
subjectId
,
startTime
,
endTime
,
null
);
searchSourceBuilder
.
size
(
0
);
searchSourceBuilder
.
trackTotalHits
(
true
);
NestedAggregationBuilder
nestedAggregationBuilder
=
AggregationBuilders
.
nested
(
"labels"
,
"labels"
)
.
subAggregation
(
AggregationBuilders
.
terms
(
"group_type"
)
.
field
(
"labels.labelMark.keyword"
)
.
subAggregation
(
AggregationBuilders
.
terms
(
"group_code"
)
.
field
(
"labels.relationId"
)
.
order
(
BucketOrder
.
count
(
false
))
.
size
(
10
)));
searchSourceBuilder
.
aggregation
(
nestedAggregationBuilder
);
searchRequest
.
source
(
searchSourceBuilder
);
try
{
SearchResponse
searchResponse
=
client
.
search
(
searchRequest
,
RequestOptions
.
DEFAULT
);
//获取分组桶
Aggregations
aggregations
=
searchResponse
.
getAggregations
();
ParsedNested
labels
=
aggregations
.
get
(
"labels"
);
Aggregations
labelsAggregations
=
labels
.
getAggregations
();
//获取按企业信用代码分组集合
Terms
groupType
=
labelsAggregations
.
get
(
"group_type"
);
List
<?
extends
Terms
.
Bucket
>
typeBuckets
=
groupType
.
getBuckets
();
Map
<
String
,
Long
>
regionMap
=
new
HashMap
<>();
for
(
Terms
.
Bucket
type
:
typeBuckets
)
{
String
key
=
type
.
getKeyAsString
();
if
(
"region_out"
.
equals
(
key
))
{
Aggregations
codeAggregations
=
type
.
getAggregations
();
Terms
groupCode
=
codeAggregations
.
get
(
"group_code"
);
List
<?
extends
Terms
.
Bucket
>
codeBuckets
=
groupCode
.
getBuckets
();
for
(
Terms
.
Bucket
code
:
codeBuckets
)
{
regionMap
.
put
(
code
.
getKeyAsString
(),
code
.
getDocCount
());
}
break
;
}
}
List
<
SysBaseDomesticRegion
>
regionList
=
provinceList
();
for
(
SysBaseDomesticRegion
region
:
regionList
)
{
if
(
list
.
size
()
<
10
)
{
CountVO
countVO
=
new
CountVO
();
String
id
=
region
.
getId
();
String
name
=
region
.
getName
();
countVO
.
setKey
(
name
);
if
(
regionMap
.
containsKey
(
id
))
{
Long
count
=
regionMap
.
get
(
id
);
countVO
.
setCount
(
String
.
valueOf
(
count
));
list
.
add
(
countVO
);
}
else
{
countVO
.
setCount
(
"0"
);
}
}
else
{
break
;
}
}
list
.
sort
((
o1
,
o2
)
->
o2
.
getCount
().
compareTo
(
o1
.
getCount
()));
for
(
int
i
=
0
;
i
<
list
.
size
();
i
++)
{
CountVO
countVO
=
list
.
get
(
i
);
countVO
.
setOrder
(
i
+
1
);
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
list
;
}
private
List
<
SysBaseDomesticRegion
>
provinceList
()
{
LambdaQueryWrapper
<
SysBaseDomesticRegion
>
queryWrapper
=
Wrappers
.
lambdaQuery
();
queryWrapper
.
select
(
SysBaseDomesticRegion:
:
getId
,
SysBaseDomesticRegion:
:
getName
,
SysBaseDomesticRegion:
:
getLevel
);
queryWrapper
.
eq
(
SysBaseDomesticRegion:
:
getLevel
,
1
);
return
domesticRegionService
.
list
(
queryWrapper
);
}
}
}
src/main/java/com/zzsn/event/service/EsService.java
浏览文件 @
00256774
...
@@ -18,6 +18,11 @@ import org.elasticsearch.index.query.QueryBuilders;
...
@@ -18,6 +18,11 @@ import org.elasticsearch.index.query.QueryBuilders;
import
org.elasticsearch.index.query.RangeQueryBuilder
;
import
org.elasticsearch.index.query.RangeQueryBuilder
;
import
org.elasticsearch.search.SearchHit
;
import
org.elasticsearch.search.SearchHit
;
import
org.elasticsearch.search.SearchHits
;
import
org.elasticsearch.search.SearchHits
;
import
org.elasticsearch.search.aggregations.AggregationBuilders
;
import
org.elasticsearch.search.aggregations.Aggregations
;
import
org.elasticsearch.search.aggregations.BucketOrder
;
import
org.elasticsearch.search.aggregations.bucket.terms.Terms
;
import
org.elasticsearch.search.aggregations.bucket.terms.TermsAggregationBuilder
;
import
org.elasticsearch.search.builder.SearchSourceBuilder
;
import
org.elasticsearch.search.builder.SearchSourceBuilder
;
import
org.elasticsearch.search.sort.SortOrder
;
import
org.elasticsearch.search.sort.SortOrder
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
@@ -291,4 +296,37 @@ public class EsService {
...
@@ -291,4 +296,37 @@ public class EsService {
}
}
return
null
;
return
null
;
}
}
public
List
<
String
>
groupByOrigin
(
String
title
,
String
publishDate
)
{
List
<
String
>
originList
=
new
ArrayList
<>();
SearchRequest
searchRequest
=
new
SearchRequest
(
Constants
.
COLLECT_INDEX
);
SearchSourceBuilder
searchSourceBuilder
=
new
SearchSourceBuilder
();
//只返回分组聚合结果,不返回具体数据
searchSourceBuilder
.
size
(
0
);
//创建查询对象
BoolQueryBuilder
boolQuery
=
QueryBuilders
.
boolQuery
();
String
[]
arr
=
new
String
[]{
"title"
};
boolQuery
.
must
(
QueryBuilders
.
multiMatchQuery
(
title
,
arr
));
boolQuery
.
filter
(
QueryBuilders
.
rangeQuery
(
"publishDate"
).
gt
(
EsDateUtil
.
esFieldDateFormat
(
publishDate
)));
TermsAggregationBuilder
aggregationBuilder
=
AggregationBuilders
.
terms
(
"group_origin"
)
.
field
(
"origin.keyword"
)
.
size
(
20
)
.
order
(
BucketOrder
.
count
(
false
));
searchSourceBuilder
.
query
(
boolQuery
);
searchSourceBuilder
.
aggregation
(
aggregationBuilder
);
searchRequest
.
source
(
searchSourceBuilder
);
try
{
SearchResponse
searchResponse
=
client
.
search
(
searchRequest
,
RequestOptions
.
DEFAULT
);
Aggregations
aggregations
=
searchResponse
.
getAggregations
();
Terms
groupOrigin
=
aggregations
.
get
(
"group_origin"
);
List
<?
extends
Terms
.
Bucket
>
buckets
=
groupOrigin
.
getBuckets
();
for
(
Terms
.
Bucket
bucket
:
buckets
)
{
String
origin
=
bucket
.
getKeyAsString
();
originList
.
add
(
origin
);
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
originList
;
}
}
}
src/main/java/com/zzsn/event/service/EsStatisticsService.java
浏览文件 @
00256774
...
@@ -146,4 +146,6 @@ public interface EsStatisticsService {
...
@@ -146,4 +146,6 @@ public interface EsStatisticsService {
Page
<
NegativeDataVO
>
labelPageList
(
String
labelId
,
String
startTime
,
String
endTime
,
Integer
pageNo
,
Integer
pageSize
);
Page
<
NegativeDataVO
>
labelPageList
(
String
labelId
,
String
startTime
,
String
endTime
,
Integer
pageNo
,
Integer
pageSize
);
CountVO
flowData
(
String
subjectId
,
String
startTime
,
String
endTime
,
Integer
type
);
CountVO
flowData
(
String
subjectId
,
String
startTime
,
String
endTime
,
Integer
type
);
long
totalCount
(
List
<
String
>
eventIdList
,
String
startTime
,
String
endTime
);
}
}
src/main/java/com/zzsn/event/service/IEventService.java
浏览文件 @
00256774
...
@@ -4,9 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
...
@@ -4,9 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import
com.zzsn.event.entity.Event
;
import
com.zzsn.event.entity.Event
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.zzsn.event.entity.LabelEntity
;
import
com.zzsn.event.entity.LabelEntity
;
import
com.zzsn.event.vo.AddEventParam
;
import
com.zzsn.event.vo.*
;
import
com.zzsn.event.vo.KeyWordsPage
;
import
com.zzsn.event.vo.SubjectKafkaVo
;
import
org.springframework.web.multipart.MultipartFile
;
import
org.springframework.web.multipart.MultipartFile
;
import
java.util.Date
;
import
java.util.Date
;
...
@@ -29,7 +27,7 @@ public interface IEventService extends IService<Event> {
...
@@ -29,7 +27,7 @@ public interface IEventService extends IService<Event> {
List
<
SubjectKafkaVo
>
eventSubjectList
();
List
<
SubjectKafkaVo
>
eventSubjectList
();
IPage
<
Event
>
pageList
(
Event
event
,
Integer
pageNo
,
Integer
pageSize
);
IPage
<
Event
>
pageList
(
Event
event
,
Integer
pageNo
,
Integer
pageSize
,
String
order
,
String
orderType
);
void
extractHotWords
(
AddEventParam
event
);
void
extractHotWords
(
AddEventParam
event
);
...
@@ -46,4 +44,8 @@ public interface IEventService extends IService<Event> {
...
@@ -46,4 +44,8 @@ public interface IEventService extends IService<Event> {
String
upload
(
MultipartFile
file
);
String
upload
(
MultipartFile
file
);
List
<
LabelEntity
>
listByType
(
String
labelTypeId
);
List
<
LabelEntity
>
listByType
(
String
labelTypeId
);
DisplayInfo
articleDetail
(
String
articleId
);
Result
<?>
hotWords
(
String
id
,
Integer
number
);
}
}
src/main/java/com/zzsn/event/service/ISysBaseDomesticRegionService.java
0 → 100644
浏览文件 @
00256774
package
com
.
zzsn
.
event
.
service
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.zzsn.event.entity.SysBaseDomesticRegion
;
/**
* @Description: 国内地域表
* @Author: jeecg-boot
* @Date: 2022-03-09
* @Version: V1.0
*/
public
interface
ISysBaseDomesticRegionService
extends
IService
<
SysBaseDomesticRegion
>
{
}
src/main/java/com/zzsn/event/service/SubjectDisplayServive.java
浏览文件 @
00256774
package
com
.
zzsn
.
event
.
service
;
package
com
.
zzsn
.
event
.
service
;
import
cn.hutool.json.JSONUtil
;
import
cn.hutool.json.JSONUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.core.toolkit.CollectionUtils
;
import
com.baomidou.mybatisplus.core.toolkit.CollectionUtils
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
...
@@ -9,6 +10,8 @@ import com.zzsn.event.util.DateUtil;
...
@@ -9,6 +10,8 @@ import com.zzsn.event.util.DateUtil;
import
com.zzsn.event.util.EsDateUtil
;
import
com.zzsn.event.util.EsDateUtil
;
import
com.zzsn.event.util.EsIndexUtil
;
import
com.zzsn.event.util.EsIndexUtil
;
import
com.zzsn.event.vo.DisplayInfo
;
import
com.zzsn.event.vo.DisplayInfo
;
import
com.zzsn.event.vo.RepeatHold
;
import
com.zzsn.event.vo.SpecialInformation
;
import
com.zzsn.event.vo.SubjectInfoVo
;
import
com.zzsn.event.vo.SubjectInfoVo
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
...
@@ -21,12 +24,21 @@ import org.elasticsearch.index.query.BoolQueryBuilder;
...
@@ -21,12 +24,21 @@ import org.elasticsearch.index.query.BoolQueryBuilder;
import
org.elasticsearch.index.query.QueryBuilders
;
import
org.elasticsearch.index.query.QueryBuilders
;
import
org.elasticsearch.index.query.TermQueryBuilder
;
import
org.elasticsearch.index.query.TermQueryBuilder
;
import
org.elasticsearch.search.SearchHit
;
import
org.elasticsearch.search.SearchHit
;
import
org.elasticsearch.search.SearchHits
;
import
org.elasticsearch.search.aggregations.AggregationBuilders
;
import
org.elasticsearch.search.aggregations.Aggregations
;
import
org.elasticsearch.search.aggregations.BucketOrder
;
import
org.elasticsearch.search.aggregations.bucket.terms.Terms
;
import
org.elasticsearch.search.aggregations.bucket.terms.TermsAggregationBuilder
;
import
org.elasticsearch.search.builder.SearchSourceBuilder
;
import
org.elasticsearch.search.builder.SearchSourceBuilder
;
import
org.elasticsearch.search.collapse.CollapseBuilder
;
import
org.elasticsearch.search.sort.SortOrder
;
import
org.elasticsearch.search.sort.SortOrder
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
java.io.IOException
;
import
java.util.*
;
import
java.util.*
;
import
java.util.stream.Collectors
;
@Slf4j
@Slf4j
@Service
@Service
...
@@ -47,9 +59,8 @@ public class SubjectDisplayServive {
...
@@ -47,9 +59,8 @@ public class SubjectDisplayServive {
* @param sourceId
* @param sourceId
* @throws Exception 异常
* @throws Exception 异常
*/
*/
public
IPage
<
DisplayInfo
>
frontListByPage
(
String
objectType
,
String
objectId
,
String
userId
,
SubjectInfoVo
subjectInfo
,
String
video
,
int
offset
,
int
pageSize
,
public
IPage
<
DisplayInfo
>
frontListByPage
(
SubjectInfoVo
subjectInfo
,
String
video
,
int
offset
,
int
pageSize
,
String
column
,
String
order
,
String
crawler
,
String
isSubject
,
String
subjectType
,
String
labelIds
,
List
<
String
>
socialCreditCodeList
,
String
sourceId
,
Integer
isCustomer
)
throws
Exception
{
String
column
,
String
order
,
String
crawler
,
String
labelIds
,
List
<
String
>
socialCreditCodeList
,
String
sourceId
)
throws
Exception
{
String
[]
indexs
=
EsIndexUtil
.
getIndexIntervalYear
(
Constants
.
ES_DATA_FOR_SUBJECT
,
subjectInfo
.
getStartTime
(),
subjectInfo
.
getEndTime
());
SearchRequest
searchRequest
=
new
SearchRequest
(
Constants
.
ES_DATA_FOR_SUBJECT
);
SearchRequest
searchRequest
=
new
SearchRequest
(
Constants
.
ES_DATA_FOR_SUBJECT
);
SearchSourceBuilder
searchSourceBuilder
=
new
SearchSourceBuilder
();
SearchSourceBuilder
searchSourceBuilder
=
new
SearchSourceBuilder
();
//设置分页参数
//设置分页参数
...
@@ -175,21 +186,137 @@ public class SubjectDisplayServive {
...
@@ -175,21 +186,137 @@ public class SubjectDisplayServive {
SearchResponse
searchResponse
=
client
.
search
(
searchRequest
,
RequestOptions
.
DEFAULT
);
SearchResponse
searchResponse
=
client
.
search
(
searchRequest
,
RequestOptions
.
DEFAULT
);
SearchHit
[]
searchHits
=
searchResponse
.
getHits
().
getHits
();
SearchHit
[]
searchHits
=
searchResponse
.
getHits
().
getHits
();
List
<
DisplayInfo
>
list
=
new
ArrayList
<>();
List
<
DisplayInfo
>
list
=
new
ArrayList
<>();
int
i
=
0
;
for
(
SearchHit
hit
:
searchHits
)
{
for
(
SearchHit
hit
:
searchHits
)
{
i
++;
String
queryInfo
=
hit
.
getSourceAsString
();
String
queryInfo
=
hit
.
getSourceAsString
();
DisplayInfo
info
=
JSONUtil
.
toBean
(
queryInfo
,
DisplayInfo
.
class
);
DisplayInfo
info
=
JSONUtil
.
toBean
(
queryInfo
,
DisplayInfo
.
class
);
info
.
setPublishDate
(
EsDateUtil
.
esFieldDateMapping
(
info
.
getPublishDate
()));
info
.
setPublishDate
(
EsDateUtil
.
esFieldDateMapping
(
info
.
getPublishDate
()));
String
index
=
hit
.
getIndex
();
String
index
=
hit
.
getIndex
();
info
.
setIndex
(
index
);
info
.
setIndex
(
index
);
info
.
setSimilarNumber
(
0
);
list
.
add
(
info
);
list
.
add
(
info
);
}
}
Map
<
String
,
Integer
>
map
=
getSimilarNumber
(
list
.
stream
().
map
(
DisplayInfo:
:
getId
).
collect
(
Collectors
.
toList
()));
for
(
DisplayInfo
displayInfo
:
list
)
{
displayInfo
.
setSimilarNumber
(
map
.
get
(
displayInfo
.
getId
()));
}
IPage
<
DisplayInfo
>
pageData
=
new
Page
<>(
offset
,
pageSize
,
searchResponse
.
getHits
().
getTotalHits
().
value
);
IPage
<
DisplayInfo
>
pageData
=
new
Page
<>(
offset
,
pageSize
,
searchResponse
.
getHits
().
getTotalHits
().
value
);
pageData
.
setRecords
(
list
);
pageData
.
setRecords
(
list
);
return
pageData
;
return
pageData
;
}
}
/**
* 获取相似文章数
*
* @param articleIdList 资讯id
* @return
*/
private
Map
<
String
,
Integer
>
getSimilarNumber
(
List
<
String
>
articleIdList
)
{
Map
<
String
,
Integer
>
map
=
new
HashMap
<>();
articleIdList
.
add
(
"70694089423478814"
);
articleIdList
.
add
(
"71056913337311317"
);
articleIdList
.
add
(
"71056913337311282"
);
Map
<
String
,
String
>
markmap
=
getMark
(
articleIdList
);
List
<
String
>
markList
=
new
ArrayList
<>(
markmap
.
keySet
());
SearchRequest
searchRequest
=
new
SearchRequest
(
Constants
.
ES_REPEAT_OLD
);
SearchSourceBuilder
searchSourceBuilder
=
new
SearchSourceBuilder
();
//创建查询对象
BoolQueryBuilder
boolQuery
=
QueryBuilders
.
boolQuery
();
boolQuery
.
must
(
QueryBuilders
.
termsQuery
(
"repeatMark"
,
markList
));
searchSourceBuilder
.
size
(
0
);
searchSourceBuilder
.
trackTotalHits
(
true
);
TermsAggregationBuilder
aggregationBuilder
=
AggregationBuilders
.
terms
(
"group_mark"
)
.
field
(
"repeatMark"
)
.
order
(
BucketOrder
.
count
(
false
))
.
size
(
1
);
searchSourceBuilder
.
aggregation
(
aggregationBuilder
);
searchSourceBuilder
.
query
(
boolQuery
);
searchRequest
.
source
(
searchSourceBuilder
);
try
{
SearchResponse
response
=
client
.
search
(
searchRequest
,
RequestOptions
.
DEFAULT
);
Aggregations
aggregations
=
response
.
getAggregations
();
Terms
groupSource
=
aggregations
.
get
(
"group_mark"
);
List
<?
extends
Terms
.
Bucket
>
buckets
=
groupSource
.
getBuckets
();
if
(
org
.
apache
.
commons
.
collections4
.
CollectionUtils
.
isNotEmpty
(
buckets
))
{
for
(
Terms
.
Bucket
bucket
:
buckets
)
{
map
.
put
(
markmap
.
get
(
bucket
.
getKeyAsString
()),
(
int
)
bucket
.
getDocCount
());
}
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
map
;
}
private
Map
<
String
,
String
>
getMark
(
List
<
String
>
articleIdList
)
{
Map
<
String
,
String
>
map
=
new
HashMap
<>();
String
mark
=
null
;
SearchRequest
searchRequest
=
new
SearchRequest
(
Constants
.
ES_REPEAT_OLD
);
SearchSourceBuilder
searchSourceBuilder
=
new
SearchSourceBuilder
();
//创建查询对象
BoolQueryBuilder
boolQuery
=
QueryBuilders
.
boolQuery
();
boolQuery
.
must
(
QueryBuilders
.
termsQuery
(
"articleId"
,
articleIdList
));
searchSourceBuilder
.
query
(
boolQuery
);
searchRequest
.
source
(
searchSourceBuilder
);
try
{
SearchResponse
response
=
client
.
search
(
searchRequest
,
RequestOptions
.
DEFAULT
);
SearchHit
[]
hits
=
response
.
getHits
().
getHits
();
if
(
hits
!=
null
&&
hits
.
length
!=
0
)
{
for
(
SearchHit
hit
:
hits
)
{
String
queryInfo
=
hit
.
getSourceAsString
();
RepeatHold
info
=
JSONUtil
.
toBean
(
queryInfo
,
RepeatHold
.
class
);
map
.
put
(
info
.
getRepeatMark
(),
info
.
getArticleId
());
}
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
map
;
}
/**
* 根据标题获取相关推荐文章
*
* @param title
* @return
*/
public
IPage
<
SpecialInformation
>
queryRecommendList
(
String
title
,
Integer
pageNo
,
Integer
pageSize
)
throws
IOException
{
String
[]
indexs
=
EsIndexUtil
.
getIndexLatelyTwoYear
(
Constants
.
ES_DATA_FOR_SUBJECT
);
SearchRequest
searchRequest
=
new
SearchRequest
(
indexs
);
SearchSourceBuilder
searchSourceBuilder
=
new
SearchSourceBuilder
();
//设置分页参数
searchSourceBuilder
.
size
(
pageSize
);
searchSourceBuilder
.
from
((
pageNo
-
1
)
*
pageSize
);
searchSourceBuilder
.
sort
(
"score"
,
SortOrder
.
DESC
);
searchSourceBuilder
.
sort
(
"publishDate"
,
SortOrder
.
DESC
);
//默认最大数量是10000,设置为true后,显示准确数量
searchSourceBuilder
.
trackTotalHits
(
true
);
//创建查询对象
BoolQueryBuilder
boolQuery
=
QueryBuilders
.
boolQuery
();
List
<
Integer
>
checkStatus
=
new
ArrayList
<>();
checkStatus
.
add
(
1
);
boolQuery
.
must
(
QueryBuilders
.
termsQuery
(
"checkStatus"
,
checkStatus
));
boolQuery
.
must
(
QueryBuilders
.
matchQuery
(
"title"
,
title
));
boolQuery
.
mustNot
(
QueryBuilders
.
matchQuery
(
"type"
,
"video"
));
searchSourceBuilder
.
query
(
boolQuery
);
searchRequest
.
source
(
searchSourceBuilder
);
searchSourceBuilder
.
collapse
(
new
CollapseBuilder
(
"sourceAddress.keyword"
));
SearchResponse
searchResponse
=
client
.
search
(
searchRequest
,
RequestOptions
.
DEFAULT
);
SearchHit
[]
searchHits
=
searchResponse
.
getHits
().
getHits
();
List
<
SpecialInformation
>
list
=
new
ArrayList
<>();
for
(
SearchHit
hit
:
searchHits
)
{
String
queryInfo
=
hit
.
getSourceAsString
();
SpecialInformation
info
=
JSON
.
parseObject
(
queryInfo
,
SpecialInformation
.
class
);
info
.
setPublishDate
(
EsDateUtil
.
esFieldDateMapping
(
info
.
getPublishDate
()));
list
.
add
(
info
);
}
IPage
<
SpecialInformation
>
pageData
=
new
Page
<>(
pageNo
,
pageSize
,
searchResponse
.
getHits
().
getTotalHits
().
value
);
pageData
.
setRecords
(
list
);
return
pageData
;
}
}
}
src/main/java/com/zzsn/event/service/impl/AnalysisServiceImpl.java
浏览文件 @
00256774
...
@@ -10,6 +10,7 @@ import com.zzsn.event.service.*;
...
@@ -10,6 +10,7 @@ import com.zzsn.event.service.*;
import
com.zzsn.event.util.DateUtil
;
import
com.zzsn.event.util.DateUtil
;
import
com.zzsn.event.vo.PropagationPathVo
;
import
com.zzsn.event.vo.PropagationPathVo
;
import
com.zzsn.event.vo.SubjectDataVo
;
import
com.zzsn.event.vo.SubjectDataVo
;
import
io.netty.util.Constant
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.BeanUtils
;
...
@@ -104,83 +105,57 @@ public class AnalysisServiceImpl implements AnalysisService {
...
@@ -104,83 +105,57 @@ public class AnalysisServiceImpl implements AnalysisService {
@Override
@Override
public
PropagationPathVo
propagationPath
(
String
subjectId
)
{
public
PropagationPathVo
propagationPath
(
String
subjectId
)
{
PropagationPathVo
top
=
null
;
Event
event
=
eventService
.
getById
(
subjectId
);
Event
event
=
eventService
.
getById
(
subjectId
);
String
subjectName
=
event
.
getEventName
();
String
subjectName
=
event
.
getEventName
();
List
<
PropagationPathVo
>
children
=
new
ArrayList
<>();
List
<
PropagationPathVo
>
children
=
new
ArrayList
<>();
//获取专题数据
//获取专题数据
List
<
SubjectDataVo
>
specialDataList
=
getSubjectData
(
event
,
"0"
,
Constants
.
FETCH_FIELDS_STATISTIC
,
1
);
List
<
SubjectDataVo
>
specialDataList
=
getSubjectData
(
event
,
"0"
,
Constants
.
FETCH_FIELDS_STATISTIC
,
1
);
if
(
CollectionUtils
.
isNotEmpty
(
specialDataList
))
{
if
(
com
.
baomidou
.
mybatisplus
.
core
.
toolkit
.
CollectionUtils
.
isNotEmpty
(
specialDataList
))
{
//用于来源去重
//最早发布的时间
List
<
String
>
allOriginList
=
new
ArrayList
<>();
String
publishDate
=
specialDataList
.
get
(
0
).
getPublishDate
();
top
=
new
PropagationPathVo
();
String
earlyTime
;
top
.
setName
(
subjectName
);
if
(
publishDate
.
length
()
>
10
)
{
//获取发布时间最早的前10的资讯(来源不重复)
earlyTime
=
DateUtil
.
formatStr
(
publishDate
,
"yyyy-MM-dd HH:mm:ss"
,
"yyyy-MM-dd"
);
List
<
PropagationPathVo
>
secondList
=
new
ArrayList
<>();
}
else
{
List
<
SubjectDataVo
>
earlyList
=
topN
(
specialDataList
,
6
);
earlyTime
=
publishDate
;
earlyList
.
forEach
(
e
->
allOriginList
.
add
(
e
.
getOrigin
()));
}
for
(
SubjectDataVo
subjectDataVo
:
earlyList
)
{
//获取最早发布的信息,若过多,取前一个
String
origin
=
subjectDataVo
.
getOrigin
();
List
<
SubjectDataVo
>
earlyList
=
specialDataList
.
stream
()
PropagationPathVo
second
=
new
PropagationPathVo
();
.
filter
(
subjectDataVo
->
{
second
.
setName
(
origin
);
String
date
=
subjectDataVo
.
getPublishDate
();
secondList
.
add
(
second
);
if
(
date
.
length
()
>
10
)
{
List
<
String
>
thirdList
=
esService
.
groupByOrigin
(
subjectDataVo
.
getTitle
(),
subjectDataVo
.
getPublishDate
());
date
=
DateUtil
.
formatStr
(
date
,
"yyyy-MM-dd HH:mm:ss"
,
"yyyy-MM-dd"
);
thirdList
.
removeAll
(
allOriginList
);
List
<
PropagationPathVo
>
lastList
=
new
ArrayList
<>();
if
(
thirdList
.
size
()
>
3
)
{
thirdList
=
thirdList
.
subList
(
0
,
3
);
}
}
return
earlyTime
.
equals
(
date
);
for
(
String
s
:
thirdList
)
{
})
PropagationPathVo
third
=
new
PropagationPathVo
();
.
collect
(
Collectors
.
toList
());
third
.
setName
(
s
);
if
(
earlyList
.
size
()
>
1
)
{
lastList
.
add
(
third
);
earlyList
=
earlyList
.
subList
(
0
,
1
);
}
}
Map
<
SubjectDataVo
,
List
<
SubjectDataVo
>>
map
=
new
HashMap
<>();
second
.
setChildren
(
lastList
);
//获取跟最早发布的信息的重复信息
allOriginList
.
addAll
(
thirdList
);
earlyList
.
forEach
(
e
->
{
List
<
SubjectDataVo
>
subjectDataVoList
=
esService
.
dataById
(
subjectId
,
e
.
getId
());
if
(
CollectionUtils
.
isNotEmpty
(
subjectDataVoList
))
{
map
.
put
(
e
,
subjectDataVoList
);
}
}
});
top
.
setChildren
(
secondList
);
//若最早发布的信息没有重复数据,则随机补充10个重复数最多的信息来源
// 本不该有的逻辑,奈何数据采集、处理 不给力
if
(
map
.
isEmpty
())
{
for
(
SubjectDataVo
subjectDataVo
:
earlyList
)
{
PropagationPathVo
vo
=
new
PropagationPathVo
();
String
topOrigin
=
subjectDataVo
.
getOrigin
();
vo
.
setName
(
topOrigin
);
//
vo
.
setChildren
(
pathByRepeat
(
topOrigin
,
event
));
children
.
add
(
vo
);
}
}
}
else
{
//正常逻辑
return
top
;
Map
<
SubjectDataVo
,
LinkedHashMap
<
String
,
List
<
SubjectDataVo
>>>
dataMap
=
new
HashMap
<>();
for
(
Map
.
Entry
<
SubjectDataVo
,
List
<
SubjectDataVo
>>
entry
:
map
.
entrySet
())
{
SubjectDataVo
information
=
entry
.
getKey
();
List
<
SubjectDataVo
>
value
=
entry
.
getValue
();
//按来源分组
Map
<
String
,
List
<
SubjectDataVo
>>
originMap
=
value
.
stream
().
filter
(
e
->
StringUtils
.
isNotEmpty
(
e
.
getOrigin
()))
.
collect
(
Collectors
.
groupingBy
(
SubjectDataVo:
:
getOrigin
));
//按统一来源信息数量 倒序 并截取前10
LinkedHashMap
<
String
,
List
<
SubjectDataVo
>>
orderMap
=
new
LinkedHashMap
<>();
originMap
.
entrySet
().
stream
()
.
sorted
((
o1
,
o2
)
->
o2
.
getValue
().
size
()
-
o1
.
getValue
().
size
()).
limit
(
10
)
.
collect
(
Collectors
.
toList
()).
forEach
(
info
->
orderMap
.
put
(
info
.
getKey
(),
info
.
getValue
()));
dataMap
.
put
(
information
,
orderMap
);
}
}
children
=
getPath
(
dataMap
);
//获取发布时间最早的前N条资讯(来源不重复)
private
List
<
SubjectDataVo
>
topN
(
List
<
SubjectDataVo
>
list
,
Integer
num
){
TreeSet
<
SubjectDataVo
>
subjectDataVos
=
new
TreeSet
<>(
Comparator
.
comparing
(
SubjectDataVo:
:
getOrigin
));
for
(
SubjectDataVo
subjectDataVo
:
list
)
{
subjectDataVos
.
add
(
subjectDataVo
);
if
(
subjectDataVos
.
size
()
==
num
)
{
break
;
}
}
}
}
PropagationPathVo
pathVo
=
null
;
return
new
ArrayList
<>(
subjectDataVos
);
if
(
CollectionUtils
.
isNotEmpty
(
children
))
{
pathVo
=
new
PropagationPathVo
();
pathVo
.
setName
(
subjectName
);
if
(
null
!=
children
.
get
(
0
)){
pathVo
.
setChildren
(
children
.
get
(
0
).
getChildren
());
}
}
}
//
return
pathVo
;
}
//
// @Override
// @Override
// public Map<String, Object> statisticAnalysis(String subjectId) {
// public Map<String, Object> statisticAnalysis(String subjectId) {
// Map<String, Object> map = new HashMap<>();
// Map<String, Object> map = new HashMap<>();
...
...
src/main/java/com/zzsn/event/service/impl/EsStatisticsServiceImpl.java
浏览文件 @
00256774
...
@@ -42,6 +42,7 @@ import java.util.ArrayList;
...
@@ -42,6 +42,7 @@ import java.util.ArrayList;
import
java.util.HashMap
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
/**
/**
* 舆情信息统计 es查询工具类
* 舆情信息统计 es查询工具类
...
@@ -449,6 +450,9 @@ public class EsStatisticsServiceImpl implements EsStatisticsService {
...
@@ -449,6 +450,9 @@ public class EsStatisticsServiceImpl implements EsStatisticsService {
try
{
try
{
SearchResponse
response
=
client
.
search
(
searchRequest
,
RequestOptions
.
DEFAULT
);
SearchResponse
response
=
client
.
search
(
searchRequest
,
RequestOptions
.
DEFAULT
);
SearchHit
[]
hits
=
response
.
getHits
().
getHits
();
SearchHit
[]
hits
=
response
.
getHits
().
getHits
();
if
(
hits
.
length
==
0
){
return
" There is nothing about this event in repeathold "
;
}
SearchHit
hit
=
hits
[
0
];
SearchHit
hit
=
hits
[
0
];
title
=
hit
.
getSourceAsMap
().
get
(
"title"
).
toString
();
title
=
hit
.
getSourceAsMap
().
get
(
"title"
).
toString
();
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
...
@@ -533,6 +537,7 @@ public class EsStatisticsServiceImpl implements EsStatisticsService {
...
@@ -533,6 +537,7 @@ public class EsStatisticsServiceImpl implements EsStatisticsService {
if
(
StringUtils
.
isNotEmpty
(
relationId
))
{
if
(
StringUtils
.
isNotEmpty
(
relationId
))
{
param
.
setSearchLabelIds
(
relationId
);
param
.
setSearchLabelIds
(
relationId
);
}
}
param
.
setSubjectId
(
subjectId
);
if
(
StringUtils
.
isNotBlank
(
startTime
))
{
if
(
StringUtils
.
isNotBlank
(
startTime
))
{
param
.
setStartTime
(
startTime
);
param
.
setStartTime
(
startTime
);
}
}
...
@@ -552,6 +557,7 @@ public class EsStatisticsServiceImpl implements EsStatisticsService {
...
@@ -552,6 +557,7 @@ public class EsStatisticsServiceImpl implements EsStatisticsService {
return
dataSearchService
.
packageSearQuery
(
param
);
return
dataSearchService
.
packageSearQuery
(
param
);
}
}
// /**
// /**
// * 获取一级地域信息
// * 获取一级地域信息
// *
// *
...
@@ -621,4 +627,24 @@ public class EsStatisticsServiceImpl implements EsStatisticsService {
...
@@ -621,4 +627,24 @@ public class EsStatisticsServiceImpl implements EsStatisticsService {
return
countVO
;
return
countVO
;
}
}
@Override
public
long
totalCount
(
List
<
String
>
eventIdList
,
String
startTime
,
String
endTime
)
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
SearchRequest
searchRequest
=
new
SearchRequest
(
Constants
.
ES_DATA_FOR_SUBJECT
);
String
eventIds
=
eventIdList
.
stream
().
collect
(
Collectors
.
joining
(
","
));
SearchSourceBuilder
searchSourceBuilder
=
formatSourceBuilder
(
eventIds
,
null
,
startTime
,
endTime
,
null
);
searchSourceBuilder
.
size
(
0
);
searchSourceBuilder
.
trackTotalHits
(
true
);
searchRequest
.
source
(
searchSourceBuilder
);
try
{
SearchResponse
response
=
client
.
search
(
searchRequest
,
RequestOptions
.
DEFAULT
);
long
value
=
response
.
getHits
().
getTotalHits
().
value
;
return
value
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
0
;
}
}
}
src/main/java/com/zzsn/event/service/impl/EventServiceImpl.java
浏览文件 @
00256774
package
com
.
zzsn
.
event
.
service
.
impl
;
package
com
.
zzsn
.
event
.
service
.
impl
;
import
com.alibaba.fastjson.JSON
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
...
@@ -13,11 +14,23 @@ import com.zzsn.event.mapper.EventMapper;
...
@@ -13,11 +14,23 @@ import com.zzsn.event.mapper.EventMapper;
import
com.zzsn.event.producer.ProduceInfo
;
import
com.zzsn.event.producer.ProduceInfo
;
import
com.zzsn.event.service.*
;
import
com.zzsn.event.service.*
;
import
com.zzsn.event.util.*
;
import
com.zzsn.event.util.*
;
import
com.zzsn.event.vo.AddEventParam
;
import
com.zzsn.event.vo.*
;
import
com.zzsn.event.vo.KeyWordsDTO
;
import
com.zzsn.event.vo.KeyWordsPage
;
import
com.zzsn.event.vo.SubjectKafkaVo
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.elasticsearch.action.search.SearchRequest
;
import
org.elasticsearch.action.search.SearchResponse
;
import
org.elasticsearch.client.RequestOptions
;
import
org.elasticsearch.client.RestHighLevelClient
;
import
org.elasticsearch.index.query.BoolQueryBuilder
;
import
org.elasticsearch.search.SearchHit
;
import
org.elasticsearch.search.aggregations.AggregationBuilders
;
import
org.elasticsearch.search.aggregations.bucket.terms.ParsedStringTerms
;
import
org.elasticsearch.search.aggregations.bucket.terms.Terms
;
import
org.elasticsearch.search.aggregations.bucket.terms.TermsAggregationBuilder
;
import
org.elasticsearch.search.aggregations.metrics.ParsedTopHits
;
import
org.elasticsearch.search.aggregations.metrics.TopHitsAggregationBuilder
;
import
org.elasticsearch.search.builder.SearchSourceBuilder
;
import
org.elasticsearch.search.sort.SortOrder
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.beans.factory.annotation.Value
;
...
@@ -66,6 +79,11 @@ public class EventServiceImpl extends ServiceImpl<EventMapper, Event> implements
...
@@ -66,6 +79,11 @@ public class EventServiceImpl extends ServiceImpl<EventMapper, Event> implements
private
RedisUtil
redisUtil
;
private
RedisUtil
redisUtil
;
@Value
(
"${files.storage}"
)
@Value
(
"${files.storage}"
)
String
filesStorage
;
String
filesStorage
;
@Autowired
private
RestHighLevelClient
client
;
@Autowired
private
EsOpUtil
esOpUtil
;
@Value
(
"${scoreRule.weekScore}"
)
@Value
(
"${scoreRule.weekScore}"
)
Integer
weekScore
;
Integer
weekScore
;
...
@@ -98,9 +116,7 @@ public class EventServiceImpl extends ServiceImpl<EventMapper, Event> implements
...
@@ -98,9 +116,7 @@ public class EventServiceImpl extends ServiceImpl<EventMapper, Event> implements
event
.
setWechatHot
(
wechatHot
);
event
.
setWechatHot
(
wechatHot
);
event
.
setOtherHot
(
otherHot
);
event
.
setOtherHot
(
otherHot
);
this
.
updateById
(
event
);
this
.
updateById
(
event
);
}
}
}
}
...
@@ -147,12 +163,14 @@ public class EventServiceImpl extends ServiceImpl<EventMapper, Event> implements
...
@@ -147,12 +163,14 @@ public class EventServiceImpl extends ServiceImpl<EventMapper, Event> implements
}
}
@Override
@Override
public
IPage
<
Event
>
pageList
(
Event
event
,
Integer
pageNo
,
Integer
pageSize
)
{
public
IPage
<
Event
>
pageList
(
Event
event
,
Integer
pageNo
,
Integer
pageSize
,
String
order
,
String
orderType
)
{
Integer
offset
=
(
pageNo
-
1
)
*
pageSize
;
Integer
offset
=
(
pageNo
-
1
)
*
pageSize
;
if
(
pageNo
==
0
)
{
if
(
pageNo
==
0
)
{
offset
=
0
;
offset
=
0
;
}
}
List
<
Event
>
pageList
=
baseMapper
.
pageList
(
event
,
offset
,
pageSize
);
List
<
Event
>
pageList
=
baseMapper
.
pageList
(
event
,
offset
,
pageSize
,
order
,
orderType
);
Map
<
String
,
Object
>
map
=
getFistMap
(
pageList
);
//获取总条数
//获取总条数
Integer
count
=
baseMapper
.
totalCount
(
event
);
Integer
count
=
baseMapper
.
totalCount
(
event
);
IPage
<
Event
>
pageData
=
new
Page
<>(
pageNo
,
pageSize
,
count
);
IPage
<
Event
>
pageData
=
new
Page
<>(
pageNo
,
pageSize
,
count
);
...
@@ -160,6 +178,45 @@ public class EventServiceImpl extends ServiceImpl<EventMapper, Event> implements
...
@@ -160,6 +178,45 @@ public class EventServiceImpl extends ServiceImpl<EventMapper, Event> implements
return
pageData
;
return
pageData
;
}
}
private
Map
<
String
,
Object
>
getFistMap
(
List
<
Event
>
pageList
)
{
Map
<
String
,
Object
>
resultlist
=
new
HashMap
<>();
BoolQueryBuilder
boolQueryBuilder
=
new
BoolQueryBuilder
();
//根据设备查询设备的相关信息
SearchSourceBuilder
searchSourceBuilder
=
new
SearchSourceBuilder
();
searchSourceBuilder
.
from
(
0
);
searchSourceBuilder
.
size
(
0
);
searchSourceBuilder
.
query
(
boolQueryBuilder
);
searchSourceBuilder
.
sort
(
"publishDate"
,
SortOrder
.
ASC
);
// 聚合搜索
TermsAggregationBuilder
one
=
AggregationBuilders
.
terms
(
"one"
).
field
(
"subjectId.keyword"
);
// TermsAggregationBuilder two = AggregationBuilders.terms("two").field("media");
// TermsAggregationBuilder three = AggregationBuilders.terms("three").field("pubTime.keyword");
//ES分组取每组第一条Java写法
TopHitsAggregationBuilder
topHitsAggregationBuilder
=
AggregationBuilders
.
topHits
(
"top_docs"
).
size
(
1
);
one
.
subAggregation
(
topHitsAggregationBuilder
);
searchSourceBuilder
.
aggregation
(
one
);
SearchRequest
searchRequest
=
new
SearchRequest
(
Constants
.
ES_DATA_FOR_SUBJECT
);
searchRequest
.
source
(
searchSourceBuilder
);
// 查询ES
SearchResponse
searchResponse
=
null
;
try
{
searchResponse
=
client
.
search
(
searchRequest
,
RequestOptions
.
DEFAULT
);
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
ParsedStringTerms
oneTerms
=
searchResponse
.
getAggregations
().
get
(
"one"
);
List
<?
extends
Terms
.
Bucket
>
onebuckets
=
oneTerms
.
getBuckets
();
for
(
Terms
.
Bucket
threebucket
:
onebuckets
)
{
ParsedTopHits
topDetail
=
threebucket
.
getAggregations
().
get
(
"top_docs"
);
SearchHit
[]
hits
=
topDetail
.
getHits
().
getHits
();
Map
<
String
,
Object
>
latestDocument
=
hits
[
0
].
getSourceAsMap
();
resultlist
.
put
(
latestDocument
.
get
(
"subjectId"
).
toString
(),
latestDocument
);
}
return
resultlist
;
}
@Override
@Override
public
void
extractHotWords
(
AddEventParam
event
)
{
public
void
extractHotWords
(
AddEventParam
event
)
{
if
(!
StringUtils
.
isEmpty
(
event
.
getExtractHotWords
())
&&
"1"
.
equals
(
event
.
getExtractHotWords
()))
{
if
(!
StringUtils
.
isEmpty
(
event
.
getExtractHotWords
())
&&
"1"
.
equals
(
event
.
getExtractHotWords
()))
{
...
@@ -256,6 +313,33 @@ public class EventServiceImpl extends ServiceImpl<EventMapper, Event> implements
...
@@ -256,6 +313,33 @@ public class EventServiceImpl extends ServiceImpl<EventMapper, Event> implements
return
baseMapper
.
listByType
(
labelTypeId
);
return
baseMapper
.
listByType
(
labelTypeId
);
}
}
@Override
public
DisplayInfo
articleDetail
(
String
articleId
)
{
Map
<
String
,
Object
>
map
=
esOpUtil
.
searchDoc
(
Constants
.
SUBJECT_INDEX
,
articleId
);
DisplayInfo
displayInfo
=
new
DisplayInfo
();
if
(
map
!=
null
)
{
displayInfo
=
JSON
.
parseObject
(
JSON
.
toJSONString
(
map
),
DisplayInfo
.
class
);
}
return
displayInfo
;
}
@Override
public
Result
<?>
hotWords
(
String
id
,
Integer
number
)
{
Map
<
String
,
Object
>
map
=
esOpUtil
.
searchDoc
(
Constants
.
ES_DATA_FOR_SUBJECT
,
id
);
String
content
=
map
.
get
(
"content"
).
toString
();
List
<
Map
.
Entry
<
String
,
Integer
>>
keywordsList
=
HanlpUtil
.
extractKeyWordsByText
(
content
,
number
);
List
<
StatisticsKeyWordVo
>
rn
=
new
ArrayList
<>();
if
(
CollectionUtils
.
isNotEmpty
(
keywordsList
))
{
for
(
Map
.
Entry
<
String
,
Integer
>
entry
:
keywordsList
)
{
StatisticsKeyWordVo
statisticsKeyWordVo
=
new
StatisticsKeyWordVo
();
statisticsKeyWordVo
.
setName
(
entry
.
getKey
());
statisticsKeyWordVo
.
setValue
(
entry
.
getValue
());
rn
.
add
(
statisticsKeyWordVo
);
}
}
return
Result
.
OK
(
rn
);
}
//生成文件夹路径
//生成文件夹路径
private
String
getFilePath
()
{
private
String
getFilePath
()
{
LocalDate
currentDate
=
LocalDate
.
now
();
LocalDate
currentDate
=
LocalDate
.
now
();
...
...
src/main/java/com/zzsn/event/service/impl/SysBaseDomesticRegionServiceImpl.java
0 → 100644
浏览文件 @
00256774
package
com
.
zzsn
.
event
.
service
.
impl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.zzsn.event.entity.SysBaseDomesticRegion
;
import
com.zzsn.event.mapper.SysBaseDomesticRegionMapper
;
import
com.zzsn.event.service.ISysBaseDomesticRegionService
;
import
org.springframework.stereotype.Service
;
/**
* @Description: 国内地域表
* @Author: jeecg-boot
* @Date: 2022-03-09
* @Version: V1.0
*/
@Service
public
class
SysBaseDomesticRegionServiceImpl
extends
ServiceImpl
<
SysBaseDomesticRegionMapper
,
SysBaseDomesticRegion
>
implements
ISysBaseDomesticRegionService
{
}
src/main/java/com/zzsn/event/task/AnalysisTask.java
浏览文件 @
00256774
package
com
.
zzsn
.
event
.
task
;
package
com
.
zzsn
.
event
.
task
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson2.JSON
;
import
com.alibaba.fastjson2.JSON
;
import
com.alibaba.fastjson2.JSONWriter
;
import
com.alibaba.fastjson2.JSONWriter
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
...
@@ -61,7 +62,7 @@ public class AnalysisTask {
...
@@ -61,7 +62,7 @@ public class AnalysisTask {
* 按天发送kafka 获取进行中(未结束)的事件专题列表
* 按天发送kafka 获取进行中(未结束)的事件专题列表
*/
*/
// @Scheduled(cron = "0 0 0 * * ?")
// @Scheduled(cron = "0 0 0 * * ?")
@Scheduled
(
cron
=
"0 * * * * ?"
)
//
@Scheduled(cron = "0 * * * * ?")
public
void
subjectList
()
{
public
void
subjectList
()
{
List
<
SubjectKafkaVo
>
data
=
new
ArrayList
<>();
List
<
SubjectKafkaVo
>
data
=
new
ArrayList
<>();
Date
today
=
new
Date
();
Date
today
=
new
Date
();
...
@@ -79,6 +80,7 @@ public class AnalysisTask {
...
@@ -79,6 +80,7 @@ public class AnalysisTask {
analysisTime
=
e
.
getTimeEnable
();
analysisTime
=
e
.
getTimeEnable
();
}
}
Integer
betweenTwoDate
=
DateUtil
.
betweenTwoDate
(
analysisTime
,
today
);
Integer
betweenTwoDate
=
DateUtil
.
betweenTwoDate
(
analysisTime
,
today
);
try
{
if
(
increCount
.
compareTo
(
e
.
getIncreAnaRule
())
>
0
if
(
increCount
.
compareTo
(
e
.
getIncreAnaRule
())
>
0
||
totalCount
.
compareTo
(
e
.
getTotalAnaRule
())
>
0
||
totalCount
.
compareTo
(
e
.
getTotalAnaRule
())
>
0
||
betweenTwoDate
.
compareTo
(
e
.
getTimeAnaRule
())
>
0
)
{
||
betweenTwoDate
.
compareTo
(
e
.
getTimeAnaRule
())
>
0
)
{
...
@@ -92,9 +94,13 @@ public class AnalysisTask {
...
@@ -92,9 +94,13 @@ public class AnalysisTask {
e
.
setAnalysisTime
(
today
);
e
.
setAnalysisTime
(
today
);
data
.
add
(
e
);
data
.
add
(
e
);
}
}
}
catch
(
Exception
exception
){
log
.
error
(
"事件{},报错信息:{}"
,
e
,
exception
.
getMessage
());
}
});
});
if
(
CollectionUtils
.
isNotEmpty
(
data
))
{
if
(
CollectionUtils
.
isNotEmpty
(
data
))
{
kafkaTemplate
.
send
(
Constants
.
EVENT_
ANALYSIS_TOPIC
,
JSON
.
toJSONString
(
data
));
kafkaTemplate
.
send
(
Constants
.
EVENT_
VIEWPOINT_SEND_DATA
,
JSON
.
toJSONString
(
data
));
}
}
log
.
info
(
"进行中(未结束)的事件专题列表数据{}发送成功!"
,
data
);
log
.
info
(
"进行中(未结束)的事件专题列表数据{}发送成功!"
,
data
);
}
}
...
@@ -104,7 +110,7 @@ public class AnalysisTask {
...
@@ -104,7 +110,7 @@ public class AnalysisTask {
* 按天发送 事件脉络 所需信息到kafka对应的topic
* 按天发送 事件脉络 所需信息到kafka对应的topic
* 保证信息采集的及时性,审核人员审核的及时性
* 保证信息采集的及时性,审核人员审核的及时性
*/
*/
@Scheduled
(
cron
=
"0 5 0 * * ?"
)
//
@Scheduled(cron = "0 5 0 * * ?")
// @Scheduled(cron = "0 * * * * ?")
// @Scheduled(cron = "0 * * * * ?")
public
void
eventContext
()
{
public
void
eventContext
()
{
Date
today
=
new
Date
();
Date
today
=
new
Date
();
...
@@ -141,7 +147,7 @@ public class AnalysisTask {
...
@@ -141,7 +147,7 @@ public class AnalysisTask {
* 每天凌晨0点20分执行一次
* 每天凌晨0点20分执行一次
* 发送 伪事件脉络 所需信息到kafka对应的topic
* 发送 伪事件脉络 所需信息到kafka对应的topic
*/
*/
@Scheduled
(
cron
=
"0 20 0 * * ?"
)
//
@Scheduled(cron = "0 20 0 * * ?")
// @Scheduled(cron = "0 * * * * ?")
// @Scheduled(cron = "0 * * * * ?")
public
void
eventContext_fake
()
{
public
void
eventContext_fake
()
{
Date
today
=
new
Date
();
Date
today
=
new
Date
();
...
@@ -191,7 +197,7 @@ public class AnalysisTask {
...
@@ -191,7 +197,7 @@ public class AnalysisTask {
* 定时生成传播路径
* 定时生成传播路径
* 每天凌晨0点10分执行一次
* 每天凌晨0点10分执行一次
*/
*/
@Scheduled
(
cron
=
"0 0 0 * * ?"
)
//
@Scheduled(cron = "0 0 0 * * ?")
// @Scheduled(cron = "0 * * * * ?")
// @Scheduled(cron = "0 * * * * ?")
public
void
propagationPath
()
{
public
void
propagationPath
()
{
Date
today
=
new
Date
();
Date
today
=
new
Date
();
...
@@ -209,6 +215,7 @@ public class AnalysisTask {
...
@@ -209,6 +215,7 @@ public class AnalysisTask {
if
(
ObjectUtils
.
isNotEmpty
(
pathVo
))
{
if
(
ObjectUtils
.
isNotEmpty
(
pathVo
))
{
redisUtil
.
set
(
key
,
pathVo
);
redisUtil
.
set
(
key
,
pathVo
);
}
}
log
.
info
(
"专题id为-{}-的专题-传播路径数据:{}-缓存成功!"
,
subjectId
,
JSONObject
.
toJSON
(
pathVo
));
}
}
}
else
{
//已经结束的事件专题,缓存有效期一天
}
else
{
//已经结束的事件专题,缓存有效期一天
PropagationPathVo
pathVo
=
analysisService
.
propagationPath
(
subjectId
);
PropagationPathVo
pathVo
=
analysisService
.
propagationPath
(
subjectId
);
...
...
src/main/java/com/zzsn/event/util/CompanyUtil.java
0 → 100644
浏览文件 @
00256774
差异被折叠。
点击展开。
src/main/java/com/zzsn/event/util/EsOpUtil.java
0 → 100644
浏览文件 @
00256774
差异被折叠。
点击展开。
src/main/java/com/zzsn/event/util/FileUtil.java
0 → 100644
浏览文件 @
00256774
package
com
.
zzsn
.
event
.
util
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.core.io.ClassPathResource
;
import
java.io.BufferedReader
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.io.InputStreamReader
;
import
java.net.HttpURLConnection
;
import
java.net.URL
;
import
java.text.DecimalFormat
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* @author 闫鑫
* @date 2022/6/21 12:01
*/
@Slf4j
public
class
FileUtil
{
/**
* @Description: 读取resources 目录下的文件
* @param filePath 相对路径
* @Return: 文件实际地址
**/
public
static
String
getFilePath
(
String
filePath
){
return
Thread
.
currentThread
().
getContextClassLoader
().
getResource
(
filePath
).
getPath
();
}
/**
* 读取classpath路径下的文本文件,返回list
* @param filePath
* @return
* @throws IOException
*/
public
static
List
<
String
>
readFileList
(
String
filePath
){
List
<
String
>
list
=
new
ArrayList
<>();
InputStream
inputStream
=
null
;
InputStreamReader
inputStreamReader
=
null
;
BufferedReader
bufferedReader
=
null
;
try
{
// ClassPathResource类的构造方法接收路径名称,自动去classpath路径下找文件
ClassPathResource
classPathResource
=
new
ClassPathResource
(
filePath
);
// 打成jar包后,只能获取输入流对象
inputStream
=
classPathResource
.
getInputStream
();
inputStreamReader
=
new
InputStreamReader
(
inputStream
,
"UTF-8"
);
bufferedReader
=
new
BufferedReader
(
inputStreamReader
);
String
line
=
null
;
while
((
line
=
bufferedReader
.
readLine
())
!=
null
)
{
if
(
oConvertUtils
.
isNotEmpty
(
line
)){
list
.
add
(
line
);
}
}
}
catch
(
IOException
e
){
log
.
error
(
"读取文件失败,filePath:{},e:{}"
,
filePath
,
e
);
}
finally
{
// 统一在finally中关闭流,防止发生异常的情况下,文件流未能正常关闭
try
{
if
(
inputStream
!=
null
)
{
inputStream
.
close
();
}
if
(
inputStreamReader
!=
null
)
{
inputStreamReader
.
close
();
}
if
(
bufferedReader
!=
null
)
{
bufferedReader
.
close
();
}
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
}
return
list
;
}
public
static
InputStream
DownloadFileFormServer
(
String
strUrl
)
{
InputStream
inputStream
=
null
;
HttpURLConnection
conn
=
null
;
try
{
URL
url
=
new
URL
(
strUrl
);
conn
=
(
HttpURLConnection
)
url
.
openConnection
();
conn
.
setRequestMethod
(
"GET"
);
conn
.
setConnectTimeout
(
20
*
1000
);
// 模板文件名
// 模板文件路径
inputStream
=
conn
.
getInputStream
();
}
catch
(
Exception
e
)
{
}
finally
{
}
return
inputStream
;
}
/**
* 获取resource下的文件内容
*
* @param path
* @return
*/
public
static
String
getResource
(
String
path
)
throws
IOException
{
if
(
StringUtils
.
isBlank
(
path
))
{
return
null
;
}
ClassPathResource
classPathResource
=
new
ClassPathResource
(
path
);
StringBuilder
stringBuilder
=
new
StringBuilder
();
InputStream
inputStream
=
null
;
try
{
inputStream
=
classPathResource
.
getInputStream
();
byte
[]
bytes
=
new
byte
[
1024
];
int
lenth
;
while
((
lenth
=
inputStream
.
read
(
bytes
))
!=
-
1
)
{
stringBuilder
.
append
(
new
String
(
bytes
,
0
,
lenth
));
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
throw
new
RuntimeException
(
"读取文件错误"
);
}
finally
{
inputStream
.
close
();
}
return
stringBuilder
.
toString
();
}
public
static
String
getFileNameFormPath
(
String
fileName
){
if
(
fileName
==
null
||
StringUtils
.
isEmpty
(
fileName
)){
return
null
;
}
fileName
=
fileName
.
trim
();
fileName
=
fileName
.
replace
(
"\\"
,
"/"
);
while
(
fileName
.
endsWith
(
"/"
)){
fileName
=
fileName
.
substring
(
0
,
fileName
.
length
()
-
1
);
}
if
(
fileName
.
contains
(
"/"
)){
fileName
=
fileName
.
substring
(
fileName
.
lastIndexOf
(
"/"
)
+
1
);
}
return
fileName
;
}
/**
* 根据文件的字节大小计算显示大小
*
* @param size
* @return
*/
public
static
String
readableFileSize
(
long
size
)
{
if
(
size
<=
0
)
return
"0"
;
final
String
[]
units
=
new
String
[]{
"B"
,
"KB"
,
"MB"
,
"GB"
,
"TB"
};
int
digitGroups
=
(
int
)
(
Math
.
log10
(
size
)
/
Math
.
log10
(
1024
));
return
new
DecimalFormat
(
"#,##0.#"
).
format
(
size
/
Math
.
pow
(
1024
,
digitGroups
))
+
units
[
digitGroups
];
}
}
src/main/java/com/zzsn/event/util/HanlpUtil.java
0 → 100644
浏览文件 @
00256774
差异被折叠。
点击展开。
src/main/java/com/zzsn/event/util/SortUtil.java
0 → 100644
浏览文件 @
00256774
package
com
.
zzsn
.
event
.
util
;
import
java.time.LocalDateTime
;
import
java.time.format.DateTimeFormatter
;
import
java.util.*
;
/**
* @author kongliufeng
* @Description TODO: 自定义排序
* @create 2020-09-03 19:11
* @Version 1.0
*/
public
class
SortUtil
{
public
static
final
DateTimeFormatter
dtf2
=
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
);
public
static
List
<
Map
.
Entry
<
String
,
Integer
>>
sortMap
(
Map
<
String
,
Integer
>
map
){
if
(
map
!=
null
){
List
<
Map
.
Entry
<
String
,
Integer
>>
list
=
new
ArrayList
<>(
map
.
entrySet
());
Collections
.
sort
(
list
,
new
Comparator
<
Map
.
Entry
<
String
,
Integer
>>()
{
@Override
public
int
compare
(
Map
.
Entry
<
String
,
Integer
>
o1
,
Map
.
Entry
<
String
,
Integer
>
o2
)
{
return
o2
.
getValue
()
-
o1
.
getValue
();
}
});
return
list
;
}
return
new
ArrayList
<
Map
.
Entry
<
String
,
Integer
>>();
}
public
static
int
dateLg
(
String
s1
,
String
s2
){
if
(
s1
.
equals
(
s2
)){
return
0
;
}
int
temp
=
0
;
if
(
s1
.
length
()==
10
){
s1
=
s1
+
" 00:00:00"
;
}
if
(
s2
.
length
()==
10
){
s2
=
s2
+
" 00:00:00"
;
}
try
{
LocalDateTime
localDateTime1
=
LocalDateTime
.
parse
(
s1
,
dtf2
);
LocalDateTime
localDateTime2
=
LocalDateTime
.
parse
(
s2
,
dtf2
);
if
(
localDateTime1
.
isEqual
(
localDateTime2
)){
temp
=
0
;
}
temp
=
localDateTime1
.
isBefore
(
localDateTime2
)==
true
?
1
:-
1
;
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
"s1对比s2"
).
append
(
s1
).
append
(
":"
).
append
(
s2
).
append
(
"返回结果"
).
append
(
temp
);
return
temp
;
}
catch
(
Exception
e
){
e
.
printStackTrace
();
return
-
1
;
}
}
public
static
void
main
(
String
[]
args
)
{
String
s1
=
"2020-10-22"
;
String
s2
=
"2020-10-23"
;
System
.
out
.
println
(
s1
.
length
());
System
.
out
.
println
(
dateLg
(
s1
,
s2
));
}
}
src/main/java/com/zzsn/event/util/StopWordsUtil.java
0 → 100644
浏览文件 @
00256774
package
com
.
zzsn
.
event
.
util
;
import
com.hankcs.hanlp.collection.trie.DoubleArrayTrie
;
import
java.util.Collection
;
import
java.util.Iterator
;
import
java.util.TreeMap
;
/**
* @author kongliufeng
* @Description TODO:
* @create 2020-09-03 16:30
* @Version 1.0
*/
public
class
StopWordsUtil
{
private
static
final
String
path
=
"hanlp/cloudstopwords.txt"
;
private
static
DoubleArrayTrie
<
String
>
tree
;
static
{
TreeMap
<
String
,
String
>
map
=
new
TreeMap
<>();
for
(
String
word
:
FileUtil
.
readFileList
(
path
))
{
map
.
put
(
word
,
word
);
}
tree
=
new
DoubleArrayTrie
<>(
map
);
}
/**
* @Description 判断一个词是否为停用词
* @author kongliufeng
* @创建时间 2020/9/3 17:08
* @Version 1.0
*/
public
static
Boolean
isStopWord
(
String
word
){
if
(
tree
.
containsKey
(
word
)){
return
true
;
}
return
false
;
}
/**
* @Description 对已有的集合移除停用词
* @author kongliufeng
* @创建时间 2020/9/3 17:11
* @Version 1.0
*/
public
static
void
removeStopWords
(
Collection
<
String
>
collection
,
String
excludeWord
){
if
(
collection
!=
null
){
Iterator
<
String
>
iterator
=
collection
.
iterator
();
while
(
iterator
.
hasNext
()){
String
next
=
iterator
.
next
();
if
(
excludeWord
!=
null
){
if
(
excludeWord
.
equals
(
next
)){
iterator
.
remove
();
}
}
if
(
tree
.
containsKey
(
next
))
iterator
.
remove
();
}
}
}
public
static
void
removeStopWords
(
Collection
<
String
>
collection
){
if
(
collection
!=
null
){
Iterator
<
String
>
iterator
=
collection
.
iterator
();
while
(
iterator
.
hasNext
()){
if
(
tree
.
containsKey
(
iterator
.
next
()))
iterator
.
remove
();
}
}
}
}
src/main/java/com/zzsn/event/util/StringUtil.java
0 → 100644
浏览文件 @
00256774
差异被折叠。
点击展开。
src/main/java/com/zzsn/event/vo/DisplayInfo.java
浏览文件 @
00256774
...
@@ -124,4 +124,5 @@ public class DisplayInfo {
...
@@ -124,4 +124,5 @@ public class DisplayInfo {
* 是否是主条目,0为非主条目,1为主条目
* 是否是主条目,0为非主条目,1为主条目
*/
*/
private
Integer
ismain
;
private
Integer
ismain
;
private
Integer
similarNumber
;
}
}
src/main/java/com/zzsn/event/vo/RepeatHold.java
0 → 100644
浏览文件 @
00256774
package
com
.
zzsn
.
event
.
vo
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
RepeatHold
{
private
String
articleId
;
private
String
repeatMark
;
}
src/main/java/com/zzsn/event/vo/SpecialInformation.java
浏览文件 @
00256774
...
@@ -70,6 +70,7 @@ public class SpecialInformation {
...
@@ -70,6 +70,7 @@ public class SpecialInformation {
//删除标记(1:删除;0:保留)
//删除标记(1:删除;0:保留)
private
Integer
deleteFlag
;
private
Integer
deleteFlag
;
private
String
subjectId
;
private
String
subjectId
;
private
List
<
String
>
subjectIdList
;
//审核操作(0:未审核 1:审核通过 2:审核未通过 3:暂定 默认值为0)
//审核操作(0:未审核 1:审核通过 2:审核未通过 3:暂定 默认值为0)
private
Integer
checkStatus
;
private
Integer
checkStatus
;
//阅读数
//阅读数
...
...
src/main/java/com/zzsn/event/vo/StatisticsKeyWordVo.java
0 → 100644
浏览文件 @
00256774
package
com
.
zzsn
.
event
.
vo
;
import
lombok.Data
;
@Data
public
class
StatisticsKeyWordVo
{
//专题id
private
String
subjectId
;
// 关键词id
private
String
kid
;
//词频
private
Integer
value
;
// name
private
String
name
;
}
src/main/resources/application.yml
浏览文件 @
00256774
...
@@ -115,8 +115,8 @@ mybatis-plus:
...
@@ -115,8 +115,8 @@ mybatis-plus:
log-impl
:
org.apache.ibatis.logging.stdout.StdOutImpl
log-impl
:
org.apache.ibatis.logging.stdout.StdOutImpl
map-underscore-to-camel-case
:
true
map-underscore-to-camel-case
:
true
serviceProject
:
serviceProject
:
#
url: https://clb.ciglobal.cn/clb-api/datapull/
url
:
https://clb.ciglobal.cn/clb-api/datapull/
url
:
http://127.0.0.1:9988/datapull/
#
url: http://127.0.0.1:9988/datapull/
#热词抽取地址
#热词抽取地址
hotWords
:
hotWords
:
extractUrl
:
http://114.116.99.6:8055/task/dispose/extractKeyword
extractUrl
:
http://114.116.99.6:8055/task/dispose/extractKeyword
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论