package com.gic.haoban.manage.web.vo.wechatwork;

import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Objects;

/**
 * @Author guojx
 * @Date 2024/5/21 15:56
 */
@Data
public class WechatWorkOverviewVO implements Serializable {

    /**
     * 微信好友总数
     */
    private Integer entwchFdNumTotal;

    /**
     * 已注册微信好友数
     */
    private Integer entwchFdNumMbr;

    /**
     * 未注册微信好友数
     */
    private Integer entwchFdNumNonmbr;

    /**
     * 微信好友总数（去重）
     */
    private Integer newEntwchFdNum;

    /**
     * 已注册微信好友数占比
     */
    private Double entwchFdNumMbrRate;
    /**
     * 未注册微信好友数占比
     */
    private Double entwchFdNumNonmbrRate;

    public Double getEntwchFdNumMbrRate() {
        return rate(getEntwchFdNumMbr(), getEntwchFdNumTotal(), 2);
    }

    public Double getEntwchFdNumNonmbrRate() {
        return rate(getEntwchFdNumNonmbr(), getEntwchFdNumTotal(), 2);
    }

    /**
     * 百分比计算，保留两位小数
     * @param divisor
     * @param dividend
     * @param degree
     * @return
     */
    public static Double rate(Integer divisor,Integer dividend,int degree){
        if( Objects.isNull( divisor ) || Objects.isNull( dividend ) || dividend == 0 ){
            return 0.00;
        }
        //数字会丢失精度，先转字符串，再转bigDecimal
        BigDecimal divisor1 = new BigDecimal(divisor+"");
        BigDecimal dividend1 = new BigDecimal(dividend+"");
        return divisor1.multiply(new BigDecimal("100")).divide(dividend1,degree,BigDecimal.ROUND_HALF_UP ).doubleValue();
    }
}
