数据计算环比等比

开发原因

为方便上级直观看出销售额的直观数据,添加年度、月度比较折线图和柱状图以及同比环比数据

开发方式

  1. 折线图和柱状图采用ECharts

  2. 同比环比的计算在这里插入图片描述

  • 当选择本月数据时,增加上月数量(环比)、去年本月数量(同比)的数据展示;
  • 环比、同比计算规则:
    • 如果本月数据>上月(去年本月)数据,则上升箭头,反之下降箭头
    • 环比、同比计算规则(本月名片数-上月名片数)/上月名片数*100%,取绝对值
    • 同比:(本月名片数-去年本月名片数)/去年本月名片数*100%,取绝对值
    • 微博自然流量为新加的分类,故可能之前的月份没有数据,当分母是0时,同比环比数值用“–”表示
  • 本月环比、同比日期范围:
    • 日期范围:统计1号-昨天日期范围内的数据;若今天为10号,则计算同比环比时,用本月、上月、去年1-9号的名片数;(注意:本月名片数还是用实时的)
    • 每月1号,同比环比数值用“–”表示
    • 若本月比上月(去年本月)天数长,则超过上个月的日期后,上月(去年本月)日期不再变动,即整月数据
    • 若本月比上月(去年本月)天数短,日期一一对应
  • 增加“上月”按钮,点击上月显示上个月的名片数据量,同时展示环比、同比数据情况
    • 同比环比对比范围:上月整月数据、上上月整月数据、去年上月整月数据
  • 按项目、渠道统计和展开都需要添加同比、环比数据

计算比率的方法虽然不是难,但是处理起来还是挺绕的

比率计算工具类

public class PercentUtils {

    /**
     * @param preNum 之前数据
     * @param sufNum 最新数据
     * @return "+50.00%" ; "-75.00%" ; "--"
     */
    public static String percentBigDecimal(int preNum, int sufNum) {
        // 无之前数据,则返回 --
        if (preNum == 0) {
            return "+--";
        }
        BigDecimal result = realCountDecimal(preNum, sufNum);

        if (result.compareTo(BigDecimal.ZERO) >= 0) {
            return "+" + result + "%";
        }
        return result + "%";
    }

    /**
     * 计算比率
     */
    private static BigDecimal realCountDecimal(int preNum, int sufNum) {
        if (preNum == sufNum) {
            return BigDecimal.ZERO;
        }
        return BigDecimal.valueOf((sufNum - preNum) * 100).divide(BigDecimal.valueOf(preNum), 2, BigDecimal.ROUND_HALF_DOWN);
    }

}

这一块处理尽量就是仔细,很多特殊情况要考虑到,
比如1号,比如本月的天数等。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值