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.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 奖金拨比统计
 * 每个团队，每天一条数据
 * 数据来自 订单表奖金明细表 会员奖金-会员奖金汇总表
 */
@Data
public class CuBonusVertexStatisVO implements Serializable {

    private static final long serialVersionUID = 1L;

    private Long pkId;

    /**
     * 日，月，年，全
     */
    private String statisType;

    /**
     * 顶点编号
     */
    @Excel(name = "系统编号")
    private String memberCode;
    /**
     * 顶点名称
     */
    @Excel(name = "系统名称")
    private String memberName;
    /**
     * 创建时间
     */
    @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;

    /**
     * 首购PV拨出比例（%）=首购拨出金额/首购PV值
     */
    @Excel(name = "首购PV拨出比例(%)", scale = 2)
    @BigDecimalFormat
    private BigDecimal mainBonusPvRate = BigDecimal.ZERO;

    /**
     * 复购PV拨出比例（%） = 复购拨出金额/复购PV值
     */
    @Excel(name = "复购PV拨出比例(%)", scale = 2)
    @BigDecimalFormat
    private BigDecimal repurBonusPvRate = BigDecimal.ZERO;

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

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

    /**
     * 特殊注册
     */
    @BigDecimalFormat
    private BigDecimal specialRegisterAmount = BigDecimal.ZERO;
    /**
     * 特殊升级
     */
    @BigDecimalFormat
    private BigDecimal specialUpgradeAmount = BigDecimal.ZERO;
    /**
     * 特殊复购
     */
    @BigDecimalFormat
    private BigDecimal specialRepurchaseAmount = BigDecimal.ZERO;

    /**
     * 虚拟订单金额（￥）
     */
    @BigDecimalFormat
    private BigDecimal fictitiousAmount = BigDecimal.ZERO;

    /**
     * 云代理注册金额
     */
    @BigDecimalFormat
    private BigDecimal agentRegAmount = BigDecimal.ZERO;

    /**
     * 云代理升级新增金额
     */
    @BigDecimalFormat
    private BigDecimal agentUpAmount = BigDecimal.ZERO;

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

    /**
     * 直推收益（￥）
     */
    @Excel(name = "直推收益(￥)", scale = 2)
    @BigDecimalFormat
    private BigDecimal introduceBonus = BigDecimal.ZERO;
    /**
     * 拓展收益（￥）
     */
    @Excel(name = "拓展收益(￥)", scale = 2)
    @BigDecimalFormat
    private BigDecimal orgBonus = BigDecimal.ZERO;
    /**
     * 辅导收益（￥）
     */
    @Excel(name = "辅导收益(￥)", scale = 2)
    @BigDecimalFormat
    private BigDecimal leaderBonus = BigDecimal.ZERO;
    /**
     * 分红收益（￥）
     */
    @BigDecimalFormat
    private BigDecimal shareBonus = BigDecimal.ZERO;
    /**
     * 服务补贴（￥）
     */
    @Excel(name = "服务补贴(￥)", scale = 2)
    @BigDecimalFormat
    private BigDecimal serviceBonus = BigDecimal.ZERO;


    /**
     * 复购新增金额（￥）(复购专区)
     */
    @Excel(name = "复购专区(￥)", scale = 2)
    @BigDecimalFormat
    private BigDecimal mainRepurAmount = BigDecimal.ZERO;
    /**
     * 复购直推收益
     */
    @BigDecimalFormat
    private BigDecimal repurPushIncome = BigDecimal.ZERO;

    /**
     * 直播订单
     */
    @BigDecimalFormat
    private BigDecimal mallAmount = BigDecimal.ZERO;

    /**
     * 合作订单
     */
    @BigDecimalFormat
    private BigDecimal cooperateAmount = BigDecimal.ZERO;

    /**
     * 福利订单
     */
    @BigDecimalFormat
    private BigDecimal welfareOrder = BigDecimal.ZERO;

