提交 7d44b656 作者: 刘凯歌

合并分支 'event_fusion_dev' 到 'event_fusion'

【事件分析】-企业案例增加标记功能优化

查看合并请求 !24
...@@ -82,6 +82,8 @@ public class EventAnalysisController { ...@@ -82,6 +82,8 @@ public class EventAnalysisController {
private CommonService commonService; private CommonService commonService;
@Autowired @Autowired
private IEventService eventService; private IEventService eventService;
@Autowired
private EventWebSearchArticleService eventWebSearchArticleService;
/** /**
...@@ -634,7 +636,7 @@ public class EventAnalysisController { ...@@ -634,7 +636,7 @@ public class EventAnalysisController {
} }
String versionData = eventAnalysisVersionRecordService.getVersionData(versionId, AnalysisColumnEnum.COUNTRY_POLICY.getCode()); String versionData = eventAnalysisVersionRecordService.getVersionData(versionId, AnalysisColumnEnum.COUNTRY_POLICY.getCode());
//String result = analysisService.llmResult(eventId, startTime, endTime, AnalysisColumnEnum.COUNTRY_POLICY.getCode()); //String result = analysisService.llmResult(eventId, startTime, endTime, AnalysisColumnEnum.COUNTRY_POLICY.getCode());
return Result.OK(JSON.parseArray(versionData,JSONObject.class)); return Result.OK(JSON.parseArray(versionData, JSONObject.class));
} }
...@@ -928,6 +930,23 @@ public class EventAnalysisController { ...@@ -928,6 +930,23 @@ public class EventAnalysisController {
} }
/** /**
* 大模型接口引用资讯详情
*
* @param versionId 版本id
* @param refer 引用资讯id
* @author lkg
* @date 2025/9/23
*/
@GetMapping("/webSearchArticleInfo")
private Result<?> webSearchArticleInfo(String versionId, String refer) {
LambdaQueryWrapper<EventWebSearchArticle> queryWrapper = Wrappers.lambdaQuery();
queryWrapper.eq(EventWebSearchArticle::getVersionId, versionId)
.eq(EventWebSearchArticle::getRefer, refer);
EventWebSearchArticle one = eventWebSearchArticleService.getOne(queryWrapper);
return Result.OK(one);
}
/**
* 获取事件分析报告详细信息 * 获取事件分析报告详细信息
* *
* @param eventId 事件id * @param eventId 事件id
......
...@@ -2,6 +2,8 @@ package com.zzsn.event.controller.common; ...@@ -2,6 +2,8 @@ package com.zzsn.event.controller.common;
import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.zzsn.event.constant.Result; import com.zzsn.event.constant.Result;
import com.zzsn.event.entity.Event; import com.zzsn.event.entity.Event;
import com.zzsn.event.entity.EventAnalysisVersionRecord; import com.zzsn.event.entity.EventAnalysisVersionRecord;
...@@ -57,6 +59,23 @@ public class LLmConfigController { ...@@ -57,6 +59,23 @@ public class LLmConfigController {
} }
/** /**
* 某栏目的默认配置信息
*
* @param columnCode 栏目编码
* @author lkg
* @date 2025/9/23
*/
@GetMapping("/defaultConfigInfo")
public Result<?> configInfo(@RequestParam String columnCode) {
LambdaQueryWrapper<EventLlmConfig> queryWrapper = Wrappers.lambdaQuery();
queryWrapper.eq(EventLlmConfig::getColumnCode, columnCode)
.eq(EventLlmConfig::getYnDefault, 1)
.eq(EventLlmConfig::getStatus, 1);
EventLlmConfig config = llmConfigService.getOne(queryWrapper);
return Result.OK(config);
}
/**
* 批量编辑事件的大模型配置信息 * 批量编辑事件的大模型配置信息
* *
* @param eventLlmConfigList 大模型配置信息 * @param eventLlmConfigList 大模型配置信息
...@@ -103,7 +122,7 @@ public class LLmConfigController { ...@@ -103,7 +122,7 @@ public class LLmConfigController {
if (Objects.equals(columnCode, AnalysisColumnEnum.ENTERPRISE_CASE.getCode())) { if (Objects.equals(columnCode, AnalysisColumnEnum.ENTERPRISE_CASE.getCode())) {
//企业案例,需要传入资讯且补联网查询 //企业案例,需要传入资讯且补联网查询
webSearch = false; webSearch = false;
List<SpecialInformation> informationList = analysisService.modelAnalysisInformationList(eventId, eventName); List<SpecialInformation> informationList = analysisService.modelAnalysisInformationList(eventId, eventName,versionId);
if (CollectionUtils.isNotEmpty(informationList)) { if (CollectionUtils.isNotEmpty(informationList)) {
content.append("\n参考资讯:").append(JSON.toJSONString(informationList)); content.append("\n参考资讯:").append(JSON.toJSONString(informationList));
} }
......
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_web_search_article
*/
@Data
@TableName("event_web_search_article")
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class EventWebSearchArticle implements Serializable {
/**
* 主键id
*/
@TableId(type = IdType.ASSIGN_ID)
private String id;
/**
* 事件分析版本id
*/
private String versionId;
/**
* 角标序号
*/
private String refer;
/**
* 标题
*/
private String title;
/**
* 内容摘要
*/
private String content;
/**
* 网站名称
*/
private String origin;
/**
* 发布时间
*/
private String publishDate;
/**
* 原文链接
*/
private String sourceAddress;
/**
* 网站图标
*/
private String icon;
/**
* 创建时间
*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date createTime;
}
package com.zzsn.event.mapper;
import com.zzsn.event.entity.EventWebSearchArticle;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @author lenovo
* @description 针对表【event_web_search_article(事件分析-网络搜索资讯表)】的数据库操作Mapper
* @createDate 2025-09-23 16:26:19
* @Entity com.zzsn.event.entity.EventWebSearchArticle
*/
public interface EventWebSearchArticleMapper extends BaseMapper<EventWebSearchArticle> {
}
...@@ -124,8 +124,9 @@ public interface AnalysisService { ...@@ -124,8 +124,9 @@ public interface AnalysisService {
* *
* @param eventId 事件id * @param eventId 事件id
* @param eventName 事件名称 * @param eventName 事件名称
* @param versionId 事件分析版本id
* @author lkg * @author lkg
* @date 2025/7/19 * @date 2025/7/19
*/ */
List<SpecialInformation> modelAnalysisInformationList(String eventId, String eventName); List<SpecialInformation> modelAnalysisInformationList(String eventId, String eventName,String versionId);
} }
package com.zzsn.event.service;
import com.zzsn.event.entity.EventWebSearchArticle;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* @author lenovo
* @description 针对表【event_web_search_article(事件分析-网络搜索资讯表)】的数据库操作Service
* @createDate 2025-09-23 16:26:19
*/
public interface EventWebSearchArticleService extends IService<EventWebSearchArticle> {
}
...@@ -33,6 +33,7 @@ import java.io.InputStream; ...@@ -33,6 +33,7 @@ import java.io.InputStream;
import java.net.URL; import java.net.URL;
import java.net.URLConnection; import java.net.URLConnection;
import java.util.*; import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -66,6 +67,8 @@ public class AnalysisServiceImpl implements AnalysisService { ...@@ -66,6 +67,8 @@ public class AnalysisServiceImpl implements AnalysisService {
private EventLlmConfigService eventLlmConfigService; private EventLlmConfigService eventLlmConfigService;
@Autowired @Autowired
private PythonUtil pythonUtil; private PythonUtil pythonUtil;
@Autowired
private EventWebSearchArticleService eventWebSearchArticleService;
/* /*
* 优先级:事件脉络 > 伪事件脉络 > 资讯 * 优先级:事件脉络 > 伪事件脉络 > 资讯
...@@ -473,7 +476,7 @@ public class AnalysisServiceImpl implements AnalysisService { ...@@ -473,7 +476,7 @@ public class AnalysisServiceImpl implements AnalysisService {
boolean webSearch = true; boolean webSearch = true;
if (Objects.equals(columnCode, AnalysisColumnEnum.ENTERPRISE_CASE.getCode())) { if (Objects.equals(columnCode, AnalysisColumnEnum.ENTERPRISE_CASE.getCode())) {
webSearch = false; webSearch = false;
List<SpecialInformation> informationList = modelAnalysisInformationList(eventId, eventName); List<SpecialInformation> informationList = modelAnalysisInformationList(eventId, eventName,versionId);
if (CollectionUtils.isNotEmpty(informationList)) { if (CollectionUtils.isNotEmpty(informationList)) {
realContent += "\n参考资讯:" + JSON.toJSONString(informationList); realContent += "\n参考资讯:" + JSON.toJSONString(informationList);
} }
...@@ -488,10 +491,10 @@ public class AnalysisServiceImpl implements AnalysisService { ...@@ -488,10 +491,10 @@ public class AnalysisServiceImpl implements AnalysisService {
} }
@Override @Override
public List<SpecialInformation> modelAnalysisInformationList(String eventId, String eventName) { public List<SpecialInformation> modelAnalysisInformationList(String eventId, String eventName,String versionId) {
List<SpecialInformation> informationList = enterpriseCaseDataList(eventId); List<SpecialInformation> informationList = enterpriseCaseDataList(eventId);
if (CollectionUtils.isEmpty(informationList)) { if (CollectionUtils.isEmpty(informationList)) {
informationList = webSearchCaseDataList(eventName); informationList = webSearchCaseDataList(eventName,versionId);
} }
return informationList; return informationList;
} }
...@@ -547,7 +550,7 @@ public class AnalysisServiceImpl implements AnalysisService { ...@@ -547,7 +550,7 @@ public class AnalysisServiceImpl implements AnalysisService {
* @author lkg * @author lkg
* @date 2025/9/19 * @date 2025/9/19
*/ */
private List<SpecialInformation> webSearchCaseDataList(String eventName) { private List<SpecialInformation> webSearchCaseDataList(String eventName,String versionId) {
List<SpecialInformation> infoList = new ArrayList<>(); List<SpecialInformation> infoList = new ArrayList<>();
Map<String,String> headers = new HashMap<>(); Map<String,String> headers = new HashMap<>();
headers.put("Authorization", "c5a53bd5f95a4e37a8997deb5d0c6031.orXyRRPNvZiqRaxF"); headers.put("Authorization", "c5a53bd5f95a4e37a8997deb5d0c6031.orXyRRPNvZiqRaxF");
...@@ -573,6 +576,23 @@ public class AnalysisServiceImpl implements AnalysisService { ...@@ -573,6 +576,23 @@ public class AnalysisServiceImpl implements AnalysisService {
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} }
CompletableFuture.runAsync(() ->{
if (CollectionUtils.isNotEmpty(infoList)) {
List<EventWebSearchArticle> dataList = new ArrayList<>();
for (SpecialInformation info : infoList) {
EventWebSearchArticle eventWebSearchArticle = new EventWebSearchArticle();
eventWebSearchArticle.setVersionId(versionId);
eventWebSearchArticle.setRefer(info.getId());
eventWebSearchArticle.setTitle(info.getTitle());
eventWebSearchArticle.setContent(info.getContent());
eventWebSearchArticle.setOrigin(info.getOrigin());
eventWebSearchArticle.setSourceAddress(info.getSourceAddress());
eventWebSearchArticle.setPublishDate(info.getPublishDate());
dataList.add(eventWebSearchArticle);
}
eventWebSearchArticleService.saveBatch(dataList);
}
});
return infoList; return infoList;
} }
......
package com.zzsn.event.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zzsn.event.entity.EventWebSearchArticle;
import com.zzsn.event.service.EventWebSearchArticleService;
import com.zzsn.event.mapper.EventWebSearchArticleMapper;
import org.springframework.stereotype.Service;
/**
* @author lenovo
* @description 针对表【event_web_search_article(事件分析-网络搜索资讯表)】的数据库操作Service实现
* @createDate 2025-09-23 16:26:19
*/
@Service
public class EventWebSearchArticleServiceImpl extends ServiceImpl<EventWebSearchArticleMapper, EventWebSearchArticle>
implements EventWebSearchArticleService{
}
...@@ -46,8 +46,9 @@ public class NetWorkEventTask { ...@@ -46,8 +46,9 @@ public class NetWorkEventTask {
"2. 按照指定格式返回符合经济领域条件的网络事件集合,且无需额外解释。\n" + "2. 按照指定格式返回符合经济领域条件的网络事件集合,且无需额外解释。\n" +
"3. 必须严格依据事件标题-【title】字段进行判断。\n" + "3. 必须严格依据事件标题-【title】字段进行判断。\n" +
"4. 禁止返回不符合经济领域条件的事件。\n" + "4. 禁止返回不符合经济领域条件的事件。\n" +
"5. 最少返回10条。\n" + "5. 禁止返回娱乐类的新闻事件。\n" +
"6. 严格按照以下json格式返回数据:\n" + "6. 最少返回10条。\n" +
"7. 严格按照以下json格式返回数据:\n" +
"[\n" + "[\n" +
" {\n" + " {\n" +
" \"title\": \"经济\"\n" + " \"title\": \"经济\"\n" +
......
...@@ -145,4 +145,27 @@ public class DocUtil { ...@@ -145,4 +145,27 @@ public class DocUtil {
// 将文档保存到输出流(PDF) // 将文档保存到输出流(PDF)
doc.save(outputStream, saveOptions); doc.save(outputStream, saveOptions);
} }
/**
* word转png 直接转
*
* @param wordInputStream 输入流
* @author lkg
* @date 2025/9/16
*/
public static byte[] convertWordToPng(InputStream wordInputStream) throws Exception {
getLicense();
ImageSaveOptions saveOptions = new ImageSaveOptions(SaveFormat.PNG);
if (org.apache.commons.lang3.SystemUtils.IS_OS_LINUX) {
FontSettings fontSettings = new FontSettings();
//true 表示递归查询子文件夹
fontSettings.setFontsFolder(fontsPath, true);
}
// 从输入流加载Word文档
Document doc = new Document(wordInputStream);
DataByteArrayOutputStream outputStream = new DataByteArrayOutputStream();
// 将文档保存到输出流(PNG)
doc.save(outputStream, saveOptions);
return outputStream.getData();
}
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论