|
@@ -2932,11 +2932,13 @@ public class DataDashboardService {
|
|
|
|
|
|
@XxlJob("buildCoverStatisticDataExportJob")
|
|
|
public ReturnT<String> buildCoverStatisticDataExportJob(String param) {
|
|
|
- if(StringUtils.hasText(param)){
|
|
|
+ if (StringUtils.hasText(param)) {
|
|
|
coverStatisticDataExport(param);
|
|
|
- }else {
|
|
|
+ coverStatisticTestDataExport(param);
|
|
|
+ } else {
|
|
|
String dateStr = DateUtils.getDateString(System.currentTimeMillis() - 24 * 60 * 60 * 1000, "yyyMMdd");
|
|
|
coverStatisticDataExport(dateStr);
|
|
|
+ coverStatisticTestDataExport(dateStr);
|
|
|
}
|
|
|
return ReturnT.SUCCESS;
|
|
|
}
|
|
@@ -2969,6 +2971,34 @@ public class DataDashboardService {
|
|
|
2, null, null, null);
|
|
|
}
|
|
|
|
|
|
+ public void coverStatisticTestDataExport(String dateStr) {
|
|
|
+ List<String> dateStrList = Arrays.asList(dateStr);
|
|
|
+ List<CoverStatisticOneDataExport> exportList = buildCoverStatisticTestDataExport(dateStr);
|
|
|
+ if (CollectionUtil.isEmpty(exportList)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ int rowNum = exportList.size();
|
|
|
+ List<List<Object>> rows = new ArrayList<>();
|
|
|
+ Field[] fields = CoverStatisticDataExport.class.getDeclaredFields();
|
|
|
+ for (CoverStatisticOneDataExport datum : exportList) {
|
|
|
+ List<Object> rowDatas = new ArrayList<>();
|
|
|
+ rows.add(rowDatas);
|
|
|
+
|
|
|
+ for (Field field : fields) {
|
|
|
+ field.setAccessible(true);
|
|
|
+ try {
|
|
|
+ rowDatas.add(field.get(datum));
|
|
|
+ } catch (IllegalAccessException e) {
|
|
|
+ log.error("获取值出错:{}", field.getName());
|
|
|
+ } catch (Exception e) {
|
|
|
+ throw new RuntimeException(e.getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ doSendFeishuSheet(dateStrList, dailyDetailSheetToken, "QiEZiz", rowNum, rows,
|
|
|
+ 2, null, null, null);
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
private List<CoverStatisticDataExport> buildCoverStatisticDataExport(String dateStr) {
|
|
|
List<CoverStatisticDataExport> result = new ArrayList<>();
|
|
@@ -3009,9 +3039,6 @@ public class DataDashboardService {
|
|
|
|
|
|
CoverStatisticDataExport videoSum = new CoverStatisticDataExport(dateStr, "视频", "sum", "sum");
|
|
|
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
Long start = DateUtils.getStartOfDay(dateStr, "yyyyMMdd");
|
|
|
Long end = start + 86400;
|
|
|
Date startDate = new Date(start * 1000);
|
|
@@ -3032,7 +3059,7 @@ public class DataDashboardService {
|
|
|
List<String> rootSourceIdList = new ArrayList<>();
|
|
|
for (Article article : articleList) {
|
|
|
List<String> rootSourceIds = JSONArray.parseArray(article.getRootSourceIdList(), String.class);
|
|
|
- if(CollectionUtils.isEmpty(rootSourceIds)){
|
|
|
+ if (CollectionUtils.isEmpty(rootSourceIds)) {
|
|
|
continue;
|
|
|
}
|
|
|
rootSourceIdMap.put(article.getWxSn(), rootSourceIds);
|
|
@@ -3080,7 +3107,7 @@ public class DataDashboardService {
|
|
|
}
|
|
|
}
|
|
|
List<ArticleDetailInfo> detailInfoList = articleDetailInfoMap.get(article.getWxSn());
|
|
|
- if(CollectionUtils.isEmpty(detailInfoList)){
|
|
|
+ if (CollectionUtils.isEmpty(detailInfoList)) {
|
|
|
continue;
|
|
|
}
|
|
|
List<AccountAvgInfo> accountAvgInfoList = accountAvgInfoRepository.getAllByGhIdEqualsAndStatusEquals(article.getGhId(), 1);
|
|
@@ -3242,6 +3269,156 @@ public class DataDashboardService {
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
+ private List<CoverStatisticOneDataExport> buildCoverStatisticTestDataExport(String dateStr) {
|
|
|
+ List<CoverStatisticOneDataExport> result = new ArrayList<>();
|
|
|
+ Long start = DateUtils.getStartOfDay(dateStr, "yyyyMMdd");
|
|
|
+ Long end = start + 86400;
|
|
|
+ Date startDate = new Date(start * 1000);
|
|
|
+ Date endDate = new Date(end * 1000);
|
|
|
+ List<Article> articleList = articleRepository.getByPublishTimestampBetweenAndTypeEquals(start, end, ArticleTypeEnum.QUNFA.getVal());
|
|
|
+ List<String> wxSnList = articleList.stream().map(Article::getWxSn).collect(Collectors.toList());
|
|
|
+ List<ArticleDetailInfo> articleDetailInfoList = new ArrayList<>();
|
|
|
+ for (List<String> partitions : Lists.partition(wxSnList, 1000)) {
|
|
|
+ articleDetailInfoList.addAll(articleDetailInfoRepository.findByWxSnInAndPublishDtBetween(partitions, startDate, endDate));
|
|
|
+ }
|
|
|
+ List<DatastatSortStrategy> datastatSortStrategyList = datastatSortStrategyRepository.getByWxSnIn(wxSnList);
|
|
|
+ Map<String, DatastatSortStrategy> datastatSortStrategyMap = datastatSortStrategyList.stream()
|
|
|
+ .collect(Collectors.toMap(DatastatSortStrategy::getWxSn, Function.identity()));
|
|
|
+ Map<String, List<ArticleDetailInfo>> articleDetailInfoMap = articleDetailInfoList.stream()
|
|
|
+ .collect(Collectors.groupingBy(ArticleDetailInfo::getWxSn));
|
|
|
+ // 获取rootSourceId
|
|
|
+ Map<String, List<String>> rootSourceIdMap = new HashMap<>();
|
|
|
+ List<String> rootSourceIdList = new ArrayList<>();
|
|
|
+ for (Article article : articleList) {
|
|
|
+ List<String> rootSourceIds = JSONArray.parseArray(article.getRootSourceIdList(), String.class);
|
|
|
+ if (CollectionUtils.isEmpty(rootSourceIds)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ rootSourceIdMap.put(article.getWxSn(), rootSourceIds);
|
|
|
+ rootSourceIdList.addAll(rootSourceIds);
|
|
|
+ }
|
|
|
+ List<LongArticlesRootSourceId> longArticlesRootSourceIdList = rootSourceIdRepository.getByRootSourceIdIn(rootSourceIdList);
|
|
|
+ Map<String, LongArticlesRootSourceId> longArticlesRootSourceIdMap = longArticlesRootSourceIdList.stream()
|
|
|
+ .collect(Collectors.toMap(LongArticlesRootSourceId::getRootSourceId, Function.identity()));
|
|
|
+ // 获取视频
|
|
|
+ List<String> contentIdList = longArticlesRootSourceIdList.stream().map(LongArticlesRootSourceId::getContentId).distinct().collect(Collectors.toList());
|
|
|
+ List<LongArticleCrawlerVideo> longArticleCrawlerVideoList = crawlerVideoRepository.getByContentIdInAndIsIllegal(contentIdList, 0);
|
|
|
+ Map<String, List<LongArticleCrawlerVideo>> longArticleCrawlerVideoMap = longArticleCrawlerVideoList.stream()
|
|
|
+ .collect(Collectors.groupingBy(LongArticleCrawlerVideo::getContentId));
|
|
|
+ for (Article article : articleList) {
|
|
|
+ boolean isVideo = false;
|
|
|
+ boolean isSameMiniProgram = false;
|
|
|
+ boolean isTest = false;
|
|
|
+ List<String> rootSourceIds = rootSourceIdMap.get(article.getWxSn());
|
|
|
+ if (CollectionUtil.isNotEmpty(rootSourceIds)) {
|
|
|
+ List<LongArticlesRootSourceId> rootSourceIdItemList = new ArrayList<>();
|
|
|
+ for (String rootSourceId : rootSourceIds) {
|
|
|
+ LongArticlesRootSourceId longArticlesRootSourceId = longArticlesRootSourceIdMap.get(rootSourceId);
|
|
|
+ if (!Objects.isNull(longArticlesRootSourceId)) {
|
|
|
+ rootSourceIdItemList.add(longArticlesRootSourceId);
|
|
|
+ }
|
|
|
+ LongArticlesPublishMiniprogram longArticlesPublishMiniprogram
|
|
|
+ = longArticlesPublishMiniprogramRepository.findByRootSourceIdEquals(rootSourceId);
|
|
|
+ if (!Objects.isNull(longArticlesPublishMiniprogram)) {
|
|
|
+ if (longArticlesPublishMiniprogram.getNewVideoCoverId() != null) {
|
|
|
+ isTest = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ String contentId = rootSourceIdItemList.get(0).getContentId();
|
|
|
+ List<LongArticleCrawlerVideo> crawlerVideoList = longArticleCrawlerVideoMap.get(contentId);
|
|
|
+ List<String> videoOssPaths = crawlerVideoList.stream().map(LongArticleCrawlerVideo::getVideoOssPath)
|
|
|
+ .filter(StringUtils::hasText).collect(Collectors.toList());
|
|
|
+ List<PublishSingleVideoSource> singleVideoSources = videoPoolRepository.getByVideoOssPathIn(videoOssPaths);
|
|
|
+ if (CollectionUtil.isNotEmpty(singleVideoSources)) {
|
|
|
+ isVideo = true;
|
|
|
+ }
|
|
|
+ if (CollectionUtil.isNotEmpty(crawlerVideoList) && crawlerVideoList.size() == 1) {
|
|
|
+ isSameMiniProgram = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ List<ArticleDetailInfo> detailInfoList = articleDetailInfoMap.get(article.getWxSn());
|
|
|
+ if (CollectionUtils.isEmpty(detailInfoList)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ List<AccountAvgInfo> accountAvgInfoList = accountAvgInfoRepository.getAllByGhIdEqualsAndStatusEquals(article.getGhId(), 1);
|
|
|
+ Integer fans = 0;
|
|
|
+ if (CollectionUtils.isNotEmpty(accountAvgInfoList)) {
|
|
|
+ fans = accountAvgInfoList.get(0).getFans();
|
|
|
+ }
|
|
|
+ if (isSameMiniProgram && isTest) {
|
|
|
+ CoverStatisticOneDataExport coverStatisticOneDataExport = new CoverStatisticOneDataExport();
|
|
|
+ if (isVideo) {
|
|
|
+ coverStatisticOneDataExport.setChannel("视频");
|
|
|
+ } else {
|
|
|
+ coverStatisticOneDataExport.setChannel("文章");
|
|
|
+ }
|
|
|
+ coverStatisticOneDataExport.setDateStr(dateStr);
|
|
|
+ coverStatisticOneDataExport.setAccountName(article.getAccountName());
|
|
|
+ coverStatisticOneDataExport.setContentUrl(article.getContentUrl());
|
|
|
+ if (article.getItemIndex() == 1) {
|
|
|
+ coverStatisticOneDataExport.setIndex("头条");
|
|
|
+ } else if (article.getItemIndex() == 2) {
|
|
|
+ coverStatisticOneDataExport.setIndex("次条");
|
|
|
+ } else {
|
|
|
+ coverStatisticOneDataExport.setIndex("3-8条");
|
|
|
+ }
|
|
|
+ coverStatisticOneDataExport.setFans(fans);
|
|
|
+ coverStatisticOneDataExport.setShowViewCount(article.getShowViewCount());
|
|
|
+ for (ArticleDetailInfo articleDetailInfo : detailInfoList) {
|
|
|
+ if (articleDetailInfo.getFirstLevel() != null) {
|
|
|
+ coverStatisticOneDataExport.setAllFirstLevel(coverStatisticOneDataExport.getAllFirstLevel() + articleDetailInfo.getFirstLevel());
|
|
|
+ if (articleDetailInfo.getVideoIndex() == 1) {
|
|
|
+ coverStatisticOneDataExport.setOneFirstLevel(coverStatisticOneDataExport.getOneFirstLevel() + articleDetailInfo.getFirstLevel());
|
|
|
+ }
|
|
|
+ if (articleDetailInfo.getVideoIndex() == 2) {
|
|
|
+ coverStatisticOneDataExport.setTwoFirstLevel(coverStatisticOneDataExport.getTwoFirstLevel() + articleDetailInfo.getFirstLevel());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (articleDetailInfo.getFission0() != null) {
|
|
|
+ coverStatisticOneDataExport.setAllFission0(coverStatisticOneDataExport.getAllFission0() + articleDetailInfo.getFission0());
|
|
|
+ if (articleDetailInfo.getVideoIndex() == 1) {
|
|
|
+ coverStatisticOneDataExport.setOneFission0(coverStatisticOneDataExport.getOneFission0() + articleDetailInfo.getFission0());
|
|
|
+ }
|
|
|
+ if (articleDetailInfo.getVideoIndex() == 2) {
|
|
|
+ coverStatisticOneDataExport.setTwoFission0(coverStatisticOneDataExport.getTwoFission0() + articleDetailInfo.getFission0());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (coverStatisticOneDataExport.getShowViewCount() != 0 && coverStatisticOneDataExport.getFans() != 0) {
|
|
|
+ coverStatisticOneDataExport.setShowViewRate((double) coverStatisticOneDataExport.getShowViewCount() / coverStatisticOneDataExport.getFans());
|
|
|
+ }
|
|
|
+ if (coverStatisticOneDataExport.getShowViewCount() != 0) {
|
|
|
+ if (coverStatisticOneDataExport.getAllFirstLevel() != 0) {
|
|
|
+ coverStatisticOneDataExport.setAllFirstLevelRate((double) coverStatisticOneDataExport.getAllFirstLevel() / coverStatisticOneDataExport.getShowViewCount());
|
|
|
+ }
|
|
|
+ if (coverStatisticOneDataExport.getOneFirstLevel() != 0) {
|
|
|
+ coverStatisticOneDataExport.setOneFirstLevelRate((double) coverStatisticOneDataExport.getOneFirstLevel() / coverStatisticOneDataExport.getShowViewCount());
|
|
|
+ }
|
|
|
+ if (coverStatisticOneDataExport.getTwoFirstLevel() != 0) {
|
|
|
+ coverStatisticOneDataExport.setTwoFirstLevelRate((double) coverStatisticOneDataExport.getTwoFirstLevel() / coverStatisticOneDataExport.getShowViewCount());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (coverStatisticOneDataExport.getAllFirstLevel() != 0 && coverStatisticOneDataExport.getAllFission0() != 0) {
|
|
|
+ coverStatisticOneDataExport.setAllFission0Rate((double) coverStatisticOneDataExport.getAllFission0() / coverStatisticOneDataExport.getAllFirstLevel());
|
|
|
+ }
|
|
|
+ if (coverStatisticOneDataExport.getOneFirstLevel() != 0 && coverStatisticOneDataExport.getOneFission0() != 0) {
|
|
|
+ coverStatisticOneDataExport.setOneFission0Rate((double) coverStatisticOneDataExport.getOneFission0() / coverStatisticOneDataExport.getOneFirstLevel());
|
|
|
+ }
|
|
|
+ if (coverStatisticOneDataExport.getTwoFirstLevel() != 0 && coverStatisticOneDataExport.getTwoFission0() != 0) {
|
|
|
+ coverStatisticOneDataExport.setTwoFission0Rate((double) coverStatisticOneDataExport.getTwoFission0() / coverStatisticOneDataExport.getTwoFirstLevel());
|
|
|
+ }
|
|
|
+ result.add(coverStatisticOneDataExport);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!CollectionUtils.isEmpty(result)) {
|
|
|
+ result = result.stream().sorted(Comparator.comparing(CoverStatisticOneDataExport::getChannel)).collect(Collectors.toList());
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
private void save(CoverStatisticDataExport coverStatisticDataExport, Integer fans, Integer showViewCount) {
|
|
|
if (fans != null) {
|
|
|
coverStatisticDataExport.setFans(coverStatisticDataExport.getFans() + fans);
|
|
@@ -3274,9 +3451,9 @@ public class DataDashboardService {
|
|
|
}
|
|
|
|
|
|
private void sum(CoverStatisticDataExport sumCoverStatisticDataExport,
|
|
|
- CoverStatisticDataExport coverStatisticDataExport1,
|
|
|
- CoverStatisticDataExport coverStatisticDataExport2,
|
|
|
- CoverStatisticDataExport coverStatisticDataExport3) {
|
|
|
+ CoverStatisticDataExport coverStatisticDataExport1,
|
|
|
+ CoverStatisticDataExport coverStatisticDataExport2,
|
|
|
+ CoverStatisticDataExport coverStatisticDataExport3) {
|
|
|
sumCoverStatisticDataExport.setFans(coverStatisticDataExport1.getFans() + coverStatisticDataExport2.getFans() + coverStatisticDataExport3.getFans());
|
|
|
sumCoverStatisticDataExport.setPublishCount(coverStatisticDataExport1.getPublishCount() + coverStatisticDataExport2.getPublishCount() + coverStatisticDataExport3.getPublishCount());
|
|
|
sumCoverStatisticDataExport.setShowViewCount(coverStatisticDataExport1.getShowViewCount() + coverStatisticDataExport2.getShowViewCount() + coverStatisticDataExport3.getShowViewCount());
|
|
@@ -3289,28 +3466,28 @@ public class DataDashboardService {
|
|
|
}
|
|
|
|
|
|
private CoverStatisticDataExport rate(CoverStatisticDataExport coverStatisticDataExport) {
|
|
|
- if (coverStatisticDataExport.getShowViewCount() != null && coverStatisticDataExport.getFans() != null) {
|
|
|
+ if (coverStatisticDataExport.getShowViewCount() != 0 && coverStatisticDataExport.getFans() != 0) {
|
|
|
coverStatisticDataExport.setShowViewRate((double) coverStatisticDataExport.getShowViewCount() / coverStatisticDataExport.getFans());
|
|
|
}
|
|
|
- if (coverStatisticDataExport.getShowViewCount() != null) {
|
|
|
- if (coverStatisticDataExport.getAllFirstLevel() != null) {
|
|
|
+ if (coverStatisticDataExport.getShowViewCount() != 0) {
|
|
|
+ if (coverStatisticDataExport.getAllFirstLevel() != 0) {
|
|
|
coverStatisticDataExport.setAllFirstLevelRate((double) coverStatisticDataExport.getAllFirstLevel() / coverStatisticDataExport.getShowViewCount());
|
|
|
}
|
|
|
- if (coverStatisticDataExport.getOneFirstLevel() != null) {
|
|
|
+ if (coverStatisticDataExport.getOneFirstLevel() != 0) {
|
|
|
coverStatisticDataExport.setOneFirstLevelRate((double) coverStatisticDataExport.getOneFirstLevel() / coverStatisticDataExport.getShowViewCount());
|
|
|
}
|
|
|
- if (coverStatisticDataExport.getTwoFirstLevel() != null) {
|
|
|
+ if (coverStatisticDataExport.getTwoFirstLevel() != 0) {
|
|
|
coverStatisticDataExport.setTwoFirstLevelRate((double) coverStatisticDataExport.getTwoFirstLevel() / coverStatisticDataExport.getShowViewCount());
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- if (coverStatisticDataExport.getAllFirstLevel() != null && coverStatisticDataExport.getAllFission0() != null) {
|
|
|
+ if (coverStatisticDataExport.getAllFirstLevel() != 0 && coverStatisticDataExport.getAllFission0() != 0) {
|
|
|
coverStatisticDataExport.setAllFission0Rate((double) coverStatisticDataExport.getAllFission0() / coverStatisticDataExport.getAllFirstLevel());
|
|
|
}
|
|
|
- if (coverStatisticDataExport.getOneFirstLevel() != null && coverStatisticDataExport.getOneFission0() != null) {
|
|
|
+ if (coverStatisticDataExport.getOneFirstLevel() != 0 && coverStatisticDataExport.getOneFission0() != 0) {
|
|
|
coverStatisticDataExport.setOneFission0Rate((double) coverStatisticDataExport.getOneFission0() / coverStatisticDataExport.getOneFirstLevel());
|
|
|
}
|
|
|
- if (coverStatisticDataExport.getTwoFirstLevel() != null && coverStatisticDataExport.getTwoFission0() != null) {
|
|
|
+ if (coverStatisticDataExport.getTwoFirstLevel() != 0 && coverStatisticDataExport.getTwoFission0() != 0) {
|
|
|
coverStatisticDataExport.setTwoFission0Rate((double) coverStatisticDataExport.getTwoFission0() / coverStatisticDataExport.getTwoFirstLevel());
|
|
|
}
|
|
|
return coverStatisticDataExport;
|