    /**
     * 海粉注册金额（￥）
     */
    @BigDecimalFormat
    private BigDecimal hifansRegAmount = BigDecimal.ZERO;
    /**
     * 海粉升级（￥）(海粉升级订单)
     */
    @BigDecimalFormat
    private BigDecimal haiFunUpgradeAmount = BigDecimal.ZERO;
    /**
     * 复购总金额 复购订单+海粉订单+海粉复购订单
     */
    @Excel(name = "复购金额(￥)", scale = 2)
    @BigDecimalFormat
    private BigDecimal repurchaseAllAmount = BigDecimal.ZERO;
    /**
     * 复购级差收益（￥）
     */
    @Excel(name = "复购级差收益(￥)", scale = 2)
    @BigDecimalFormat
    private BigDecimal repurRangeBonus = BigDecimal.ZERO;
    /**
     * 复购拓展收益（￥）
     */
    @Excel(name = "复购拓展收益(￥)", scale = 2)
    @BigDecimalFormat
    private BigDecimal repurOrgBonus = BigDecimal.ZERO;
    /**
     * 复购辅导收益（￥）
     */
    @Excel(name = "复购辅导收益(￥)", scale = 2)
    @BigDecimalFormat
    private BigDecimal repurLeaderBonus = BigDecimal.ZERO;

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

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


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

    /**
     * (复购级差+复购拓展 ) *0.8 +海粉直推
     * 复购拨出比例（%） = ((（复购直推收益+复购级差收益+复购拓展收益）*80%)+海粉直推)/复购总奖金(复购订单+海粉订单)
     */
    @Excel(name = "复购拨出比例(%)", scale = 2)
    @BigDecimalFormat
    private BigDecimal repurBonusRate = BigDecimal.ZERO;

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

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

    /**
     * 三方订单业绩（￥）(礼包订单)
     */
    @BigDecimalFormat
    private BigDecimal thirdOrder = BigDecimal.ZERO;

    /**
     * 首购实发小计
     */
    @BigDecimalFormat
    private BigDecimal purRealSubtotal = BigDecimal.ZERO;

    /**
     * 复购实发小计
     */
    @BigDecimalFormat
    private BigDecimal repurRealSubtotal = BigDecimal.ZERO;

    /*
     * 复购券收益小计
     */
    @BigDecimalFormat
    private BigDecimal repurCouponSubtotal = BigDecimal.ZERO;
    /**
     * 实发收益总计
     */
    @BigDecimalFormat
    private BigDecimal realIncomeTotal = BigDecimal.ZERO;

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

    /**
     * 特殊注册新增金额（￥）小计
     */
    @BigDecimalFormat
    private BigDecimal specialRegisterAmountSum = BigDecimal.ZERO;
    /**
     * 特殊升级新增金额（￥）小计
     */
    @BigDecimalFormat
    private BigDecimal specialUpgradeAmountSum = 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 mainRepurAmountSum = BigDecimal.ZERO;
    /**
     * 特殊复购新增金额小计（￥）(复购专区)
     */
    @BigDecimalFormat
    private BigDecimal specialRepurchaseAmountSum = BigDecimal.ZERO;

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

    /**
     * 首购拨出金额合计
     */
    @BigDecimalFormat
    private BigDecimal mainBonusSum = BigDecimal.ZERO;
    /**
     * 小计
     * 首购相关奖金拨比（%)合计
     */
    @BigDecimalFormat
    private BigDecimal mainBonusRateSum = BigDecimal.ZERO;
    /**
     * 小计
     * 首购PV拨出比例（%)合计
     */
    @BigDecimalFormat
    private BigDecimal mainBonusPvRateSum = BigDecimal.ZERO;

    /**
     * 小计 （复购直推收益+复购级差收益+复购拓展收益）*80% +海粉直推
     * (复购级差+复购拓展 ) *0.8 +海粉直推
     */
    @BigDecimalFormat
    private BigDecimal repurBonusSum = BigDecimal.ZERO;

    /**
     * 小计 (复购级差+复购拓展 ) *0.8 +海粉直推
     * 复购拨出比例（%） = ((（复购直推收益+复购级差收益+复购拓展收益）*80%)+海粉直推)/复购总奖金(复购订单+海粉订单)
     */
    @BigDecimalFormat
    private BigDecimal repurBonusRateSum = BigDecimal.ZERO;
    /**
     * 小计 (复购级差+复购拓展 ) *0.8 +海粉直推
     * 复购PV拨出比例（%） = ((（复购直推收益+复购级差收益+复购拓展收益）*80%)+海粉直推)/复购总奖金(复购订单+海粉订单)
     */
    @BigDecimalFormat
    private BigDecimal repurBonusPvRateSum = BigDecimal.ZERO;
    /**
     * 小计
     * (直推收益+拓展收益+辅导收益+分红收益+报单服务费（服务补贴）+复购直推收益+复购级差收益+复购拓展收益)*0.8+海粉直推
     */
    @BigDecimalFormat
    private BigDecimal totalBonusSum = BigDecimal.ZERO;

