|
@@ -209,7 +209,7 @@ public class DataDashboardService {
|
|
|
Set<String> snList = articleList.stream().map(Article::getWxSn).collect(Collectors.toSet());
|
|
|
List<ArticleDetailInfo> articleDetailInfoList = new ArrayList<>();
|
|
|
for (List<String> partitions : Lists.partition(new ArrayList<>(snList), 1000)) {
|
|
|
- articleDetailInfoList.addAll(articleDetailInfoRepository.getAllByWxSnIn(partitions));
|
|
|
+ articleDetailInfoList.addAll(articleDetailInfoRepository.getByWxSnIn(partitions));
|
|
|
}
|
|
|
log.info("newSortStrategyData articleDetailInfoList finish");
|
|
|
Map<String, List<ArticleDetailInfo>> articleDetailInfoMap = articleDetailInfoList.stream()
|
|
@@ -354,7 +354,7 @@ public class DataDashboardService {
|
|
|
List<ArticleDetailInfo> hisArticleDetailInfoList = new ArrayList<>();
|
|
|
List<List<String>> hisSnPartition = Lists.partition(new ArrayList<>(hisWxSnList), 1000);
|
|
|
for (List<String> sns : hisSnPartition) {
|
|
|
- hisArticleDetailInfoList.addAll(articleDetailInfoRepository.getAllByWxSnIn(sns));
|
|
|
+ hisArticleDetailInfoList.addAll(articleDetailInfoRepository.getByWxSnIn(sns));
|
|
|
}
|
|
|
log.info("newSortStrategyData hisArticleDetailInfoList finish");
|
|
|
Map<String, List<ArticleDetailInfo>> hisArticleDetailInfoMap = hisArticleDetailInfoList.stream()
|
|
@@ -1110,7 +1110,7 @@ public class DataDashboardService {
|
|
|
List<String> wxSnList = articleList.stream().map(Article::getWxSn).distinct().collect(Collectors.toList());
|
|
|
List<ArticleDetailInfo> articleDetailInfoList = new ArrayList<>();
|
|
|
for (List<String> partitions : Lists.partition(wxSnList, 1000)) {
|
|
|
- articleDetailInfoList.addAll(articleDetailInfoRepository.getAllByWxSnIn(partitions));
|
|
|
+ articleDetailInfoList.addAll(articleDetailInfoRepository.getByWxSnIn(partitions));
|
|
|
}
|
|
|
Map<String, List<ArticleDetailInfo>> articleDetailInfoMap = articleDetailInfoList.stream()
|
|
|
.collect(Collectors.groupingBy(ArticleDetailInfo::getWxSn));
|
|
@@ -2604,4 +2604,123 @@ public class DataDashboardService {
|
|
|
return sum;
|
|
|
}
|
|
|
|
|
|
+ @XxlJob("firstEndMiniprogramFirstLevel")
|
|
|
+ public ReturnT<String> firstEndMiniprogramFirstLevelJob(String param) {
|
|
|
+ List<String> dateStrList = DateUtils.getBeforeDays(null, null, 1);
|
|
|
+ firstEndMiniprogramFirstLevel(dateStrList);
|
|
|
+ return ReturnT.SUCCESS;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void firstEndMiniprogramFirstLevel(String dateStr) {
|
|
|
+ List<String> dateStrList = DateUtils.getBeforeDays(dateStr, null, 1);
|
|
|
+ if (!StringUtils.hasText(dateStr)) {
|
|
|
+ dateStrList = DateUtils.getBeforeDays(null, null, 1);
|
|
|
+ }
|
|
|
+ firstEndMiniprogramFirstLevel(dateStrList);
|
|
|
+ }
|
|
|
+
|
|
|
+ public void firstEndMiniprogramFirstLevel(List<String> dateStrList) {
|
|
|
+ String minDate = dateStrList.stream().min(String::compareTo).orElse("");
|
|
|
+ String maxDate = dateStrList.stream().max(String::compareTo).orElse("");
|
|
|
+ List<FirstEndMiniprogramFirstLevelExport> exportList = getFirstEndMiniprogramFirstLevelExport(minDate, maxDate);
|
|
|
+ if (CollectionUtil.isEmpty(exportList)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ exportList.sort(Comparator.comparing(FirstEndMiniprogramFirstLevelExport::getDateStr).reversed()
|
|
|
+ .thenComparing(FirstEndMiniprogramFirstLevelExport::getAccountName)
|
|
|
+ .thenComparing(FirstEndMiniprogramFirstLevelExport::getPosition));
|
|
|
+
|
|
|
+ int rowNum = exportList.size();
|
|
|
+ List<List<Object>> rows = new ArrayList<>();
|
|
|
+ Field[] fields = FirstEndMiniprogramFirstLevelExport.class.getDeclaredFields();
|
|
|
+ for (FirstEndMiniprogramFirstLevelExport 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());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ List<Pair<String, String>> styles = Arrays
|
|
|
+ .asList(
|
|
|
+ Pair.of("I", "0.00%"),
|
|
|
+ Pair.of("L", "0.00%")
|
|
|
+ );
|
|
|
+
|
|
|
+ doSendFeishuSheet(dateStrList, dailyDetailSheetToken, "QTZqGq", rowNum, rows,
|
|
|
+ 2, styles, null, null);
|
|
|
+ }
|
|
|
+
|
|
|
+ private List<FirstEndMiniprogramFirstLevelExport> getFirstEndMiniprogramFirstLevelExport(String beginDate, String endDate) {
|
|
|
+ List<FirstEndMiniprogramFirstLevelExport> result = new ArrayList<>();
|
|
|
+ long beginTimestamp = DateUtils.dateStrToTimestamp(beginDate, "yyyyMMdd");
|
|
|
+ long endTimestamp = DateUtils.dateStrToTimestamp(endDate, "yyyyMMdd") + 86400;
|
|
|
+ List<Article> articleList = articleRepository.getByPublishTimestampBetween(beginTimestamp, endTimestamp);
|
|
|
+ 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.getByWxSnIn(partitions));
|
|
|
+ }
|
|
|
+ Map<String, List<ArticleDetailInfo>> articleDetailInfoMap = articleDetailInfoList.stream()
|
|
|
+ .collect(Collectors.groupingBy(ArticleDetailInfo::getWxSn));
|
|
|
+
|
|
|
+ for (Article article : articleList) {
|
|
|
+ FirstEndMiniprogramFirstLevelExport item = new FirstEndMiniprogramFirstLevelExport();
|
|
|
+ item.setDateStr(DateUtils.timestampToYMDStr(article.getPublishTimestamp(), "yyyyMMdd"));
|
|
|
+ item.setAccountName(article.getAccountName());
|
|
|
+ item.setTitle(article.getTitle());
|
|
|
+ item.setPosition(article.getItemIndex());
|
|
|
+ item.setViewCount(article.getShowViewCount());
|
|
|
+
|
|
|
+ if (Objects.isNull(item.getViewCount()) || item.getViewCount() == 0) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ List<ArticleDetailInfo> detailInfoList = articleDetailInfoMap.get(article.getWxSn());
|
|
|
+ if (CollectionUtil.isNotEmpty(detailInfoList)) {
|
|
|
+ int totalFirstLevel = 0;
|
|
|
+ int card1FirstLevel = 0;
|
|
|
+ int card1T0Fission = 0;
|
|
|
+ int card2FirstLevel = 0;
|
|
|
+ int card2T0Fission = 0;
|
|
|
+ for (ArticleDetailInfo articleDetailInfo : detailInfoList) {
|
|
|
+ if (Objects.isNull(articleDetailInfo.getFirstLevel())) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if (articleDetailInfo.getVideoIndex() == 1) {
|
|
|
+ card1FirstLevel += articleDetailInfo.getFirstLevel();
|
|
|
+ if (Objects.nonNull(articleDetailInfo.getFission0())) {
|
|
|
+ card1T0Fission += articleDetailInfo.getFission0();
|
|
|
+ }
|
|
|
+ } else if (articleDetailInfo.getVideoIndex() == 2) {
|
|
|
+ card2FirstLevel += articleDetailInfo.getFirstLevel();
|
|
|
+ if (Objects.nonNull(articleDetailInfo.getFission0())) {
|
|
|
+ card2T0Fission += articleDetailInfo.getFission0();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ totalFirstLevel += articleDetailInfo.getFirstLevel();
|
|
|
+ }
|
|
|
+ item.setTotalFirstLevel(totalFirstLevel);
|
|
|
+ item.setCard1FirstLevel(card1FirstLevel);
|
|
|
+ item.setCard1T0Fission(card1T0Fission);
|
|
|
+ item.setCard2FirstLevel(card2FirstLevel);
|
|
|
+ item.setCard2T0Fission(card2T0Fission);
|
|
|
+ if (Objects.nonNull(item.getViewCount()) && item.getViewCount() > 0) {
|
|
|
+ item.setCard1OpenRate(card1FirstLevel * 1.0 / item.getViewCount());
|
|
|
+ item.setCard2OpenRate(card2FirstLevel * 1.0 / item.getViewCount());
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ result.add(item);
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
}
|