package com.hzs.member.statis.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.hzs.common.core.annotation.BigDecimalFormat;
import com.hzs.common.core.annotation.Excel;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 奖金拨比统计(波比图表)
 * 每个团队，每天一条数据
 * 数据来自 订单表和 CU_MEMBER_BONUS 会员奖金-会员奖金汇总表
 */
@Data
public class CuBonusStatisChartVO {

    private static final long serialVersionUID = 1L;

    private Long pkId;

    /**
     * 期数
     */
    private Long period;
    /**
     * 隶属体系
     */
    @Excel(name = "隶属体系")
    private String vertexName;
    /**
     * 创建时间
     */
    @Excel(name = "业绩时间", dateFormat = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date creationTime;
    /**
     * 隶属团队
     */
    @Excel(name = "隶属团队")
    private String teamName;

    /**
     * 注册新增金额（￥）
     */
    @BigDecimalFormat
    @Excel(name = "注册专区(￥)", scale = 2)
    private BigDecimal mainRegAmount = BigDecimal.ZERO;

    /**
     * 升级新增金额（￥）
     */
    @BigDecimalFormat
    @Excel(name = "升级专区(￥)", scale = 2)
    private BigDecimal mainUpAmount = BigDecimal.ZERO;

    /**
     * 特殊注册
     */
    private BigDecimal specialRegisterAmount;
    /**
     * 特殊升级
     */
    private BigDecimal specialUpgradeAmount;

    /**
     * 云代注册金额
     */
    @BigDecimalFormat
    @Excel(name = "云代注册(￥)", scale = 2)
    private BigDecimal agentRegAmount = BigDecimal.ZERO;

    /**
     * 云代升级新增金额
     */
    @BigDecimalFormat
    @Excel(name = "云代升级(￥)", scale = 2)
    private BigDecimal agentUpAmount = BigDecimal.ZERO;

    /**
     * 首购总金额（￥） 注册金额+升级金额+特殊注册+特殊升级（1万礼包）
     */
    @BigDecimalFormat
    @Excel(name = "首购金额(￥)", scale = 2)
    private BigDecimal firstPurchaseAll = BigDecimal.ZERO;

    /**
     * 直推收益（￥）
     */
    @BigDecimalFormat
    @Excel(name = "直推收益(￥)", scale = 2)
    private BigDecimal introduceBonus = BigDecimal.ZERO;
    /**
     * 直推收益拨比（%） 直推收益/首购金额
     */
    @BigDecimalFormat
    @Excel(name = "直推收益拨比(%)", scale = 2)
    private BigDecimal introduceBonusRate = BigDecimal.ZERO;

    /**
     * 直推收益拨比小计（%） 直推收益/首购金额
     */
    @BigDecimalFormat
    private BigDecimal introduceBonusRateSum = BigDecimal.ZERO;

    /**
     * 拓展收益（￥）
     */
    @BigDecimalFormat
    @Excel(name = "拓展收益(￥)", scale = 2)
    private BigDecimal orgBonus = BigDecimal.ZERO;
    /**
     * 拓展收益拨比（%）
     */
    @BigDecimalFormat
    @Excel(name = "拓展收益拨比(%)", scale = 2)
    private BigDecimal orgBonusRate = BigDecimal.ZERO;
    /**
     * 拓展收益拨比小计（%）
     */
    @BigDecimalFormat
    private BigDecimal orgBonusRateSum = BigDecimal.ZERO;

    /**
     * 辅导收益（￥）
     */
    @BigDecimalFormat
    @Excel(name = "辅导收益(￥)", scale = 2)
    private BigDecimal leaderBonus = BigDecimal.ZERO;
    /**
     * 辅导收益拨比（%）
     */
    @BigDecimalFormat
    @Excel(name = "辅导收益(%)", scale = 2)
    private BigDecimal leaderBonusRate = BigDecimal.ZERO;
    /**
     * 辅导收益拨比小计（%）
     */
    @BigDecimalFormat
    private BigDecimal leaderBonusRateSum = BigDecimal.ZERO;

    /**
     * 分红收益（￥）
     */
    @BigDecimalFormat
    @Excel(name = "分红收益(￥)", scale = 2)
    private BigDecimal shareBonus = BigDecimal.ZERO;
    /**
     * 分红收益拨比（%）
     */
    @BigDecimalFormat
    @Excel(name = "分红收益拨比(%)", scale = 2)
    private BigDecimal shareBonusRate = BigDecimal.ZERO;
    /**
     * 分红收益拨比小计（%）
     */
    @BigDecimalFormat
    private BigDecimal shareBonusRateSum = BigDecimal.ZERO;

    /**
     * 服务补贴（￥）
     */
    @BigDecimalFormat
    @Excel(name = "服务补贴(￥)", scale = 2)
    private BigDecimal serviceBonus = BigDecimal.ZERO;
    /**
     * 服务补贴拨比（%）
     */
    @BigDecimalFormat
    @Excel(name = "服务补贴拨比(%)", scale = 2)
    private BigDecimal serviceBonusRate = BigDecimal.ZERO;
    /**
     * 服务补贴拨比小计（%）
     */
    @BigDecimalFormat
    private BigDecimal serviceBonusRateSum = BigDecimal.ZERO;
    /**
     * 云代直推收益（￥）
     */
    @BigDecimalFormat
    @Excel(name = "云代直推", scale = 2)
    private BigDecimal agentIntroduceBonus = BigDecimal.ZERO;
    /**
     * 云代直推收益拨比
     */
    @BigDecimalFormat
    @Excel(name = "云代直推拨比(%)", scale = 2)
    private BigDecimal agentIntroduceBonusRate = BigDecimal.ZERO;
    /**
     * 云代直推拨比小计
     */
    @BigDecimalFormat
    private BigDecimal agentIntroduceBonusRateSum = BigDecimal.ZERO;
    /**
     * 云代首购 = 云代注册+云代升级
     */
    @BigDecimalFormat
    @Excel(name = "云代首购(￥)", scale = 2)
    private BigDecimal agentFirstAmount = BigDecimal.ZERO;
    /**
     * 云代首购 = 云代注册+云代升级
     * 云代直推/云代首购
     */
    @BigDecimalFormat
    @Excel(name = "云代首购拨比(%)", scale = 2)
    private BigDecimal agentFirstAmountRate = BigDecimal.ZERO;
    /**
     * 云代首购拨比小计
     */
    @BigDecimalFormat
    private BigDecimal agentFirstAmountRateSum = BigDecimal.ZERO;
    /**
     * 云代复购新增
     */
    @BigDecimalFormat
    @Excel(name = "云代复购(￥)", scale = 2)
    private BigDecimal agentRepurAmount = BigDecimal.ZERO;
    /**
     * 云代复购/(云代注册+升级+复购)
     */
    @BigDecimalFormat
    @Excel(name = "云代复购拨比(%)", scale = 2)
    private BigDecimal agentRepurAmountRate = BigDecimal.ZERO;
    /**
     * 云代复购拨比小计 (%)
     */
    @BigDecimalFormat
    private BigDecimal agentRepurAmountRateSum = BigDecimal.ZERO;
    /**
     * 复购新增金额（￥）(复购专区)
     */
    @BigDecimalFormat
    @Excel(name = "复购专区(￥)", scale = 2)
    private BigDecimal mainRepurAmount = BigDecimal.ZERO;

    /**
     * 直播订单
     */
    private BigDecimal mallAmount;

    /**
     * 合作订单
     */
    private BigDecimal cooperateAmount;

    /**
     * 特殊复购
     */
    private BigDecimal specialRepurchaseAmount;

    /**
     * 复购总金额 复购订单+直播订单+合作订单+特殊复购订单
     */
    @BigDecimalFormat
    @Excel(name = "复购金额(￥)", scale = 2)
    private BigDecimal repurchaseAllAmount = BigDecimal.ZERO;
    /**
     * 复购级差收益（￥）
     */
    @BigDecimalFormat
    @Excel(name = "复购级差收益(￥)", scale = 2)
    private BigDecimal repurRangeBonus = BigDecimal.ZERO;
    /**
     * 复购级差拨比（￥）/ 复购金额
     */
    @BigDecimalFormat
    @Excel(name = "复购级差拨比(%)", scale = 2)
    private BigDecimal repurRangeBonusRate = BigDecimal.ZERO;
    /**
     * 复购级差拨比小计(%)
     */
    @BigDecimalFormat
    private BigDecimal repurRangeBonusRateSum = BigDecimal.ZERO;
    /**
     * 复购拓展收益（￥）
     */
    @BigDecimalFormat
    @Excel(name = "复购拓展收益(￥)", scale = 2)
    private BigDecimal repurOrgBonus = BigDecimal.ZERO;
    /**
     * 复购拓展拨比（￥） / 复购金额
     */
    @BigDecimalFormat
    @Excel(name = "复购拓展拨比(%)", scale = 2)
    private BigDecimal repurOrgBonusRate = BigDecimal.ZERO;
    /**
     * 复购拓展拨比小计(%)
     */
    @BigDecimalFormat
    private BigDecimal repurOrgBonusRateSum = BigDecimal.ZERO;

    /**
     * (直推收益+拓展收益+辅导收益+分红收益+报单服务费（服务补贴）)*0.8=实际拨出之和。
     */
    @BigDecimalFormat
    @Excel(name = "首购拨出金额(￥)", scale = 2)
    private BigDecimal mainBonus = BigDecimal.ZERO;
    /**
     * 首购拨出金额 小计
     */
    @BigDecimalFormat
    private BigDecimal mainBonusSum = BigDecimal.ZERO;
    /**
     * 首购相关奖金拨比（%）=首购总奖金（推荐奖净值+拓展奖净值+领导奖净值+服务费净值+分红奖净值）/首购总金额
     */
    @BigDecimalFormat
    @Excel(name = "首购拨出比例(%)", scale = 2)
    private BigDecimal mainBonusRate = BigDecimal.ZERO;

    /**
     * 复购拨出金额
     * （复购直推收益+复购级差收益+复购拓展收益）*80% +海粉直推
     * (复购级差+复购拓展 ) *0.8 +海粉直推
     */
    @BigDecimalFormat
    @Excel(name = "复购拨出金额(￥)", scale = 2)
    private BigDecimal repurBonus = BigDecimal.ZERO;

    /**
     * (复购级差+复购拓展 ) *0.8 +海粉直推
     * 复购拨出比例（%） = ((（复购直推收益+复购级差收益+复购拓展收益）*80%)+海粉直推)/复购总奖金(复购订单+海粉订单)
     */
    @BigDecimalFormat
    @Excel(name = "复购拨出比例(%)", scale = 2)
    private BigDecimal repurBonusRate = BigDecimal.ZERO;
    /**
     * (直推收益+拓展收益+辅导收益+分红收益+报单服务费（服务补贴）+复购直推收益+复购级差收益+复购拓展收益)*0.8+海粉直推
     */
    @BigDecimalFormat
    @Excel(name = "总拨出金额(￥)", scale = 2)
    private BigDecimal totalBonus = BigDecimal.ZERO;

    /**
     * 综合（拨出）实发拨比（%）=(直推收益+拓展收益+辅导收益+分红收益+报单服务费(服务补贴))*80%
     * =首购拨出之和+
     * （复购直推收益+复购级差收益+复购拓展收益）*80%=X+海粉直推=实际大盘拨出金额/(总金额)(注册+升级+复购+海粉+礼包)订单
     */
    @BigDecimalFormat
    @Excel(name = "总拨出比例(%)", scale = 2)
    private BigDecimal totalBonusRate = BigDecimal.ZERO;

    /**
     * 首购实发小计
     */
    private BigDecimal purRealSubtotal;

    /**
     * 复购实发小计
     */
    private BigDecimal repurRealSubtotal;

    /**
     * 云代实发小计
     */
    private BigDecimal cloudRealSubtotal;

    /**
     * 复购券收益小计
     */
    private BigDecimal repurCouponSubtotal;
    /**
     * 实发收益总计
     */
    private BigDecimal realIncomeTotal;

    /**
     * 注册新增金额（￥）小计
     */
    @BigDecimalFormat
    private BigDecimal mainRegAmountSum = BigDecimal.ZERO;

    /**
     * 升级新增金额（￥）小计
     */
    @BigDecimalFormat
    private BigDecimal mainUpAmountSum = BigDecimal.ZERO;

    /**
     * 云代注册金额小计
     */
    @BigDecimalFormat
    private BigDecimal agentRegAmountSum = BigDecimal.ZERO;

    /**
     * 云代升级新增金额小计
     */
    @BigDecimalFormat
    private BigDecimal agentUpAmountSum = BigDecimal.ZERO;

    /**
     * 首购总金额（￥）小计 注册金额+升级金额+礼包订单（1万礼包）
     */
    @BigDecimalFormat
    private BigDecimal firstPurchaseAllSum = BigDecimal.ZERO;

    /**
     * 直推收益（￥）小计
     */
    @BigDecimalFormat
    private BigDecimal introduceBonusSum = BigDecimal.ZERO;
    /**
     * 拓展收益（￥）小计
     */
    @BigDecimalFormat
    private BigDecimal orgBonusSum = BigDecimal.ZERO;
    /**
     * 辅导收益（￥）小计
     */
    @BigDecimalFormat
    private BigDecimal leaderBonusSum = BigDecimal.ZERO;
    /**
     * 分红收益（￥）小计
     */
    @BigDecimalFormat
    private BigDecimal shareBonusSum = BigDecimal.ZERO;
    /**
     * 服务补贴（￥）小计
     */
    @BigDecimalFormat
    private BigDecimal serviceBonusSum = BigDecimal.ZERO;
    /**
     * 云代直推收益（￥）小计
     */
    @BigDecimalFormat
    private BigDecimal agentIntroduceBonusSum = BigDecimal.ZERO;
    /**
     * 首购奖金拨比小计（%）
     */
    @BigDecimalFormat
    private BigDecimal mainBonusRateSum = BigDecimal.ZERO;
    /**
     * 云代首购小计 = 云代注册+云代升级
     */
    @BigDecimalFormat
    private BigDecimal agentFirstAmountSum = BigDecimal.ZERO;
    /**
     * 云代复购小计
     */
    @BigDecimalFormat
    private BigDecimal agentRepurAmountSum = BigDecimal.ZERO;

    /**
     * 复购总金额小计 复购订单+海粉订单+海粉复购订单
     */
    @BigDecimalFormat
    private BigDecimal repurchaseAllAmountSum = BigDecimal.ZERO;
    /**
     * 复购级差收益（￥）小计
     */
    @BigDecimalFormat
    private BigDecimal repurRangeBonusSum = BigDecimal.ZERO;
    /**
     * 复购拓展收益（￥）小计
     */
    @BigDecimalFormat
    private BigDecimal repurOrgBonusSum = BigDecimal.ZERO;

    /**
     * 复购专区小计（￥）
     */
    @BigDecimalFormat
    private BigDecimal mainRepurAmountSum = BigDecimal.ZERO;
    /**
     * 海粉专区小计（￥）(海粉注册)
     */
    @BigDecimalFormat
    private BigDecimal hifansRegAmountSum = BigDecimal.ZERO;

    /**
     * 复购拨出金额小计
     */
    @BigDecimalFormat
    private BigDecimal repurBonusSum = BigDecimal.ZERO;

    /**
     * 复购拨比小计（%）
     */
    @BigDecimalFormat
    private BigDecimal repurBonusRateSum = BigDecimal.ZERO;
    /**
     * 总拨出金额小计
     */
    @BigDecimalFormat
    private BigDecimal totalBonusSum = BigDecimal.ZERO;

    /**
     * 总拨出比例小计(%)
     */
    @BigDecimalFormat
    private BigDecimal totalBonusRateSum = BigDecimal.ZERO;


    /**
     * 海粉直推收益（海粉推荐收益）（%）
     */
    private BigDecimal hiFunIncome = BigDecimal.ZERO;

    /**
     * 体系ID 统计体系，1原体系，2六合体系,3六合二，101非洲体系
     */
    private Integer pkVertex;
    /**
     * 团队ID
     */
    private Long pkTeamCode;


    /**
     * 国家
     */
    private Integer pkCountry;

    /**
     * 团队集合
     */
    private String pkTeamCodeStr;
    /**
     * 体系集合
     */
    private String pkBdVertexStr;

    /**
     * 团队集合
     */
    private List<Integer> pkTeamCodeList;
    /**
     * 体系集合
     */
    private List<Integer> pkBdVertexList;

    /**
     * 开始时间
     */
    private String startDate;
    /**
     * 结束时间
     */
    private String endDate;

    /**
     * 海粉总金额  海粉订单（注册）+ 海粉升级
     */

    /**
     * 汇率
     */
    private BigDecimal rate;
    /**
     * 汇率 *100
     */
    private BigDecimal perCent;

    private String payTimeStr;
    private String modifiedTimeStr;
    private Date modifiedTime;
    private Integer orderStatus;
    private Integer delFlag;
    private Long pkMember;
    private Integer orderType;
    private BigDecimal orderAchieve = BigDecimal.ONE;
    /**
     * 分红比例%
     */
    private BigDecimal dividendRatio = BigDecimal.ZERO;
    /**
     * 重复消费%
     */
    private BigDecimal backRatio;

}
