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

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

上级 26a6e325
......@@ -72,7 +72,7 @@ public class EventAnalysisController {
private static final String prefix = "http://obs.ciglobal.cn/";
/**
* 上传文件(事件报告跳转智能写作是调用)
* 上传文件(事件报告跳转智能写作是调用)
*
* @param file 文件
* @author lkg
......
......@@ -2,16 +2,23 @@ package com.zzsn.event.controller;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
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.event.constant.Constants;
import com.zzsn.event.constant.Result;
import com.zzsn.event.entity.CustomerDataPermissionMap;
import com.zzsn.event.entity.Event;
import com.zzsn.event.entity.KeyWords;
import com.zzsn.event.entity.SysUserDataPermission;
import com.zzsn.event.es.EsService;
import com.zzsn.event.service.EventExtractService;
import com.zzsn.event.service.EventSimpleService;
import com.zzsn.event.service.IEventService;
import com.zzsn.event.service.IKeyWordsService;
import com.zzsn.event.util.EsOpUtil;
import com.zzsn.event.util.HttpUtil;
import com.zzsn.event.util.ObjectUtil;
import com.zzsn.event.util.RedisUtil;
......@@ -30,8 +37,12 @@ import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
/**
* 事件
......@@ -48,6 +59,8 @@ public class EventDataController {
@Autowired
private IEventService eventService;
@Autowired
private EventExtractService eventExtractService;
@Autowired
private EsService esService;
@Autowired
private EventSimpleService eventSimpleService;
......@@ -59,6 +72,8 @@ public class EventDataController {
private RedisUtil redisUtil;
@Resource
private KafkaTemplate<String, String> kafkaTemplate;
@Autowired
private EsOpUtil esOpUtil;
@Value("${translate.url:}")
private String TRANSLATE_URL;
......@@ -66,8 +81,7 @@ public class EventDataController {
/**
* 事件分页列表-门户
*
* @param category 栏目类型(1-全部;2-自动追踪;3-人工创建;4-我创建的)
* @param eventId 事件id
* @param category 栏目类型(1-全部;2-自动追踪;3-我的)
* @param eventName 事件名称
* @param eventType 事件分类id
* @param labelField 搜索字段
......@@ -81,8 +95,8 @@ public class EventDataController {
*/
@ApiOperation(value = "事件-分页列表查询", notes = "事件-分页列表查询")
@GetMapping(value = "/pageList")
public Result<?> pageList(@RequestParam(name = "category") Integer category,
@RequestParam(name = "eventId", required = false) String eventId,
public Result<?> pageList(@RequestParam(defaultValue = "1476527644425682945") String projectId,
@RequestParam(name = "category") Integer category,
@RequestParam(name = "eventName", required = false) String eventName,
@RequestParam(name = "eventType", required = false) String eventType,
@RequestParam(name = "labelField", required = false) String labelField,
......@@ -91,12 +105,14 @@ public class EventDataController {
@RequestParam(name = "orderType", required = false) String orderType,
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
String username = null;
if (category == 4) {
UserVo currentUser = UserUtil.getLoginUser();
username = currentUser.getUsername();
IPage<EventFrontVO> pageList = new Page<>();
if (category == 1){
pageList = eventService.frontAllPageList(projectId, eventName, eventType, labelField, labelName, order, orderType, pageNo, pageSize);
} 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);
}
......@@ -109,20 +125,84 @@ public class EventDataController {
*/
@PostMapping("/simpleSaveEvent")
public Result<?> addEvent(@RequestBody AddEventVO addEventVO) {
Event event = eventSimpleService.simpleSave(addEventVO);
iXxlJobInfoService.subjectInsert(event);
//关键词
KeyWords keyWords = keyWordsService.saveKeyword(event, addEventVO.getKeywords(), addEventVO.getExclusionWord());
KeyWordsDTO redisKeywordDTO = new KeyWordsDTO();
BeanUtils.copyProperties(keyWords, redisKeywordDTO);
redisKeywordDTO.setStartTime(event.getStartTime());
redisKeywordDTO.setEndTime(event.getEndTime());
redisKeywordDTO.setSearchEngines(new ArrayList<>(Constants.DEFAULT_SEARCH_ENGINE.values()));
redisUtil.set(Constants.KEY_WORDS_TO_REDIS_PREFIX + keyWords.getWordsCode(), redisKeywordDTO);
//插入xxljob
iXxlJobInfoService.keyWordsInsert(redisKeywordDTO);
//为了立即响应,关键词新增时放入一个首次录入消息队列
kafkaTemplate.send(Constants.KEY_WORDS_COLLECT_TOPIC, JSON.toJSONString(redisKeywordDTO));
KeywordsVO keywordsVO = addEventVO.getKeywordsVO();
if (keywordsVO != null) {
Event event = eventSimpleService.simpleSave(addEventVO);
KeyWords keyWords = keyWordsService.saveKeyword(event, keywordsVO.getKeyword(), keywordsVO.getExclusionWord());
CompletableFuture.runAsync(()->{
iXxlJobInfoService.subjectInsert(event);
//关键词
KeyWordsDTO redisKeywordDTO = new KeyWordsDTO();
BeanUtils.copyProperties(keyWords, redisKeywordDTO);
redisKeywordDTO.setStartTime(event.getStartTime());
redisKeywordDTO.setEndTime(event.getEndTime());
redisKeywordDTO.setSearchEngines(new ArrayList<>(Constants.DEFAULT_SEARCH_ENGINE.values()));
redisUtil.set(Constants.KEY_WORDS_TO_REDIS_PREFIX + keyWords.getWordsCode(), redisKeywordDTO);
//插入xxljob
iXxlJobInfoService.keyWordsInsert(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();
}
......@@ -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 但翻译文本
......
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();
}
}
......@@ -71,14 +71,16 @@ public class EventManageController {
/**
* 分页列表-后台管理
*
* @param eventName 事件名称
* @param eventType 事件分类id
* @param startTime 开始时间
* @param endTime 结束时间
* @param order 排序字段
* @param orderType 排序方式
* @param pageNo 偏移量
* @param pageSize 返回条数
* @param eventName 事件名称
* @param eventType 事件分类id
* @param facePublic 是否公开(0-未公开;1-已公开)
* @param publishStatus 发布状态(0-未发布;1-已发布)
* @param startTime 开始时间
* @param endTime 结束时间
* @param order 排序字段
* @param orderType 排序方式
* @param pageNo 偏移量
* @param pageSize 返回条数
* @author lkg
* @date 2024/4/8
*/
......@@ -86,18 +88,19 @@ public class EventManageController {
@GetMapping(value = "/pageList")
public Result<?> pageList(@RequestParam(name = "eventName", required = false) String eventName,
@RequestParam(name = "eventType", required = false) Integer eventType,
@RequestParam(name = "facePublic", required = false) Integer facePublic,
@RequestParam(name = "publishStatus", required = false) Integer publishStatus,
@RequestParam(name = "startTime", required = false) String startTime,
@RequestParam(name = "endTime", required = false) String endTime,
@RequestParam(name = "order", required = false) String order,
@RequestParam(name = "orderType", defaultValue = "asc") String orderType,
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
IPage<EventManageVO> pageList = eventService.pageList(eventName, eventType, startTime, endTime, order, orderType, pageNo, pageSize);
IPage<EventManageVO> pageList = eventService.pageList(eventName, eventType, facePublic, publishStatus, startTime, endTime, order, orderType, pageNo, pageSize);
return Result.OK(pageList);
}
/**
* 地域信息-树型结构
*
......@@ -137,10 +140,11 @@ public class EventManageController {
if (keywordsVO != null) {
UserVo currentUser = UserUtil.getLoginUser();
eventParam.setCreateTime(new Date());
eventParam.setUpdateTime(new Date());
eventParam.setCreateBy(currentUser.getUsername());
Event event = eventService.saveMain(eventParam);
CompletableFuture.runAsync(()->{
//新增关键词
KeyWords keyWords = keyWordsService.saveKeyword(event, keywordsVO.getKeyword(), keywordsVO.getExclusionWord());
CompletableFuture.runAsync(() -> {
//新建的专题授权给自己和客户
if (currentUser.getCategory().equals(Constants.ADMIN_USER)) {
customerDataPermissionMapService.save(new CustomerDataPermissionMap().setCustomerId(currentUser.getCustomerId()).setPermissionId(event.getId()).setCategory(Constants.PERMISSION_SUBJECT));
......@@ -151,8 +155,7 @@ public class EventManageController {
}
//插入xxlJob
iXxlJobInfoService.subjectInsert(event);
//关键词
KeyWords keyWords = keyWordsService.saveKeyword(event, keywordsVO.getKeyword(), keywordsVO.getExclusionWord());
//关键词入缓存
KeyWordsDTO redisKeywordDTO = new KeyWordsDTO();
BeanUtils.copyProperties(keyWords, redisKeywordDTO);
redisKeywordDTO.setStartTime(event.getStartTime());
......@@ -166,7 +169,7 @@ public class EventManageController {
});
return Result.OK();
} else {
return Result.FAIL(500,"关键词不能为空");
return Result.FAIL(500, "关键词不能为空");
}
}
......@@ -179,27 +182,31 @@ public class EventManageController {
@ApiOperation(value = "事件-编辑", notes = "事件-编辑")
@PostMapping(value = "/edit")
public Result<?> edit(@RequestBody AddEventParam addEventParam) {
UserVo currentUser = UserUtil.getLoginUser();
addEventParam.setUpdateTime(new Date());
addEventParam.setUpdateBy(currentUser.getUsername());
eventService.updateMain(addEventParam);
//关键词
KeywordsVO keywordsVO = addEventParam.getKeywordsVO();
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(addEventParam.getStartTime());
redisKeywordDTO.setEndTime(addEventParam.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();
if (keywordsVO != null) {
UserVo currentUser = UserUtil.getLoginUser();
addEventParam.setUpdateTime(new Date());
addEventParam.setUpdateBy(currentUser.getUsername());
eventService.updateMain(addEventParam);
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(addEventParam.getStartTime());
redisKeywordDTO.setEndTime(addEventParam.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, "关键词不能为空");
}
}
/**
......@@ -210,8 +217,8 @@ public class EventManageController {
* @date 2024/9/12
*/
@GetMapping("/enable")
public Result<?> enable(@RequestParam String eventId){
updateStatus(eventId,1);
public Result<?> enable(@RequestParam String eventId) {
updateStatus(eventId, 1);
return Result.OK();
}
......@@ -223,21 +230,21 @@ public class EventManageController {
* @date 2024/9/12
*/
@GetMapping("/disable")
public Result<?> disable(@RequestParam String eventId){
updateStatus(eventId,0);
public Result<?> disable(@RequestParam String eventId) {
updateStatus(eventId, 0);
return Result.OK();
}
private void updateStatus(String eventId,Integer status){
eventService.update(Wrappers.<Event>lambdaUpdate().eq(Event::getId,eventId).set(Event::getStatus,status));
CompletableFuture.runAsync(()->{
private void updateStatus(String eventId, Integer status) {
eventService.update(Wrappers.<Event>lambdaUpdate().eq(Event::getId, eventId).set(Event::getStatus, status));
CompletableFuture.runAsync(() -> {
Event event = eventService.getById(eventId);
iXxlJobInfoService.update(Wrappers.<XxlJobInfo>lambdaUpdate().eq(XxlJobInfo::getInfoSourceCode,event.getEventCode())
.set(XxlJobInfo::getTriggerStatus,status));
iXxlJobInfoService.update(Wrappers.<XxlJobInfo>lambdaUpdate().eq(XxlJobInfo::getInfoSourceCode, event.getEventCode())
.set(XxlJobInfo::getTriggerStatus, status));
//关键词
KeywordsVO keywordsVO = keyWordsService.keywordInfoByEventId(eventId);
iXxlJobInfoService.update(Wrappers.<XxlJobInfo>lambdaUpdate().eq(XxlJobInfo::getInfoSourceCode,keywordsVO.getWordsCode())
.set(XxlJobInfo::getTriggerStatus,status));
iXxlJobInfoService.update(Wrappers.<XxlJobInfo>lambdaUpdate().eq(XxlJobInfo::getInfoSourceCode, keywordsVO.getWordsCode())
.set(XxlJobInfo::getTriggerStatus, status));
});
}
......@@ -250,18 +257,22 @@ public class EventManageController {
@ApiOperation(value = "事件-通过id删除", notes = "事件-通过id删除")
@GetMapping(value = "/delete")
public Result<?> delete(@RequestParam(name = "id") String id) {
EventVO eventVO = eventService.queryInfo(id);
iXxlJobInfoService.deleteByInfosourceCode(eventVO.getEventCode());
//删除数据权限关系
customerDataPermissionMapService.remove(Wrappers.<CustomerDataPermissionMap>lambdaQuery().eq(CustomerDataPermissionMap::getPermissionId, id));
sysUserDataPermissionService.remove(Wrappers.<SysUserDataPermission>lambdaQuery().eq(SysUserDataPermission::getPermissionId, id));
eventService.deleteMain(id);
//删除关键词
KeywordsVO keywordsVO = eventVO.getKeywordsVO();
if (keywordsVO != null) {
redisUtil.del(Constants.KEY_WORDS_TO_REDIS_PREFIX + keywordsVO.getWordsCode());
iXxlJobInfoService.deleteByInfosourceCode(keywordsVO.getWordsCode());
}
CompletableFuture.runAsync(() -> {
EventVO eventVO = eventService.queryInfo(id);
iXxlJobInfoService.deleteByInfosourceCode(eventVO.getEventCode());
//删除数据权限关系
customerDataPermissionMapService.remove(Wrappers.<CustomerDataPermissionMap>lambdaQuery().eq(CustomerDataPermissionMap::getPermissionId, id));
sysUserDataPermissionService.remove(Wrappers.<SysUserDataPermission>lambdaQuery().eq(SysUserDataPermission::getPermissionId, id));
//删除关键词
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();
}
......@@ -276,19 +287,20 @@ public class EventManageController {
public Result<?> deleteBatch(@RequestParam(name = "ids") String ids) {
List<CompletableFuture<Void>> asyncList = new ArrayList<>();
for (String id : ids.split(",")) {
asyncList.add(
CompletableFuture.runAsync(()->{
asyncList.add(CompletableFuture.runAsync(() -> {
eventService.deleteMain(id);
EventVO eventVO = eventService.queryInfo(id);
iXxlJobInfoService.deleteByInfosourceCode(eventVO.getEventCode());
//删除数据权限关系
customerDataPermissionMapService.remove(Wrappers.<CustomerDataPermissionMap>lambdaQuery().eq(CustomerDataPermissionMap::getPermissionId, id));
sysUserDataPermissionService.remove(Wrappers.<SysUserDataPermission>lambdaQuery().eq(SysUserDataPermission::getPermissionId, id));
eventService.deleteMain(id);
//删除关键词
KeywordsVO keywordsVO = eventVO.getKeywordsVO();
if (keywordsVO != null) {
redisUtil.del(Constants.KEY_WORDS_TO_REDIS_PREFIX + keywordsVO.getWordsCode());
iXxlJobInfoService.deleteByInfosourceCode(keywordsVO.getWordsCode());
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);
}
}));
}
......
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 {
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date eventTime;
/**划分专题库*/
@Excel(name = "划分专题库", width = 15, dicCode = "Thematic_Library")
@ApiModelProperty(value = "划分专题库")
private String library;
/**定时单位(1分;2小时;3日;4月)*/
......@@ -146,7 +145,7 @@ public class Event {
private String publishDate;
/**排序号*/
private Integer sortOrder;
/**事件创建方式(1-用户创建;2-事件挖掘)*/
/**事件创建方式(1-用户直接创建;2-基于挖掘的事件创建)*/
private Integer category;
......
......@@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
......@@ -69,6 +68,38 @@ public class EventExtract implements Serializable {
@TableField("event_describe")
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
*/
@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;
import cn.hutool.core.map.MapUtil;
import cn.hutool.json.JSONUtil;
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.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
......@@ -78,10 +79,6 @@ public class EsService {
private ISysBaseChannelService channelService;
@Autowired
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)", "人民创投", "人民法治网", "人民交通网", "人民论坛网", "人民日报海外版", "人民数字联播网", "人民网", "人民雄安网", "人民资讯网", "手机央广网", "习近平系列讲话数据库", "新华报业网", "新华网", "央广网", "央视网", "央视网经济", "一带一路网", "正义网", "证券日报", "证券日报网", "中国安全生产网", "中国财经报", "中国发展门户网", "中国发展网", "中国改革报", "中国工商报", "中国工商报网", "中国工业报", "中国工业报社", "中国工业新闻网(中国工业报)电工频道", "中国经济导报", "中国经济导报网", "中国经济网", "中国经济网航空频道", "中国经济网理论评论频道", "中国经济新闻网", "中国经济信息网", "中国警察网", "中国军网", "中国农网", "中国青年报", "中国青年网", "中国台湾网", "中国网", "中国文明网", "中国西藏网", "中宏网", "中华工商网", "中华环境保护基金会", "中青在线", "中央人民广播电台", "观察者网", "澎湃新闻", "凤凰网", "每日经济新闻", "新京报"};
......@@ -1105,7 +1102,7 @@ public class EsService {
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<>();
SearchRequest searchRequest = new SearchRequest(Constants.SUBJECT_INDEX);
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
......@@ -1116,16 +1113,23 @@ public class EsService {
searchSourceBuilder.trackTotalHits(true);
//创建查询对象
BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();
List<String> columnIds = new ArrayList<>();
columnIds.add(columnId);
List<String> columnIds = Arrays.asList(columnId.split(","));
BoolQueryBuilder columnQuery = getQueryByChanelIds(columnIds);
boolQuery.must(columnQuery);
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);
searchRequest.source(searchSourceBuilder);
try {
......@@ -1149,11 +1153,10 @@ public class EsService {
return dataList;
}
public List<Map<String,Object>> listByIds(List<String> ids){
List<Map<String,Object>> dataList = new ArrayList<>();
public List<SubjectDataVo> listByIds(List<String> ids){
List<SubjectDataVo> dataList = new ArrayList<>();
SearchRequest searchRequest = new SearchRequest(Constants.SUBJECT_INDEX);
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.sort("publishDate",SortOrder.ASC);
//创建查询对象
BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();
boolQuery.must(QueryBuilders.termsQuery("id",ids));
......@@ -1164,10 +1167,9 @@ public class EsService {
SearchHit[] hits = searchResponse.getHits().getHits();
if (hits!=null && hits.length > 0) {
for (SearchHit hit : hits) {
String index = hit.getIndex();
Map<String, Object> sourceAsMap = hit.getSourceAsMap();
sourceAsMap.put("index",index);
dataList.add(sourceAsMap);
String sourceAsString = hit.getSourceAsString();
SubjectDataVo subjectDataVo = JSONObject.parseObject(sourceAsString, SubjectDataVo.class);
dataList.add(subjectDataVo);
}
}
} catch (Exception e) {
......
......@@ -7,11 +7,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.zzsn.event.constant.Constants;
import com.zzsn.event.entity.*;
import com.zzsn.event.es.EsService;
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 org.apache.commons.lang3.StringUtils;
import org.apache.kafka.clients.consumer.ConsumerRecord;
......@@ -21,7 +17,6 @@ import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* @author lkg
......@@ -41,16 +36,12 @@ public class KafkaConsumer {
@Autowired
private EventAnalysisReportService eventAnalysisReportService;
@Autowired
private EsService esService;
@Autowired
private IEventCategoryService eventCategoryService;
@Autowired
private EsOpUtil esOpUtil;
/**
* 获取-观点分析-分析结果数据,并入库
*
* @param record 接的kafka数据
* @param record 接的kafka数据
*/
@KafkaListener(topics = {Constants.VIEWPOINT_RECEIVE_TOPIC})
public void viewPointAnalysis(ConsumerRecord<String, String> record) {
......@@ -82,7 +73,7 @@ public class KafkaConsumer {
/**
* 获取-事件脉络-分析结果数据,并入库
*
* @param record 接的kafka数据
* @param record 接的kafka数据
*/
@KafkaListener(topics = {Constants.EVENT_CONTEXT_RECEIVE_TOPIC})
public void eventContext(ConsumerRecord<String, String> record) {
......@@ -106,7 +97,7 @@ public class KafkaConsumer {
/**
* 获取-伪事件脉络-分析结果数据,并入库
*
* @param record 接的kafka数据
* @param record 接的kafka数据
*/
@KafkaListener(topics = {Constants.FAKE_EVENT_CONTEXT_RECEIVE_TOPIC})
public void eventContext_fake(ConsumerRecord<String, String> record) {
......@@ -138,7 +129,7 @@ public class KafkaConsumer {
/**
* 获取事件的分析报告数据
*
* @param record 接的kafka数据
* @param record 接的kafka数据
* @author lkg
* @date 2024/4/12
*/
......@@ -154,11 +145,11 @@ public class KafkaConsumer {
/**
* 获取事件挖掘的结果
*
* @param record
* @param record 接收的kafka数据
* @author lkg
* @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) {
String value = record.value();
try {
......@@ -167,17 +158,18 @@ public class KafkaConsumer {
if (resultData != null && resultData.size() > 0) {
for (Object item : resultData) {
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 eventType = eventItem.get("event_type").toString();
String eventDesc = eventItem.get("event_name").toString();
JSONArray relatedIds = eventItem.getJSONArray("related_id");
List<String> idList = JSONArray.parseArray(relatedIds.toString(), String.class);
List<Map<String, Object>> maps = esService.listByIds(idList);
String publishDate = maps.get(0).get("publishDate").toString();
//todo 保存抽取到的事件, 若抽到python判断一样的事件,如何处理
saveEventExtract(eventId, eventTitle, eventType, eventDesc, EsDateUtil.esFieldDateMapping(publishDate));
log.info("挖掘到事件,id-{},名称-{},并保存成功", eventId, eventTitle);
String taskId = eventItem.get("task_id").toString();
String projectId = eventItem.get("project_id").toString();
String relatedIds = eventItem.getJSONArray("related_id").toString();
EventExtract one = eventExtractService.getOne(Wrappers.<EventExtract>lambdaQuery().eq(EventExtract::getUniqueId,uniqueId));
if (one == null) {
String eventId = saveEventExtract(uniqueId, eventTitle, eventType, eventDesc, relatedIds,taskId,projectId);
log.info("挖掘到事件,id-{},名称-{},并保存成功", eventId, eventTitle);
}
}
}
} catch (Exception e) {
......@@ -185,39 +177,28 @@ public class KafkaConsumer {
}
}
//保存关联资讯
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) {
EventExtract byId = eventExtractService.getById(eventId);
if (byId == null) {
EventExtract eventExtract = new EventExtract();
eventExtract.setId(eventId);
eventExtract.setEventName(eventTitle);
private String saveEventExtract(String eventId, String eventTitle, String eventType, String eventDesc,String relatedIds,String taskId,String projectId) {
EventExtract eventExtract = new EventExtract();
eventExtract.setUniqueId(eventId);
eventExtract.setEventName(eventTitle);
if (StringUtils.isNotBlank(eventType)) {
String[] split = eventType.split("-");
LambdaQueryWrapper<EventCategory> queryWrapper = Wrappers.lambdaQuery();
queryWrapper.eq(EventCategory::getTypeName, split[split.length - 1]);
EventCategory eventCategory = eventCategoryService.getOne(queryWrapper);
eventExtract.setEventType(eventCategory.getId());
eventExtract.setEventDescribe(eventDesc);
Date startTime = DateUtil.stringToDate(publishDate, "yyyy-MM-dd HH:mm:ss");
eventExtract.setStartTime(DateUtil.addDate(startTime,-30));
eventExtract.setCreateTime(new Date());
eventExtract.setCreateBy("event-dig");
eventExtractService.save(eventExtract);
if (eventCategory != null) {
eventExtract.setEventType(eventCategory.getId());
}
}
eventExtract.setEventDescribe(eventDesc);
eventExtract.setRelatedId(relatedIds);
eventExtract.setCreateTime(new Date());
eventExtract.setCreateBy("event-dig");
eventExtract.setTaskId(taskId);
eventExtract.setProjectId(projectId);
eventExtractService.save(eventExtract);
return eventExtract.getId();
}
......
......@@ -3,6 +3,7 @@ package com.zzsn.event.mapper;
import com.zzsn.event.entity.EventExtract;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zzsn.event.vo.EventExtractVO;
import com.zzsn.event.vo.EventFrontVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
......@@ -20,31 +21,68 @@ public interface EventExtractMapper extends BaseMapper<EventExtract> {
/**
* 伪事件信息列表
*
* @param eventName 事件名称
* @param eventType 时间分类
* @param startTime 开始时间
* @param endTime 结束时间
* @param offset 偏移量
* @param pageSize 返回条数
* @param searchWord 搜索词
* @param eventName 事件名称
* @param eventType 时间分类
* @param startTime 开始时间
* @param endTime 结束时间
* @param checkStatus 审核状态(2-不通过;1-通过;0-待审核)
* @param offset 偏移量
* @param pageSize 返回条数
* @author lkg
* @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("eventType") String eventType, @Param("checkStatus") Integer checkStatus,
@Param("column") String column, @Param("sortType") String sortType,
@Param("offset") Integer offset, @Param("pageSize") Integer pageSize);
/**
* 伪事件信息总数量
*
* @param eventName 事件名称
* @param eventType 时间分类
* @param startTime 开始时间
* @param endTime 结束时间
* @param searchWord 搜索词
* @param eventName 事件名称
* @param eventType 时间分类
* @param startTime 开始时间
* @param endTime 结束时间
* @param checkStatus 审核状态(2-不通过;1-通过;0-待审核)
* @author lkg
* @date 2024/9/9
*/
Long totalCount(@Param("eventName") String eventName, @Param("eventType") Integer eventType,
@Param("startTime") String startTime, @Param("endTime") String endTime);
Long totalCount(@Param("taskId") String taskId, @Param("searchWord") String searchWord,
@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> {
* @date 2024/4/8
*/
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("order") String order, @Param("orderType") String orderType,
@Param("offset") Integer offset, @Param("pageSize") Integer pageSize);
......@@ -60,15 +61,14 @@ public interface EventMapper extends BaseMapper<Event> {
* @date 2024/4/8
*/
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 projectId 项目id
* @param createBy 创建人
* @param facePublic 是否公开(0-未公开;1-已公开)
* @param category 事件创建方式(1-用户创建;2-事件挖掘)
* @param eventId 事件id
* @param eventName 事件名称
* @param eventTypes 事件分类id集合
* @param labelField 搜索字段
......@@ -81,21 +81,17 @@ public interface EventMapper extends BaseMapper<Event> {
* @author lkg
* @date 2024/4/8
*/
List<EventFrontVO> frontPageList(@Param("createBy") String createBy, @Param("facePublic") Integer facePublic,
@Param("category") Integer category,
@Param("eventId") String eventId, @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);
List<EventFrontVO> frontAllPageList(@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 facePublic 是否公开(0-未公开;1-已公开)
* @param category 事件创建方式(1-用户创建;2-事件挖掘)
* @param eventId 事件id
* @param eventName 事件名称
* @param eventTypes 事件分类id集合
* @param labelField 搜索字段
......@@ -104,12 +100,52 @@ public interface EventMapper extends BaseMapper<Event> {
* @author lkg
* @date 2024/4/8
*/
Integer frontTotalCount(@Param("createBy") String createBy, @Param("facePublic") Integer facePublic,
@Param("category") Integer category,
@Param("eventId") String eventId, @Param("eventName") String eventName,
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 eventName 事件名称
* @param eventTypes 事件分类id集合
* @param labelField 搜索字段
* @param labelName 搜索词
* @param type 类别(1-自定义标签;2-抽取标签)
* @author lkg
* @date 2024/4/8
*/
Integer frontOwnerCount(@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);
/**
* 分页列表(专题分类)-新平台管理
*
......
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 @@
</resultMap>
<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
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 != ''">
and t1.event_name like CONCAT('%',#{eventName},'%')
</if>
......@@ -28,18 +28,34 @@
and t1.event_type = #{eventType}
</if>
<if test="startTime!=null and startTime != ''">
and t1.create_time >= #{startTime}
and t1.extract_time >= #{startTime}
</if>
<if test="endTime!=null and endTime != ''">
and t1.create_time <![CDATA[ <= ]]> #{endTime}
and t1.extract_time <![CDATA[ <= ]]> #{endTime}
</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}
</select>
<select id="totalCount" resultType="Long">
select count(1) from event_extract t1
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 != ''">
and t1.event_name like CONCAT('%',#{eventName},'%')
</if>
......@@ -47,10 +63,53 @@
and t1.event_type = #{eventType}
</if>
<if test="startTime!=null and startTime != ''">
and t1.create_time >= #{startTime}
and t1.extract_time >= #{startTime}
</if>
<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>
</select>
</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 @@
<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,
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
inner join event_category t2 on t1.event_type =t2.id
where 1=1
......@@ -58,6 +58,12 @@
<if test="eventType!=null and eventType != ''">
and t1.event_type = #{eventType}
</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 != ''">
and t1.create_time >= #{startTime}
</if>
......@@ -82,6 +88,12 @@
<if test="eventType!=null and eventType != ''">
and t1.event_type = #{eventType}
</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 != ''">
and t1.create_time >= #{startTime}
</if>
......@@ -90,27 +102,120 @@
</if>
</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
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,
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
<if test="createBy!=null and createBy != ''">
and t1.create_by = #{createBy}
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}
<if test="eventName!=null and eventName != ''">
and a.event_name like CONCAT('%',#{eventName},'%')
</if>
<if test="facePublic != null">
and t1.face_public = #{facePublic}
<if test="eventTypes != null and eventTypes.size() > 0">
and a.event_type in
<foreach collection="eventTypes" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="category != null">
and t1.category = #{category}
<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>
<if test="eventId!=null and eventId != ''">
and t1.id = #{eventId}
<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 test="labelName != null and labelName !=''">
<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>
</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 != ''">
and t1.event_name like CONCAT('%',#{eventName},'%')
</if>
......@@ -145,23 +250,12 @@
</choose>
limit #{offset}, #{pageSize}
</select>
<select id="frontTotalCount" resultType="java.lang.Integer">
select count(1) from event t1
inner join event_category t2 on t1.event_type =t2.id
<select id="frontOwnerCount" resultType="java.lang.Integer">
select count(1)
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
<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>
where t1.publish_status = 1 and t1.create_by = #{createBy} and m.project_id = #{projectId}
<if test="eventName!=null and eventName != ''">
and t1.event_name like CONCAT('%',#{eventName},'%')
</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
* @date 2024/4/12
*/
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;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zzsn.event.entity.EventExtract;
import com.zzsn.event.vo.EventExtractVO;
import com.zzsn.event.vo.EventFrontVO;
/**
* @author lenovo
* @description 针对表【event_extract(事件)】的数据库操作Service
* @createDate 2024-09-07 18:00:28
*/
* @author lenovo
* @description 针对表【event_extract(事件)】的数据库操作Service
* @createDate 2024-09-07 18:00:28
*/
public interface EventExtractService extends IService<EventExtract> {
/**
* 伪事件信息分页列表
*
* @param eventName 事件名称
* @param eventType 时间分类
* @param startTime 开始时间
* @param endTime 结束时间
* @param pageNo 当前页
* @param pageSize 返回条数
* @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
*/
IPage<EventExtractVO> pageList(String eventName, Integer eventType, String startTime, String endTime,
Integer pageNo, Integer pageSize);
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 返回条数
* @author lkg
* @date 2024/9/9
*/
IPage<EventFrontVO> frontPageList(String projectId, String eventName, String eventType, 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 {
private ISubjectTypeMapService subjectTypeMapService;
@Autowired
private IProjectSubjectMapService projectSubjectMapService;
@Autowired
private ISubjectSearchEnginesMapService subjectSearchEnginesMapService;
@Autowired
......@@ -47,7 +45,6 @@ public class EventSimpleService {
private EventRegionMapService eventRegionMapService;
//默认搜索引擎
private final static String[] SEARCH_ENGINES = new String[]{"1539145903551361026","1539146006513135617","1539146115049140225"};
/**
* 新增事件(页面简化版)
......@@ -96,6 +93,18 @@ public class EventSimpleService {
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) {
//专题和分类关系
SubjectTypeMap subjectTypeMap = new SubjectTypeMap();
......
......@@ -44,15 +44,30 @@ public interface IEventService extends IService<Event> {
* @author lkg
* @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);
/**
* 分页列表-后台管理
* 分页列表-门户(全部)
*
* @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> frontAllPageList(String projectId, String eventName, String eventType, String labelField, String labelName, String order, String orderType, Integer pageNo, Integer pageSize);
/**
* 分页列表-门户(我的)
*
* @param columnType 栏目类型(1-全部;2-自动追踪;3-人工创建;4-我创建的)
* @param username 登录用户的账号
* @param eventId 事件id
* @param projectId 项目id
* @param eventName 事件名称
* @param eventType 事件分类id
* @param labelField 搜索字段
......@@ -64,7 +79,8 @@ public interface IEventService extends IService<Event> {
* @author lkg
* @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> 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
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;
import com.zzsn.event.entity.EventExtract;
import com.zzsn.event.service.EventExtractService;
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.EventFrontVO;
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 java.util.ArrayList;
import java.util.List;
/**
* @author lenovo
* @description 针对表【event_extract(事件)】的数据库操作Service实现
* @createDate 2024-09-07 18:00:28
*/
* @author lenovo
* @description 针对表【event_extract(事件)】的数据库操作Service实现
* @createDate 2024-09-07 18:00:28
*/
@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
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;
List<EventExtractVO> pageList = baseMapper.pageList(eventName, eventType, startTime, endTime, offset, pageSize);
Long count = baseMapper.totalCount(eventName, eventType, startTime, endTime);
IPage<EventExtractVO> pageData = new Page<>(pageNo, pageSize, count);
List<String> eventTypes = new ArrayList<>();
if (StringUtils.isNotEmpty(eventType)) {
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);
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 cn.hutool.core.map.MapUtil;
import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
......@@ -15,11 +14,15 @@ import com.zzsn.event.enums.CodePrefixEnum;
import com.zzsn.event.es.EsService;
import com.zzsn.event.mapper.EventMapper;
import com.zzsn.event.service.*;
import com.zzsn.event.util.*;
import com.zzsn.event.util.CodeGenerateUtil;
import com.zzsn.event.util.CronUtil;
import com.zzsn.event.util.DateUtil;
import com.zzsn.event.util.HanlpUtil;
import com.zzsn.event.util.tree.Node;
import com.zzsn.event.util.tree.TreeUtil;
import com.zzsn.event.util.user.UserUtil;
import com.zzsn.event.util.user.UserVo;
import com.zzsn.event.vo.*;
import com.zzsn.event.xxljob.service.IXxlJobInfoService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
......@@ -42,7 +45,6 @@ import org.elasticsearch.search.sort.SortOrder;
import org.jsoup.Jsoup;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
......@@ -85,6 +87,10 @@ public class EventServiceImpl extends ServiceImpl<EventMapper, Event> implements
private ISubjectModelMapService subjectModelMapService;
@Autowired
private IKeyWordsService keyWordsService;
@Autowired
private SubjectAnalysisService subjectAnalysisService;
@Autowired
private EventAnalysisReportService eventAnalysisReportService;
@Resource
private RestHighLevelClient client;
......@@ -92,7 +98,6 @@ public class EventServiceImpl extends ServiceImpl<EventMapper, Event> implements
private EsService esService;
@Override
public List<SubjectKafkaVo> progressList(Date disableDate) {
return this.baseMapper.processList(disableDate);
......@@ -124,18 +129,18 @@ public class EventServiceImpl extends ServiceImpl<EventMapper, Event> implements
}
@Override
public IPage<EventManageVO> pageList(String eventName, Integer eventType, String startTime, String endTime, String order, String orderType, Integer pageNo, Integer pageSize) {
public IPage<EventManageVO> pageList(String eventName, Integer eventType, Integer facePublic, Integer publishStatus, String startTime, String endTime, String order, String orderType, Integer pageNo, Integer pageSize) {
int offset = (pageNo - 1) * pageSize;
List<EventManageVO> pageList = baseMapper.pageList(eventName, eventType, startTime, endTime, order, orderType, offset, pageSize);
List<EventManageVO> pageList = baseMapper.pageList(eventName, eventType, facePublic, publishStatus, startTime, endTime, order, orderType, offset, pageSize);
//获取总条数
Integer count = baseMapper.totalCount(eventName, eventType, startTime, endTime);
Integer count = baseMapper.totalCount(eventName, eventType, facePublic, publishStatus, startTime, endTime);
IPage<EventManageVO> pageData = new Page<>(pageNo, pageSize, count);
pageData.setRecords(pageList);
return pageData;
}
@Override
public 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) {
public IPage<EventFrontVO> frontAllPageList(String projectId, String eventName, String eventType, String labelField, String labelName, String order, String orderType, Integer pageNo, Integer pageSize) {
int offset = (pageNo - 1) * pageSize;
Integer type = null;
if (StringUtils.isNotEmpty(labelField) && labelField.equals("event_label")) {
......@@ -146,32 +151,57 @@ public class EventServiceImpl extends ServiceImpl<EventMapper, Event> implements
List<Node> nodes = eventCategoryService.categoryList();
eventTypes = TreeUtil.belowList(nodes, eventType, true);
}
Integer facePublic = null;
Integer category = null;
if (columnType == 1) {
facePublic = 1;
} else if (columnType == 2) {
facePublic = 1;
category = 2;
} else if (columnType == 3) {
facePublic = 1;
category = 1;
} else {
category = 1;
//获取当前登录人信息
UserVo currentUser = UserUtil.getLoginUser();
List<EventFrontVO> pageList = baseMapper.frontAllPageList(projectId, currentUser.getUsername(), eventName, eventTypes, labelField, labelName, type, order, orderType, offset, pageSize);
if (CollectionUtils.isNotEmpty(pageList)) {
Map<String, String> map = getFirstMap(pageList);
if (MapUtil.isNotEmpty(map)) {
for (EventFrontVO eventFrontVO : pageList) {
//获取专题资讯的首发来源
String firstOrigin = map.get(eventFrontVO.getId());
eventFrontVO.setFirstOrigin(firstOrigin);
}
}
for (EventFrontVO eventFrontVO : pageList) {
String createBy = eventFrontVO.getCreateBy();
eventFrontVO.setOwner(StringUtils.isNotBlank(createBy) && createBy.equals(currentUser.getUsername()));
}
}
//获取总条数
Integer count = baseMapper.frontAllCount(projectId, currentUser.getUsername(), eventName, eventTypes, labelField, labelName, type);
IPage<EventFrontVO> pageData = new Page<>(pageNo, pageSize, count);
pageData.setRecords(pageList);
return pageData;
}
@Override
public IPage<EventFrontVO> frontOwnerPageList(String projectId, String eventName, String eventType, String labelField, String labelName, String order, String orderType, Integer pageNo, Integer pageSize) {
int offset = (pageNo - 1) * pageSize;
Integer type = null;
if (StringUtils.isNotEmpty(labelField) && labelField.equals("event_label")) {
type = 1;
}
List<String> eventTypes = new ArrayList<>();
if (StringUtils.isNotEmpty(eventType)) {
List<Node> nodes = eventCategoryService.categoryList();
eventTypes = TreeUtil.belowList(nodes, eventType, true);
}
List<EventFrontVO> pageList = baseMapper.frontPageList(username,facePublic,category,eventId,eventName, eventTypes, labelField, labelName, type, order, orderType, offset, pageSize);
//获取当前登录人信息
UserVo currentUser = UserUtil.getLoginUser();
List<EventFrontVO> pageList = baseMapper.frontOwnerPageList(projectId, currentUser.getUsername(), eventName, eventTypes, labelField, labelName, type, order, orderType, offset, pageSize);
if (CollectionUtils.isNotEmpty(pageList)) {
//获取专题资讯的首发来源
Map<String, String> map = getFirstMap(pageList);
if (MapUtil.isNotEmpty(map)) {
pageList.forEach(e -> {
String firstOrigin = map.get(e.getId());
e.setFirstOrigin(firstOrigin);
});
for (EventFrontVO eventFrontVO : pageList) {
//获取专题资讯的首发来源
String firstOrigin = map.get(eventFrontVO.getId());
eventFrontVO.setFirstOrigin(firstOrigin);
}
}
}
//获取总条数
Integer count = baseMapper.frontTotalCount(username,facePublic,category,eventId,eventName, eventTypes, labelField, labelName, type);
Integer count = baseMapper.frontOwnerCount(projectId, currentUser.getUsername(), eventName, eventTypes, labelField, labelName, type);
IPage<EventFrontVO> pageData = new Page<>(pageNo, pageSize, count);
pageData.setRecords(pageList);
return pageData;
......@@ -184,7 +214,7 @@ public class EventServiceImpl extends ServiceImpl<EventMapper, Event> implements
List<String> typeIds = new ArrayList<>();
String subjectTypeId = subjectCondition.getSubjectTypeId();
if (StringUtils.isNotEmpty(subjectTypeId) && !"0".equals(subjectTypeId)) {
typeIds = iSubjectTypeService.belowIdList(subjectTypeId,subjectCondition.getUserId(),subjectCondition.getCustomerId());
typeIds = iSubjectTypeService.belowIdList(subjectTypeId, subjectCondition.getUserId(), subjectCondition.getCustomerId());
}
subjectCondition.setTypeIds(typeIds);
//在根据所有明细节点查出专题列表
......@@ -282,7 +312,7 @@ public class EventServiceImpl extends ServiceImpl<EventMapper, Event> implements
event.setCron(cron);
baseMapper.insert(event);
String eventId = event.getId();
CompletableFuture.runAsync(()->{
CompletableFuture.runAsync(() -> {
//插入专题-类别、项目的绑定关系
saveMapMain(event, addEventParam);
//事件标签
......@@ -303,7 +333,7 @@ public class EventServiceImpl extends ServiceImpl<EventMapper, Event> implements
BeanUtils.copyProperties(addEventParam, subject);
String eventId = subject.getId();
baseMapper.updateById(subject);
CompletableFuture.runAsync(()->{
CompletableFuture.runAsync(() -> {
//专题-类别、项目的绑定关系处理
//删除专题-类别绑定关系
iSubjectTypeMapService.deleteBySubjectId(subject.getId());
......@@ -323,9 +353,9 @@ public class EventServiceImpl extends ServiceImpl<EventMapper, Event> implements
@Transactional
public void deleteMain(String id) {
baseMapper.deleteById(id);
CompletableFuture.runAsync(()->{
CompletableFuture.runAsync(() -> {
//删除与信息源的关联关系
iSubjectInfoSourceMapService.delete(id);
// iSubjectInfoSourceMapService.delete(id);
//删除与关键词组的关联关系
iSubjectKeywordsMapService.delete(id);
//删除地域关系
......@@ -340,8 +370,11 @@ public class EventServiceImpl extends ServiceImpl<EventMapper, Event> implements
subjectModelMapService.remove(Wrappers.<SubjectModelMap>lambdaQuery().eq(SubjectModelMap::getSubjectId, id));
//删除事件-搜索引擎关系
subjectSearchEnginesMapService.remove(Wrappers.<SubjectSearchEnginesMap>lambdaQuery().eq(SubjectSearchEnginesMap::getSubjectId, id));
//删除事件 观点分析、事件脉络数据
subjectAnalysisService.remove(Wrappers.<SubjectAnalysis>lambdaQuery().eq(SubjectAnalysis::getSubjectId,id));
//删除事件 分析报告数据
eventAnalysisReportService.delete(id);
});
}
@Override
......@@ -356,12 +389,12 @@ public class EventServiceImpl extends ServiceImpl<EventMapper, Event> implements
@Override
public List<Node> projectList(String userId, String customerId) {
return baseMapper.projectList(userId,customerId);
return baseMapper.projectList(userId, customerId);
}
@Override
public List<String> selectSubjectByTypeIds(String userId, List<String> typeIds) {
return baseMapper.selectSubjectByTypeIds(userId,typeIds);
return baseMapper.selectSubjectByTypeIds(userId, typeIds);
}
@Override
......@@ -381,7 +414,7 @@ public class EventServiceImpl extends ServiceImpl<EventMapper, Event> implements
@Override
public List<String> selectSubjectWithCustomer(String userId, String customerId) {
return baseMapper.selectSubjectWithCustomer(userId,customerId);
return baseMapper.selectSubjectWithCustomer(userId, customerId);
}
@Override
......@@ -417,8 +450,8 @@ public class EventServiceImpl extends ServiceImpl<EventMapper, Event> implements
* 2.再判断该信息源在专题已绑定的信息源组下,若不在则新增绑定关系;若在则跳过
*/
LambdaQueryWrapper<SubjectInfoSourceMap> queryWrapper = Wrappers.lambdaQuery();
queryWrapper.eq(SubjectInfoSourceMap::getSourceId,infoSourceId)
.eq(SubjectInfoSourceMap::getSubjectId,subjectId);
queryWrapper.eq(SubjectInfoSourceMap::getSourceId, infoSourceId)
.eq(SubjectInfoSourceMap::getSubjectId, subjectId);
iSubjectInfoSourceMapService.remove(queryWrapper);
int num = baseMapper.ynBelowBindGroup(subjectId, infoSourceId);
if (num == 0) {
......@@ -441,8 +474,8 @@ public class EventServiceImpl extends ServiceImpl<EventMapper, Event> implements
* 2.再判断该信息源在专题已排除的信息源组下,若不在则新增绑定关系;若在则跳过
*/
LambdaQueryWrapper<SubjectInfoSourceMap> queryWrapper = Wrappers.lambdaQuery();
queryWrapper.eq(SubjectInfoSourceMap::getSourceId,infoSourceId)
.eq(SubjectInfoSourceMap::getSubjectId,subjectId);
queryWrapper.eq(SubjectInfoSourceMap::getSourceId, infoSourceId)
.eq(SubjectInfoSourceMap::getSubjectId, subjectId);
iSubjectInfoSourceMapService.remove(queryWrapper);
int num = baseMapper.ynBelowExcludeGroup(subjectId, infoSourceId);
if (num == 0) {
......@@ -460,10 +493,10 @@ public class EventServiceImpl extends ServiceImpl<EventMapper, Event> implements
int num = baseMapper.ynBelowExcludeGroup(subjectId, infoSourceId);
if (num == 0) {
LambdaUpdateWrapper<SubjectInfoSourceMap> update = Wrappers.lambdaUpdate();
iSubjectInfoSourceMapService.update(update.eq(SubjectInfoSourceMap::getSubjectId,subjectId)
.eq(SubjectInfoSourceMap::getSourceId,infoSourceId)
.eq(SubjectInfoSourceMap::getType,3)
.set(SubjectInfoSourceMap::getType,1));
iSubjectInfoSourceMapService.update(update.eq(SubjectInfoSourceMap::getSubjectId, subjectId)
.eq(SubjectInfoSourceMap::getSourceId, infoSourceId)
.eq(SubjectInfoSourceMap::getType, 3)
.set(SubjectInfoSourceMap::getType, 1));
} else {
LambdaQueryWrapper<SubjectInfoSourceMap> queryWrapper = Wrappers.lambdaQuery();
queryWrapper.eq(SubjectInfoSourceMap::getSourceId, infoSourceId)
......@@ -521,7 +554,7 @@ public class EventServiceImpl extends ServiceImpl<EventMapper, Event> implements
}
@Override
public IPage<KeyWordsPage> bindKeyWordsList(List<String> subjectIds,String groupName,String wordName,Integer pageNo,Integer pageSize) {
public IPage<KeyWordsPage> bindKeyWordsList(List<String> subjectIds, String groupName, String wordName, Integer pageNo, Integer pageSize) {
int offset = (pageNo - 1) * pageSize;
List<KeyWordsPage> wordsList = baseMapper.bindKeyWordsList(subjectIds, groupName, wordName, offset, pageSize);
Long count = baseMapper.bindKeyWordsCount(subjectIds, groupName, wordName);
......@@ -566,7 +599,7 @@ public class EventServiceImpl extends ServiceImpl<EventMapper, Event> implements
}
@Override
public void saveDefaultMap(String eventId){
public void saveDefaultMap(String eventId) {
//默认引擎
Map<String, String> defaultSearchEngines = Constants.DEFAULT_SEARCH_ENGINE;
List<SubjectSearchEnginesMap> enginesMaps = new ArrayList<>();
......@@ -592,9 +625,8 @@ public class EventServiceImpl extends ServiceImpl<EventMapper, Event> implements
}
//专题实际绑定信息源的集合
private List<SubjectSourceVO> subjectBindSourceList(List<String> subjectIds){
private List<SubjectSourceVO> subjectBindSourceList(List<String> subjectIds) {
List<SubjectSourceVO> bindList = baseMapper.bindSourceList(subjectIds);
List<SubjectSourceVO> excludeList = baseMapper.excludeSourceList(subjectIds);
bindList.removeAll(excludeList);
......@@ -644,7 +676,7 @@ public class EventServiceImpl extends ServiceImpl<EventMapper, Event> implements
return map;
}
private void count(List<EventNewPlatVO> pageList){
private void count(List<EventNewPlatVO> pageList) {
if (CollectionUtils.isNotEmpty(pageList)) {
List<String> idList = pageList.stream().map(EventNewPlatVO::getId).collect(Collectors.toList());
Map<String, Integer> infoSourceNumMap = new HashMap<>();
......
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;
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.entity.EventExtractTask;
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.vo.EventDigDataVO;
import com.zzsn.event.vo.KafkaDataVo;
import com.zzsn.event.vo.SubjectDataVo;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.ListUtils;
......@@ -17,9 +18,11 @@ import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
/**
* 事件挖掘任务
......@@ -32,30 +35,62 @@ import java.util.Map;
public class EventDigTask {
@Autowired
private EventExtractTaskService eventExtractTaskService;
@Autowired
private EsService esService;
@Resource
private KafkaTemplate<String, String> kafkaTemplate;
@Autowired
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/3 * * * ?")
public void sendData(){
String startTime = null;
Object object = redisUtil.get(EVENT_DIG_TIME_KEY);
if (object != null) {
startTime = object.toString();
}
List<EventDigDataVO> eventDigDataVOS = esService.pageListOfColumn("1828017348013912065", startTime, 120);
if (CollectionUtils.isNotEmpty(eventDigDataVOS)) {
//分批发送
List<List<EventDigDataVO>> partition = ListUtils.partition(eventDigDataVOS, 30);
partition.forEach(e -> kafkaTemplate.send(Constants.EVENT_DIG_SEND_TOPIC, JSON.toJSONString(e)));
//将最新时间存入redis,供下次使用
String processDate = eventDigDataVOS.get(eventDigDataVOS.size() - 1).getProcessDate();
redisUtil.set(EVENT_DIG_TIME_KEY,processDate);
log.info("事件挖掘数据,本次kafka推送开始时间为-{},总条数为-{}",startTime,eventDigDataVOS.size());
@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());
String redisKey = EVENT_DIG_TIME_KEY + taskId;
Object object = redisUtil.get(redisKey);
if (object != null) {
startTime = object.toString();
}
List<EventDigDataVO> eventDigDataVOS = esService.pageListOfColumn(columnId, dataStatus, startTime, endTime, 120);
if (CollectionUtils.isNotEmpty(eventDigDataVOS)) {
//分批发送
List<List<EventDigDataVO>> partition = ListUtils.partition(eventDigDataVOS, 30);
partition.forEach(e -> {
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();
if (endTime != null && processDate.compareTo(endTime) >= 0) {
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> {
* 返回更新请求UpdateRequest对象。*/
private UpdateRequest createUpdateRequest(String index,String documentId, Map<String,String> args) throws IOException {
UpdateRequest request = new UpdateRequest(index, documentId);
//刷新策略,立即刷新
request.setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE);
// 创建要更新的内容
XContentBuilder contentBuilder = XContentFactory.jsonBuilder();
contentBuilder.startObject();
......
......@@ -43,7 +43,5 @@ public class AddEventVO {
/**事件地域信息*/
List<RegionVO> regionList;
/**关键词*/
private String keywords;
/**屏蔽词*/
private String exclusionWord;
private KeywordsVO keywordsVO;
}
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;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
*
......@@ -14,7 +18,12 @@ public class EventExtractVO {
private String id;
private String eventName;
private Integer eventType;
private String typeName;
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 {
private String eventName;
private String startTime;
private String endTime;
private Integer category;
private String firstOrigin;
private String eventDescribe;
private String eventLabel;
......@@ -30,4 +31,7 @@ public class EventFrontVO {
private String extractKeywordsTag;
private String extractLocationTag;
private String extractTimeTag;
private String createBy;
/**是否专题创建者*/
private Boolean owner;
}
......@@ -20,6 +20,7 @@ public class EventManageVO {
private Integer facePublic;
private Integer publishStatus;
private String createTime;
private String createBy;
private String publishDate;
private String startTime;
private String endTime;
......
......@@ -56,7 +56,7 @@ spring:
password: qwer@9988&zzsn
driver-class-name: com.mysql.cj.jdbc.Driver
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
password: zzsn9988
connection-timeout: 300000
......@@ -129,4 +129,4 @@ scoreRule:
yearScore: 3
beforeYearScore: 1
translate:
url: http://192.168.200.133:8018/translate/getTranslateInfoWithTag
\ No newline at end of file
url: http://114.116.116.241:8018/translate/getTranslateInfoWithTag
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论