    /**
     * 小计
     * 总拨出金额(￥)/(复购订单+海粉订单+海粉复购订单+注册+升级+1万礼包(礼包订单)=总金额)
     */
    @BigDecimalFormat
    private BigDecimal totalBonusRateSum = BigDecimal.ZERO;

    /**
     * 礼包金额（￥）(礼包订单)
     */
    @BigDecimalFormat
    private BigDecimal giftOrder = BigDecimal.ZERO;

    /**
     * 实际综合实发金额（￥）
     */
    @BigDecimalFormat
    private BigDecimal totalBonusReal = BigDecimal.ZERO;

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

    /**
     * 注册新增PV MAIN_REG_PV
     */
    private BigDecimal mainRegPv;
    /**
     * 升级新增PV MAIN_UP_PV
     */
    private BigDecimal mainUpPv;
    /**
     * 特殊注册PV SPECIAL_REGISTER_PV
     */
    private BigDecimal specialRegisterPv;
    /**
     * 特殊升级PV SPECIAL_UPGRADE_PV
     */
    private BigDecimal specialUpgradePv;
    /**
     * 虚拟订单PV FICTITIOUS_PV
     */
    private BigDecimal fictitiousPv;


    /**
     * 复购新增PV MAIN_REPUR_PV
     */
    private BigDecimal mainRepurPv;

    /**
     * 特殊复购PV SPECIAL_REPURCHASE_PV
     */
    private BigDecimal specialRepurchasePv;

    /**
     * 嗨粉注册PV HIFANS_REG_PV
     */
    private BigDecimal hifansRegPv;
    /**
     * 海粉升级PV HAI_FUN_UPGRADE_PV
     */
    private BigDecimal haiFunUpgradePv;
    /**
     * 直播订单PV MALL_PV
     */
    private BigDecimal mallPv;
    /**
     * 合作订单PV COOPERATE_PV
     */
    private BigDecimal cooperatePv;
    /**
     * 福利专区PV WELFARE_ORDER_PV
     */
    private BigDecimal welfareOrderPv;


    /**
     * 国家
     */
    private Integer pkCountry;
    /**
     * 币种展示 当地币 本币
     */
    private Integer currency;
    /**
     * 团队集合
     */
    private String pkTeamCodeStr;
    /**
     * 体系集合
     */
    private String pkBdVertexStr;

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

    /**
     * 开始时间
     */
    private String startDate;
    /**
     * 结束时间
     */
    private String endDate;
    /**
     * 汇率 *100
     */
    private BigDecimal perCent = BigDecimal.ZERO;

    /**
     * 汇率
     */
    private BigDecimal rate = BigDecimal.ZERO;


    private Date payTime;
    private String payTimeStr;
    private String modifiedTimeStr;
    private Date modifiedTime;
    private Integer orderStatus;
    private Integer delFlag;
    private Long pkMember;
    private Integer orderType;
    /**
     * 奖金类型
     */
    private Integer bonusType;
    /**
     * 订单PV
     */
    private BigDecimal orderAchieve = BigDecimal.ZERO;
    /**
     * 订单金额
     */
    private BigDecimal orderAmount = BigDecimal.ZERO;
    private List<BigDecimal> orderAchieveList;
    /**
     * 国外奖金
     */
    @BigDecimalFormat
    private BigDecimal realIncome = BigDecimal.ZERO;
    /**
     * 重复消费%
     */
    @BigDecimalFormat
    private BigDecimal backRatio = BigDecimal.ZERO;
    /**
     * 分红比例%
     */
    @BigDecimalFormat
    private BigDecimal dividendRatio = BigDecimal.ZERO;

    /**
     * 按照体系（中国）和国家分组合并订单
     */
    List<CuBonusVertexStatisVO> mergeList;

    List<Integer> orderTypeList;

    /**
     * 本月会员网体表
     */
    private String settleTableName;
    /**
     * 期数
     */
    private int period;

    /**
     * 拓展首购金额
     */
    private BigDecimal calFirAchieve;
    /**
     * 拓展复购金额
     */
    private BigDecimal calRepAchieve;

}
