提交 93eff245 作者: 925993793@qq.com

增加事件挖掘逻辑;研究中心门户逻辑修改

上级 26a6e325
...@@ -72,7 +72,7 @@ public class EventAnalysisController { ...@@ -72,7 +72,7 @@ public class EventAnalysisController {
private static final String prefix = "http://obs.ciglobal.cn/"; private static final String prefix = "http://obs.ciglobal.cn/";
/** /**
* 上传文件(事件报告跳转智能写作是调用) * 上传文件(事件报告跳转智能写作是调用)
* *
* @param file 文件 * @param file 文件
* @author lkg * @author lkg
......
...@@ -2,16 +2,23 @@ package com.zzsn.event.controller; ...@@ -2,16 +2,23 @@ package com.zzsn.event.controller;
import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
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.extension.plugins.pagination.Page;
import com.zzsn.clb.common.model.task.dto.titr.KeyWordsDTO; import com.zzsn.clb.common.model.task.dto.titr.KeyWordsDTO;
import com.zzsn.event.constant.Constants; import com.zzsn.event.constant.Constants;
import com.zzsn.event.constant.Result; import com.zzsn.event.constant.Result;
import com.zzsn.event.entity.CustomerDataPermissionMap;
import com.zzsn.event.entity.Event; import com.zzsn.event.entity.Event;
import com.zzsn.event.entity.KeyWords; import com.zzsn.event.entity.KeyWords;
import com.zzsn.event.entity.SysUserDataPermission;
import com.zzsn.event.es.EsService; import com.zzsn.event.es.EsService;
import com.zzsn.event.service.EventExtractService;
import com.zzsn.event.service.EventSimpleService; import com.zzsn.event.service.EventSimpleService;
import com.zzsn.event.service.IEventService; import com.zzsn.event.service.IEventService;
import com.zzsn.event.service.IKeyWordsService; import com.zzsn.event.service.IKeyWordsService;
import com.zzsn.event.util.EsOpUtil;
import com.zzsn.event.util.HttpUtil; import com.zzsn.event.util.HttpUtil;
import com.zzsn.event.util.ObjectUtil; import com.zzsn.event.util.ObjectUtil;
import com.zzsn.event.util.RedisUtil; import com.zzsn.event.util.RedisUtil;
...@@ -30,8 +37,12 @@ import org.springframework.kafka.core.KafkaTemplate; ...@@ -30,8 +37,12 @@ import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
/** /**
* 事件 * 事件
...@@ -48,6 +59,8 @@ public class EventDataController { ...@@ -48,6 +59,8 @@ public class EventDataController {
@Autowired @Autowired
private IEventService eventService; private IEventService eventService;
@Autowired @Autowired
private EventExtractService eventExtractService;
@Autowired
private EsService esService; private EsService esService;
@Autowired @Autowired
private EventSimpleService eventSimpleService; private EventSimpleService eventSimpleService;
...@@ -59,6 +72,8 @@ public class EventDataController { ...@@ -59,6 +72,8 @@ public class EventDataController {
private RedisUtil redisUtil; private RedisUtil redisUtil;
@Resource @Resource
private KafkaTemplate<String, String> kafkaTemplate; private KafkaTemplate<String, String> kafkaTemplate;
@Autowired
private EsOpUtil esOpUtil;
@Value("${translate.url:}") @Value("${translate.url:}")
private String TRANSLATE_URL; private String TRANSLATE_URL;
...@@ -66,8 +81,7 @@ public class EventDataController { ...@@ -66,8 +81,7 @@ public class EventDataController {
/** /**
* 事件分页列表-门户 * 事件分页列表-门户
* *
* @param category 栏目类型(1-全部;2-自动追踪;3-人工创建;4-我创建的) * @param category 栏目类型(1-全部;2-自动追踪;3-我的)
* @param eventId 事件id
* @param eventName 事件名称 * @param eventName 事件名称
* @param eventType 事件分类id * @param eventType 事件分类id
* @param labelField 搜索字段 * @param labelField 搜索字段
...@@ -81,8 +95,8 @@ public class EventDataController { ...@@ -81,8 +95,8 @@ public class EventDataController {
*/ */
@ApiOperation(value = "事件-分页列表查询", notes = "事件-分页列表查询") @ApiOperation(value = "事件-分页列表查询", notes = "事件-分页列表查询")
@GetMapping(value = "/pageList") @GetMapping(value = "/pageList")
public Result<?> pageList(@RequestParam(name = "category") Integer category, public Result<?> pageList(@RequestParam(defaultValue = "1476527644425682945") String projectId,
@RequestParam(name = "eventId", required = false) String eventId, @RequestParam(name = "category") Integer category,
@RequestParam(name = "eventName", required = false) String eventName, @RequestParam(name = "eventName", required = false) String eventName,
@RequestParam(name = "eventType", required = false) String eventType, @RequestParam(name = "eventType", required = false) String eventType,
@RequestParam(name = "labelField", required = false) String labelField, @RequestParam(name = "labelField", required = false) String labelField,
...@@ -91,12 +105,14 @@ public class EventDataController { ...@@ -91,12 +105,14 @@ public class EventDataController {
@RequestParam(name = "orderType", required = false) String orderType, @RequestParam(name = "orderType", required = false) String orderType,
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) { @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
String username = null; IPage<EventFrontVO> pageList = new Page<>();
if (category == 4) { if (category == 1){
UserVo currentUser = UserUtil.getLoginUser(); pageList = eventService.frontAllPageList(projectId, eventName, eventType, labelField, labelName, order, orderType, pageNo, pageSize);
username = currentUser.getUsername(); } else if (category == 2) {
pageList = eventExtractService.frontPageList(projectId,eventName,eventType,pageNo,pageSize);
} else if (category == 3) {
pageList = eventService.frontOwnerPageList(projectId, eventName, eventType, labelField, labelName, order, orderType, pageNo, pageSize);
} }
IPage<EventFrontVO> pageList = eventService.frontPageList(category, username, eventId, eventName, eventType, labelField, labelName, order, orderType, pageNo, pageSize);
return Result.OK(pageList); return Result.OK(pageList);
} }
...@@ -109,10 +125,13 @@ public class EventDataController { ...@@ -109,10 +125,13 @@ public class EventDataController {
*/ */
@PostMapping("/simpleSaveEvent") @PostMapping("/simpleSaveEvent")
public Result<?> addEvent(@RequestBody AddEventVO addEventVO) { public Result<?> addEvent(@RequestBody AddEventVO addEventVO) {
KeywordsVO keywordsVO = addEventVO.getKeywordsVO();
if (keywordsVO != null) {
Event event = eventSimpleService.simpleSave(addEventVO); Event event = eventSimpleService.simpleSave(addEventVO);
KeyWords keyWords = keyWordsService.saveKeyword(event, keywordsVO.getKeyword(), keywordsVO.getExclusionWord());
CompletableFuture.runAsync(()->{
iXxlJobInfoService.subjectInsert(event); iXxlJobInfoService.subjectInsert(event);
//关键词 //关键词
KeyWords keyWords = keyWordsService.saveKeyword(event, addEventVO.getKeywords(), addEventVO.getExclusionWord());
KeyWordsDTO redisKeywordDTO = new KeyWordsDTO(); KeyWordsDTO redisKeywordDTO = new KeyWordsDTO();
BeanUtils.copyProperties(keyWords, redisKeywordDTO); BeanUtils.copyProperties(keyWords, redisKeywordDTO);
redisKeywordDTO.setStartTime(event.getStartTime()); redisKeywordDTO.setStartTime(event.getStartTime());
...@@ -123,6 +142,67 @@ public class EventDataController { ...@@ -123,6 +142,67 @@ public class EventDataController {
iXxlJobInfoService.keyWordsInsert(redisKeywordDTO); iXxlJobInfoService.keyWordsInsert(redisKeywordDTO);
//为了立即响应,关键词新增时放入一个首次录入消息队列 //为了立即响应,关键词新增时放入一个首次录入消息队列
kafkaTemplate.send(Constants.KEY_WORDS_COLLECT_TOPIC, JSON.toJSONString(redisKeywordDTO)); kafkaTemplate.send(Constants.KEY_WORDS_COLLECT_TOPIC, JSON.toJSONString(redisKeywordDTO));
});
return Result.OK();
} else {
return Result.FAIL(500, "关键词不能为空");
}
}
/**
* 编辑事件(页面简化版)
*
* @param addEventVO 事件信息
* @author lkg
* @date 2024/7/22
*/
@PostMapping("/simpleUpdateEvent")
public Result<?> updateEvent(@RequestBody AddEventVO addEventVO) {
KeywordsVO keywordsVO = addEventVO.getKeywordsVO();
if (keywordsVO != null) {
eventSimpleService.updateMain(addEventVO);
keyWordsService.update(Wrappers.<KeyWords>lambdaUpdate().eq(KeyWords::getId, keywordsVO.getId())
.set(KeyWords::getKeyWord, keywordsVO.getKeyword())
.set(KeyWords::getExclusionWord, keywordsVO.getExclusionWord()));
CompletableFuture.runAsync(()->{
//关键词
KeyWordsDTO redisKeywordDTO = new KeyWordsDTO();
BeanUtils.copyProperties(keywordsVO, redisKeywordDTO);
redisKeywordDTO.setKeyWord(keywordsVO.getKeyword());
redisKeywordDTO.setStartTime(addEventVO.getStartTime());
redisKeywordDTO.setEndTime(addEventVO.getEndTime());
redisKeywordDTO.setSearchEngines(new ArrayList<>(Constants.DEFAULT_SEARCH_ENGINE.values()));
redisUtil.set(Constants.KEY_WORDS_TO_REDIS_PREFIX + keywordsVO.getWordsCode(), redisKeywordDTO);
//为了立即响应,关键词新增时放入一个首次录入消息队列
kafkaTemplate.send(Constants.KEY_WORDS_COLLECT_TOPIC, JSON.toJSONString(redisKeywordDTO));
});
return Result.OK();
} else {
return Result.FAIL(500, "关键词不能为空");
}
}
/**
* 通过id删除
*
* @param id 事件id
* @return
*/
@ApiOperation(value = "事件-通过id删除", notes = "事件-通过id删除")
@GetMapping(value = "/simpleDeleteEvent")
public Result<?> delete(@RequestParam(name = "id") String id) {
eventService.deleteMain(id);
CompletableFuture.runAsync(() -> {
EventVO eventVO = eventService.queryInfo(id);
iXxlJobInfoService.deleteByInfosourceCode(eventVO.getEventCode());
KeywordsVO keywordsVO = eventVO.getKeywordsVO();
if (keywordsVO != null) {
String wordsCode = keywordsVO.getWordsCode();
keyWordsService.remove(Wrappers.<KeyWords>lambdaQuery().eq(KeyWords::getWordsCode, wordsCode));
redisUtil.del(Constants.KEY_WORDS_TO_REDIS_PREFIX + wordsCode);
iXxlJobInfoService.deleteByInfosourceCode(wordsCode);
}
});
return Result.OK(); return Result.OK();
} }
...@@ -179,6 +259,34 @@ public class EventDataController { ...@@ -179,6 +259,34 @@ public class EventDataController {
} }
/** /**
* 批量删除资讯
*
* @param list 信息集合
* @author lkg
* @date 2024/9/14
*/
@PostMapping("/batchDelete")
public Result<?> batchDelete(@RequestBody List<JSONObject> list){
Map<String,String> updateFieldMap = new HashMap<>();
updateFieldMap.put("deleteFlag","1");
List<CompletableFuture<Void>> asyncList = new ArrayList<>();
for (JSONObject jsonObject : list) {
asyncList.add(CompletableFuture.runAsync(()->{
String id = jsonObject.getString("id");
String index = jsonObject.getString("index");
try {
esOpUtil.updateByid(index,id,updateFieldMap);
} catch (IOException e) {
e.printStackTrace();
}
}));
}
//等待全部执行完
CompletableFuture.allOf(asyncList.toArray(new CompletableFuture[0])).join();
return Result.OK();
}
/**
* 翻译 * 翻译
* *
* @param transferData 但翻译文本 * @param transferData 但翻译文本
......
package com.zzsn.event.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.zzsn.event.constant.Result;
import com.zzsn.event.service.EventExtractService;
import com.zzsn.event.vo.EventExtractVO;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
*
*
* @author lkg
* @date 2024/9/7
*/
@Api(tags = "事件审核管理")
@RestController
@RequestMapping("/examine")
public class EventExtractController {
@Autowired
private EventExtractService eventExtractService;
/**
* 伪事件信息分页列表
*
* @param eventName 事件名称
* @param eventType 时间分类
* @param startTime 开始时间
* @param endTime 结束时间
* @param pageNo 当前页
* @param pageSize 返回条数
* @author lkg
* @date 2024/9/9
*/
public Result<?> pageList(@RequestParam(name = "eventName", required = false) String eventName,
@RequestParam(name = "eventType", required = false) Integer eventType,
@RequestParam(name = "startTime", required = false) String startTime,
@RequestParam(name = "endTime", required = false) String endTime,
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize){
IPage<EventExtractVO> page = eventExtractService.pageList(eventName, eventType, startTime, endTime, pageNo, pageSize);
return Result.OK(page);
}
/**
* 删除
*
* @param id 主键id
* @author lkg
* @date 2024/9/9
*/
@GetMapping("/delete")
public Result<?> delete(@RequestParam String id){
eventExtractService.removeById(id);
return Result.OK();
}
}
package com.zzsn.event.controller.eventExtract;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.zzsn.event.constant.Result;
import com.zzsn.event.entity.EventExtract;
import com.zzsn.event.es.EsService;
import com.zzsn.event.service.EventExtractService;
import com.zzsn.event.vo.EventExtractVO;
import com.zzsn.event.vo.SubjectDataVo;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
import java.util.List;
/**
* @author lkg
* @date 2024/9/7
*/
@Api(tags = "挖掘的事件管理")
@RestController
@RequestMapping("/extract")
public class EventExtractController {
@Autowired
private EventExtractService eventExtractService;
@Autowired
private EsService esService;
/**
* 伪事件信息分页列表
*
* @param taskId 任务id
* @param searchWord 搜索词
* @param eventName 事件名称
* @param eventType 事件分类
* @param startTime 开始时间
* @param endTime 结束时间
* @param checkStatus 审核状态(2-不通过;1-通过;0-待审核)
* @param column 排序字段
* @param sortType 排序方式
* @param pageNo 偏移量
* @param pageSize 返回条数
* @author lkg
* @date 2024/9/9
*/
@GetMapping("/pageList")
public Result<?> pageList(@RequestParam(name = "taskId") String taskId,
@RequestParam(name = "searchWord", required = false) String searchWord,
@RequestParam(name = "eventName", required = false) String eventName,
@RequestParam(name = "startTime", required = false) String startTime,
@RequestParam(name = "endTime", required = false) String endTime,
@RequestParam(name = "eventType", required = false) String eventType,
@RequestParam(name = "checkStatus", required = false) Integer checkStatus,
@RequestParam(name = "column", required = false) String column,
@RequestParam(name = "sortType", required = false) String sortType,
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
IPage<EventExtractVO> page = eventExtractService.pageList(taskId, searchWord, eventName, startTime, endTime,
eventType, checkStatus, column, sortType, pageNo, pageSize);
return Result.OK(page);
}
/**
* 伪事件来源资讯详情
*
* @param relatedIds 来源资讯id,多个逗号隔开
* @author lkg
* @date 2024/9/13
*/
@GetMapping("/dataInfoList")
public Result<?> dataInfoList(@RequestParam String relatedIds) {
List<SubjectDataVo> subjectDataVos = esService.listByIds(Arrays.asList(relatedIds.split(",")));
return Result.OK(subjectDataVos);
}
/**
* 审核
*
* @param eventExtract 伪事件信息
* @author lkg
* @date 2024/9/13
*/
@PostMapping("/modify")
public Result<?> modify(@RequestBody EventExtract eventExtract) {
eventExtractService.updateById(eventExtract);
return Result.OK();
}
/**
* 删除
*
* @param id 主键id
* @author lkg
* @date 2024/9/9
*/
@GetMapping("/delete")
public Result<?> delete(@RequestParam String id) {
eventExtractService.update(Wrappers.<EventExtract>lambdaUpdate().set(EventExtract::getDeleteStatus, 1)
.eq(EventExtract::getId, id));
return Result.OK();
}
}
package com.zzsn.event.controller.eventExtract;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.zzsn.event.constant.Result;
import com.zzsn.event.entity.EventExtractTask;
import com.zzsn.event.service.EventExtractTaskService;
import com.zzsn.event.service.OtherDataService;
import com.zzsn.event.util.tree.Node;
import com.zzsn.event.util.user.UserUtil;
import com.zzsn.event.util.user.UserVo;
import com.zzsn.event.vo.EventExtractTaskVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.Date;
import java.util.List;
/**
* 事件抽取任务
*
* @author lkg
* @date 2024/9/13
*/
@RestController
@RequestMapping("/extract/task")
public class EventExtractTaskController {
@Autowired
private EventExtractTaskService eventExtractTaskService;
@Autowired
private OtherDataService otherDataService;
/**
* 事件抽取任务信息分页列表
*
* @param projectId 项目id
* @param searchWord 搜索词
* @param taskName 任务名称
* @param startTime 开始时间
* @param endTime 结束时间
* @param pageNo 当前页
* @param pageSize 返回条数
* @author lkg
* @date 2024/9/13
*/
@GetMapping("/pageList")
public Result<?> pageList(@RequestParam(required = false) String projectId,
@RequestParam(required = false) String searchWord,
@RequestParam(required = false) String taskName,
@RequestParam(required = false) String startTime,
@RequestParam(required = false) String endTime,
@RequestParam(defaultValue = "1") Integer pageNo,
@RequestParam(defaultValue = "10") Integer pageSize) {
IPage<EventExtractTaskVO> page = eventExtractTaskService.pageList(projectId, searchWord, taskName, startTime, endTime, pageNo, pageSize);
return Result.OK(page);
}
/**
* 查看详情
*
* @param id 任务id
* @author lkg
* @date 2024/9/14
*/
@GetMapping("/queryInfo")
public Result<?> queryInfo(@RequestParam String id){
EventExtractTask eventExtractTask = eventExtractTaskService.getById(id);
return Result.OK(eventExtractTask);
}
/**
* 新增/编辑
*
* @param eventExtractTask 事件抽取任务信息
* @author lkg
* @date 2024/9/13
*/
@PostMapping("/modify")
public Result<?> modify(@RequestBody EventExtractTask eventExtractTask) {
UserVo currentUser = UserUtil.getLoginUser();
eventExtractTask.setCreateBy(currentUser.getUsername());
eventExtractTask.setCreateTime(new Date());
eventExtractTaskService.saveOrUpdate(eventExtractTask);
return Result.OK();
}
/**
* 开启
*
* @param id 任务id
* @author lkg
* @date 2024/9/14
*/
@GetMapping("/open")
public Result<?> open(@RequestParam String id) {
eventExtractTaskService.update(Wrappers.<EventExtractTask>lambdaUpdate().set(EventExtractTask::getTaskStatus, 1)
.eq(EventExtractTask::getId, id));
return Result.OK();
}
/**
* 关闭
*
* @param id 任务id
* @author lkg
* @date 2024/9/14
*/
@GetMapping("/close")
public Result<?> close(@RequestParam String id) {
eventExtractTaskService.update(Wrappers.<EventExtractTask>lambdaUpdate().set(EventExtractTask::getTaskStatus, 0)
.eq(EventExtractTask::getId, id));
return Result.OK();
}
/**
* 删除
*
* @param id 任务id
* @author lkg
* @date 2024/9/13
*/
@GetMapping("/delete")
public Result<?> delete(@RequestParam String id) {
eventExtractTaskService.update(Wrappers.<EventExtractTask>lambdaUpdate().eq(EventExtractTask::getId, id)
.set(EventExtractTask::getDeleteStatus, 1));
return Result.OK();
}
/**
* 项目信息列表
*
* @author lkg
* @date 2024/9/14
*/
@GetMapping("/projectList")
public Result<?> projectList() {
List<Node> nodes = otherDataService.projectList();
return Result.OK(nodes);
}
/**
* 栏目信息列表
*
* @author lkg
* @date 2024/9/14
*/
@GetMapping("/columnList")
public Result<?> columnList() {
List<Node> nodes = otherDataService.columnList(null);
return Result.OK(nodes);
}
}
...@@ -106,7 +106,6 @@ public class Event { ...@@ -106,7 +106,6 @@ public class Event {
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date eventTime; private Date eventTime;
/**划分专题库*/ /**划分专题库*/
@Excel(name = "划分专题库", width = 15, dicCode = "Thematic_Library")
@ApiModelProperty(value = "划分专题库") @ApiModelProperty(value = "划分专题库")
private String library; private String library;
/**定时单位(1分;2小时;3日;4月)*/ /**定时单位(1分;2小时;3日;4月)*/
...@@ -146,7 +145,7 @@ public class Event { ...@@ -146,7 +145,7 @@ public class Event {
private String publishDate; private String publishDate;
/**排序号*/ /**排序号*/
private Integer sortOrder; private Integer sortOrder;
/**事件创建方式(1-用户创建;2-事件挖掘)*/ /**事件创建方式(1-用户直接创建;2-基于挖掘的事件创建)*/
private Integer category; private Integer category;
......
...@@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableId; ...@@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
...@@ -69,6 +68,38 @@ public class EventExtract implements Serializable { ...@@ -69,6 +68,38 @@ public class EventExtract implements Serializable {
@TableField("event_describe") @TableField("event_describe")
private String eventDescribe; private String eventDescribe;
/** /**
* 事件来源资讯id,多个逗号隔开
*/
@TableField("related_id")
private String relatedId;
/**
* 项目id
*/
@TableField("project_id")
private String projectId;
/**
* 任务id
*/
@TableField("task_id")
private String taskId;
/**
* 审核状态(2-不通过;1-通过;0-待审核)
*/
@TableField("check_status")
private Integer checkStatus;
/**
* 删除状态(1-删除;0-未删除)
*/
@TableField("delete_status")
private Integer deleteStatus;
/**
* 抽取时间
*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@TableField("extract_time")
private Date extractTime;
/**
* 创建人id * 创建人id
*/ */
@TableField("create_by") @TableField("create_by")
......
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.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
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_extract_task
*/
@Data
@TableName("event_extract_task")
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="event_extract_task对象", description="挖掘事件任务")
public class EventExtractTask implements Serializable {
/**
* 任务id
*/
@TableId(value = "id",type = IdType.ASSIGN_ID)
private String id;
/**
* 任务名称
*/
@TableField("task_name")
private String taskName;
/**
* 项目id
*/
@TableField("project_id")
private String projectId;
/**
* 栏目id,多个用逗号隔开
*/
@TableField("column_id")
private String columnId;
/**
* 数据状态(0:未审核 1:审核通过 3:暂定 4:删除)
*/
@TableField("data_status")
private Integer dataStatus;
/**
* 数据开始时间
*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@TableField("start_time")
private Date startTime;
/**
* 数据结束时间
*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@TableField("end_time")
private Date endTime;
/**
* 任务状态(1-开启;0-关闭)
*/
@TableField("task_status")
private Integer taskStatus;
/**
* 最近一次执行时间
*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@TableField("last_update_time")
private Date lastUpdateTime;
/**
* 删除状态(1-删除;0-未删除)
*/
@TableField("delete_status")
private Integer deleteStatus;
/**
* 创建时间
*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@TableField("create_time")
private Date createTime;
/**
* 创建人
*/
@TableField("create_by")
private String createBy;
}
...@@ -3,6 +3,7 @@ package com.zzsn.event.es; ...@@ -3,6 +3,7 @@ package com.zzsn.event.es;
import cn.hutool.core.map.MapUtil; import cn.hutool.core.map.MapUtil;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
...@@ -78,10 +79,6 @@ public class EsService { ...@@ -78,10 +79,6 @@ public class EsService {
private ISysBaseChannelService channelService; private ISysBaseChannelService channelService;
@Autowired @Autowired
private IClbChannelLabelMapService channelLabelMapService; private IClbChannelLabelMapService channelLabelMapService;
@Autowired
private ISysBaseRegionService regionService;
@Autowired
private LabelEntityService labelEntityService;
private final static String[] EVENT_ANALYSIS_ORIGIN = new String[]{"CRI国际在线", "world.people", "安徽国企网", "半月谈", "参考消息", "参考消息电子版", "参考消息网", "参考消息智库", "电池中国网", "法制网", "光明经济网", "光明网", "国际在线", "国家工业信息安全发展研究中心", "国企网", "国研网", "环球网", "价值中国网", "经济参考报", "经济日报", "科技日报", "理论网", "企业观察网", "求是网", "人民安全网", "人民报(Nhan Dan Báo)", "人民创投", "人民法治网", "人民交通网", "人民论坛网", "人民日报海外版", "人民数字联播网", "人民网", "人民雄安网", "人民资讯网", "手机央广网", "习近平系列讲话数据库", "新华报业网", "新华网", "央广网", "央视网", "央视网经济", "一带一路网", "正义网", "证券日报", "证券日报网", "中国安全生产网", "中国财经报", "中国发展门户网", "中国发展网", "中国改革报", "中国工商报", "中国工商报网", "中国工业报", "中国工业报社", "中国工业新闻网(中国工业报)电工频道", "中国经济导报", "中国经济导报网", "中国经济网", "中国经济网航空频道", "中国经济网理论评论频道", "中国经济新闻网", "中国经济信息网", "中国警察网", "中国军网", "中国农网", "中国青年报", "中国青年网", "中国台湾网", "中国网", "中国文明网", "中国西藏网", "中宏网", "中华工商网", "中华环境保护基金会", "中青在线", "中央人民广播电台", "观察者网", "澎湃新闻", "凤凰网", "每日经济新闻", "新京报"}; private final static String[] EVENT_ANALYSIS_ORIGIN = new String[]{"CRI国际在线", "world.people", "安徽国企网", "半月谈", "参考消息", "参考消息电子版", "参考消息网", "参考消息智库", "电池中国网", "法制网", "光明经济网", "光明网", "国际在线", "国家工业信息安全发展研究中心", "国企网", "国研网", "环球网", "价值中国网", "经济参考报", "经济日报", "科技日报", "理论网", "企业观察网", "求是网", "人民安全网", "人民报(Nhan Dan Báo)", "人民创投", "人民法治网", "人民交通网", "人民论坛网", "人民日报海外版", "人民数字联播网", "人民网", "人民雄安网", "人民资讯网", "手机央广网", "习近平系列讲话数据库", "新华报业网", "新华网", "央广网", "央视网", "央视网经济", "一带一路网", "正义网", "证券日报", "证券日报网", "中国安全生产网", "中国财经报", "中国发展门户网", "中国发展网", "中国改革报", "中国工商报", "中国工商报网", "中国工业报", "中国工业报社", "中国工业新闻网(中国工业报)电工频道", "中国经济导报", "中国经济导报网", "中国经济网", "中国经济网航空频道", "中国经济网理论评论频道", "中国经济新闻网", "中国经济信息网", "中国警察网", "中国军网", "中国农网", "中国青年报", "中国青年网", "中国台湾网", "中国网", "中国文明网", "中国西藏网", "中宏网", "中华工商网", "中华环境保护基金会", "中青在线", "中央人民广播电台", "观察者网", "澎湃新闻", "凤凰网", "每日经济新闻", "新京报"};
...@@ -1105,7 +1102,7 @@ public class EsService { ...@@ -1105,7 +1102,7 @@ public class EsService {
return dataList; return dataList;
} }
public List<EventDigDataVO> pageListOfColumn(String columnId,String startTime,Integer pageSize) { public List<EventDigDataVO> pageListOfColumn(String columnId,Integer checkStatus,String startTime,String endTime,Integer pageSize) {
List<EventDigDataVO> dataList = new ArrayList<>(); List<EventDigDataVO> dataList = new ArrayList<>();
SearchRequest searchRequest = new SearchRequest(Constants.SUBJECT_INDEX); SearchRequest searchRequest = new SearchRequest(Constants.SUBJECT_INDEX);
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
...@@ -1116,16 +1113,23 @@ public class EsService { ...@@ -1116,16 +1113,23 @@ public class EsService {
searchSourceBuilder.trackTotalHits(true); searchSourceBuilder.trackTotalHits(true);
//创建查询对象 //创建查询对象
BoolQueryBuilder boolQuery = QueryBuilders.boolQuery(); BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();
List<String> columnIds = new ArrayList<>(); List<String> columnIds = Arrays.asList(columnId.split(","));
columnIds.add(columnId);
BoolQueryBuilder columnQuery = getQueryByChanelIds(columnIds); BoolQueryBuilder columnQuery = getQueryByChanelIds(columnIds);
boolQuery.must(columnQuery); boolQuery.must(columnQuery);
if (StringUtils.isNotEmpty(startTime)) { if (StringUtils.isNotEmpty(startTime)) {
boolQuery.filter(QueryBuilders.rangeQuery("processDate").lt(EsDateUtil.esFieldDateFormat(startTime))); boolQuery.filter(QueryBuilders.rangeQuery("processDate").gt(EsDateUtil.esFieldDateFormat(startTime)));
}
if (StringUtils.isNotEmpty(endTime)) {
boolQuery.filter(QueryBuilders.rangeQuery("processDate").lte(EsDateUtil.esFieldDateFormat(endTime)));
}
if (checkStatus != null) {
if (checkStatus == 4) {
//删除状态查询
boolQuery.must(QueryBuilders.termQuery("deleteFlag", 1));
} else {
boolQuery.must(QueryBuilders.termQuery("checkStatus", checkStatus));
}
} }
boolQuery.must(QueryBuilders.termQuery("checkStatus", 1));
//删除状态查询,默认值是0,查询没有删除的
boolQuery.must(QueryBuilders.termQuery("deleteFlag", 0));
searchSourceBuilder.query(boolQuery); searchSourceBuilder.query(boolQuery);
searchRequest.source(searchSourceBuilder); searchRequest.source(searchSourceBuilder);
try { try {
...@@ -1149,11 +1153,10 @@ public class EsService { ...@@ -1149,11 +1153,10 @@ public class EsService {
return dataList; return dataList;
} }
public List<Map<String,Object>> listByIds(List<String> ids){ public List<SubjectDataVo> listByIds(List<String> ids){
List<Map<String,Object>> dataList = new ArrayList<>(); List<SubjectDataVo> dataList = new ArrayList<>();
SearchRequest searchRequest = new SearchRequest(Constants.SUBJECT_INDEX); SearchRequest searchRequest = new SearchRequest(Constants.SUBJECT_INDEX);
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.sort("publishDate",SortOrder.ASC);
//创建查询对象 //创建查询对象
BoolQueryBuilder boolQuery = QueryBuilders.boolQuery(); BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();
boolQuery.must(QueryBuilders.termsQuery("id",ids)); boolQuery.must(QueryBuilders.termsQuery("id",ids));
...@@ -1164,10 +1167,9 @@ public class EsService { ...@@ -1164,10 +1167,9 @@ public class EsService {
SearchHit[] hits = searchResponse.getHits().getHits(); SearchHit[] hits = searchResponse.getHits().getHits();
if (hits!=null && hits.length > 0) { if (hits!=null && hits.length > 0) {
for (SearchHit hit : hits) { for (SearchHit hit : hits) {
String index = hit.getIndex(); String sourceAsString = hit.getSourceAsString();
Map<String, Object> sourceAsMap = hit.getSourceAsMap(); SubjectDataVo subjectDataVo = JSONObject.parseObject(sourceAsString, SubjectDataVo.class);
sourceAsMap.put("index",index); dataList.add(subjectDataVo);
dataList.add(sourceAsMap);
} }
} }
} catch (Exception e) { } catch (Exception e) {
......
...@@ -7,11 +7,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; ...@@ -7,11 +7,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.*; import com.zzsn.event.entity.*;
import com.zzsn.event.es.EsService;
import com.zzsn.event.service.*; import com.zzsn.event.service.*;
import com.zzsn.event.util.DateUtil;
import com.zzsn.event.util.EsDateUtil;
import com.zzsn.event.util.EsOpUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.kafka.clients.consumer.ConsumerRecord; import org.apache.kafka.clients.consumer.ConsumerRecord;
...@@ -21,7 +17,6 @@ import org.springframework.stereotype.Component; ...@@ -21,7 +17,6 @@ import org.springframework.stereotype.Component;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* @author lkg * @author lkg
...@@ -41,16 +36,12 @@ public class KafkaConsumer { ...@@ -41,16 +36,12 @@ public class KafkaConsumer {
@Autowired @Autowired
private EventAnalysisReportService eventAnalysisReportService; private EventAnalysisReportService eventAnalysisReportService;
@Autowired @Autowired
private EsService esService;
@Autowired
private IEventCategoryService eventCategoryService; private IEventCategoryService eventCategoryService;
@Autowired
private EsOpUtil esOpUtil;
/** /**
* 获取-观点分析-分析结果数据,并入库 * 获取-观点分析-分析结果数据,并入库
* *
* @param record 接的kafka数据 * @param record 接的kafka数据
*/ */
@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) {
...@@ -82,7 +73,7 @@ public class KafkaConsumer { ...@@ -82,7 +73,7 @@ public class KafkaConsumer {
/** /**
* 获取-事件脉络-分析结果数据,并入库 * 获取-事件脉络-分析结果数据,并入库
* *
* @param record 接的kafka数据 * @param record 接的kafka数据
*/ */
@KafkaListener(topics = {Constants.EVENT_CONTEXT_RECEIVE_TOPIC}) @KafkaListener(topics = {Constants.EVENT_CONTEXT_RECEIVE_TOPIC})
public void eventContext(ConsumerRecord<String, String> record) { public void eventContext(ConsumerRecord<String, String> record) {
...@@ -106,7 +97,7 @@ public class KafkaConsumer { ...@@ -106,7 +97,7 @@ public class KafkaConsumer {
/** /**
* 获取-伪事件脉络-分析结果数据,并入库 * 获取-伪事件脉络-分析结果数据,并入库
* *
* @param record 接的kafka数据 * @param record 接的kafka数据
*/ */
@KafkaListener(topics = {Constants.FAKE_EVENT_CONTEXT_RECEIVE_TOPIC}) @KafkaListener(topics = {Constants.FAKE_EVENT_CONTEXT_RECEIVE_TOPIC})
public void eventContext_fake(ConsumerRecord<String, String> record) { public void eventContext_fake(ConsumerRecord<String, String> record) {
...@@ -138,7 +129,7 @@ public class KafkaConsumer { ...@@ -138,7 +129,7 @@ public class KafkaConsumer {
/** /**
* 获取事件的分析报告数据 * 获取事件的分析报告数据
* *
* @param record 接的kafka数据 * @param record 接的kafka数据
* @author lkg * @author lkg
* @date 2024/4/12 * @date 2024/4/12
*/ */
...@@ -154,11 +145,11 @@ public class KafkaConsumer { ...@@ -154,11 +145,11 @@ public class KafkaConsumer {
/** /**
* 获取事件挖掘的结果 * 获取事件挖掘的结果
* *
* @param record * @param record 接收的kafka数据
* @author lkg * @author lkg
* @date 2024/8/30 * @date 2024/8/30
*/ */
// @KafkaListener(topics = {Constants.EVENT_DIG_RECEIVE_TOPIC}) @KafkaListener(topics = {Constants.EVENT_DIG_RECEIVE_TOPIC})
public void eventDig(ConsumerRecord<String, String> record) { public void eventDig(ConsumerRecord<String, String> record) {
String value = record.value(); String value = record.value();
try { try {
...@@ -167,57 +158,47 @@ public class KafkaConsumer { ...@@ -167,57 +158,47 @@ public class KafkaConsumer {
if (resultData != null && resultData.size() > 0) { if (resultData != null && resultData.size() > 0) {
for (Object item : resultData) { for (Object item : resultData) {
JSONObject eventItem = JSONObject.parseObject(item.toString()); JSONObject eventItem = JSONObject.parseObject(item.toString());
String eventId = eventItem.get("event_id").toString(); String uniqueId = eventItem.get("event_id").toString();
String eventTitle = eventItem.get("event_title").toString(); String eventTitle = eventItem.get("event_title").toString();
String eventType = eventItem.get("event_type").toString(); String eventType = eventItem.get("event_type").toString();
String eventDesc = eventItem.get("event_name").toString(); String eventDesc = eventItem.get("event_name").toString();
JSONArray relatedIds = eventItem.getJSONArray("related_id"); String taskId = eventItem.get("task_id").toString();
List<String> idList = JSONArray.parseArray(relatedIds.toString(), String.class); String projectId = eventItem.get("project_id").toString();
List<Map<String, Object>> maps = esService.listByIds(idList); String relatedIds = eventItem.getJSONArray("related_id").toString();
String publishDate = maps.get(0).get("publishDate").toString(); EventExtract one = eventExtractService.getOne(Wrappers.<EventExtract>lambdaQuery().eq(EventExtract::getUniqueId,uniqueId));
//todo 保存抽取到的事件, 若抽到python判断一样的事件,如何处理 if (one == null) {
saveEventExtract(eventId, eventTitle, eventType, eventDesc, EsDateUtil.esFieldDateMapping(publishDate)); String eventId = saveEventExtract(uniqueId, eventTitle, eventType, eventDesc, relatedIds,taskId,projectId);
log.info("挖掘到事件,id-{},名称-{},并保存成功", eventId, eventTitle); log.info("挖掘到事件,id-{},名称-{},并保存成功", eventId, eventTitle);
} }
} }
}
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
//保存关联资讯
private void saveData(String eventId,List<String> idList){
List<Map<String, Object>> maps = esService.listByIds(idList);
for (Map<String, Object> map : maps) {
String index = map.get("index").toString();
String id = map.get("id").toString();
String subjectId = map.get("subjectId").toString();
String newId = id.replace(subjectId, eventId);
map.put("id", newId);
map.put("subjectId", eventId);
map.remove("index");
esOpUtil.docSaveByMap(index, newId, map);
}
}
private void saveEventExtract(String eventId, String eventTitle, String eventType, String eventDesc, String publishDate) { private String saveEventExtract(String eventId, String eventTitle, String eventType, String eventDesc,String relatedIds,String taskId,String projectId) {
EventExtract byId = eventExtractService.getById(eventId);
if (byId == null) {
EventExtract eventExtract = new EventExtract(); EventExtract eventExtract = new EventExtract();
eventExtract.setId(eventId); eventExtract.setUniqueId(eventId);
eventExtract.setEventName(eventTitle); eventExtract.setEventName(eventTitle);
if (StringUtils.isNotBlank(eventType)) {
String[] split = eventType.split("-"); String[] split = eventType.split("-");
LambdaQueryWrapper<EventCategory> queryWrapper = Wrappers.lambdaQuery(); LambdaQueryWrapper<EventCategory> queryWrapper = Wrappers.lambdaQuery();
queryWrapper.eq(EventCategory::getTypeName, split[split.length - 1]); queryWrapper.eq(EventCategory::getTypeName, split[split.length - 1]);
EventCategory eventCategory = eventCategoryService.getOne(queryWrapper); EventCategory eventCategory = eventCategoryService.getOne(queryWrapper);
if (eventCategory != null) {
eventExtract.setEventType(eventCategory.getId()); eventExtract.setEventType(eventCategory.getId());
}
}
eventExtract.setEventDescribe(eventDesc); eventExtract.setEventDescribe(eventDesc);
Date startTime = DateUtil.stringToDate(publishDate, "yyyy-MM-dd HH:mm:ss"); eventExtract.setRelatedId(relatedIds);
eventExtract.setStartTime(DateUtil.addDate(startTime,-30));
eventExtract.setCreateTime(new Date()); eventExtract.setCreateTime(new Date());
eventExtract.setCreateBy("event-dig"); eventExtract.setCreateBy("event-dig");
eventExtract.setTaskId(taskId);
eventExtract.setProjectId(projectId);
eventExtractService.save(eventExtract); eventExtractService.save(eventExtract);
} return eventExtract.getId();
} }
......
...@@ -3,6 +3,7 @@ package com.zzsn.event.mapper; ...@@ -3,6 +3,7 @@ package com.zzsn.event.mapper;
import com.zzsn.event.entity.EventExtract; import com.zzsn.event.entity.EventExtract;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zzsn.event.vo.EventExtractVO; import com.zzsn.event.vo.EventExtractVO;
import com.zzsn.event.vo.EventFrontVO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
...@@ -20,31 +21,68 @@ public interface EventExtractMapper extends BaseMapper<EventExtract> { ...@@ -20,31 +21,68 @@ public interface EventExtractMapper extends BaseMapper<EventExtract> {
/** /**
* 伪事件信息列表 * 伪事件信息列表
* *
* @param searchWord 搜索词
* @param eventName 事件名称 * @param eventName 事件名称
* @param eventType 时间分类 * @param eventType 时间分类
* @param startTime 开始时间 * @param startTime 开始时间
* @param endTime 结束时间 * @param endTime 结束时间
* @param checkStatus 审核状态(2-不通过;1-通过;0-待审核)
* @param offset 偏移量 * @param offset 偏移量
* @param pageSize 返回条数 * @param pageSize 返回条数
* @author lkg * @author lkg
* @date 2024/9/9 * @date 2024/9/9
*/ */
List<EventExtractVO> pageList(@Param("eventName") String eventName, @Param("eventType") Integer eventType, List<EventExtractVO> pageList(@Param("taskId") String taskId, @Param("searchWord") String searchWord,
@Param("eventName") String eventName,
@Param("startTime") String startTime, @Param("endTime") String endTime, @Param("startTime") String startTime, @Param("endTime") String endTime,
@Param("eventType") String eventType, @Param("checkStatus") Integer checkStatus,
@Param("column") String column, @Param("sortType") String sortType,
@Param("offset") Integer offset, @Param("pageSize") Integer pageSize); @Param("offset") Integer offset, @Param("pageSize") Integer pageSize);
/** /**
* 伪事件信息总数量 * 伪事件信息总数量
* *
* @param searchWord 搜索词
* @param eventName 事件名称 * @param eventName 事件名称
* @param eventType 时间分类 * @param eventType 时间分类
* @param startTime 开始时间 * @param startTime 开始时间
* @param endTime 结束时间 * @param endTime 结束时间
* @param checkStatus 审核状态(2-不通过;1-通过;0-待审核)
* @author lkg * @author lkg
* @date 2024/9/9 * @date 2024/9/9
*/ */
Long totalCount(@Param("eventName") String eventName, @Param("eventType") Integer eventType, Long totalCount(@Param("taskId") String taskId, @Param("searchWord") String searchWord,
@Param("startTime") String startTime, @Param("endTime") String endTime); @Param("eventName") String eventName,
@Param("startTime") String startTime, @Param("endTime") String endTime,
@Param("eventType") String eventType, @Param("checkStatus") Integer checkStatus);
/**
* 自动追踪事件列表-门户
*
* @param projectId 项目id
* @param eventName 事件名称
* @param eventTypes 事件分类id集合
* @param offset 偏移量
* @param pageSize 返回条数
* @author lkg
* @date 2024/9/9
*/
List<EventFrontVO> frontPageList(@Param("projectId") String projectId, @Param("eventName") String eventName,
@Param("eventTypes") List<String> eventTypes,
@Param("offset") Integer offset, @Param("pageSize") Integer pageSize);
/**
* 自动追踪事件总数量-门户
*
* @param projectId 项目id
* @param eventName 事件名称
* @param eventTypes 事件分类id集合
* @author lkg
* @date 2024/9/9
*/
Long frontTotalCount(@Param("projectId") String projectId, @Param("eventName") String eventName,
@Param("eventTypes") List<String> eventTypes);
} }
......
package com.zzsn.event.mapper;
import com.zzsn.event.entity.EventExtractTask;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zzsn.event.vo.EventExtractTaskVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @author lenovo
* @description 针对表【event_extract_task(事件抽取任务表)】的数据库操作Mapper
* @createDate 2024-09-13 11:31:47
* @Entity com.zzsn.event.entity.EventExtractTask
*/
@Mapper
public interface EventExtractTaskMapper extends BaseMapper<EventExtractTask> {
/**
* 事件抽取任务信息列表
*
* @param projectId 项目id
* @param searchWord 搜索词
* @param taskName 任务名称
* @param startTime 开始时间
* @param endTime 结束时间
* @param offset 偏移量
* @param pageSize 返回条数
* @author lkg
* @date 2024/9/13
*/
List<EventExtractTaskVO> pageList(@Param("projectId") String projectId, @Param("searchWord") String searchWord,
@Param("taskName") String taskName, @Param("startTime") String startTime, @Param("endTime") String endTime,
@Param("offset") Integer offset, @Param("pageSize") Integer pageSize);
/**
* 事件抽取任务信息总数量
*
* @param projectId 项目id
* @param searchWord 搜索词
* @param taskName 任务名称
* @param startTime 开始时间
* @param endTime 结束时间
* @author lkg
* @date 2024/9/13
*/
Long totalCount(@Param("projectId") String projectId, @Param("searchWord") String searchWord,
@Param("taskName") String taskName, @Param("startTime") String startTime, @Param("endTime") String endTime);
}
...@@ -45,6 +45,7 @@ public interface EventMapper extends BaseMapper<Event> { ...@@ -45,6 +45,7 @@ public interface EventMapper extends BaseMapper<Event> {
* @date 2024/4/8 * @date 2024/4/8
*/ */
List<EventManageVO> pageList(@Param("eventName") String eventName, @Param("eventType") Integer eventType, List<EventManageVO> pageList(@Param("eventName") String eventName, @Param("eventType") Integer eventType,
@Param("facePublic") Integer facePublic,@Param("publishStatus") Integer publishStatus,
@Param("startTime") String startTime, @Param("endTime") String endTime, @Param("startTime") String startTime, @Param("endTime") String endTime,
@Param("order") String order, @Param("orderType") String orderType, @Param("order") String order, @Param("orderType") String orderType,
@Param("offset") Integer offset, @Param("pageSize") Integer pageSize); @Param("offset") Integer offset, @Param("pageSize") Integer pageSize);
...@@ -60,15 +61,14 @@ public interface EventMapper extends BaseMapper<Event> { ...@@ -60,15 +61,14 @@ public interface EventMapper extends BaseMapper<Event> {
* @date 2024/4/8 * @date 2024/4/8
*/ */
Integer totalCount(@Param("eventName") String eventName, @Param("eventType") Integer eventType, Integer totalCount(@Param("eventName") String eventName, @Param("eventType") Integer eventType,
@Param("facePublic") Integer facePublic,@Param("publishStatus") Integer publishStatus,
@Param("startTime") String startTime, @Param("endTime") String endTime); @Param("startTime") String startTime, @Param("endTime") String endTime);
/** /**
* 分页列表-后台管理 * 分页列表-门户(全部)
* *
* @param projectId 项目id
* @param createBy 创建人 * @param createBy 创建人
* @param facePublic 是否公开(0-未公开;1-已公开)
* @param category 事件创建方式(1-用户创建;2-事件挖掘)
* @param eventId 事件id
* @param eventName 事件名称 * @param eventName 事件名称
* @param eventTypes 事件分类id集合 * @param eventTypes 事件分类id集合
* @param labelField 搜索字段 * @param labelField 搜索字段
...@@ -81,21 +81,58 @@ public interface EventMapper extends BaseMapper<Event> { ...@@ -81,21 +81,58 @@ public interface EventMapper extends BaseMapper<Event> {
* @author lkg * @author lkg
* @date 2024/4/8 * @date 2024/4/8
*/ */
List<EventFrontVO> frontPageList(@Param("createBy") String createBy, @Param("facePublic") Integer facePublic, List<EventFrontVO> frontAllPageList(@Param("projectId") String projectId, @Param("createBy") String createBy, @Param("eventName") String eventName,
@Param("category") Integer category,
@Param("eventId") String eventId, @Param("eventName") String eventName,
@Param("eventTypes") List<String> eventTypes, @Param("labelField") String labelField, @Param("eventTypes") List<String> eventTypes, @Param("labelField") String labelField,
@Param("labelName") String labelName, @Param("type") Integer type, @Param("labelName") String labelName, @Param("type") Integer type,
@Param("order") String order, @Param("orderType") String orderType, @Param("order") String order, @Param("orderType") String orderType,
@Param("offset") Integer offset, @Param("pageSize") Integer pageSize); @Param("offset") Integer offset, @Param("pageSize") Integer pageSize);
/** /**
* 总数量-后台管理 * 总数量-门户(全部)
* *
* @param projectId 项目id
* @param createBy 创建人
* @param eventName 事件名称
* @param eventTypes 事件分类id集合
* @param labelField 搜索字段
* @param labelName 搜索词
* @param type 类别(1-自定义标签;2-抽取标签)
* @author lkg
* @date 2024/4/8
*/
Integer frontAllCount(@Param("projectId") String projectId, @Param("createBy") String createBy, @Param("eventName") String eventName,
@Param("eventTypes") List<String> eventTypes, @Param("labelField") String labelField,
@Param("labelName") String labelName, @Param("type") Integer type);
/**
* 分页列表-门户(我的)
*
* @param projectId 项目id
* @param createBy 创建人
* @param eventName 事件名称
* @param eventTypes 事件分类id集合
* @param labelField 搜索字段
* @param labelName 搜索词
* @param type 类别(1-自定义标签;2-抽取标签)
* @param order 排序字段
* @param orderType 排序方式
* @param offset 偏移量
* @param pageSize 返回条数
* @author lkg
* @date 2024/4/8
*/
List<EventFrontVO> frontOwnerPageList(@Param("projectId") String projectId, @Param("createBy") String createBy, @Param("eventName") String eventName,
@Param("eventTypes") List<String> eventTypes, @Param("labelField") String labelField,
@Param("labelName") String labelName, @Param("type") Integer type,
@Param("order") String order, @Param("orderType") String orderType,
@Param("offset") Integer offset, @Param("pageSize") Integer pageSize);
/**
* 总数量-门户(我的)
*
* @param projectId 项目id
* @param createBy 创建人 * @param createBy 创建人
* @param facePublic 是否公开(0-未公开;1-已公开)
* @param category 事件创建方式(1-用户创建;2-事件挖掘)
* @param eventId 事件id
* @param eventName 事件名称 * @param eventName 事件名称
* @param eventTypes 事件分类id集合 * @param eventTypes 事件分类id集合
* @param labelField 搜索字段 * @param labelField 搜索字段
...@@ -104,12 +141,11 @@ public interface EventMapper extends BaseMapper<Event> { ...@@ -104,12 +141,11 @@ public interface EventMapper extends BaseMapper<Event> {
* @author lkg * @author lkg
* @date 2024/4/8 * @date 2024/4/8
*/ */
Integer frontTotalCount(@Param("createBy") String createBy, @Param("facePublic") Integer facePublic, Integer frontOwnerCount(@Param("projectId") String projectId, @Param("createBy") String createBy, @Param("eventName") String eventName,
@Param("category") Integer category,
@Param("eventId") String eventId, @Param("eventName") String eventName,
@Param("eventTypes") List<String> eventTypes, @Param("labelField") String labelField, @Param("eventTypes") List<String> eventTypes, @Param("labelField") String labelField,
@Param("labelName") String labelName, @Param("type") Integer type); @Param("labelName") String labelName, @Param("type") Integer type);
/** /**
* 分页列表(专题分类)-新平台管理 * 分页列表(专题分类)-新平台管理
* *
......
package com.zzsn.event.mapper;
import com.zzsn.event.util.tree.Node;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 其他数据
*
* @author lkg
* @date 2024/9/13
*/
@Mapper
public interface OtherDataMapper {
/**
* 栏目集合
*
* @param columnIds 栏目id集合
* @author lkg
* @date 2024/9/13
*/
List<Node> columnList(@Param("columnIds") List<String> columnIds);
/**
* 项目集合
*
* @author lkg
* @date 2024/9/13
*/
List<Node> projectList();
}
...@@ -17,10 +17,10 @@ ...@@ -17,10 +17,10 @@
</resultMap> </resultMap>
<select id="pageList" resultType="com.zzsn.event.vo.EventExtractVO"> <select id="pageList" resultType="com.zzsn.event.vo.EventExtractVO">
select t2.type_name,t1.id,t1.event_name,t1.event_type,t1.event_label,t1.create_time select t2.type_name,t1.id,t1.event_name,t1.event_type,t1.event_label,t1.extract_time,t1.check_status,t1.related_id
from event_extract t1 from event_extract t1
inner join event_category t2 on t1.event_type =t2.id inner join event_category t2 on t1.event_type =t2.id
where 1=1 where t1.task_id = #{taskId} and t1.delete_status = 0
<if test="eventName!=null and eventName != ''"> <if test="eventName!=null and eventName != ''">
and t1.event_name like CONCAT('%',#{eventName},'%') and t1.event_name like CONCAT('%',#{eventName},'%')
</if> </if>
...@@ -28,18 +28,34 @@ ...@@ -28,18 +28,34 @@
and t1.event_type = #{eventType} and t1.event_type = #{eventType}
</if> </if>
<if test="startTime!=null and startTime != ''"> <if test="startTime!=null and startTime != ''">
and t1.create_time >= #{startTime} and t1.extract_time >= #{startTime}
</if> </if>
<if test="endTime!=null and endTime != ''"> <if test="endTime!=null and endTime != ''">
and t1.create_time <![CDATA[ <= ]]> #{endTime} and t1.extract_time <![CDATA[ <= ]]> #{endTime}
</if> </if>
order by t1.create_time desc <if test="searchWord != null and searchWord != ''">
and CONCAT_WS(',',t1.event_name,t1.event_label,t2.type_name) like concat('%',concat(#{searchWord},'%'))
</if>
<if test="checkStatus != null">
and t1.check_status = #{checkStatus}
</if>
<choose>
<when test="column != null and column != ''">
order by ${column}
<if test="sortType != null and sortType != ''">
${sortType}
</if>
</when>
<otherwise>
order by t1.extract_time desc
</otherwise>
</choose>
limit #{offset}, #{pageSize} limit #{offset}, #{pageSize}
</select> </select>
<select id="totalCount" resultType="Long"> <select id="totalCount" resultType="Long">
select count(1) from event_extract t1 select count(1) from event_extract t1
inner join event_category t2 on t1.event_type =t2.id inner join event_category t2 on t1.event_type =t2.id
where 1=1 where t1.task_id = #{taskId} and t1.delete_status = 0
<if test="eventName!=null and eventName != ''"> <if test="eventName!=null and eventName != ''">
and t1.event_name like CONCAT('%',#{eventName},'%') and t1.event_name like CONCAT('%',#{eventName},'%')
</if> </if>
...@@ -47,10 +63,53 @@ ...@@ -47,10 +63,53 @@
and t1.event_type = #{eventType} and t1.event_type = #{eventType}
</if> </if>
<if test="startTime!=null and startTime != ''"> <if test="startTime!=null and startTime != ''">
and t1.create_time >= #{startTime} and t1.extract_time >= #{startTime}
</if> </if>
<if test="endTime!=null and endTime != ''"> <if test="endTime!=null and endTime != ''">
and t1.create_time <![CDATA[ <= ]]> #{endTime} and t1.extract_time <![CDATA[ <= ]]> #{endTime}
</if>
<if test="searchWord != null and searchWord != ''">
and CONCAT_WS(',',t1.event_name,t1.event_label,t2.type_name) like concat('%',concat(#{searchWord},'%'))
</if>
<if test="checkStatus != null">
and t1.check_status = #{checkStatus}
</if>
</select>
<select id="frontPageList" resultType="com.zzsn.event.vo.EventFrontVO">
select t2.type_name,t1.id,t1.event_name,t1.extract_time as publishDate
from event_extract t1
inner join event_category t2 on t1.event_type =t2.id
where t1.check_status = 1
<if test="projectId!=null and projectId != ''">
and t1.project_id = #{projectId}
</if>
<if test="eventName!=null and eventName != ''">
and t1.event_name like CONCAT('%',#{eventName},'%')
</if>
<if test="eventTypes != null and eventTypes.size() > 0">
and t1.event_type in
<foreach collection="eventTypes" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
order by t1.extract_time desc
limit #{offset}, #{pageSize}
</select>
<select id="frontTotalCount" resultType="Long">
select count(1) from event_extract t1
where t1.check_status = 1
<if test="projectId!=null and projectId != ''">
and t1.project_id = #{projectId}
</if>
<if test="eventName!=null and eventName != ''">
and t1.event_name like CONCAT('%',#{eventName},'%')
</if>
<if test="eventTypes != null and eventTypes.size() > 0">
and t1.event_type in
<foreach collection="eventTypes" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if> </if>
</select> </select>
</mapper> </mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zzsn.event.mapper.EventExtractTaskMapper">
<resultMap id="BaseResultMap" type="com.zzsn.event.entity.EventExtractTask">
<id property="id" column="id" jdbcType="VARCHAR"/>
<result property="taskName" column="task_name" jdbcType="VARCHAR"/>
<result property="projectId" column="project_id" jdbcType="VARCHAR"/>
<result property="columnId" column="column_id" jdbcType="VARCHAR"/>
<result property="dataStatus" column="data_status" jdbcType="INTEGER"/>
<result property="startTime" column="start_time" jdbcType="TIMESTAMP"/>
<result property="endTime" column="end_time" jdbcType="TIMESTAMP"/>
<result property="taskStatus" column="task_status" jdbcType="INTEGER"/>
<result property="lastUpdateTime" column="last_update_time" jdbcType="TIMESTAMP"/>
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
<result property="createBy" column="create_by" jdbcType="VARCHAR"/>
</resultMap>
<select id="pageList" resultType="com.zzsn.event.vo.EventExtractTaskVO">
select task.id,task.task_name,task.column_id,task.task_status,task.last_update_time,task.create_time,p.project_name
from event_extract_task task inner join project p on task.project_id = p.id
where task.delete_status = 0
<if test="projectId != null and projectId != ''">
and task.project_id = #{projectId}
</if>
<if test="taskName != null and taskName != ''">
and task.task_name like concat('%',concat(#{taskName},'%'))
</if>
<if test="startTime != null and startTime != ''">
and task.create_time >= #{startTime}
</if>
<if test="endTime != null and endTime != ''">
and task.create_time <![CDATA[ <= ]]> #{endTime}
</if>
<if test="searchWord != null and searchWord != ''">
and CONCAT_WS(',',task.task_name,p.project_name) like concat('%',concat(#{searchWord},'%'))
</if>
order by task.create_time desc
limit #{offset},#{pageSize}
</select>
<select id="totalCount" resultType="Long">
select count(1) from event_extract_task task inner join project p on task.project_id = p.id
where task.delete_status = 0
<if test="projectId != null and projectId != ''">
and task.project_id = #{projectId}
</if>
<if test="taskName != null and taskName != ''">
and task.task_name like concat('%',concat(#{taskName},'%'))
</if>
<if test="startTime != null and startTime != ''">
and task.create_time >= #{startTime}
</if>
<if test="endTime != null and endTime != ''">
and task.create_time <![CDATA[ <= ]]> #{endTime}
</if>
<if test="searchWord != null and searchWord != ''">
and CONCAT_WS(',',task.task_name,p.project_name) like concat('%',concat(#{searchWord},'%'))
</if>
</select>
</mapper>
...@@ -48,7 +48,7 @@ ...@@ -48,7 +48,7 @@
<select id="pageList" resultType="com.zzsn.event.vo.EventManageVO"> <select id="pageList" resultType="com.zzsn.event.vo.EventManageVO">
select t2.type_name,t1.id,t1.event_icon,t1.event_name,t1.event_label,t1.status, select t2.type_name,t1.id,t1.event_icon,t1.event_name,t1.event_label,t1.status,
t1.face_public,t1.publish_status,t1.create_time,t1.publish_date,t1.start_time,t1.end_time t1.face_public,t1.publish_status,t1.create_time,t1.publish_date,t1.start_time,t1.end_time,t1.create_by
from event t1 from event t1
inner join event_category t2 on t1.event_type =t2.id inner join event_category t2 on t1.event_type =t2.id
where 1=1 where 1=1
...@@ -58,6 +58,12 @@ ...@@ -58,6 +58,12 @@
<if test="eventType!=null and eventType != ''"> <if test="eventType!=null and eventType != ''">
and t1.event_type = #{eventType} and t1.event_type = #{eventType}
</if> </if>
<if test="facePublic!=null">
and t1.face_public = #{facePublic}
</if>
<if test="publishStatus!=null">
and t1.publish_status = #{publishStatus}
</if>
<if test="startTime!=null and startTime != ''"> <if test="startTime!=null and startTime != ''">
and t1.create_time >= #{startTime} and t1.create_time >= #{startTime}
</if> </if>
...@@ -82,6 +88,12 @@ ...@@ -82,6 +88,12 @@
<if test="eventType!=null and eventType != ''"> <if test="eventType!=null and eventType != ''">
and t1.event_type = #{eventType} and t1.event_type = #{eventType}
</if> </if>
<if test="facePublic!=null">
and t1.face_public = #{facePublic}
</if>
<if test="publishStatus!=null">
and t1.publish_status = #{publishStatus}
</if>
<if test="startTime!=null and startTime != ''"> <if test="startTime!=null and startTime != ''">
and t1.create_time >= #{startTime} and t1.create_time >= #{startTime}
</if> </if>
...@@ -90,27 +102,120 @@ ...@@ -90,27 +102,120 @@
</if> </if>
</select> </select>
<select id="frontPageList" resultType="com.zzsn.event.vo.EventFrontVO"> <select id="frontAllPageList" resultType="com.zzsn.event.vo.EventFrontVO">
select distinct a.* from (select
t1.id,t1.event_name,t1.event_icon,t1.start_time,t1.end_time,t1.publish_date,t1.event_describe,t1.event_label,
t1.total_hot,t1.create_by,t1.category,
t2.type_name,
t3.extract_industry_tag,t3.extract_company_tag,t3.extract_person_tag,t3.extract_sentiment_tag,
t3.extract_keywords_tag,t3.extract_time_tag,t3.extract_location_tag
from event t1 inner join event_category t2 on t1.event_type =t2.id
left join event_tag t3 on t1.id=t3.event_id
where t1.publish_status = 1 and t1.face_public = 1 and t1.category = 1
union
select select
t1.id,t1.event_name,t1.event_icon,t1.start_time,t1.end_time,t1.publish_date,t1.event_describe,t1.event_label,t1.total_hot, t1.id,t1.event_name,t1.event_icon,t1.start_time,t1.end_time,t1.publish_date,t1.event_describe,t1.event_label,
t1.total_hot,t1.create_by,t1.category,
t2.type_name, t2.type_name,
t3.extract_industry_tag,t3.extract_company_tag,t3.extract_person_tag,t3.extract_sentiment_tag, t3.extract_industry_tag,t3.extract_company_tag,t3.extract_person_tag,t3.extract_sentiment_tag,
t3.extract_keywords_tag,t3.extract_time_tag,t3.extract_location_tag t3.extract_keywords_tag,t3.extract_time_tag,t3.extract_location_tag
from event t1 inner join event_category t2 on t1.event_type =t2.id from event t1 inner join event_category t2 on t1.event_type =t2.id
left join event_tag t3 on t1.id=t3.event_id left join event_tag t3 on t1.id=t3.event_id
where t1.publish_status = 1 where t1.publish_status = 1 and t1.create_by = #{createBy}
<if test="createBy!=null and createBy != ''"> ) a inner join project_subject_map m on a.id = m.subject_id
and t1.create_by = #{createBy} where m.project_id = #{projectId}
<if test="eventName!=null and eventName != ''">
and a.event_name like CONCAT('%',#{eventName},'%')
</if> </if>
<if test="facePublic != null"> <if test="eventTypes != null and eventTypes.size() > 0">
and t1.face_public = #{facePublic} and a.event_type in
<foreach collection="eventTypes" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="labelName != null and labelName !=''">
<if test="labelField != null and labelField != ''">
<choose>
<when test="type == 1">
and a.event_label like concat('%',#{labelName},'%')
</when>
<otherwise>
and a.${labelField} like concat('%',#{labelName},'%')
</otherwise>
</choose>
</if>
</if>
<choose>
<when test="order != null and order != ''">
order by a.${order}
<if test="orderType != null and orderType != ''">
${orderType}
</if>
</when>
<otherwise>
order by a.publish_date desc
</otherwise>
</choose>
limit #{offset}, #{pageSize}
</select>
<select id="frontAllCount" resultType="java.lang.Integer">
select count(1) from (
select distinct a.*,m.project_id from (select
t1.id,t1.event_name,t1.event_icon,t1.start_time,t1.end_time,t1.publish_date,t1.event_describe,t1.event_label,
t1.total_hot,t1.create_by,t1.category,
t2.type_name,
t3.extract_industry_tag,t3.extract_company_tag,t3.extract_person_tag,t3.extract_sentiment_tag,
t3.extract_keywords_tag,t3.extract_time_tag,t3.extract_location_tag
from event t1 inner join event_category t2 on t1.event_type =t2.id
left join event_tag t3 on t1.id=t3.event_id
where t1.publish_status = 1 and t1.face_public = 1 and t1.category = 1
union
select
t1.id,t1.event_name,t1.event_icon,t1.start_time,t1.end_time,t1.publish_date,t1.event_describe,t1.event_label,
t1.total_hot,t1.create_by,t1.category,
t2.type_name,
t3.extract_industry_tag,t3.extract_company_tag,t3.extract_person_tag,t3.extract_sentiment_tag,
t3.extract_keywords_tag,t3.extract_time_tag,t3.extract_location_tag
from event t1 inner join event_category t2 on t1.event_type =t2.id
left join event_tag t3 on t1.id=t3.event_id
where t1.publish_status = 1 and t1.create_by = #{createBy}) a
inner join project_subject_map m on a.id = m.subject_id where m.project_id = #{projectId}
) b
where b.project_id = #{projectId}
<if test="eventName!=null and eventName != ''">
and b.event_name like CONCAT('%',#{eventName},'%')
</if>
<if test="eventTypes != null and eventTypes.size() > 0">
and b.event_type in
<foreach collection="eventTypes" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if> </if>
<if test="category != null"> <if test="labelName != null and labelName !=''">
and t1.category = #{category} <if test="labelField != null and labelField != ''">
<choose>
<when test="type == 1">
and b.event_label like concat('%',#{labelName},'%')
</when>
<otherwise>
and b.${labelField} like concat('%',#{labelName},'%')
</otherwise>
</choose>
</if> </if>
<if test="eventId!=null and eventId != ''">
and t1.id = #{eventId}
</if> </if>
</select>
<select id="frontOwnerPageList" resultType="com.zzsn.event.vo.EventFrontVO">
select
t1.id,t1.event_name,t1.event_icon,t1.start_time,t1.end_time,t1.publish_date,t1.event_describe,t1.event_label,
t1.total_hot,t1.create_by,t1.category,
t2.type_name,
t3.extract_industry_tag,t3.extract_company_tag,t3.extract_person_tag,t3.extract_sentiment_tag,
t3.extract_keywords_tag,t3.extract_time_tag,t3.extract_location_tag
from event t1 inner join event_category t2 on t1.event_type =t2.id
inner join project_subject_map m on t1.id = m.subject_id
left join event_tag t3 on t1.id=t3.event_id
where t1.publish_status = 1 and t1.create_by = #{createBy} and m.project_id = #{projectId}
<if test="eventName!=null and eventName != ''"> <if test="eventName!=null and eventName != ''">
and t1.event_name like CONCAT('%',#{eventName},'%') and t1.event_name like CONCAT('%',#{eventName},'%')
</if> </if>
...@@ -145,23 +250,12 @@ ...@@ -145,23 +250,12 @@
</choose> </choose>
limit #{offset}, #{pageSize} limit #{offset}, #{pageSize}
</select> </select>
<select id="frontTotalCount" resultType="java.lang.Integer"> <select id="frontOwnerCount" resultType="java.lang.Integer">
select count(1) from event t1 select count(1)
inner join event_category t2 on t1.event_type =t2.id from event t1 inner join event_category t2 on t1.event_type =t2.id
inner join project_subject_map m on t1.id = m.subject_id
left join event_tag t3 on t1.id=t3.event_id left join event_tag t3 on t1.id=t3.event_id
where t1.publish_status = 1 where t1.publish_status = 1 and t1.create_by = #{createBy} and m.project_id = #{projectId}
<if test="createBy!=null and createBy != ''">
and t1.create_by = #{createBy}
</if>
<if test="facePublic != null">
and t1.face_public = #{facePublic}
</if>
<if test="category != null">
and t1.category = #{category}
</if>
<if test="eventId!=null and eventId != ''">
and t1.id = #{eventId}
</if>
<if test="eventName!=null and eventName != ''"> <if test="eventName!=null and eventName != ''">
and t1.event_name like CONCAT('%',#{eventName},'%') and t1.event_name like CONCAT('%',#{eventName},'%')
</if> </if>
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zzsn.event.mapper.OtherDataMapper">
<select id="columnList" resultType="com.zzsn.event.util.tree.Node">
select id,channel_name as name from sys_base_channel where id not in(0,1)
<if test="columnIds != null and columnIds.size() > 0">
and id in
<foreach collection="columnIds" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
order by create_time
</select>
<select id="projectList" resultType="com.zzsn.event.util.tree.Node">
select id,project_name as name from project where is_delete = 0 order by create_time
</select>
</mapper>
...@@ -28,4 +28,13 @@ public interface EventAnalysisReportService extends IService<EventAnalysisReport ...@@ -28,4 +28,13 @@ public interface EventAnalysisReportService extends IService<EventAnalysisReport
* @date 2024/4/12 * @date 2024/4/12
*/ */
void edit(EventAnalysisReport report); void edit(EventAnalysisReport report);
/**
* 删除事件的分析报告
*
* @param eventId 事件id
* @author lkg
* @date 2024/9/14
*/
void delete(String eventId);
} }
...@@ -4,26 +4,44 @@ import com.baomidou.mybatisplus.core.metadata.IPage; ...@@ -4,26 +4,44 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.zzsn.event.entity.EventExtract; import com.zzsn.event.entity.EventExtract;
import com.zzsn.event.vo.EventExtractVO; import com.zzsn.event.vo.EventExtractVO;
import com.zzsn.event.vo.EventFrontVO;
/** /**
* @author lenovo * @author lenovo
* @description 针对表【event_extract(事件)】的数据库操作Service * @description 针对表【event_extract(事件)】的数据库操作Service
* @createDate 2024-09-07 18:00:28 * @createDate 2024-09-07 18:00:28
*/ */
public interface EventExtractService extends IService<EventExtract> { public interface EventExtractService extends IService<EventExtract> {
/** /**
* 伪事件信息分页列表 * 伪事件信息分页列表
* *
* @param taskId 任务id
* @param searchWord 搜索词
* @param eventName 事件名称 * @param eventName 事件名称
* @param eventType 时间分类 * @param eventType 时间分类
* @param startTime 开始时间 * @param startTime 开始时间
* @param endTime 结束时间 * @param endTime 结束时间
* @param pageNo 当前页 * @param checkStatus 审核状态(2-不通过;1-通过;0-待审核)
* @param column 排序字段
* @param sortType 排序方式
* @param pageNo 偏移量
* @param pageSize 返回条数
* @author lkg
* @date 2024/9/9
*/
IPage<EventExtractVO> pageList(String taskId, String searchWord, String eventName, String startTime, String endTime,
String eventType, Integer checkStatus, String column, String sortType, Integer pageNo, Integer pageSize);
/**
* 自动追踪事件分页列表-门户
*
* @param projectId 项目id
* @param eventName 事件名称
* @param eventType 时间分类
* @param pageNo 偏移量
* @param pageSize 返回条数 * @param pageSize 返回条数
* @author lkg * @author lkg
* @date 2024/9/9 * @date 2024/9/9
*/ */
IPage<EventExtractVO> pageList(String eventName, Integer eventType, String startTime, String endTime, IPage<EventFrontVO> frontPageList(String projectId, String eventName, String eventType, Integer pageNo, Integer pageSize);
Integer pageNo, Integer pageSize);
} }
package com.zzsn.event.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.zzsn.event.entity.EventExtractTask;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zzsn.event.vo.EventExtractTaskVO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @author lenovo
* @description 针对表【event_extract_task(事件抽取任务表)】的数据库操作Service
* @createDate 2024-09-13 11:31:47
*/
public interface EventExtractTaskService extends IService<EventExtractTask> {
/**
* 事件抽取任务信息分页列表
*
* @param projectId 项目id
* @param searchWord 搜索词
* @param taskName 任务名称
* @param startTime 开始时间
* @param endTime 结束时间
* @param pageNo 当前页
* @param pageSize 返回条数
* @author lkg
* @date 2024/9/13
*/
IPage<EventExtractTaskVO> pageList(String projectId, String searchWord, String taskName, String startTime, String endTime,
Integer pageNo, Integer pageSize);
}
...@@ -37,8 +37,6 @@ public class EventSimpleService { ...@@ -37,8 +37,6 @@ public class EventSimpleService {
private ISubjectTypeMapService subjectTypeMapService; private ISubjectTypeMapService subjectTypeMapService;
@Autowired @Autowired
private IProjectSubjectMapService projectSubjectMapService; private IProjectSubjectMapService projectSubjectMapService;
@Autowired
private ISubjectSearchEnginesMapService subjectSearchEnginesMapService;
@Autowired @Autowired
...@@ -47,7 +45,6 @@ public class EventSimpleService { ...@@ -47,7 +45,6 @@ public class EventSimpleService {
private EventRegionMapService eventRegionMapService; private EventRegionMapService eventRegionMapService;
//默认搜索引擎 //默认搜索引擎
private final static String[] SEARCH_ENGINES = new String[]{"1539145903551361026","1539146006513135617","1539146115049140225"};
/** /**
* 新增事件(页面简化版) * 新增事件(页面简化版)
...@@ -96,6 +93,18 @@ public class EventSimpleService { ...@@ -96,6 +93,18 @@ public class EventSimpleService {
return event; return event;
} }
public void updateMain(AddEventVO addEventVO){
String eventId = addEventVO.getId();
Event event = new Event();
BeanUtils.copyProperties(addEventVO, event);
eventService.updateById(event);
CompletableFuture.runAsync(()->{
//地域关系绑定
List<RegionVO> regionList = addEventVO.getRegionList();
addRegionMap(eventId, regionList);
});
}
private void saveMapMain(String eventId) { private void saveMapMain(String eventId) {
//专题和分类关系 //专题和分类关系
SubjectTypeMap subjectTypeMap = new SubjectTypeMap(); SubjectTypeMap subjectTypeMap = new SubjectTypeMap();
......
...@@ -44,15 +44,13 @@ public interface IEventService extends IService<Event> { ...@@ -44,15 +44,13 @@ public interface IEventService extends IService<Event> {
* @author lkg * @author lkg
* @date 2024/4/8 * @date 2024/4/8
*/ */
IPage<EventManageVO> pageList(String eventName, Integer eventType, String startTime, String endTime, IPage<EventManageVO> pageList(String eventName, Integer eventType,Integer facePublic,Integer publishStatus, String startTime, String endTime,
String order, String orderType, Integer pageNo, Integer pageSize); String order, String orderType, Integer pageNo, Integer pageSize);
/** /**
* 分页列表-后台管理 * 分页列表-门户(全部)
* *
* @param columnType 栏目类型(1-全部;2-自动追踪;3-人工创建;4-我创建的) * @param projectId 项目id
* @param username 登录用户的账号
* @param eventId 事件id
* @param eventName 事件名称 * @param eventName 事件名称
* @param eventType 事件分类id * @param eventType 事件分类id
* @param labelField 搜索字段 * @param labelField 搜索字段
...@@ -64,7 +62,25 @@ public interface IEventService extends IService<Event> { ...@@ -64,7 +62,25 @@ public interface IEventService extends IService<Event> {
* @author lkg * @author lkg
* @date 2024/4/8 * @date 2024/4/8
*/ */
IPage<EventFrontVO> frontPageList(Integer columnType, String username, String eventId, String eventName, String eventType, String labelField, String labelName, String order, String orderType, Integer pageNo, Integer pageSize); IPage<EventFrontVO> frontAllPageList(String projectId, String eventName, String eventType, String labelField, String labelName, String order, String orderType, Integer pageNo, Integer pageSize);
/**
* 分页列表-门户(我的)
*
* @param projectId 项目id
* @param eventName 事件名称
* @param eventType 事件分类id
* @param labelField 搜索字段
* @param labelName 搜索词
* @param order 排序字段
* @param orderType 排序方式
* @param pageNo 偏移量
* @param pageSize 返回条数
* @author lkg
* @date 2024/4/8
*/
IPage<EventFrontVO> frontOwnerPageList(String projectId, String eventName, String eventType, String labelField, String labelName, String order, String orderType, Integer pageNo, Integer pageSize);
/** /**
* 分页列表(专题类别)-新平台管理 * 分页列表(专题类别)-新平台管理
......
package com.zzsn.event.service;
import com.zzsn.event.util.tree.Node;
import java.util.List;
/**
* 其他数据
*
* @author lkg
* @date 2024/9/13
*/
public interface OtherDataService {
/**
* 栏目集合
*
* @author lkg
* @date 2024/9/13
*/
List<Node> columnList(List<String> columnIds);
/**
* 项目集合
*
* @author lkg
* @date 2024/9/13
*/
List<Node> projectList();
}
...@@ -67,6 +67,16 @@ public class EventAnalysisReportServiceImpl extends ServiceImpl<EventAnalysisRep ...@@ -67,6 +67,16 @@ public class EventAnalysisReportServiceImpl extends ServiceImpl<EventAnalysisRep
e.printStackTrace(); e.printStackTrace();
} }
} }
@Override
public void delete(String eventId) {
EventAnalysisReport one = this.getOne(Wrappers.<EventAnalysisReport>lambdaQuery().eq(EventAnalysisReport::getEventId, eventId));
if (one != null) {
String path = one.getFilePath();
obsUtil.delFile(path);
this.removeById(one.getId());
}
}
} }
......
...@@ -6,26 +6,53 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; ...@@ -6,26 +6,53 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zzsn.event.entity.EventExtract; import com.zzsn.event.entity.EventExtract;
import com.zzsn.event.service.EventExtractService; import com.zzsn.event.service.EventExtractService;
import com.zzsn.event.mapper.EventExtractMapper; import com.zzsn.event.mapper.EventExtractMapper;
import com.zzsn.event.service.IEventCategoryService;
import com.zzsn.event.util.tree.Node;
import com.zzsn.event.util.tree.TreeUtil;
import com.zzsn.event.vo.EventExtractVO; import com.zzsn.event.vo.EventExtractVO;
import com.zzsn.event.vo.EventFrontVO;
import com.zzsn.event.vo.EventManageVO; import com.zzsn.event.vo.EventManageVO;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List; import java.util.List;
/** /**
* @author lenovo * @author lenovo
* @description 针对表【event_extract(事件)】的数据库操作Service实现 * @description 针对表【event_extract(事件)】的数据库操作Service实现
* @createDate 2024-09-07 18:00:28 * @createDate 2024-09-07 18:00:28
*/ */
@Service @Service
public class EventExtractServiceImpl extends ServiceImpl<EventExtractMapper, EventExtract> implements EventExtractService{ public class EventExtractServiceImpl extends ServiceImpl<EventExtractMapper, EventExtract> implements EventExtractService {
@Autowired
private IEventCategoryService eventCategoryService;
@Override
public IPage<EventExtractVO> pageList(String taskId, String searchWord, String eventName,
String startTime, String endTime, String eventType,
Integer checkStatus, String column, String sortType, Integer pageNo, Integer pageSize) {
int offset = (pageNo - 1) * pageSize;
List<EventExtractVO> pageList = baseMapper.pageList(taskId, searchWord, eventName, startTime, endTime, eventType, checkStatus, column, sortType, offset, pageSize);
Long totalCount = baseMapper.totalCount(taskId, searchWord, eventName, startTime, endTime, eventType, checkStatus);
IPage<EventExtractVO> pageData = new Page<>(pageNo, pageSize, totalCount);
pageData.setRecords(pageList);
return pageData;
}
@Override @Override
public IPage<EventExtractVO> pageList(String eventName, Integer eventType, String startTime, String endTime, Integer pageNo, Integer pageSize) { public IPage<EventFrontVO> frontPageList(String projectId, String eventName, String eventType, Integer pageNo, Integer pageSize) {
int offset = (pageNo - 1) * pageSize; int offset = (pageNo - 1) * pageSize;
List<EventExtractVO> pageList = baseMapper.pageList(eventName, eventType, startTime, endTime, offset, pageSize); List<String> eventTypes = new ArrayList<>();
Long count = baseMapper.totalCount(eventName, eventType, startTime, endTime); if (StringUtils.isNotEmpty(eventType)) {
IPage<EventExtractVO> pageData = new Page<>(pageNo, pageSize, count); List<Node> nodes = eventCategoryService.categoryList();
eventTypes = TreeUtil.belowList(nodes, eventType, true);
}
List<EventFrontVO> pageList = baseMapper.frontPageList(projectId, eventName, eventTypes, offset, pageSize);
Long count = baseMapper.frontTotalCount(projectId, eventName, eventTypes);
IPage<EventFrontVO> pageData = new Page<>(pageNo, pageSize, count);
pageData.setRecords(pageList); pageData.setRecords(pageList);
return pageData; return pageData;
} }
......
package com.zzsn.event.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zzsn.event.entity.EventExtract;
import com.zzsn.event.entity.EventExtractTask;
import com.zzsn.event.mapper.EventExtractTaskMapper;
import com.zzsn.event.service.EventExtractService;
import com.zzsn.event.service.EventExtractTaskService;
import com.zzsn.event.service.OtherDataService;
import com.zzsn.event.util.tree.Node;
import com.zzsn.event.vo.EventExtractTaskVO;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* @author lenovo
* @description 针对表【event_extract_task(事件抽取任务表)】的数据库操作Service实现
* @createDate 2024-09-13 11:31:47
*/
@Service
public class EventExtractTaskServiceImpl extends ServiceImpl<EventExtractTaskMapper, EventExtractTask>
implements EventExtractTaskService{
@Autowired
private EventExtractService eventExtractService;
@Autowired
private OtherDataService otherDataService;
@Override
public IPage<EventExtractTaskVO> pageList(String projectId, String searchWord, String taskName, String startTime, String endTime, Integer pageNo, Integer pageSize) {
int offset = (pageNo - 1) * pageSize;
Long count = baseMapper.totalCount(projectId, searchWord, taskName, startTime, endTime);
IPage<EventExtractTaskVO> pageData = new Page<>(pageNo, pageSize,count);
if (count > 0) {
List<EventExtractTaskVO> pageList = baseMapper.pageList(projectId, searchWord, taskName, startTime, endTime, offset, pageSize);
List<String> taskIds = new ArrayList<>();
Set<String> columnIds = new HashSet<>();
pageList.forEach(e->{
taskIds.add(e.getId());
String columnId = e.getColumnId();
Collections.addAll(columnIds, columnId.split(","));
});
// 任务数据范围(栏目名称)
List<Node> columnList = otherDataService.columnList(new ArrayList<>(columnIds));
Map<String, Node> columnMap = columnList.stream().collect(Collectors.toMap(Node::getId,Function.identity()));
//任务抽取事件的数量统计
Map<String, List<EventExtract>> map = new HashMap<>();
List<EventExtract> eventExtractList = eventExtractService.list(Wrappers.<EventExtract>lambdaQuery().select(EventExtract::getTaskId, EventExtract::getCheckStatus)
.in(EventExtract::getTaskId, taskIds));
if (CollectionUtils.isNotEmpty(eventExtractList)) {
map = eventExtractList.stream().collect(Collectors.groupingBy(EventExtract::getTaskId));
}
for (EventExtractTaskVO taskVO : pageList) {
//任务抽取事件的数量
String taskId = taskVO.getId();
List<EventExtract> eventExtracts = map.get(taskId);
if (CollectionUtils.isNotEmpty(eventExtracts)) {
long noCheckCount = eventExtracts.stream().filter(e -> e.getCheckStatus() == 0).count();
taskVO.setExtractEventCount(eventExtracts.size());
taskVO.setNoCheckExtractEventCount((int)noCheckCount);
} else {
taskVO.setExtractEventCount(0);
taskVO.setNoCheckExtractEventCount(0);
}
//数据范围
String columnId = taskVO.getColumnId();
StringBuilder stringBuilder = new StringBuilder();
for (String s : columnId.split(",")) {
Node column = columnMap.get(s);
stringBuilder.append(",").append(column.getName());
}
taskVO.setColumnName(stringBuilder.substring(1));
}
pageData.setRecords(pageList);
}
return pageData;
}
}
package com.zzsn.event.service.impl;
import com.zzsn.event.mapper.OtherDataMapper;
import com.zzsn.event.service.OtherDataService;
import com.zzsn.event.util.tree.Node;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
/**
*
*
* @author lkg
* @date 2024/9/13
*/
@Service
public class OtherDataServiceImpl implements OtherDataService {
@Resource
private OtherDataMapper otherDataMapper;
@Override
public List<Node> columnList(List<String> columnIds) {
return otherDataMapper.columnList(columnIds);
}
@Override
public List<Node> projectList() {
return otherDataMapper.projectList();
}
}
package com.zzsn.event.task; package com.zzsn.event.task;
import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONWriter; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.zzsn.event.constant.Constants; import com.zzsn.event.constant.Constants;
import com.zzsn.event.entity.EventExtractTask;
import com.zzsn.event.es.EsService; import com.zzsn.event.es.EsService;
import com.zzsn.event.service.EventExtractTaskService;
import com.zzsn.event.util.DateUtil;
import com.zzsn.event.util.RedisUtil; import com.zzsn.event.util.RedisUtil;
import com.zzsn.event.vo.EventDigDataVO; import com.zzsn.event.vo.EventDigDataVO;
import com.zzsn.event.vo.KafkaDataVo;
import com.zzsn.event.vo.SubjectDataVo;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.ListUtils; import org.apache.commons.collections4.ListUtils;
...@@ -17,9 +18,11 @@ import org.springframework.scheduling.annotation.Scheduled; ...@@ -17,9 +18,11 @@ import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.Date;
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.concurrent.CompletableFuture;
/** /**
* 事件挖掘任务 * 事件挖掘任务
...@@ -32,30 +35,62 @@ import java.util.Map; ...@@ -32,30 +35,62 @@ import java.util.Map;
public class EventDigTask { public class EventDigTask {
@Autowired @Autowired
private EventExtractTaskService eventExtractTaskService;
@Autowired
private EsService esService; private EsService esService;
@Resource @Resource
private KafkaTemplate<String, String> kafkaTemplate; private KafkaTemplate<String, String> kafkaTemplate;
@Autowired @Autowired
private RedisUtil redisUtil; private RedisUtil redisUtil;
private final static String EVENT_DIG_TIME_KEY = "EVENT_DIG_HANDLER_TIME"; private final static String EVENT_DIG_TIME_KEY = "EVENT_DIG_HANDLER_TIME::";
@Scheduled(cron = "0 0/5 * * * ?")
public void sendData() {
List<EventExtractTask> extractTaskList = eventExtractTaskService.list(Wrappers.<EventExtractTask>lambdaQuery().eq(EventExtractTask::getDeleteStatus, 0)
.eq(EventExtractTask::getTaskStatus, 1));
for (EventExtractTask eventExtractTask : extractTaskList) {
CompletableFuture.runAsync(() -> {
String taskId = eventExtractTask.getId();
eventExtractTaskService.update(Wrappers.<EventExtractTask>lambdaUpdate().set(EventExtractTask::getLastUpdateTime, new Date())
.eq(EventExtractTask::getId, taskId));
String projectId = eventExtractTask.getProjectId();
String columnId = eventExtractTask.getColumnId();
Integer dataStatus = eventExtractTask.getDataStatus();
String endTime = null;
if (eventExtractTask.getEndTime() != null) {
endTime = DateUtil.dateToString(eventExtractTask.getEndTime());
}
String startTime = DateUtil.dateToString(eventExtractTask.getStartTime());
// @Scheduled(cron = "0 0/3 * * * ?") String redisKey = EVENT_DIG_TIME_KEY + taskId;
public void sendData(){ Object object = redisUtil.get(redisKey);
String startTime = null;
Object object = redisUtil.get(EVENT_DIG_TIME_KEY);
if (object != null) { if (object != null) {
startTime = object.toString(); startTime = object.toString();
} }
List<EventDigDataVO> eventDigDataVOS = esService.pageListOfColumn("1828017348013912065", startTime, 120); List<EventDigDataVO> eventDigDataVOS = esService.pageListOfColumn(columnId, dataStatus, startTime, endTime, 120);
if (CollectionUtils.isNotEmpty(eventDigDataVOS)) { if (CollectionUtils.isNotEmpty(eventDigDataVOS)) {
//分批发送 //分批发送
List<List<EventDigDataVO>> partition = ListUtils.partition(eventDigDataVOS, 30); List<List<EventDigDataVO>> partition = ListUtils.partition(eventDigDataVOS, 30);
partition.forEach(e -> kafkaTemplate.send(Constants.EVENT_DIG_SEND_TOPIC, JSON.toJSONString(e))); partition.forEach(e -> {
//将最新时间存入redis,供下次使用 Map<String,Object> dataMap = new HashMap<>();
dataMap.put("taskId",taskId);
dataMap.put("projectId",projectId);
dataMap.put("dataList",e);
kafkaTemplate.send(Constants.EVENT_DIG_SEND_TOPIC, JSON.toJSONString(dataMap));
});
String processDate = eventDigDataVOS.get(eventDigDataVOS.size() - 1).getProcessDate(); String processDate = eventDigDataVOS.get(eventDigDataVOS.size() - 1).getProcessDate();
redisUtil.set(EVENT_DIG_TIME_KEY,processDate); if (endTime != null && processDate.compareTo(endTime) >= 0) {
log.info("事件挖掘数据,本次kafka推送开始时间为-{},总条数为-{}",startTime,eventDigDataVOS.size()); eventExtractTaskService.update(Wrappers.<EventExtractTask>lambdaUpdate().set(EventExtractTask::getTaskStatus, 0)
.eq(EventExtractTask::getId, taskId));
log.info("事件抽取任务-{},数据范围内的资讯已全部处理完,任务状态关闭", taskId);
} else {
//将最新时间存入redis,供下次使用
redisUtil.set(redisKey, processDate);
log.info("事件抽取任务-{},本次kafka推送开始时间为-{},总条数为-{}", taskId, startTime, eventDigDataVOS.size());
}
}
});
} }
} }
} }
...@@ -739,7 +739,8 @@ public class EsOpUtil<T> { ...@@ -739,7 +739,8 @@ public class EsOpUtil<T> {
* 返回更新请求UpdateRequest对象。*/ * 返回更新请求UpdateRequest对象。*/
private UpdateRequest createUpdateRequest(String index,String documentId, Map<String,String> args) throws IOException { private UpdateRequest createUpdateRequest(String index,String documentId, Map<String,String> args) throws IOException {
UpdateRequest request = new UpdateRequest(index, documentId); UpdateRequest request = new UpdateRequest(index, documentId);
//刷新策略,立即刷新
request.setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE);
// 创建要更新的内容 // 创建要更新的内容
XContentBuilder contentBuilder = XContentFactory.jsonBuilder(); XContentBuilder contentBuilder = XContentFactory.jsonBuilder();
contentBuilder.startObject(); contentBuilder.startObject();
......
...@@ -43,7 +43,5 @@ public class AddEventVO { ...@@ -43,7 +43,5 @@ public class AddEventVO {
/**事件地域信息*/ /**事件地域信息*/
List<RegionVO> regionList; List<RegionVO> regionList;
/**关键词*/ /**关键词*/
private String keywords; private KeywordsVO keywordsVO;
/**屏蔽词*/
private String exclusionWord;
} }
package com.zzsn.event.vo;
import lombok.Data;
@Data
public class ClbNewKeywordsVO {
/**主键*/
private String id;
/**关键词名称*/
private String name;
/**专题id*/
private String subjectId;
/**父分类ID-关联本表ID*/
private String pid;
/**状态(0:未审核,1:通过,2:待定,3:删除,4:修改)*/
private Integer status;
/**创建人*/
private String createBy;
/**创建日期*/
private java.util.Date createTime;
/**更新人*/
private String updateBy;
/**更新日期*/
private java.util.Date updateTime;
/**所属部门*/
private String sysOrgCode;
/**数据类型(1:新词 2:人名 3:热词 4:地名 5:机构名 6:热词)*/
private Integer type;
/**资讯标题*/
private String title;
/**资讯id*/
private String articleId;
/**发布时间*/
private java.util.Date publishDate;
}
package com.zzsn.event.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
* 事件挖掘任务
*
* @author lkg
* @date 2024/9/13
*/
@Getter
@Setter
public class EventExtractTaskVO {
private String id;
private String taskName;
private String projectName;
private String columnId;
private String columnName;
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date createTime;
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date lastUpdateTime;
private Integer taskStatus;
private Integer extractEventCount;
private Integer noCheckExtractEventCount;
}
package com.zzsn.event.vo; package com.zzsn.event.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data; import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/** /**
* *
...@@ -14,7 +18,12 @@ public class EventExtractVO { ...@@ -14,7 +18,12 @@ public class EventExtractVO {
private String id; private String id;
private String eventName; private String eventName;
private Integer eventType;
private String typeName; private String typeName;
private String eventLabel; private String eventLabel;
private String createTime; @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date extractTime;
private Integer checkStatus;
private String relatedId;
} }
...@@ -17,6 +17,7 @@ public class EventFrontVO { ...@@ -17,6 +17,7 @@ public class EventFrontVO {
private String eventName; private String eventName;
private String startTime; private String startTime;
private String endTime; private String endTime;
private Integer category;
private String firstOrigin; private String firstOrigin;
private String eventDescribe; private String eventDescribe;
private String eventLabel; private String eventLabel;
...@@ -30,4 +31,7 @@ public class EventFrontVO { ...@@ -30,4 +31,7 @@ public class EventFrontVO {
private String extractKeywordsTag; private String extractKeywordsTag;
private String extractLocationTag; private String extractLocationTag;
private String extractTimeTag; private String extractTimeTag;
private String createBy;
/**是否专题创建者*/
private Boolean owner;
} }
...@@ -20,6 +20,7 @@ public class EventManageVO { ...@@ -20,6 +20,7 @@ public class EventManageVO {
private Integer facePublic; private Integer facePublic;
private Integer publishStatus; private Integer publishStatus;
private String createTime; private String createTime;
private String createBy;
private String publishDate; private String publishDate;
private String startTime; private String startTime;
private String endTime; private String endTime;
......
...@@ -56,7 +56,7 @@ spring: ...@@ -56,7 +56,7 @@ spring:
password: qwer@9988&zzsn password: qwer@9988&zzsn
driver-class-name: com.mysql.cj.jdbc.Driver driver-class-name: com.mysql.cj.jdbc.Driver
elasticsearch: elasticsearch:
uris: ["1.95.38.69:9700","1.95.3.121:9200","1.95.87.177:9700"] uris: ["192.168.0.24:9700","192.168.0.150:9200","192.168.0.81:9700"]
username: elastic username: elastic
password: zzsn9988 password: zzsn9988
connection-timeout: 300000 connection-timeout: 300000
...@@ -129,4 +129,4 @@ scoreRule: ...@@ -129,4 +129,4 @@ scoreRule:
yearScore: 3 yearScore: 3
beforeYearScore: 1 beforeYearScore: 1
translate: translate:
url: http://192.168.200.133:8018/translate/getTranslateInfoWithTag url: http://114.116.116.241:8018/translate/getTranslateInfoWithTag
\ No newline at end of file \ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论