Commit 6006e819 by shenjunjie

Merge branch 'feature' into 'release'

Feature

See merge request !122
parents ebba83ab 0851005e
package com.zhiwei.brandkbs2.common;
import com.alibaba.fastjson.JSONObject;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import com.zhiwei.brandkbs2.pojo.ChannelTag;
import com.zhiwei.brandkbs2.pojo.Project;
import com.zhiwei.brandkbs2.service.EventService;
import com.zhiwei.brandkbs2.service.SystemInfoService;
import com.zhiwei.qbjc.bean.pojo.common.MessagePlatform;
import com.zhiwei.qbjc.bean.pojo.common.Tag;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
......@@ -17,6 +20,8 @@ import javax.annotation.Resource;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.stream.Collectors;
/**
......
......@@ -94,7 +94,7 @@ public class LoginController extends BaseController {
@ApiOperation("测试接口")
@GetMapping("/test")
public ResponseResult test() {
return ResponseResult.success("brandkbs2-success 2022/7/8");
return ResponseResult.success("brandkbs2-success 2022/12/5");
}
}
......
......@@ -3,6 +3,7 @@ package com.zhiwei.brandkbs2.es;
import com.zhiwei.brandkbs2.common.GenericAttribute;
import com.zhiwei.brandkbs2.common.GlobalPojo;
import com.zhiwei.brandkbs2.config.Constant;
import com.zhiwei.brandkbs2.enmus.ImportantChannelEnum;
import com.zhiwei.pushlog.tools.Tools;
import com.zhiwei.qbjc.bean.pojo.common.MessagePlatform;
import org.apache.commons.collections4.CollectionUtils;
......@@ -100,14 +101,28 @@ public class EsQueryTools {
// 不组装mediaTypes的情况
nestedBoolQueryBuilder.must(cacheMapsNestedQuery(mustQuery));
} else {
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
mediaTypes.forEach(e -> {
BoolQueryBuilder mediaTypeQueryBuilder = QueryBuilders.boolQuery();
mediaTypeQueryBuilder.must(QueryBuilders.termQuery("brandkbs_cache_maps.channel_type.keyword", e));
mediaTypeQueryBuilder.must(mustQuery);
boolQueryBuilder.should(cacheMapsNestedQuery(mediaTypeQueryBuilder));
});
nestedBoolQueryBuilder.must(boolQueryBuilder);
// BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
// mediaTypes.forEach(e -> {
// BoolQueryBuilder mediaTypeQueryBuilder = QueryBuilders.boolQuery();
// mediaTypeQueryBuilder.must(QueryBuilders.termQuery("brandkbs_cache_maps.channel_type.keyword", e));
// mediaTypeQueryBuilder.must(mustQuery);
// boolQueryBuilder.should(cacheMapsNestedQuery(mediaTypeQueryBuilder));
// });
BoolQueryBuilder mediaTypesBoolQueryBuilder = QueryBuilders.boolQuery();
for (String mediaType : mediaTypes) {
BoolQueryBuilder mediaTypeBoolQueryBuilder = QueryBuilders.boolQuery();
//其他
if (ImportantChannelEnum.QITA.getState().equals(mediaType)) {
for (String tag : ImportantChannelEnum.getAllTagExceptSpec()) {
mediaTypeBoolQueryBuilder.mustNot(QueryBuilders.matchQuery("channel_tag", tag));
}
} else {
mediaTypeBoolQueryBuilder.must(QueryBuilders.matchQuery("channel_tag", mediaType));
}
mediaTypesBoolQueryBuilder.should(mediaTypeBoolQueryBuilder);
}
nestedBoolQueryBuilder.must(cacheMapsNestedQuery(mustQuery));
nestedBoolQueryBuilder.must(mediaTypesBoolQueryBuilder);
}
return nestedBoolQueryBuilder;
}
......
......@@ -25,4 +25,5 @@ public interface EventDataService {
*/
String deleteOneByIdAndEventId(String id, String eventId);
void updateEventInfo(Event event);
}
......@@ -291,4 +291,9 @@ public interface EventService {
*/
List<Event> findNotEndEventByProjectId(String projectId);
/**
* 更新所有事件快照属性
*/
void updateAllEventInfo();
}
......@@ -109,6 +109,17 @@ public class EventDataServiceImpl implements EventDataService {
log.info("analysisEvent-eventId:{},更新事件数据完毕,实际更新:{}条", event.getId(), eventDataList.size());
}
@Override
public void updateEventInfo(Event event) {
// 找到正确的事件数据
List<EventData> eventDataList = eventDataDao.findList(Query.query(Criteria.where("eventId").is(event.getId())), event.getCollectionName());
eventTopArticlesAnalysisDao.deleteByEventId(event.getId());
eventDisseminationTrendDao.deleteOneByQuery(Query.query(Criteria.where("eventId").is(event.getId())));
// 设置快照属性值
setEventStaticState(event, eventDataList);
log.info("updateEventInfo-eventId:{},更新事件数据完毕,实际更新:{}条", event.getId(), eventDataList.size());
}
private List<EventData> filterEventData(Event event, List<EventData> eventDataList) {
List<EventData> hitList = new ArrayList<>();
String keyword = event.getKeyword();
......
......@@ -36,6 +36,7 @@ import com.zhiwei.brandkbs2.service.ProjectService;
import com.zhiwei.brandkbs2.util.MongoUtil;
import com.zhiwei.brandkbs2.util.RedisUtil;
import com.zhiwei.brandkbs2.util.Tools;
import lombok.Data;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.ListUtils;
import org.apache.commons.lang3.StringUtils;
......@@ -44,6 +45,7 @@ import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
......@@ -59,6 +61,7 @@ import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong;
import java.util.stream.Collectors;
/**
......@@ -683,6 +686,63 @@ public class EventServiceImpl implements EventService {
return eventDao.findList(query);
}
@Override
public void updateAllEventInfo() {
try {
Query query = new Query();
query.with(Sort.by(Sort.Order.asc("cTime")));
MongoQueryUtil mongoQueryUtil = new MongoQueryUtil(eventDao.count(query));
AtomicInteger total = new AtomicInteger();
AtomicInteger error = new AtomicInteger();
while (mongoQueryUtil.hasNextPage()) {
List<Event> list = eventDao.findList(mongoQueryUtil.getNextPageQuery());
log.info("updateAllEventInfo-发现事件共:{}个,current:{},total:{}", list.size(), mongoQueryUtil.getStartPage() * mongoQueryUtil.getLimit(),
mongoQueryUtil.getTotal());
list.forEach(event -> {
try {
eventDataService.updateEventInfo(event);
log.info("updateAllEventInfo-已更新事件:{}个,错误:{}个", total.incrementAndGet(), error.get());
} catch (Exception e) {
error.incrementAndGet();
log.error("updateAllEventInfo-eventId:{}", event.getId(), e);
}
});
}
} catch (Exception e) {
log.error("updateAllEventInfo-", e);
}
}
@Data
public static class MongoQueryUtil {
private int limit = 1000;
private long startPage = 1;
private long total;
private AtomicLong removeSize = new AtomicLong();
public MongoQueryUtil(long total) {
this.total = total;
}
public boolean hasNextPage() {
long totalPage = (total + limit - 1) / limit;
return startPage <= totalPage;
}
public Query getNextPageQuery() {
Query query = new Query();
if (!hasNextPage()) {
throw new IllegalStateException("startPage>=totalPage");
}
query.skip((startPage - 1) * limit - removeSize.get());
query.limit(limit);
query.with(Sort.by(Sort.Order.desc("_id")));
startPage++;
return query;
}
}
/**
* 获取时间筛选条件
*
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment