提交 b4577e50 作者: 王峰

研究中心定时同步事件表部分信息和标签表信息

上级 19b2d20a
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 io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
import java.util.List;
/** 克虏宝事件表
* @Description: 事件
* @Author: jeecg-boot
* @Date: 2024-03-14
* @Version: V1.0
*/
@Data
@TableName("event")
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="event对象", description="事件")
public class EventClb {
/**ID*/
//@TableId(type = IdType.ASSIGN_ID)
@TableId(type = IdType.INPUT)
@ApiModelProperty(value = "ID")
private String id;
/**编码*/
@Excel(name = "编码", width = 15)
@ApiModelProperty(value = "编码")
private String eventCode;
/**名称*/
@Excel(name = "名称", width = 15)
@ApiModelProperty(value = "名称")
private String eventName;
/**图标*/
@Excel(name = "图标", width = 15)
@ApiModelProperty(value = "图标")
private String eventIcon;
/**事件类型*/
@Excel(name = "事件类型", width = 15)
@ApiModelProperty(value = "事件类型")
private String eventType;
/**开始时间*/
@Excel(name = "开始时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "开始时间")
private Date startTime;
/**结束时间*/
@Excel(name = "结束时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "结束时间")
private Date endTime;
/**标签*/
@Excel(name = "标签", width = 15)
@ApiModelProperty(value = "标签")
private String eventLabel;
/**是否公开*/
@Excel(name = "是否公开", width = 15)
@ApiModelProperty(value = "是否公开")
private Integer facePublic;
/**事件描述*/
@Excel(name = "事件描述", width = 15)
@ApiModelProperty(value = "事件描述")
private String eventDescribe;
/**创建人id*/
@Excel(name = "创建人id", width = 15)
@ApiModelProperty(value = "创建人id")
private String createBy;
/**创建时间*/
@Excel(name = "创建时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "创建时间")
private Date createTime;
/**修改时间*/
@Excel(name = "修改时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "修改时间")
private Date updateTime;
/**修改人id*/
@Excel(name = "修改人id", width = 15)
@ApiModelProperty(value = "修改人id")
private String updateBy;
/**状态(0-禁用;1-启用)*/
private Integer status=1;
/**
* 专题最近一次分析时间
*/
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date analysisTime;
/**
* 分析事件脉络-最新资讯的时间
*/
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date eventTime;
/**划分专题库*/
@ApiModelProperty(value = "划分专题库")
private String library;
/**定时单位(1分;2小时;3日;4月)*/
@ApiModelProperty(value = "定时单位")
private String unit;
/**定时数值*/
@ApiModelProperty(value = "定时数值")
private Integer space;
/**cron表达式*/
@ApiModelProperty(value = "cron表达式")
private String cron;
/**是否提取热词*/
@ApiModelProperty(value = "是否提取热词")
private String ynExtractHotWords;
/**事件专题增量分析规则*/
@ApiModelProperty(value = "事件专题增量分析规则")
private Integer increAnaRule;
/**事件专题总量分析规则*/
@ApiModelProperty(value = "事件专题总量分析规则")
private Integer totalAnaRule;
/**事件专题时间间隔分析规则(天)*/
@ApiModelProperty(value = "事件专题时间间隔分析规则(天)")
private Integer timeAnaRule;
/**总热度*/
private Integer totalHot;
/**媒体热度*/
private Integer mediaHot;
/**微信热度*/
private Integer wechatHot;
/**其他热度*/
private Integer otherHot;
/**发布状态(0-未发布;1-已发布)*/
private Integer publishStatus;
/**发布状态(0-未发布;1-已发布)*/
private String relationEvents;
/**发布时间*/
private String publishDate;
/**排序号*/
private Integer sortOrder;
/**事件创建方式(1-用户直接创建;2-基于挖掘的事件创建)*/
private Integer category;
@TableField(exist = false)
private String typeName;
@TableField(exist = false)
private String startDate;
@TableField(exist = false)
private String endDate;
@TableField(exist = false)
private List<EventClb> relatedEventList;
@TableField(exist = false)
private EventTag eventTag;
@TableField(exist = false)
private String extractIndustryTag;
@TableField(exist = false)
private String extractCompanyTag;
@TableField(exist = false)
private String extractPersonTag;
@TableField(exist = false)
private String extractSentimentTag;
@TableField(exist = false)
private String extractKeywordsTag;
@TableField(exist = false)
private String extractLocationTag;
@TableField(exist = false)
private String extractTimeTag;
}
package com.zzsn.event.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import lombok.experimental.Accessors;
/**
* 克虏宝中的事件标签数据库,因为python目前只更新克虏宝事件标签库,所以这里直接取克虏宝的事件标签库
* @Description: EventTag
* @Author: jeecg-boot
* @Date: 2024-03-14
* @Version: V1.0
*/
@Data
@TableName("event_tag")
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(value="EventTag对象", description="事件")
public class EventTagClb {
/**ID*/
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "ID")
private String id;
private String eventId;
private String extractIndustryTag;
private String extractCompanyTag;
private String extractPersonTag;
private String extractSentimentTag;
private String extractKeywordsTag;
private String extractLocationTag;
private String extractTimeTag;
}
package com.zzsn.event.mapper;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zzsn.event.entity.EventTagClb;
import org.apache.ibatis.annotations.Mapper;
/**
* 克虏宝中事件标签库
* @Author: jeecg-boot
* @Date: 2024-03-14
* @Version: V1.0
*/
@Mapper
public interface EventTagClbMapper extends BaseMapper<EventTagClb> {
}
package com.zzsn.event.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zzsn.event.entity.EventTagClb;
/**
* 克虏宝中事件标签
* @author wangFeng
* @date 2024/10/15 10:07
*/
public interface IEventTagClbService extends IService<EventTagClb> {
}
package com.zzsn.event.service.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zzsn.event.entity.EventTag;
import com.zzsn.event.entity.EventTagClb;
import com.zzsn.event.mapper.EventTagClbMapper;
import com.zzsn.event.mapper.EventTagMapper;
import com.zzsn.event.service.IEventTagClbService;
import com.zzsn.event.service.IEventTagService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/**
* 克虏宝事件标签
* @Description: 事件
* @Author: jeecg-boot
* @Date: 2024-03-14
* @Version: V1.0
*/
@Service
@Slf4j
@DS("multi-datasource-clb")
public class EventTagClbServiceImpl extends ServiceImpl<EventTagClbMapper, EventTagClb> implements IEventTagClbService {
}
package com.zzsn.event.task;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.zzsn.event.entity.Event;
import com.zzsn.event.entity.EventTag;
import com.zzsn.event.entity.EventTagClb;
import com.zzsn.event.mapper.EventClbMapper;
import com.zzsn.event.service.IEventService;
import com.zzsn.event.service.IEventTagClbService;
import com.zzsn.event.service.IEventTagService;
import com.zzsn.event.vo.EventVO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.List;
/**
* 同步克虏宝事件相关信息,因为查询事件时候关联的有其它相关表,并且相关表的字段也参与过滤条件
* @author wangFeng
* @date 2024/10/15 13:51
*/
@Slf4j
@Component
public class SynClbEventDataTask {
@Resource
private IEventService eventService;
@Resource
private IEventTagService eventTagService;
@Resource
private EventClbMapper eventClbMapper;
@Resource
private IEventTagClbService eventTagClbService;
/**
* 同步克虏宝中事件信息到研究中心数据库
*/
@Scheduled(cron = "0 15 0/1 * * ?")
public void synEventData () {
log.info("同步克虏宝中事件信息到研究中心数据库开始");
LambdaQueryWrapper<Event> queryWrapper = Wrappers.lambdaQuery();
queryWrapper.eq(Event::getFacePublic,1).eq(Event::getPublishStatus,1);
List<Event> list = eventService.list(queryWrapper);
for (Event event : list) {
try{
// 克虏宝事件表
String eventId = event.getId();
EventVO eventVOClb = eventClbMapper.queryInfo(eventId);
if (eventVOClb != null) {
LambdaUpdateWrapper<Event> lambdaUpdateWrapper = Wrappers.lambdaUpdate(Event.class).eq(Event::getId, eventId)
.set(Event::getRelationEvents, eventVOClb.getRelationEvents()) // 事件关联事件
.set(Event::getEventLabel, eventVOClb.getEventLabel()) // 事件表中打的标签
// total_hot根据所有事件定时统计,这个使用研究中心自己的
;
eventService.update(lambdaUpdateWrapper);
// 事件标签表
EventTagClb eventTagClb = eventTagClbService.getOne(new LambdaQueryWrapper<EventTagClb>()
.eq(EventTagClb::getEventId, eventId)
.last(" limit 1"));
LambdaUpdateWrapper<EventTag> tagUpdateWrapper = Wrappers.lambdaUpdate(EventTag.class)
.eq(EventTag::getEventId, eventId)
.set(EventTag::getExtractIndustryTag, eventTagClb.getExtractIndustryTag()) // 事件关联事件
.set(EventTag::getExtractCompanyTag, eventTagClb.getExtractCompanyTag())
.set(EventTag::getExtractPersonTag, eventTagClb.getExtractPersonTag())
.set(EventTag::getExtractSentimentTag, eventTagClb.getExtractSentimentTag())
.set(EventTag::getExtractKeywordsTag, eventTagClb.getExtractKeywordsTag())
.set(EventTag::getExtractLocationTag, eventTagClb.getExtractLocationTag())
.set(EventTag::getExtractTimeTag, eventTagClb.getExtractTimeTag());
eventTagService.update(tagUpdateWrapper);
}
}catch (Exception e){
log.error("同步克虏宝中事件信息到研究中心数据库失败:{}", e);
}
}
log.info("同步克虏宝中事件信息到研究中心数据库结束");
}
}
......@@ -25,8 +25,8 @@ spring:
# 连接池的配置信息
# 初始化大小,最小,最大
initial-size: 5
min-idle: 10
maxActive: 100
min-idle: 5
maxActive: 20
# 配置获取连接等待超时的时间
maxWait: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
......@@ -55,6 +55,11 @@ spring:
username: ciglobal
password: qwer@9988&zzsn
driver-class-name: com.mysql.cj.jdbc.Driver
multi-datasource-clb:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://114.116.44.11:3306/clb_project?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true
username: ciglobal
password: _PSuWVQ4CLpX
elasticsearch:
uris: ["1.95.38.69:9700","1.95.3.121:9200","1.95.87.177:9700"] # ["192.168.0.24:9700","192.168.0.150:9200","192.168.0.81:9700"]
username: elastic
......
### 服务说明
### 服务说明
1. 研究中心事件使用单独的数据库
2. 研究中心新增/data/simpleSaveEvent时候会先调用克虏宝平台新增方法,然后再调用自身方法入库
3. 研究中心的queryInfo中关联事件、事件标签目前直接查询克虏宝平台
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论