Commit 053f9e52 by shenjunjie

修复event信息3

parent f4b558b2
......@@ -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;
......@@ -60,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;
/**
......@@ -686,12 +688,16 @@ public class EventServiceImpl implements EventService {
@Override
public void updateAllEventInfo() {
try {
Query query = new Query();
query.with(Sort.by(Sort.Order.asc("cTime")));
List<Event> list = eventDao.findList(query);
log.info("updateAllEventInfo-发现事件共:{}个", list.size());
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);
......@@ -702,6 +708,40 @@ public class EventServiceImpl implements EventService {
}
});
}
} 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