Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
E
event
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
陈世强
event
Commits
4eebeaf2
提交
4eebeaf2
authored
9月 18, 2025
作者:
刘凯歌
浏览文件
操作
浏览文件
下载
差异文件
合并分支 'event_fusion_dev' 到 'event_fusion'
事件分析优化 查看合并请求
!20
上级
81fc0bfa
c8199db9
隐藏空白字符变更
内嵌
并排
正在显示
24 个修改的文件
包含
676 行增加
和
81 行删除
+676
-81
EventAnalysisController.java
...va/com/zzsn/event/controller/EventAnalysisController.java
+63
-35
LLmConfigController.java
...com/zzsn/event/controller/common/LLmConfigController.java
+91
-4
CharacterBasicInfo.java
src/main/java/com/zzsn/event/entity/CharacterBasicInfo.java
+126
-0
EventExpertMap.java
src/main/java/com/zzsn/event/entity/EventExpertMap.java
+48
-0
EventLlmConfig.java
src/main/java/com/zzsn/event/entity/EventLlmConfig.java
+8
-0
AnalysisColumnEnum.java
src/main/java/com/zzsn/event/enums/AnalysisColumnEnum.java
+4
-4
EsService.java
src/main/java/com/zzsn/event/es/EsService.java
+1
-0
KafkaConsumer.java
src/main/java/com/zzsn/event/kafka/KafkaConsumer.java
+64
-1
CharacterBasicInfoMapper.java
.../java/com/zzsn/event/mapper/CharacterBasicInfoMapper.java
+16
-0
EventExpertMapMapper.java
...main/java/com/zzsn/event/mapper/EventExpertMapMapper.java
+20
-0
AnalysisService.java
src/main/java/com/zzsn/event/service/AnalysisService.java
+10
-9
CharacterBasicInfoService.java
...ava/com/zzsn/event/service/CharacterBasicInfoService.java
+14
-0
EventAnalysisVersionRecordService.java
...zzsn/event/service/EventAnalysisVersionRecordService.java
+12
-1
EventExpertMapService.java
...in/java/com/zzsn/event/service/EventExpertMapService.java
+13
-0
SubjectService.java
src/main/java/com/zzsn/event/service/SubjectService.java
+1
-0
AnalysisServiceImpl.java
...java/com/zzsn/event/service/impl/AnalysisServiceImpl.java
+39
-11
CharacterBasicInfoServiceImpl.java
...zsn/event/service/impl/CharacterBasicInfoServiceImpl.java
+20
-0
EventAnalysisVersionRecordServiceImpl.java
...t/service/impl/EventAnalysisVersionRecordServiceImpl.java
+19
-5
EventExpertMapServiceImpl.java
...om/zzsn/event/service/impl/EventExpertMapServiceImpl.java
+21
-0
EventLlmConfigServiceImpl.java
...om/zzsn/event/service/impl/EventLlmConfigServiceImpl.java
+21
-11
CodeGenerateUtil.java
src/main/java/com/zzsn/event/util/CodeGenerateUtil.java
+19
-0
PythonUtil.java
src/main/java/com/zzsn/event/util/PythonUtil.java
+40
-0
application-dev.yml
src/main/resources/application-dev.yml
+3
-0
application-test.yml
src/main/resources/application-test.yml
+3
-0
没有找到文件。
src/main/java/com/zzsn/event/controller/EventAnalysisController.java
浏览文件 @
4eebeaf2
...
...
@@ -7,7 +7,6 @@ import cn.hutool.core.date.DateUtil;
import
com.alibaba.fastjson2.JSON
;
import
com.alibaba.fastjson2.JSONArray
;
import
com.alibaba.fastjson2.JSONObject
;
import
com.aspose.words.SaveFormat
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
...
...
@@ -35,7 +34,10 @@ import org.springframework.web.bind.annotation.*;
import
org.springframework.web.multipart.MultipartFile
;
import
javax.servlet.http.HttpServletResponse
;
import
java.io.*
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.io.OutputStream
;
import
java.io.PrintWriter
;
import
java.math.RoundingMode
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
...
...
@@ -168,10 +170,6 @@ public class EventAnalysisController {
@GetMapping
(
"/eventContext"
)
public
Result
<?>
eventContext
(
@RequestParam
String
eventId
,
@RequestParam
(
required
=
false
)
String
versionId
)
{
//if (StringUtils.isNotEmpty(versionId)) {
// String versionData = eventAnalysisVersionRecordService.getVersionData(versionId, AnalysisColumnEnum.EVENT_CONTEXT.getCode());
// return Result.OK(JSON.parseArray(versionData,JSONObject.class));
//}
List
<
Map
<
String
,
Object
>>
versionData
=
eventContextService
.
eventContext
(
eventId
);
return
Result
.
OK
(
versionData
);
}
...
...
@@ -259,10 +257,6 @@ public class EventAnalysisController {
@RequestParam
(
required
=
false
)
String
startTime
,
@RequestParam
(
required
=
false
)
String
endTime
,
@RequestParam
(
required
=
false
)
String
versionId
)
{
//if (StringUtils.isNotEmpty(versionId)) {
// String versionData = eventAnalysisVersionRecordService.getVersionData(versionId, AnalysisColumnEnum.KEYWORD_TREND.getCode());
// return Result.OK(JSON.parseArray(versionData,JSONObject.class));
//}
List
<
CountVO
>
versionData
=
analysisService
.
wordTrend
(
eventId
,
startTime
,
endTime
);
return
Result
.
OK
(
versionData
);
}
...
...
@@ -283,10 +277,6 @@ public class EventAnalysisController {
@RequestParam
(
required
=
false
)
String
startTime
,
@RequestParam
(
required
=
false
)
String
endTime
,
@RequestParam
(
required
=
false
)
String
versionId
)
{
//if (StringUtils.isNotEmpty(versionId)) {
// String versionData = eventAnalysisVersionRecordService.getVersionData(versionId, AnalysisColumnEnum.CO_OCCURRENCE.getCode());
// return Result.OK(JSON.parseArray(versionData,JSONObject.class));
//}
//增加缓存逻辑,提升查询效率
String
key
=
Constants
.
SUBJECT_ANALYSIS_PRE
+
Constants
.
CO_OCCURRENCE
+
eventId
;
Object
cacheObject
=
redisUtil
.
get
(
key
);
...
...
@@ -457,7 +447,6 @@ public class EventAnalysisController {
}
}
String
versionData
=
eventAnalysisVersionRecordService
.
getVersionData
(
versionId
,
AnalysisColumnEnum
.
IMPACT_ASSESSMENT
.
getCode
());
//String result = analysisService.llmResult(eventId, startTime, endTime, AnalysisColumnEnum.IMPACT_ASSESSMENT.getCode());
List
<
JSONObject
>
data
=
null
;
try
{
data
=
JSON
.
parseArray
(
versionData
,
JSONObject
.
class
);
...
...
@@ -488,7 +477,6 @@ public class EventAnalysisController {
}
}
String
versionData
=
eventAnalysisVersionRecordService
.
getVersionData
(
versionId
,
AnalysisColumnEnum
.
DRIVING_FACTORS
.
getCode
());
//String result = analysisService.llmResult(eventId, startTime, endTime, AnalysisColumnEnum.DRIVING_FACTORS.getCode());
JSONObject
data
=
null
;
try
{
data
=
JSON
.
parseObject
(
versionData
,
JSONObject
.
class
);
...
...
@@ -519,7 +507,6 @@ public class EventAnalysisController {
}
}
String
versionData
=
eventAnalysisVersionRecordService
.
getVersionData
(
versionId
,
AnalysisColumnEnum
.
RELATED_INDICATOR
.
getCode
());
//String result = analysisService.llmResult(eventId, startTime, endTime, AnalysisColumnEnum.RELATED_INDICATOR.getCode());
List
<
JSONObject
>
data
=
null
;
try
{
data
=
JSON
.
parseArray
(
versionData
,
JSONObject
.
class
);
...
...
@@ -530,7 +517,7 @@ public class EventAnalysisController {
}
/**
*
举措
建议
*
应对
建议
*
* @param eventId 事件id
* @param startTime 开始时间
...
...
@@ -550,7 +537,6 @@ public class EventAnalysisController {
}
}
String
versionData
=
eventAnalysisVersionRecordService
.
getVersionData
(
versionId
,
AnalysisColumnEnum
.
MEASURE_SUGGEST
.
getCode
());
//String result = analysisService.llmResult(eventId, startTime, endTime, AnalysisColumnEnum.MEASURE_SUGGEST.getCode());
List
<
JSONObject
>
data
=
null
;
try
{
data
=
JSON
.
parseArray
(
versionData
,
JSONObject
.
class
);
...
...
@@ -581,7 +567,6 @@ public class EventAnalysisController {
}
}
String
versionData
=
eventAnalysisVersionRecordService
.
getVersionData
(
versionId
,
AnalysisColumnEnum
.
KNOWLEDGE_ENTRY
.
getCode
());
//String result = analysisService.llmResult(eventId, startTime, endTime, AnalysisColumnEnum.KNOWLEDGE_ENTRY.getCode());
List
<
JSONObject
>
data
=
null
;
try
{
data
=
JSON
.
parseArray
(
versionData
,
JSONObject
.
class
);
...
...
@@ -600,6 +585,7 @@ public class EventAnalysisController {
* @author lkg
* @date 2024/4/12
*/
@Deprecated
@GetMapping
(
"/enterpriseCase"
)
public
Result
<?>
enterpriseCase
(
@RequestParam
String
eventId
,
@RequestParam
(
required
=
false
)
String
startTime
,
...
...
@@ -647,6 +633,57 @@ public class EventAnalysisController {
return Result.OK(JSON.parseArray(versionData,JSONObject.class));
}*/
/**
* 企业案例和类似事件
*
* @param eventId 事件id
* @param startTime 开始时间
* @param endTime 结束时间
* @param versionId 版本id
* @author lkg
* @date 2025/9/18
*/
@GetMapping
(
"/caseAndSimilar"
)
public
Result
<?>
caseAndSimilar
(
@RequestParam
String
eventId
,
@RequestParam
(
required
=
false
)
String
startTime
,
@RequestParam
(
required
=
false
)
String
endTime
,
@RequestParam
(
required
=
false
)
String
versionId
)
{
if
(
StringUtils
.
isEmpty
(
versionId
))
{
EventAnalysisVersion
eventAnalysisVersion
=
eventAnalysisVersionService
.
latestVersion
(
eventId
);
if
(
eventAnalysisVersion
!=
null
)
{
versionId
=
eventAnalysisVersion
.
getId
();
}
}
List
<
Map
<
String
,
Object
>>
dataList
=
new
ArrayList
<>();
//企业案例
Map
<
String
,
Object
>
enterprise
=
new
HashMap
<>();
String
enterpriseCase
=
eventAnalysisVersionRecordService
.
getVersionData
(
versionId
,
AnalysisColumnEnum
.
ENTERPRISE_CASE
.
getCode
());
enterprise
.
put
(
"type"
,
AnalysisColumnEnum
.
ENTERPRISE_CASE
.
getName
());
List
<
JSONObject
>
enterpriseCaseList
=
new
ArrayList
<>();
try
{
enterpriseCaseList
=
JSON
.
parseArray
(
enterpriseCase
,
JSONObject
.
class
);
}
catch
(
Exception
e
)
{
log
.
info
(
"{}-事件分析【{}】返回结果数据解析异常"
,
eventId
,
AnalysisColumnEnum
.
FOREIGN_SIMILAR_EVENT
.
getName
());
}
enterprise
.
put
(
"data"
,
enterpriseCaseList
);
dataList
.
add
(
enterprise
);
//类似事件
Map
<
String
,
Object
>
foreign
=
new
HashMap
<>();
String
foreignSimilarEvent
=
eventAnalysisVersionRecordService
.
getVersionData
(
versionId
,
AnalysisColumnEnum
.
FOREIGN_SIMILAR_EVENT
.
getCode
());
foreign
.
put
(
"type"
,
AnalysisColumnEnum
.
FOREIGN_SIMILAR_EVENT
.
getName
());
List
<
JSONObject
>
foreignSimilarEventList
=
new
ArrayList
<>();
try
{
foreignSimilarEventList
=
JSON
.
parseArray
(
foreignSimilarEvent
,
JSONObject
.
class
);
}
catch
(
Exception
e
)
{
log
.
info
(
"{}-事件分析【{}】返回结果数据解析异常"
,
eventId
,
AnalysisColumnEnum
.
FOREIGN_SIMILAR_EVENT
.
getName
());
}
foreign
.
put
(
"data"
,
foreignSimilarEventList
);
dataList
.
add
(
foreign
);
return
Result
.
OK
(
dataList
);
}
/**
* 类似事件
*
...
...
@@ -800,25 +837,16 @@ public class EventAnalysisController {
public
void
new_exportPdf
(
MultipartFile
file
,
HttpServletResponse
response
)
{
try
{
InputStream
inputStream
=
file
.
getInputStream
();
BufferedOutputStream
bos
=
null
;
OutputStream
outs
=
response
.
getOutputStream
();
DocUtil
.
convertWordToPdf
(
inputStream
,
outs
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
finally
{
try
{
OutputStream
outs
=
response
.
getOutputStream
();
bos
=
new
BufferedOutputStream
(
outs
);
DocUtil
.
convertWordToPdf
(
inputStream
,
bos
);
response
.
flushBuffer
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
finally
{
try
{
if
(
bos
!=
null
)
{
bos
.
flush
();
bos
.
close
();
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
...
...
src/main/java/com/zzsn/event/controller/common/LLmConfigController.java
浏览文件 @
4eebeaf2
package
com
.
zzsn
.
event
.
controller
.
common
;
import
com.alibaba.fastjson2.JSON
;
import
com.alibaba.fastjson2.JSONObject
;
import
com.zzsn.event.constant.Result
;
import
com.zzsn.event.entity.Event
;
import
com.zzsn.event.entity.EventAnalysisVersionRecord
;
import
com.zzsn.event.entity.EventLlmConfig
;
import
com.zzsn.event.enums.AnalysisColumnEnum
;
import
com.zzsn.event.service.AnalysisService
;
...
...
@@ -10,12 +13,14 @@ import com.zzsn.event.service.EventLlmConfigService;
import
com.zzsn.event.service.IEventService
;
import
com.zzsn.event.vo.EventLlmConfigModifyVO
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.List
;
import
java.util.Objects
;
/**
* 大模型配置
...
...
@@ -62,6 +67,7 @@ public class LLmConfigController {
llmConfigService
.
modifyBatch
(
eventLlmConfigList
);
return
Result
.
OK
();
}
/**
* 编辑事件栏目的大模型配置信息,同时触发大模型更新结果
*
...
...
@@ -79,20 +85,101 @@ public class LLmConfigController {
EventLlmConfig
eventLlmConfig
=
new
EventLlmConfig
();
BeanUtils
.
copyProperties
(
eventLlmConfigModifyVO
,
eventLlmConfig
);
llmConfigService
.
modifySingle
(
eventLlmConfig
);
AnalysisColumnEnum
analysisColumnEnum
=
AnalysisColumnEnum
.
getByCode
(
eventLlmConfig
.
getColumnCode
());
Integer
columnCode
=
eventLlmConfig
.
getColumnCode
();
AnalysisColumnEnum
analysisColumnEnum
=
AnalysisColumnEnum
.
getByCode
(
columnCode
);
if
(
analysisColumnEnum
!=
null
)
{
String
eventId
=
eventLlmConfig
.
getEventId
();
Event
event
=
eventService
.
getById
(
eventId
);
String
eventName
=
event
.
getEventName
();
String
content
=
"事件标题;"
+
eventName
+
"\n事件摘要:"
+
event
.
getEventDescribe
();
StringBuilder
content
=
new
StringBuilder
(
"事件标题;"
+
eventName
+
"\n事件摘要:"
+
event
.
getEventDescribe
());
if
(
StringUtils
.
isNotEmpty
(
event
.
getKeyIssue
()))
{
content
.
append
(
"\n关心问题:"
).
append
(
event
.
getKeyIssue
());
}
//调用大模型更细结果
llmResult
=
analysisService
.
llmResult
(
eventId
,
content
,
null
,
null
,
eventLlmConfig
.
getColumnCode
());
//应对建议需要把 驱动因素和影响评估作为输入
specialProcess
(
content
,
versionId
,
columnCode
);
llmResult
=
analysisService
.
llmResult
(
eventId
,
content
.
toString
(),
null
,
null
,
columnCode
);
log
.
info
(
"{}-事件分析【{}】重新生成逻辑完成。"
,
eventName
,
analysisColumnEnum
.
getName
());
}
else
{
log
.
info
(
"未找到对应的事件栏目【{}】"
,
eventLlmConfig
.
getColumnCode
()
);
log
.
info
(
"未找到对应的事件栏目【{}】"
,
columnCode
);
}
//更新返回结果
eventAnalysisVersionRecordService
.
modify
(
versionId
,
analysisColumnEnum
,
llmResult
);
return
Result
.
OK
(
llmResult
);
}
/**
* 特殊处理流程
* 应对建议需要把 驱动因素和影响评估作为输入
*
* @param content 输入内同
* @param versionId 版本id
* @param columnCode 栏目编码
* @author lkg
* @date 2025/9/17
*/
private
void
specialProcess
(
StringBuilder
content
,
String
versionId
,
Integer
columnCode
)
{
if
(!
Objects
.
equals
(
columnCode
,
AnalysisColumnEnum
.
MEASURE_SUGGEST
.
getCode
()))
{
return
;
}
List
<
EventAnalysisVersionRecord
>
versionDataList
=
eventAnalysisVersionRecordService
.
getVersionDataList
(
versionId
,
AnalysisColumnEnum
.
IMPACT_ASSESSMENT
.
getCode
(),
AnalysisColumnEnum
.
DRIVING_FACTORS
.
getCode
());
if
(
CollectionUtils
.
isEmpty
(
versionDataList
))
{
return
;
}
for
(
EventAnalysisVersionRecord
record
:
versionDataList
)
{
if
(
record
.
getColumnCode
().
equals
(
AnalysisColumnEnum
.
IMPACT_ASSESSMENT
.
getCode
()))
{
String
str
=
parseImpactAssessment
(
record
.
getReturnData
());
if
(
StringUtils
.
isEmpty
(
str
))
{
continue
;
}
content
.
append
(
"\n影响评估:"
).
append
(
str
);
}
else
if
(
record
.
getColumnCode
().
equals
(
AnalysisColumnEnum
.
DRIVING_FACTORS
.
getCode
()))
{
String
str
=
parseDrivingFactors
(
record
.
getReturnData
());
if
(
StringUtils
.
isEmpty
(
str
))
{
continue
;
}
content
.
append
(
"\n驱动因素:"
).
append
(
str
);
}
}
}
/**
* 作为应对建议的输入时,解析影响评估数据
*
* @param impactAssessment 影响评估数据
* @author lkg
* @date 2025/9/17
*/
private
String
parseImpactAssessment
(
String
impactAssessment
)
{
String
result
=
null
;
try
{
List
<
JSONObject
>
jsonObjects
=
JSON
.
parseArray
(
impactAssessment
,
JSONObject
.
class
);
for
(
JSONObject
jsonObject
:
jsonObjects
)
{
jsonObject
.
remove
(
"impactDetail"
);
}
result
=
jsonObjects
.
toString
();
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
result
;
}
/**
* 作为应对建议的输入时,解析驱动因素数据
*
* @param drivingFactors 驱动因素数据
* @author lkg
* @date 2025/9/17
*/
private
String
parseDrivingFactors
(
String
drivingFactors
)
{
String
result
=
null
;
try
{
JSONObject
jsonObject
=
JSONObject
.
parseObject
(
drivingFactors
);
result
=
jsonObject
.
get
(
"drivingFactor"
).
toString
();
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
result
;
}
}
src/main/java/com/zzsn/event/entity/CharacterBasicInfo.java
0 → 100644
浏览文件 @
4eebeaf2
package
com
.
zzsn
.
event
.
entity
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.baomidou.mybatisplus.extension.activerecord.Model
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
org.springframework.format.annotation.DateTimeFormat
;
import
java.util.Date
;
/**
* 人物基本信息表
*/
@Data
@EqualsAndHashCode
(
callSuper
=
false
)
@TableName
(
"character_basic_info"
)
public
class
CharacterBasicInfo
extends
Model
<
CharacterBasicInfo
>
{
private
static
final
long
serialVersionUID
=
1L
;
//主键
@TableId
(
value
=
"id"
,
type
=
IdType
.
ASSIGN_ID
)
private
String
id
;
//人物id
private
String
uid
;
//人物名称
private
String
name
;
//性别
private
String
sex
;
//出生地
private
String
birthplace
;
//出生日期
private
String
birthday
;
//民族
private
String
nation
;
//籍贯
private
String
nativePlace
;
//毕业院校
private
String
school
;
//专业
private
String
speciality
;
//学历
private
String
education
;
//职业
private
String
expertOccupation
;
//头像
private
String
headSculpture
;
//个人简历 简介
private
String
biographicalNotes
;
//分类类型(1-领导人、2-专家、3-企业高管)
private
String
category
;
//类别id 和左侧树进行关联
private
String
typeId
;
//部门 单位 企业
private
String
department
;
//职务
private
String
duty
;
//部门 单位 企业(原)
private
String
departmentOriginal
;
//职务(原)
private
String
dutyOriginal
;
//任职时间
private
String
takeOfficeTime
;
//任职结束时间
private
String
takeOfficeTimeEnd
;
//任职状态 历任 现任
private
String
takeOfficeStatus
;
//变更描述
private
String
updateDesc
;
//关联资讯索引名称
private
String
articleIndex
;
//关联资讯id
private
String
articleId
;
//资讯标题
private
String
articleTitle
;
//资讯来源
private
String
articleOrigin
;
//关联资讯抽取表id
private
String
extractId
;
//标签id
private
String
tagId
;
//标签名称
private
String
tagName
;
//统一社会信用代码
private
String
socialCreditCode
;
//排序
private
Integer
sort
;
//是否主条目(1-主条目;0-非主条目)
private
Integer
mainEntry
;
//顶尖专家/领军专家
private
String
expertType
;
//研究领域
private
String
researchField
;
//已选入的人才计划
private
String
talentPlanning
;
//专业技术职称
private
String
technicalTitles
;
//专业技术职称取得时间
private
String
technicalDate
;
//参加工作时间
private
String
workDate
;
//毕业专业
private
String
schoolSpeciality
;
//所在部门
private
String
depart
;
//创建人
private
String
createBy
;
//创建时间
@JsonFormat
(
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
private
Date
createTime
;
//更新人
private
String
updateBy
;
//更新时间
@JsonFormat
(
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
private
Date
updateTime
;
//启停状态 1启 0停
private
Long
status
;
}
src/main/java/com/zzsn/event/entity/EventExpertMap.java
0 → 100644
浏览文件 @
4eebeaf2
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
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
import
org.springframework.format.annotation.DateTimeFormat
;
import
java.io.Serializable
;
import
java.util.Date
;
/**
* 事件-专家关系表
* @TableName event_expert_map
*/
@Data
@TableName
(
"event_expert_map"
)
@EqualsAndHashCode
(
callSuper
=
false
)
@Accessors
(
chain
=
true
)
public
class
EventExpertMap
implements
Serializable
{
/**
* 主键id
*/
@TableId
(
type
=
IdType
.
ASSIGN_ID
)
private
String
id
;
/**
* 专家id
*/
private
String
expertId
;
/**
* 事件id
*/
private
String
eventId
;
/**
* 资讯id
*/
private
String
articleId
;
/**
* 创建时间
*/
@JsonFormat
(
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
private
Date
createTime
;
}
src/main/java/com/zzsn/event/entity/EventLlmConfig.java
浏览文件 @
4eebeaf2
...
...
@@ -56,10 +56,18 @@ public class EventLlmConfig implements Serializable {
*/
private
String
articleCondition
;
/**
* 状态(1-启用;0-禁用)
*/
private
Integer
status
;
/**
* 是否默认(1-是;0-否)
*/
private
Integer
ynDefault
;
/**
* 排序号
*/
private
Integer
sortNum
;
/**
* 创建人
*/
private
String
createBy
;
...
...
src/main/java/com/zzsn/event/enums/AnalysisColumnEnum.java
浏览文件 @
4eebeaf2
...
...
@@ -25,15 +25,15 @@ public enum AnalysisColumnEnum {
KNOWLEDGE_ENTRY
(
7
,
"知识词条"
,
"array"
,
1
),
ENTERPRISE_CASE
(
8
,
"企业
措施
"
,
"array"
,
1
),
ENTERPRISE_CASE
(
8
,
"企业
案例
"
,
"array"
,
1
),
//
COUNTRY_POLICY(9, "各国政策", "array", 1),
COUNTRY_POLICY
(
9
,
"各国政策"
,
"array"
,
1
),
DOMESTIC_SIMILAR_EVENT
(
10
,
"中国类似事件"
,
"array"
,
1
),
FOREIGN_SIMILAR_EVENT
(
11
,
"
各国
类似事件"
,
"array"
,
1
),
FOREIGN_SIMILAR_EVENT
(
11
,
"类似事件"
,
"array"
,
1
),
DRIVING_FACTORS
(
12
,
"
事件核心驱动因素
"
,
"object"
,
1
),
DRIVING_FACTORS
(
12
,
"
驱动因素分析
"
,
"object"
,
1
),
RELATED_INDICATOR
(
13
,
"事件相关指标"
,
"array"
,
1
),
...
...
src/main/java/com/zzsn/event/es/EsService.java
浏览文件 @
4eebeaf2
...
...
@@ -2193,6 +2193,7 @@ public class EsService {
dateHistogramAggregationBuilder
.
calendarInterval
(
DateHistogramInterval
.
DAY
).
format
(
"yyyy-MM-dd"
);
break
;
case
"week"
:
//分组后,key为当前周周一的日期
dateHistogramAggregationBuilder
.
calendarInterval
(
DateHistogramInterval
.
WEEK
).
format
(
"yyyy-MM-dd"
);
break
;
case
"month"
:
...
...
src/main/java/com/zzsn/event/kafka/KafkaConsumer.java
浏览文件 @
4eebeaf2
package
com
.
zzsn
.
event
.
kafka
;
import
com.alibaba.fastjson2.JSON
;
import
com.alibaba.fastjson2.JSONObject
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.zzsn.event.entity.CharacterBasicInfo
;
import
com.zzsn.event.entity.EventContext
;
import
com.zzsn.event.entity.EventExpertMap
;
import
com.zzsn.event.service.CharacterBasicInfoService
;
import
com.zzsn.event.service.EventContextService
;
import
com.zzsn.event.service.EventExpertMapService
;
import
com.zzsn.event.util.CodeGenerateUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
...
...
@@ -27,6 +33,12 @@ import java.util.List;
public
class
KafkaConsumer
{
@Autowired
private
EventContextService
eventContextService
;
@Autowired
private
CharacterBasicInfoService
charBasicInfoService
;
@Autowired
private
CodeGenerateUtil
codeGenerateUtil
;
@Autowired
private
EventExpertMapService
eventExpertMapService
;
/**
* 获取-事件脉络-分析结果数据,并入库
...
...
@@ -84,6 +96,57 @@ public class KafkaConsumer {
eventContextService
.
saveBatch
(
saveList
);
}
}
log
.
info
(
"事件-{},本次事件脉络更新完成"
,
eventContextKafkaList
.
get
(
0
).
getEventId
());
log
.
info
(
"事件-{},本次事件脉络更新完成"
,
eventContextKafkaList
.
get
(
0
).
getEventId
());
}
/**
* 事件-专家数据
*
* @param record 接收的kafka数据
* @author lkg
* @date 2025/9/16
*/
@KafkaListener
(
topics
=
{
"${kafka.topic.eventExpert}"
})
public
void
eventExpert
(
ConsumerRecord
<
String
,
String
>
record
)
{
String
value
=
record
.
value
();
if
(
StringUtils
.
isEmpty
(
value
))
{
return
;
}
JSONObject
jsonObject
=
JSONObject
.
parseObject
(
value
);
List
<
CharacterBasicInfo
>
eventExpertList
=
JSON
.
parseArray
(
jsonObject
.
getString
(
"expertList"
),
CharacterBasicInfo
.
class
);
if
(
CollectionUtils
.
isEmpty
(
eventExpertList
))
{
return
;
}
for
(
CharacterBasicInfo
characterBasicInfo
:
eventExpertList
)
{
if
(
StringUtils
.
isNotEmpty
(
characterBasicInfo
.
getId
()))
{
characterBasicInfo
=
charBasicInfoService
.
getById
(
characterBasicInfo
.
getId
());
characterBasicInfo
.
setId
(
null
);
characterBasicInfo
.
setCreateTime
(
null
);
characterBasicInfo
.
setUpdateTime
(
null
);
}
else
{
characterBasicInfo
=
new
CharacterBasicInfo
();
characterBasicInfo
.
setUid
(
codeGenerateUtil
.
geneCharacterUid
());
}
characterBasicInfo
.
setCategory
(
"2"
);
characterBasicInfo
.
setTypeId
(
"1966316982441611266"
);
LambdaQueryWrapper
<
CharacterBasicInfo
>
queryWrapper
=
Wrappers
.
lambdaQuery
();
queryWrapper
.
eq
(
CharacterBasicInfo:
:
getName
,
characterBasicInfo
.
getName
())
.
eq
(
CharacterBasicInfo:
:
getDepartment
,
characterBasicInfo
.
getDepartment
())
.
eq
(
CharacterBasicInfo:
:
getCategory
,
"2"
)
.
eq
(
CharacterBasicInfo:
:
getTypeId
,
"1966316982441611266"
);
CharacterBasicInfo
one
=
charBasicInfoService
.
getOne
(
queryWrapper
);
String
expertId
;
if
(
one
==
null
)
{
charBasicInfoService
.
save
(
characterBasicInfo
);
expertId
=
characterBasicInfo
.
getId
();
}
else
{
expertId
=
one
.
getId
();
}
EventExpertMap
eventExpertMap
=
new
EventExpertMap
();
eventExpertMap
.
setExpertId
(
expertId
);
eventExpertMap
.
setEventId
(
jsonObject
.
getString
(
"eventId"
));
eventExpertMap
.
setArticleId
(
jsonObject
.
getString
(
"articleId"
));
eventExpertMapService
.
save
(
eventExpertMap
);
}
}
}
src/main/java/com/zzsn/event/mapper/CharacterBasicInfoMapper.java
0 → 100644
浏览文件 @
4eebeaf2
package
com
.
zzsn
.
event
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.zzsn.event.entity.CharacterBasicInfo
;
import
org.apache.ibatis.annotations.Mapper
;
/**
* @Version 1.0
* @Author: ZhangJingKun
* @Date: 2024/2/29 10:36
* @Content:
*/
@Mapper
public
interface
CharacterBasicInfoMapper
extends
BaseMapper
<
CharacterBasicInfo
>
{
}
src/main/java/com/zzsn/event/mapper/EventExpertMapMapper.java
0 → 100644
浏览文件 @
4eebeaf2
package
com
.
zzsn
.
event
.
mapper
;
import
com.zzsn.event.entity.EventExpertMap
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
org.apache.ibatis.annotations.Mapper
;
/**
* @author lenovo
* @description 针对表【event_expert_map(事件-专家关系表)】的数据库操作Mapper
* @createDate 2025-09-15 18:08:37
* @Entity com.zzsn.event.entity.EventExpertMap
*/
@Mapper
public
interface
EventExpertMapMapper
extends
BaseMapper
<
EventExpertMap
>
{
}
src/main/java/com/zzsn/event/service/AnalysisService.java
浏览文件 @
4eebeaf2
...
...
@@ -83,14 +83,15 @@ public interface AnalysisService {
/**
* 利用大模型生成的结果
*
* @param event 事件信息
* @param startTime 开始时间
* @param endTime 结束时间
* @param llmConfig 模型配置信息
* @param event 事件信息
* @param startTime 开始时间
* @param endTime 结束时间
* @param llmConfig 模型配置信息
* @param extraContentParams 额外输入参数(重新生成且为应对建议栏目时,会用到)
* @author lkg
* @date 2025/7/17
*/
String
llmResult
(
EventVO
event
,
String
content
,
String
startTime
,
String
endTime
,
EventLlmConfig
llmConfig
);
String
llmResult
(
EventVO
event
,
String
content
,
String
startTime
,
String
endTime
,
EventLlmConfig
llmConfig
,
Map
<
Integer
,
String
>
extraContentParams
);
String
llmResult
(
String
eventId
,
String
content
,
String
startTime
,
String
endTime
,
Integer
columnCode
);
...
...
@@ -101,16 +102,16 @@ public interface AnalysisService {
* @author lkg
* @date 2025/7/7
*/
void
regenerate
(
String
eventId
,
String
versionId
);
void
regenerate
(
String
eventId
,
String
versionId
);
/**
* 导出ppt
*
* @param eventId 事件id
* @param eventId
事件id
* @param versionId 版本id
* @param content 导出内容
* @param content
导出内容
* @author lkg
* @date 2025/7/19
*/
String
exportPPT
(
String
eventId
,
String
versionId
,
JSONArray
content
);
String
exportPPT
(
String
eventId
,
String
versionId
,
JSONArray
content
);
}
src/main/java/com/zzsn/event/service/CharacterBasicInfoService.java
0 → 100644
浏览文件 @
4eebeaf2
package
com
.
zzsn
.
event
.
service
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.zzsn.event.entity.CharacterBasicInfo
;
/**
* @Version 1.0
* @Author: ZhangJingKun
* @Date: 2024/2/29 10:35
* @Content:
*/
public
interface
CharacterBasicInfoService
extends
IService
<
CharacterBasicInfo
>
{
}
src/main/java/com/zzsn/event/service/EventAnalysisVersionRecordService.java
浏览文件 @
4eebeaf2
...
...
@@ -4,6 +4,8 @@ import com.zzsn.event.entity.EventAnalysisVersionRecord;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.zzsn.event.enums.AnalysisColumnEnum
;
import
java.util.List
;
/**
* @author lenovo
* @description 针对表【event_analysis_version_record(事件分析版本记录表)】的数据库操作Service
...
...
@@ -12,7 +14,7 @@ import com.zzsn.event.enums.AnalysisColumnEnum;
public
interface
EventAnalysisVersionRecordService
extends
IService
<
EventAnalysisVersionRecord
>
{
/**
* 获取版本下的数据
* 获取版本下
某栏目
的数据
*
* @param versionId 版本id
* @param columnCode 栏目编码
...
...
@@ -32,4 +34,13 @@ public interface EventAnalysisVersionRecordService extends IService<EventAnalysi
*/
void
modify
(
String
versionId
,
AnalysisColumnEnum
analysisColumnEnum
,
String
data
);
/**
* 获取版本下某些栏目的数据集合
*
* @param versionId 版本id
* @param columnCodes 栏目编码
* @author lkg
* @date 2025/8/19
*/
List
<
EventAnalysisVersionRecord
>
getVersionDataList
(
String
versionId
,
Integer
...
columnCodes
);
}
src/main/java/com/zzsn/event/service/EventExpertMapService.java
0 → 100644
浏览文件 @
4eebeaf2
package
com
.
zzsn
.
event
.
service
;
import
com.zzsn.event.entity.EventExpertMap
;
import
com.baomidou.mybatisplus.extension.service.IService
;
/**
* @author lenovo
* @description 针对表【event_expert_map(事件-专家关系表)】的数据库操作Service
* @createDate 2025-09-15 18:08:37
*/
public
interface
EventExpertMapService
extends
IService
<
EventExpertMap
>
{
}
src/main/java/com/zzsn/event/service/SubjectService.java
浏览文件 @
4eebeaf2
...
...
@@ -29,6 +29,7 @@ public interface SubjectService extends IService<Subject> {
* @author lkg
* @date 2024/12/18
*/
@Deprecated
Page
<
SubjectPage
>
pageList
(
SubjectCondition
subjectCondition
,
Integer
pageNo
,
Integer
pageSize
);
/**
...
...
src/main/java/com/zzsn/event/service/impl/AnalysisServiceImpl.java
浏览文件 @
4eebeaf2
...
...
@@ -308,7 +308,7 @@ public class AnalysisServiceImpl implements AnalysisService {
}
@Override
public
String
llmResult
(
EventVO
event
,
String
content
,
String
startTime
,
String
endTime
,
EventLlmConfig
llmConfig
)
{
public
String
llmResult
(
EventVO
event
,
String
content
,
String
startTime
,
String
endTime
,
EventLlmConfig
llmConfig
,
Map
<
Integer
,
String
>
extraContentParams
)
{
if
(
llmConfig
==
null
)
{
return
null
;
}
...
...
@@ -333,6 +333,11 @@ public class AnalysisServiceImpl implements AnalysisService {
}
}
result
=
result
.
replaceAll
(
"```json"
,
""
).
replaceAll
(
"```"
,
""
);
if
(
extraContentParams
!=
null
&&
(
llmConfig
.
getColumnCode
().
equals
(
AnalysisColumnEnum
.
IMPACT_ASSESSMENT
.
getCode
())
||
llmConfig
.
getColumnCode
().
equals
(
AnalysisColumnEnum
.
DRIVING_FACTORS
.
getCode
())))
{
extraContentParams
.
put
(
llmConfig
.
getColumnCode
(),
result
);
}
if
(
llmConfig
.
getColumnCode
().
equals
(
AnalysisColumnEnum
.
IMPACT_ASSESSMENT
.
getCode
()))
{
EventLlmConfig
detailConfig
=
eventLlmConfigService
.
getConfig
(
event
.
getId
(),
AnalysisColumnEnum
.
IMPACT_ASSESSMENT_DETAIL
.
getCode
());
List
<
JSONObject
>
impactList
=
JSON
.
parseArray
(
result
,
JSONObject
.
class
);
...
...
@@ -341,6 +346,9 @@ public class AnalysisServiceImpl implements AnalysisService {
JSONObject
params
=
new
JSONObject
();
params
.
put
(
"eventName"
,
event
.
getEventName
());
params
.
put
(
"eventSummary"
,
event
.
getEventDescribe
());
if
(
StringUtils
.
isNotEmpty
(
event
.
getKeyIssue
()))
{
params
.
put
(
"keyIssue"
,
event
.
getKeyIssue
());
}
params
.
put
(
"impactOutline"
,
impact
);
String
impactDetail
=
llmService
.
model
(
detailConfig
.
getLlmName
(),
null
,
detailConfig
.
getLlmPrompt
(),
params
.
toJSONString
());
impact
.
put
(
"impactDetail"
,
impactDetail
);
...
...
@@ -362,7 +370,7 @@ public class AnalysisServiceImpl implements AnalysisService {
public
String
llmResult
(
String
eventId
,
String
content
,
String
startTime
,
String
endTime
,
Integer
columnCode
)
{
EventVO
event
=
eventService
.
queryInfo
(
eventId
);
EventLlmConfig
llmConfig
=
eventLlmConfigService
.
getConfig
(
eventId
,
columnCode
);
return
llmResult
(
event
,
content
,
startTime
,
endTime
,
llmConfig
);
return
llmResult
(
event
,
content
,
startTime
,
endTime
,
llmConfig
,
null
);
}
@Override
...
...
@@ -379,9 +387,7 @@ public class AnalysisServiceImpl implements AnalysisService {
int
attempts
=
0
;
do
{
String
finalVersionId
=
versionId
;
Thread
thread
=
new
Thread
(()
->
{
generate
(
event
,
finalVersionId
,
configList
);
});
Thread
thread
=
new
Thread
(()
->
generate
(
event
,
finalVersionId
,
configList
));
thread
.
start
();
try
{
Thread
.
sleep
(
1000
*
30
);
...
...
@@ -416,11 +422,17 @@ public class AnalysisServiceImpl implements AnalysisService {
}
else
{
contentTimePart
+=
endTime
;
}
String
content
=
"事件标题;"
+
eventName
+
"\n采集关键词:"
+
event
.
getKeywordsVO
().
getKeyword
()
+
contentTimePart
;
String
content
=
"事件标题;"
+
eventName
+
"\n采集关键词:"
+
event
.
getKeywordsVO
().
getKeyword
();
if
(
StringUtils
.
isEmpty
(
event
.
getKeyIssue
()))
{
content
+=
contentTimePart
;
}
else
{
content
+=
"\n关心问题:"
+
event
.
getKeyIssue
()
+
contentTimePart
;
}
//历史核心摘要是否为空
boolean
empty
=
StringUtils
.
isEmpty
(
eventDescribe
);
EventLlmConfig
config
=
configList
.
stream
().
filter
(
e
->
e
.
getColumnCode
().
equals
(
AnalysisColumnEnum
.
CORE_SUMMARY
.
getCode
())).
findFirst
().
orElse
(
new
EventLlmConfig
());
eventDescribe
=
this
.
llmResult
(
event
,
content
,
null
,
null
,
config
);
eventDescribe
=
this
.
llmResult
(
event
,
content
,
null
,
null
,
config
,
null
);
if
(
empty
)
{
event
.
setEventDescribe
(
eventDescribe
);
LambdaUpdateWrapper
<
Event
>
update
=
Wrappers
.
lambdaUpdate
();
...
...
@@ -436,13 +448,29 @@ public class AnalysisServiceImpl implements AnalysisService {
&&
!
e
.
getColumnCode
().
equals
(
AnalysisColumnEnum
.
IMPACT_ASSESSMENT_DETAIL
.
getCode
()))
.
collect
(
Collectors
.
toList
());
String
content
=
"事件标题;"
+
eventName
+
"\n事件摘要:"
+
event
.
getEventDescribe
();
if
(
StringUtils
.
isNotEmpty
(
event
.
getKeyIssue
()))
{
content
+=
"\n关心问题:"
+
event
.
getKeyIssue
();
}
//额外的输入参数
Map
<
Integer
,
String
>
extraContentParams
=
new
HashMap
<>();
for
(
EventLlmConfig
config
:
collect
)
{
try
{
AnalysisColumnEnum
analysisColumnEnum
=
AnalysisColumnEnum
.
getByCode
(
config
.
getColumnCode
());
if
(
analysisColumnEnum
!=
null
)
{
String
llmResult
=
this
.
llmResult
(
event
,
content
,
null
,
null
,
config
);
eventAnalysisVersionRecordService
.
modify
(
versionId
,
analysisColumnEnum
,
llmResult
);
Integer
columnCode
=
config
.
getColumnCode
();
AnalysisColumnEnum
analysisColumnEnum
=
AnalysisColumnEnum
.
getByCode
(
columnCode
);
if
(
analysisColumnEnum
==
null
)
{
continue
;
}
//应对建议需要把 驱动因素和影响评估作为输入
if
(
Objects
.
equals
(
columnCode
,
AnalysisColumnEnum
.
MEASURE_SUGGEST
.
getCode
()))
{
if
(
extraContentParams
.
containsKey
(
AnalysisColumnEnum
.
IMPACT_ASSESSMENT
.
getCode
()))
{
content
+=
"\n影响评估:"
+
extraContentParams
.
get
(
AnalysisColumnEnum
.
IMPACT_ASSESSMENT
.
getCode
());
}
if
(
extraContentParams
.
containsKey
(
AnalysisColumnEnum
.
DRIVING_FACTORS
.
getCode
()))
{
content
+=
"\n驱动因素:"
+
extraContentParams
.
get
(
AnalysisColumnEnum
.
DRIVING_FACTORS
.
getCode
());
}
}
String
llmResult
=
this
.
llmResult
(
event
,
content
,
null
,
null
,
config
,
extraContentParams
);
eventAnalysisVersionRecordService
.
modify
(
versionId
,
analysisColumnEnum
,
llmResult
);
log
.
info
(
"{}-事件分析【{}】重新生成逻辑完成。"
,
eventName
,
config
.
getColumnName
());
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
...
...
src/main/java/com/zzsn/event/service/impl/CharacterBasicInfoServiceImpl.java
0 → 100644
浏览文件 @
4eebeaf2
package
com
.
zzsn
.
event
.
service
.
impl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.zzsn.event.entity.CharacterBasicInfo
;
import
com.zzsn.event.mapper.CharacterBasicInfoMapper
;
import
com.zzsn.event.service.CharacterBasicInfoService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Service
;
/**
* @Version 1.0
* @Author: ZhangJingKun
* @Date: 2024/2/29 10:35
* @Content: 人物基本信息
*/
@Slf4j
@Service
public
class
CharacterBasicInfoServiceImpl
extends
ServiceImpl
<
CharacterBasicInfoMapper
,
CharacterBasicInfo
>
implements
CharacterBasicInfoService
{
}
src/main/java/com/zzsn/event/service/impl/EventAnalysisVersionRecordServiceImpl.java
浏览文件 @
4eebeaf2
...
...
@@ -7,16 +7,22 @@ import com.zzsn.event.entity.EventAnalysisVersionRecord;
import
com.zzsn.event.enums.AnalysisColumnEnum
;
import
com.zzsn.event.service.EventAnalysisVersionRecordService
;
import
com.zzsn.event.mapper.EventAnalysisVersionRecordMapper
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.springframework.stereotype.Service
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.List
;
import
java.util.stream.Collectors
;
/**
* @author lenovo
* @description 针对表【event_analysis_version_record(事件分析版本记录表)】的数据库操作Service实现
* @createDate 2025-07-16 16:34:46
*/
* @author lenovo
* @description 针对表【event_analysis_version_record(事件分析版本记录表)】的数据库操作Service实现
* @createDate 2025-07-16 16:34:46
*/
@Service
public
class
EventAnalysisVersionRecordServiceImpl
extends
ServiceImpl
<
EventAnalysisVersionRecordMapper
,
EventAnalysisVersionRecord
>
implements
EventAnalysisVersionRecordService
{
implements
EventAnalysisVersionRecordService
{
@Override
public
String
getVersionData
(
String
versionId
,
Integer
columnCode
)
{
...
...
@@ -44,6 +50,14 @@ public class EventAnalysisVersionRecordServiceImpl extends ServiceImpl<EventAnal
this
.
save
(
versionRecord
);
}
}
@Override
public
List
<
EventAnalysisVersionRecord
>
getVersionDataList
(
String
versionId
,
Integer
...
columnCodes
)
{
LambdaQueryWrapper
<
EventAnalysisVersionRecord
>
queryWrapper
=
Wrappers
.
lambdaQuery
();
queryWrapper
.
eq
(
EventAnalysisVersionRecord:
:
getVersionId
,
versionId
)
.
in
(
EventAnalysisVersionRecord:
:
getColumnCode
,
(
Object
)
columnCodes
);
return
this
.
list
(
queryWrapper
);
}
}
...
...
src/main/java/com/zzsn/event/service/impl/EventExpertMapServiceImpl.java
0 → 100644
浏览文件 @
4eebeaf2
package
com
.
zzsn
.
event
.
service
.
impl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.zzsn.event.entity.EventExpertMap
;
import
com.zzsn.event.service.EventExpertMapService
;
import
com.zzsn.event.mapper.EventExpertMapMapper
;
import
org.springframework.stereotype.Service
;
/**
* @author lenovo
* @description 针对表【event_expert_map(事件-专家关系表)】的数据库操作Service实现
* @createDate 2025-09-15 18:08:37
*/
@Service
public
class
EventExpertMapServiceImpl
extends
ServiceImpl
<
EventExpertMapMapper
,
EventExpertMap
>
implements
EventExpertMapService
{
}
src/main/java/com/zzsn/event/service/impl/EventLlmConfigServiceImpl.java
浏览文件 @
4eebeaf2
...
...
@@ -12,8 +12,10 @@ import org.apache.commons.collections4.CollectionUtils;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.ArrayList
;
import
java.util.Comparator
;
import
java.util.List
;
import
java.util.Optional
;
import
java.util.stream.Collectors
;
/**
...
...
@@ -27,11 +29,13 @@ public class EventLlmConfigServiceImpl extends ServiceImpl<EventLlmConfigMapper,
@Override
public
List
<
EventLlmConfig
>
getConfigList
(
String
eventId
)
{
LambdaQueryWrapper
<
EventLlmConfig
>
queryWrapper
=
Wrappers
.
lambdaQuery
();
queryWrapper
.
eq
(
EventLlmConfig:
:
getEventId
,
eventId
).
orderByAsc
(
EventLlmConfig:
:
getColumnCode
);
queryWrapper
.
eq
(
EventLlmConfig:
:
getEventId
,
eventId
).
eq
(
EventLlmConfig:
:
getStatus
,
1
)
.
orderByAsc
(
EventLlmConfig:
:
getSortNum
);
List
<
EventLlmConfig
>
configList
=
this
.
list
(
queryWrapper
);
if
(
CollectionUtils
.
isEmpty
(
configList
))
{
LambdaQueryWrapper
<
EventLlmConfig
>
query
=
Wrappers
.
lambdaQuery
();
query
.
eq
(
EventLlmConfig:
:
getYnDefault
,
1
).
orderByAsc
(
EventLlmConfig:
:
getColumnCode
);
query
.
eq
(
EventLlmConfig:
:
getYnDefault
,
1
).
eq
(
EventLlmConfig:
:
getStatus
,
1
)
.
orderByAsc
(
EventLlmConfig:
:
getSortNum
);
configList
=
this
.
list
(
query
);
}
return
configList
;
...
...
@@ -40,11 +44,13 @@ public class EventLlmConfigServiceImpl extends ServiceImpl<EventLlmConfigMapper,
@Override
public
EventLlmConfig
getConfig
(
String
eventId
,
Integer
columnCode
)
{
LambdaQueryWrapper
<
EventLlmConfig
>
queryWrapper
=
Wrappers
.
lambdaQuery
();
queryWrapper
.
eq
(
EventLlmConfig:
:
getEventId
,
eventId
).
eq
(
EventLlmConfig:
:
getColumnCode
,
columnCode
);
queryWrapper
.
eq
(
EventLlmConfig:
:
getEventId
,
eventId
).
eq
(
EventLlmConfig:
:
getColumnCode
,
columnCode
)
.
eq
(
EventLlmConfig:
:
getStatus
,
1
);
EventLlmConfig
config
=
this
.
getOne
(
queryWrapper
);
if
(
ObjectUtils
.
isNull
(
config
))
{
LambdaQueryWrapper
<
EventLlmConfig
>
query
=
Wrappers
.
lambdaQuery
();
query
.
eq
(
EventLlmConfig:
:
getYnDefault
,
1
).
eq
(
EventLlmConfig:
:
getColumnCode
,
columnCode
);
query
.
eq
(
EventLlmConfig:
:
getYnDefault
,
1
).
eq
(
EventLlmConfig:
:
getColumnCode
,
columnCode
)
.
eq
(
EventLlmConfig:
:
getStatus
,
1
);
config
=
this
.
getOne
(
query
);
}
return
config
;
...
...
@@ -58,15 +64,16 @@ public class EventLlmConfigServiceImpl extends ServiceImpl<EventLlmConfigMapper,
}
String
eventId
=
eventLlmConfigList
.
get
(
0
).
getEventId
();
LambdaQueryWrapper
<
EventLlmConfig
>
queryWrapper
=
Wrappers
.
lambdaQuery
();
queryWrapper
.
eq
(
EventLlmConfig:
:
getEventId
,
eventId
);
queryWrapper
.
eq
(
EventLlmConfig:
:
getEventId
,
eventId
)
.
eq
(
EventLlmConfig:
:
getStatus
,
1
)
;
List
<
EventLlmConfig
>
configList
=
this
.
list
(
queryWrapper
);
if
(
CollectionUtils
.
isEmpty
(
configList
))
{
List
<
Integer
>
configCodeList
=
eventLlmConfigList
.
stream
().
map
(
EventLlmConfig:
:
getColumnCode
).
collect
(
Collectors
.
toList
());
LambdaQueryWrapper
<
EventLlmConfig
>
query
=
Wrappers
.
lambdaQuery
();
query
.
eq
(
EventLlmConfig:
:
getYnDefault
,
1
).
orderByAsc
(
EventLlmConfig:
:
getColumnCode
);
query
.
eq
(
EventLlmConfig:
:
getYnDefault
,
1
).
eq
(
EventLlmConfig:
:
getStatus
,
1
).
orderByAsc
(
EventLlmConfig:
:
getSortNum
);
List
<
EventLlmConfig
>
defaultConfigList
=
this
.
list
(
query
);
if
(
defaultConfigList
.
size
()
>
eventLlmConfigList
.
size
())
{
List
<
EventLlmConfig
>
collect
=
defaultConfigList
.
stream
().
filter
(
config
->
!
configCodeList
.
contains
(
config
.
getColumnCode
())).
collect
(
Collectors
.
toList
());
List
<
EventLlmConfig
>
collect
=
defaultConfigList
.
stream
()
.
filter
(
config
->
!
configCodeList
.
contains
(
config
.
getColumnCode
())).
collect
(
Collectors
.
toList
());
for
(
EventLlmConfig
config
:
collect
)
{
config
.
setId
(
null
);
config
.
setEventId
(
eventId
);
...
...
@@ -87,14 +94,17 @@ public class EventLlmConfigServiceImpl extends ServiceImpl<EventLlmConfigMapper,
@Override
public
void
modifySingle
(
EventLlmConfig
eventLlmConfig
)
{
String
eventId
=
eventLlmConfig
.
getEventId
();
//事件自定义的配置
LambdaQueryWrapper
<
EventLlmConfig
>
queryWrapper
=
Wrappers
.
lambdaQuery
();
queryWrapper
.
eq
(
EventLlmConfig:
:
getEventId
,
eventId
);
queryWrapper
.
eq
(
EventLlmConfig:
:
getEventId
,
eventId
)
.
eq
(
EventLlmConfig:
:
getStatus
,
1
)
;
List
<
EventLlmConfig
>
configList
=
this
.
list
(
queryWrapper
);
if
(
CollectionUtils
.
isEmpty
(
configList
))
{
//默认配置
LambdaQueryWrapper
<
EventLlmConfig
>
query
=
Wrappers
.
lambdaQuery
();
query
.
eq
(
EventLlmConfig:
:
getYnDefault
,
1
).
orderByAsc
(
EventLlmConfig:
:
getColumnCode
);
query
.
eq
(
EventLlmConfig:
:
getYnDefault
,
1
).
eq
(
EventLlmConfig:
:
getStatus
,
1
).
orderByAsc
(
EventLlmConfig:
:
getSortNum
);
List
<
EventLlmConfig
>
defaultConfigList
=
this
.
list
(
query
);
List
<
EventLlmConfig
>
collect
=
defaultConfigList
.
stream
().
filter
(
config
->
!
eventLlmConfig
.
getColumnCode
().
equals
(
config
.
getColumnCode
())).
collect
(
Collectors
.
toList
());
List
<
EventLlmConfig
>
collect
=
defaultConfigList
.
stream
()
.
filter
(
config
->
!
eventLlmConfig
.
getColumnCode
().
equals
(
config
.
getColumnCode
())).
collect
(
Collectors
.
toList
());
for
(
EventLlmConfig
config
:
collect
)
{
config
.
setId
(
null
);
config
.
setEventId
(
eventId
);
...
...
@@ -102,7 +112,7 @@ public class EventLlmConfigServiceImpl extends ServiceImpl<EventLlmConfigMapper,
}
eventLlmConfig
.
setYnDefault
(
0
);
collect
.
add
(
eventLlmConfig
);
collect
.
sort
(
Comparator
.
comparingInt
(
EventLlmConfig:
:
get
ColumnCode
));
collect
.
sort
(
Comparator
.
comparingInt
(
EventLlmConfig:
:
get
SortNum
));
this
.
saveBatch
(
collect
);
}
else
{
LambdaUpdateWrapper
<
EventLlmConfig
>
update
=
Wrappers
.
lambdaUpdate
();
...
...
src/main/java/com/zzsn/event/util/CodeGenerateUtil.java
浏览文件 @
4eebeaf2
...
...
@@ -41,6 +41,25 @@ public class CodeGenerateUtil {
}
/**
* 生成人物唯一编码
*
* @author lkg
* @date 2025/9/15
*/
public
String
geneCharacterUid
(){
String
redisKey
=
getRedisKey
(
"LEADER_UID:"
);
Date
expireDate
=
getExpireDate
();
//返回当前redis中的key的最大值
long
seq
=
generate
(
stringRedisTemplate
,
redisKey
,
expireDate
);
//获取当天的日期,格式为yyyyMMdd
String
date
=
new
SimpleDateFormat
(
"yyyyMMdd"
).
format
(
expireDate
);
//生成八位的序列号,如果seq不够四位,seq前面补0,
//如果seq位数超过了八位,那么无需补0直接返回当前的seq
String
sequence
=
StringUtils
.
leftPad
(
Long
.
toString
(
seq
),
8
,
"0"
);
return
"U"
+
date
.
substring
(
2
)+
sequence
;
}
/**
* 生成统一社会信用代码
* @param prefix 前缀
* @return java.lang.String
...
...
src/main/java/com/zzsn/event/util/PythonUtil.java
浏览文件 @
4eebeaf2
...
...
@@ -3,12 +3,14 @@ package com.zzsn.event.util;
import
com.alibaba.fastjson2.JSON
;
import
com.alibaba.fastjson2.JSONArray
;
import
com.alibaba.fastjson2.JSONObject
;
import
com.zzsn.event.vo.es.SpecialInformation
;
import
com.zzsn.event.vo.log.Source
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Service
;
import
java.io.IOException
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
...
...
@@ -30,6 +32,8 @@ public class PythonUtil {
private
String
judgeDuplicateUrl
;
@Value
(
"${python.clearDuplicateHistoryUrl:}"
)
private
String
clearDuplicateHistoryUrl
;
@Value
(
"${python.enterpriseCaseFilterUrl:}"
)
private
String
enterpriseCaseFilterUrl
;
/**
* 提取关键词
...
...
@@ -126,4 +130,40 @@ public class PythonUtil {
e
.
printStackTrace
();
}
}
/**
* 企业案例资讯过滤
*
* @param infoList 企业资讯
* @author lkg
* @date 2025/9/18
*/
public
List
<
SpecialInformation
>
enterpriseCaseFilter
(
List
<
SpecialInformation
>
infoList
)
{
List
<
SpecialInformation
>
resultList
=
new
ArrayList
<>();
JSONObject
params
=
new
JSONObject
();
Map
<
String
,
Object
>
dataMap
=
new
HashMap
<>();
List
<
JSONObject
>
dataList
=
new
ArrayList
<>();
for
(
SpecialInformation
specialInformation
:
infoList
)
{
JSONObject
jsonObject
=
new
JSONObject
();
jsonObject
.
put
(
"id"
,
specialInformation
.
getId
());
jsonObject
.
put
(
"title"
,
specialInformation
.
getTitle
());
jsonObject
.
put
(
"content"
,
specialInformation
.
getContent
());
jsonObject
.
put
(
"origin"
,
specialInformation
.
getOrigin
());
dataList
.
add
(
jsonObject
);
}
dataMap
.
put
(
"data_list"
,
dataList
);
params
.
put
(
"data"
,
dataMap
);
try
{
String
response
=
HttpUtil
.
doPost
(
enterpriseCaseFilterUrl
,
params
,
300000
);
JSONObject
jsonObject
=
JSONObject
.
parseObject
(
response
);
String
isHandleSuccess
=
jsonObject
.
getString
(
"isHandleSuccess"
);
if
(
isHandleSuccess
.
equals
(
"true"
))
{
String
resultData
=
jsonObject
.
getString
(
"resultData"
);
resultList
=
JSON
.
parseArray
(
resultData
,
SpecialInformation
.
class
);
}
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
return
resultList
;
}
}
src/main/resources/application-dev.yml
浏览文件 @
4eebeaf2
...
...
@@ -150,6 +150,8 @@ python:
keyWordsExtractUrl
:
http://1.95.91.200:7006/get_phrase/
#清空去重服务历史数据
clearDuplicateHistoryUrl
:
http://1.95.13.40:8080/subject/delete_history_data
#企业案例资讯过滤
enterpriseCaseFilterUrl
:
http://1.95.86.189:4014/predict_case
jeecg
:
shiro
:
excludeUrls
:
/info/subjectPageListGroupByLabel,/subject/simple/queryInfoNoSign,/subject/manage/visiblePageListNoSign
...
...
@@ -159,6 +161,7 @@ kafka:
subject
:
run
:
subjectModelTest
eventContext
:
eventContexTopic
eventExpert
:
eventExpertTopic
clb
:
subject
:
default
:
...
...
src/main/resources/application-test.yml
浏览文件 @
4eebeaf2
...
...
@@ -152,6 +152,8 @@ python:
keyWordsExtractUrl
:
http://1.95.91.200:7006/get_phrase/
#清空去重服务历史数据
clearDuplicateHistoryUrl
:
http://1.95.13.40:8080/subject/delete_history_data
#企业案例资讯过滤
enterpriseCaseFilterUrl
:
http://1.95.86.189:4014/predict_case
hot-crawler
:
http://139.9.144.106:5000/data?option=OPTION
jeecg
:
shiro
:
...
...
@@ -163,6 +165,7 @@ kafka:
event
:
run
:
eventSubjectModelTest
eventContext
:
eventContexTopicTest
eventExpert
:
eventExpertTopicTest
clb
:
subject
:
default
:
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论