提交 a540eacb 作者: 925993793@qq.com

调试问题修改

上级 9139cbde
......@@ -272,8 +272,18 @@ public class EventAnalysisController {
String versionData = eventAnalysisVersionRecordService.getVersionData(versionId, AnalysisColumnEnum.CO_OCCURRENCE.getCode());
return Result.OK(JSON.parseArray(versionData,JSONObject.class));
}
List<CoOccurrenceVO> versionData = analysisService.coOccurrence(eventId, startTime, endTime);
return Result.OK(versionData);
//增加缓存逻辑,提升查询效率
String key = Constants.SUBJECT_ANALYSIS_PRE + Constants.CO_OCCURRENCE + eventId;
Object cacheObject = redisUtil.get(key);
if (cacheObject != null) {
return Result.OK(cacheObject);
} else {
List<CoOccurrenceVO> coOccurrenceVOS = analysisService.coOccurrence(eventId, startTime, endTime);
if (CollectionUtils.isNotEmpty(coOccurrenceVOS)) {
redisUtil.set(key, coOccurrenceVOS,3600 * 24);
}
return Result.OK(coOccurrenceVOS);
}
}
/**
......
package com.zzsn.event.controller.common;
import com.zzsn.event.constant.Result;
import com.zzsn.event.entity.EventAnalysisVersion;
import com.zzsn.event.entity.EventAnalysisVersionRecord;
import com.zzsn.event.entity.EventLlmConfig;
import com.zzsn.event.enums.AnalysisColumnEnum;
import com.zzsn.event.service.AnalysisService;
import com.zzsn.event.service.EventAnalysisVersionRecordService;
import com.zzsn.event.service.EventAnalysisVersionService;
import com.zzsn.event.service.EventLlmConfigService;
import com.zzsn.event.util.DateUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.Date;
import java.util.List;
import java.util.concurrent.CompletableFuture;
/**
* 大模型配置
......@@ -20,6 +29,12 @@ public class LLmConfigController {
@Autowired
private EventLlmConfigService llmConfigService;
@Autowired
private AnalysisService analysisService;
@Autowired
private EventAnalysisVersionService eventAnalysisVersionService;
@Autowired
private EventAnalysisVersionRecordService eventAnalysisVersionRecordService;
/**
* 事件下大模型配置信息
......@@ -35,15 +50,45 @@ public class LLmConfigController {
}
/**
* 编辑事件的大模型配置信息
* 批量编辑事件的大模型配置信息
*
* @param eventLlmConfigList 大模型配置信息
* @author lkg
* @date 2025/7/28
*/
@PostMapping("/modify")
public Result<?> modify(@RequestBody List<EventLlmConfig> eventLlmConfigList) {
llmConfigService.modify(eventLlmConfigList);
@PostMapping("/modifyBatch")
public Result<?> modifyBatch(@RequestBody List<EventLlmConfig> eventLlmConfigList) {
llmConfigService.modifyBatch(eventLlmConfigList);
return Result.OK();
}
/**
* 编辑事件栏目的大模型配置信息,同时触发大模型更新结果
*
* @param eventLlmConfig 大模型配置信息
* @author lkg
* @date 2025/7/28
*/
@PostMapping("/modifySingle")
public Result<?> modifySingle(@RequestBody EventLlmConfig eventLlmConfig) {
llmConfigService.modifySingle(eventLlmConfig);
CompletableFuture.runAsync(() ->{
String eventId = eventLlmConfig.getEventId();
//调用大模型更细结果
String llmResult = analysisService.llmResult(eventId, null, null, eventLlmConfig.getColumnCode());
EventAnalysisVersion eventAnalysisVersion = eventAnalysisVersionService.latestVersion(eventId);
String versionId;
if (eventAnalysisVersion == null) {
eventAnalysisVersion = new EventAnalysisVersion();
eventAnalysisVersion.setEventId(eventId);
eventAnalysisVersion.setVersionName("版本" + DateUtil.dateToString(new Date()));
eventAnalysisVersionService.save(eventAnalysisVersion);
versionId = eventAnalysisVersion.getId();
} else {
versionId = eventAnalysisVersion.getId();
}
EventAnalysisVersionRecord versionRecord = EventAnalysisVersionRecord.of(versionId, AnalysisColumnEnum.CORE_SUMMARY, llmResult);
eventAnalysisVersionRecordService.save(versionRecord);
});
return Result.OK();
}
}
......@@ -12,9 +12,40 @@ import java.util.List;
*/
public interface EventLlmConfigService extends IService<EventLlmConfig> {
/**
* 获取事件的大模型配置信息,没有则返回默认的配置信息
*
* @param eventId 事件id
* @author lkg
* @date 2025/7/30
*/
List<EventLlmConfig> getConfigList(String eventId);
/**
* 获取事件下某个栏目的大模型配置信息
*
* @param eventId 事件id
* @param columnCode 栏目id
* @author lkg
* @date 2025/7/30
*/
EventLlmConfig getConfig(String eventId,Integer columnCode);
void modify(List<EventLlmConfig> eventLlmConfigList);
/**
* 批量更新大模型配置
*
* @param eventLlmConfigList 配置信息
* @author lkg
* @date 2025/7/30
*/
void modifyBatch(List<EventLlmConfig> eventLlmConfigList);
/**
* 更新大模型配置
*
* @param eventLlmConfig 配置信息
* @author lkg
* @date 2025/7/30
*/
void modifySingle(EventLlmConfig eventLlmConfig);
}
......@@ -140,6 +140,10 @@ public class AnalysisServiceImpl implements AnalysisService {
@Override
public List<CountVO> wordTrend(String eventId, String startTime, String endTime) {
int count = esService.count(eventId, startTime, endTime);
if (count == 0) {
return new ArrayList<>();
}
Event event = eventService.getById(eventId);
Date beginTime = event.getStartTime();
if (StringUtils.isNotEmpty(startTime)) {
......@@ -177,6 +181,10 @@ public class AnalysisServiceImpl implements AnalysisService {
@Override
public List<CoOccurrenceVO> coOccurrence(String eventId, String startTime, String endTime) {
List<CoOccurrenceVO> list = new ArrayList<>();
int count = esService.count(eventId, startTime, endTime);
if (count == 0) {
return list;
}
InfoDataSearchCondition searchCondition = new InfoDataSearchCondition();
searchCondition.setCategory(2);
searchCondition.setSubjectId(eventId);
......@@ -295,6 +303,11 @@ public class AnalysisServiceImpl implements AnalysisService {
@Override
public String llmResult(String eventName, String startTime, String endTime, EventLlmConfig llmConfig) {
String result = llmService.model(llmConfig.getLlmName(), llmConfig.getLlmPrompt(), eventName);
if (result.startsWith("```json")) {
return result.substring(7, result.length() - 3);
} else if (result.startsWith("```")) {
return result.substring(3, result.length() - 3);
}
if (llmConfig.getColumnCode().equals(AnalysisColumnEnum.IMPACT_ASSESSMENT.getCode())) {
String prompt = "根据提供的事件名称,以及其%s的概述,详细的描述下该事件的%s";
List<JSONObject> impactList = JSON.parseArray(result, JSONObject.class);
......@@ -316,6 +329,11 @@ public class AnalysisServiceImpl implements AnalysisService {
Event event = eventService.getById(eventId);
EventLlmConfig llmConfig = eventLlmConfigService.getConfig(eventId, columnCode);
String result = llmService.model(llmConfig.getLlmName(), llmConfig.getLlmPrompt(), event.getEventName());
if (result.startsWith("```json")) {
return result.substring(7, result.length() - 3);
} else if (result.startsWith("```")) {
return result.substring(3, result.length() - 3);
}
if (columnCode.equals(AnalysisColumnEnum.IMPACT_ASSESSMENT.getCode())) {
String prompt = "根据提供的事件名称,以及其%s的概述,详细的描述下该事件的%s";
List<JSONObject> impactList = JSON.parseArray(result, JSONObject.class);
......
......@@ -51,7 +51,7 @@ public class EventLlmConfigServiceImpl extends ServiceImpl<EventLlmConfigMapper,
@Override
@Transactional
public void modify(List<EventLlmConfig> eventLlmConfigList) {
public void modifyBatch(List<EventLlmConfig> eventLlmConfigList) {
if (CollectionUtils.isEmpty(eventLlmConfigList)) {
return;
}
......@@ -82,6 +82,31 @@ 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);
List<EventLlmConfig> configList = this.list(queryWrapper);
if (CollectionUtils.isEmpty(configList)) {
LambdaQueryWrapper<EventLlmConfig> query = Wrappers.lambdaQuery();
query.eq(EventLlmConfig::getYnDefault, 1).orderByAsc(EventLlmConfig::getColumnCode);
List<EventLlmConfig> defaultConfigList = this.list(query);
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);
config.setYnDefault(0);
}
collect.add(eventLlmConfig);
this.saveBatch(collect);
} else {
LambdaUpdateWrapper<EventLlmConfig> update = Wrappers.lambdaUpdate();
update.eq(EventLlmConfig::getEventId, eventId).eq(EventLlmConfig::getColumnCode, eventLlmConfig.getColumnCode());
this.update(eventLlmConfig,update);
}
}
}
......
......@@ -409,6 +409,7 @@ public class KeyWordsServiceImpl extends ServiceImpl<KeyWordsMapper, KeyWords> i
//专题和关键词关系
List<SubjectKeywordsMap> dataList = new ArrayList<>();
if (type == 1) {
//统计绑定采集词和过滤词
for (int i = 1; i < 3; i++) {
//专题和词组关系
SubjectKeywordsMap subjectKeywordsMap = new SubjectKeywordsMap();
......@@ -432,7 +433,7 @@ public class KeyWordsServiceImpl extends ServiceImpl<KeyWordsMapper, KeyWords> i
relation.setParamsStr(JSON.toJSONString(jsonArray));
relationList.add(relation);
}
} else if (type == 2) {
} else if (type == 2) {//排除词
//专题和词组关系
SubjectKeywordsMap subjectKeywordsMap = new SubjectKeywordsMap();
subjectKeywordsMap.setKeywordsId(keyWordsId);
......
......@@ -45,8 +45,8 @@ public class AnalysisTask {
/**
* 补充事件当天的脉络
* 每3小时执行一次
* 重新生成事件分析(版本)
* 每天凌晨00:30执行一次
*
* @author lkg
* @date 2025/7/9
......@@ -54,6 +54,7 @@ public class AnalysisTask {
//@Scheduled(cron = "0 30 0 * * ?")
public void analysis() {
Date now = new Date();
Date deadlineDate = DateUtil.addDate(now, -1);
LambdaQueryWrapper<Event> queryWrapper = Wrappers.lambdaQuery();
queryWrapper.eq(Event::getStatus, 1).gt(Event::getCreateTime, "2025-07-27");
List<Event> eventList = eventService.list(queryWrapper);
......@@ -61,8 +62,9 @@ public class AnalysisTask {
CompletableFuture.runAsync(() -> {
String eventId = event.getId();
String estimateStatus = event.getEstimateStatus();
if (StringUtils.isNotBlank(estimateStatus) && !estimateStatus.equals("已完成")) {
if (DateUtil.stringToDate(estimateStatus, "yyyy-MM-dd HH:mm:ss").compareTo(now) > 0) {
if (StringUtils.isNotBlank(estimateStatus)
&& !estimateStatus.equals("已完成") && !estimateStatus.equals("未启用")) {
if (DateUtil.stringToDate(estimateStatus, "yyyy-MM-dd HH:mm:ss").compareTo(deadlineDate) > 0) {
analysisService.regenerate(eventId);
}
}
......@@ -72,7 +74,7 @@ public class AnalysisTask {
/**
* 定时生成传播路径
* 每天凌晨0点10分执行一次
* 每天凌晨0点执行一次
*/
@Scheduled(cron = "0 0 0 * * ?")
public void propagationPath() {
......
package com.zzsn.event.task;
import com.zzsn.event.constant.Constants;
import com.zzsn.event.es.EsService;
import com.zzsn.event.service.AnalysisService;
import com.zzsn.event.service.IEventService;
import com.zzsn.event.util.DateUtil;
......@@ -33,13 +34,15 @@ public class CoOccurrenceTask {
private RedisUtil redisUtil;
@Autowired
private AnalysisService analysisService;
@Autowired
private EsService esService;
/**
* 定时缓存热词共现关系数据
* 每天凌晨1点执行一次
*/
@Scheduled(cron = "0 0 1 * * ?")
public void propagationPath() {
public void co_occurrence() {
Date today = new Date();
Date deadlineDate = DateUtil.addDate(today, -1);
List<SubjectKafkaVo> events = eventService.eventSubjectList();
......@@ -48,21 +51,24 @@ public class CoOccurrenceTask {
String eventId = event.getId();
String key = Constants.SUBJECT_ANALYSIS_PRE + Constants.CO_OCCURRENCE + eventId;
Date timeDisable = event.getTimeDisable();
if (timeDisable != null && deadlineDate.compareTo(timeDisable) > 0) {
Object cacheObject = redisUtil.get(key);
if (cacheObject == null) {
int count = esService.count(eventId, null, null);
if (count > 0) {
if (timeDisable != null && deadlineDate.compareTo(timeDisable) > 0) {
Object cacheObject = redisUtil.get(key);
if (cacheObject == null) {
List<CoOccurrenceVO> occurrenceList = analysisService.coOccurrence(eventId, null, null);
if (CollectionUtils.isNotEmpty(occurrenceList)) {
redisUtil.set(key, occurrenceList);
log.info("专题-{},热词共现关系数据【永久】缓存成功!", event.getSubjectName());
}
}
} else {
List<CoOccurrenceVO> occurrenceList = analysisService.coOccurrence(eventId, null, null);
if (CollectionUtils.isNotEmpty(occurrenceList)) {
redisUtil.set(key, occurrenceList);
log.info("专题-{},热词共现关系数据【永久】缓存成功!", event.getSubjectName());
redisUtil.set(key, occurrenceList, 3600 * 24);
log.info("专题-{},热词共现关系数据缓存成功!", event.getSubjectName());
}
}
} else {
List<CoOccurrenceVO> occurrenceList = analysisService.coOccurrence(eventId, null, null);
if (CollectionUtils.isNotEmpty(occurrenceList)) {
redisUtil.set(key, occurrenceList, 3600 * 24);
log.info("专题-{},热词共现关系数据缓存成功!", event.getSubjectName());
}
}
});
}
......
......@@ -3,9 +3,7 @@ package com.zzsn.event.task;
import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.zzsn.event.entity.Event;
import com.zzsn.event.service.EsStatisticsService;
import com.zzsn.event.service.IEventService;
......@@ -55,8 +53,6 @@ public class EventHotTask {
*/
@Scheduled(cron = "0 0 0/3 * * ?")
public void hot() {
//LambdaQueryWrapper<Event> queryWrapper = Wrappers.lambdaQuery();
//queryWrapper.eq(Event::getFacePublic,1).eq(Event::getPublishStatus,1);
List<Event> list = eventService.list();
List<HotVO> countList = new ArrayList<>();
for (Event event : list) {
......
......@@ -52,10 +52,6 @@ public class NetWorkEventTask {
*/
@Scheduled(cron = "0 0 0/1 * * ?")
public void execute() {
if(!yjzxEnable){
//研究中心需要此任务
return;
}
for (int i = 1; i < 3; i++) {
int finalI = i;
CompletableFuture.runAsync(() -> handler(finalI));
......
......@@ -11,7 +11,6 @@ import com.zzsn.event.mapper.EventClbMapper;
import com.zzsn.event.service.IEventService;
import com.zzsn.event.service.IEventTagClbService;
import com.zzsn.event.service.IEventTagService;
import com.zzsn.event.vo.EventVO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;
......@@ -50,8 +49,6 @@ public class SynClbEventDataTask {
return;
}
log.info("同步克虏宝中事件信息到研究中心数据库开始");
//LambdaQueryWrapper<Event> queryWrapper = Wrappers.lambdaQuery();
//queryWrapper.eq(Event::getFacePublic,1).eq(Event::getPublishStatus,1);
List<Event> list = eventService.list();
for (Event event : list) {
try{
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论