소스 검색

test code

wangyunpeng 9 달 전
부모
커밋
eecc07a6fb
1개의 변경된 파일25개의 추가작업 그리고 16개의 파일을 삭제
  1. 25 16
      long-article-recommend-service/src/test/java/com/tzld/longarticle/recommend/server/RecommendTest.java

+ 25 - 16
long-article-recommend-service/src/test/java/com/tzld/longarticle/recommend/server/RecommendTest.java

@@ -274,9 +274,9 @@ public class RecommendTest {
         sortLogList.sort(Comparator.comparing(PublishSortLog::getGhId).thenComparing(PublishSortLog::getDateStr));
         List<Article> articleList = articleRepository.getByGhIdInAndUpdateTimeGreaterThanAndTypeEquals(ghIds, 1725638400L, "9");
         articleList = articleList.stream().filter(o -> o.getItemIndex() == 1).collect(Collectors.toList());
-        Map<String, Article> articleMap = articleList.stream().collect(Collectors.toMap(
+        Map<String, Map<String, Article>> articleMap = articleList.stream().collect(Collectors.groupingBy(Article::getGhId, Collectors.toMap(
                 o -> DateUtils.timestampToYMDStr(o.getUpdateTime(),"yyyyMMdd"), o -> o,
-                (existing, replacement) -> replacement));
+                (existing, replacement) -> replacement)));
         List<AccountAvgInfo> accountAvgInfoList = accountAvgInfoRepository.getAllByGhIdIn(new HashSet<>(ghIds));
         Map<String, Map<String, AccountAvgInfo>> accountAvgInfoMap = accountAvgInfoList.stream()
                 .filter(o -> Objects.equals(o.getPosition(), "1")).collect(Collectors.groupingBy(AccountAvgInfo::getGhId,
@@ -328,7 +328,17 @@ public class RecommendTest {
         titleCell.setCellValue("阅读均值倍数");
 
         // 填充数据
+        String title = "";
         for (PublishSortLog publishSortLog : sortLogList) {
+            Map<String, Article> dateArticleMap = articleMap.get(publishSortLog.getGhId());
+            Article article = dateArticleMap.get(publishSortLog.getDateStr());
+            if (Objects.isNull(article) || !publishSortLog.getTitle().equals(article.getTitle())) {
+                continue;
+            }
+            if (publishSortLog.getTitle().equals(title)) {
+                continue;
+            }
+            title = publishSortLog.getTitle();
             rowNum++;
             Row row = sheet.createRow(rowNum);
             Cell cell = row.createCell(0);
@@ -366,22 +376,21 @@ public class RecommendTest {
             cell.setCellValue(String.format("%.3f", Optional.of(scoreMap.getDoubleValue("ViewCountRateStrategy")).orElse(0.0)));
             cell = row.createCell(16);
             cell.setCellValue(String.format("%.3f", Optional.of(scoreMap.getDoubleValue("HisFissionDeWeightAvgReadSumRateStrategy")).orElse(0.0)));
-            Article article = articleMap.get(publishSortLog.getDateStr());
-            if (Objects.nonNull(article)) {
-                cell = row.createCell(17);
-                cell.setCellValue(article.getShowViewCount());
-                cell = row.createCell(18);
-                Map<String, AccountAvgInfo> map = accountAvgInfoMap.get(article.getGhId());
-                if (Objects.nonNull(map)) {
-                    AccountAvgInfo accountAvgInfo = map.get(DateUtils.timestampToYMDStr(article.getUpdateTime(), "yyyy-MM-dd"));
-                    if (Objects.nonNull(accountAvgInfo)) {
-                        cell.setCellValue(accountAvgInfo.getReadAvg());
-                        cell = row.createCell(19);
-                        cell.setCellValue(String.format("%.3f", article.getShowViewCount() / (double) accountAvgInfo.getReadAvg()));
-                    }
+            cell = row.createCell(17);
+            cell.setCellValue(article.getShowViewCount());
+            cell = row.createCell(18);
+            Map<String, AccountAvgInfo> map = accountAvgInfoMap.get(article.getGhId());
+            if (Objects.nonNull(map)) {
+                List<String> avgMapDateList = new ArrayList<>(map.keySet());
+                String publishDate = DateUtils.findNearestDate(avgMapDateList,
+                        DateUtils.timestampToYMDStr(article.getUpdateTime(), "yyyy-MM-dd"), "yyyy-MM-dd");
+                AccountAvgInfo accountAvgInfo = map.get(publishDate);
+                if (Objects.nonNull(accountAvgInfo)) {
+                    cell.setCellValue(accountAvgInfo.getReadAvg());
+                    cell = row.createCell(19);
+                    cell.setCellValue(String.format("%.3f", article.getShowViewCount() / (double) accountAvgInfo.getReadAvg()));
                 }
             }
-
         }
 
         try (FileOutputStream outputStream = new FileOutputStream("/Users/wangyunpeng/Downloads/example.xlsx")) {