• 日历热点图数据结构
 public Response queryDashboardPublishArticleStatisticsInfo() {
        // 年初
        int currYear = LocalDate.now().getYear();
        LocalDate firstDayOfYear = LocalDate.of(currYear, 1, 1);
        String firstDayStr = firstDayOfYear.format(Constants.DATE_TIME_FORMATTER);

        // 当日
        String currDayStr = LocalDate.now().format(Constants.DATE_TIME_FORMATTER);

        List<ArticleCountDO> articleCountDOS = articleDao.selectArticleCount(firstDayStr, currDayStr);

        Map<String, Long> map = null;
        if (!CollectionUtils.isEmpty(articleCountDOS)) {
            Map<String, Long> dateCountMap = articleCountDOS.stream().collect(Collectors.toMap(ArticleCountDO::getDate, ArticleCountDO::getCount));

            map = Maps.newLinkedHashMap();

            LocalDate currDate = LocalDate.now();
            for (LocalDate date = firstDayOfYear; date.isBefore(currDate) || date.isEqual(currDate); date.plusDays(1)) {
                String key = date.format(Constants.DATE_TIME_FORMATTER);
                map.put(key, Objects.isNull(dateCountMap.get(key)) ? 0L : dateCountMap.get(key));
                date = date.plusDays(1);
            }
        }

        return Response.success(map);
    }

适配

.left_pannel{
    position: absolute;
    top: 72px;
    /*  动态计算 根据  header 72px 高度决定 左侧高度 */
    height: calc(100vh - 72px);
    width: 380px;
    }