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.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

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

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

    private static final long serialVersionUID = 1L;

    /**
     * 顶点编号
     */
    @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 = "精品专区", scale = 2)
    @BigDecimalFormat
    private BigDecimal mainRegAmount = BigDecimal.ZERO;
    /**
     * 甄选专区金额
     */
    private BigDecimal mainUpAmount = BigDecimal.ZERO;
    /**
     * 商城专区金额
     */
    @Excel(name = "北大甄选", scale = 2)
    @BigDecimalFormat
    private BigDecimal mainRepurAmount = BigDecimal.ZERO;
    /**
     * 五折专区金额
     */
    @Excel(name = "五折专区", scale = 2)
    @BigDecimalFormat
    private BigDecimal retailConsumeAmount = BigDecimal.ZERO;
    /**
     * 合计金额
     */
    @Excel(name = "合计金额", scale = 2)
    @BigDecimalFormat
    private BigDecimal totalAmount = BigDecimal.ZERO;

    /**
     * 直推收益
     */
//    @Excel(name = "直推收益", scale = 2)
    @BigDecimalFormat
    private BigDecimal introduceBonus;
    /**
     * 直推收益拨比
     */
//    @Excel(name = "直推收益拨比(%)", scale = 2)
    @BigDecimalFormat
    private BigDecimal introduceBonusRate = BigDecimal.ZERO;
    /**
     * 阶段收益
     */
    @Excel(name = "阶段收益", scale = 2)
    @BigDecimalFormat
    private BigDecimal storeIncome = BigDecimal.ZERO;
    /**
     * 阶段收益拨比
     */
    @Excel(name = "阶段收益拨比(%)", scale = 2)
    @BigDecimalFormat
    private BigDecimal storeIncomeRate = BigDecimal.ZERO;
    /**
     * 精品专区领导奖级差（统计波比使用）
     */
    @Excel(name = "精品级差收益", scale = 2)
    @BigDecimalFormat
    private BigDecimal rangeIncome41 = BigDecimal.ZERO;
    /**
     * 精品专区领导奖级差拨比
     */
    @Excel(name = "精品级差收益拨比(%)", scale = 2)
    @BigDecimalFormat
    private BigDecimal rangeIncome41Rate = BigDecimal.ZERO;
    /**
     * 精品专区平级（统计波比使用）
     */
    @Excel(name = "精品平级收益", scale = 2)
    @BigDecimalFormat
    private BigDecimal sameLevelIncome41 = BigDecimal.ZERO;
    /**
     * 精品专区平级拨比
     */
    @Excel(name = "精品平级收益拨比(%)", scale = 2)
    @BigDecimalFormat
    private BigDecimal sameLevelIncome41Rate = BigDecimal.ZERO;
    /**
     * 见点收益
     */
    @Excel(name = "见点收益", scale = 2)
    @BigDecimalFormat
    private BigDecimal globalPoints = BigDecimal.ZERO;
    /**
     * 见点收益拨比
     */
    @Excel(name = "见点收益拨比(%)", scale = 2)
    @BigDecimalFormat
    private BigDecimal globalPointsRate = BigDecimal.ZERO;
    /**
     * 商城专区领导奖级差（统计波比使用）
     */
    @Excel(name = "商城级差收益", scale = 2)
    @BigDecimalFormat
    private BigDecimal rangeIncome43 = BigDecimal.ZERO;
    /**
     * 商城专区领导奖级差拨比
     */
    @Excel(name = "商城级差收益拨比(%)", scale = 2)
    @BigDecimalFormat
    private BigDecimal rangeIncome43Rate = BigDecimal.ZERO;
    /**
     * 商城专区平级（统计波比使用）
     */
    @Excel(name = "商城平级收益", scale = 2)
    @BigDecimalFormat
    private BigDecimal sameLevelIncome43 = BigDecimal.ZERO;
    /**
     * 商城专区平级拨比
     */
    @Excel(name = "商城平级收益拨比(%)", scale = 2)
    @BigDecimalFormat
    private BigDecimal sameLevelIncome43Rate = BigDecimal.ZERO;
    /**
     * 五折专区领导奖级差（统计波比使用）
     */
    @Excel(name = "五折级差收益", scale = 2)
    @BigDecimalFormat
    private BigDecimal rangeIncome47 = BigDecimal.ZERO;
    /**
     * 五折专区领导奖拨比
     */
    @Excel(name = "五折级差收益拨比(%)", scale = 2)
    @BigDecimalFormat
    private BigDecimal rangeIncome47Rate = BigDecimal.ZERO;

    /**
     * 总拨出金额
     */
    @Excel(name = "总拨出金额", scale = 2)
    @BigDecimalFormat
    private BigDecimal totalBonus = BigDecimal.ZERO;
    /**
     * 总拨出比例（%）
     */
    @Excel(name = "总拨出比例(%)", scale = 2)
    @BigDecimalFormat
    private BigDecimal totalBonusRate = BigDecimal.ZERO;


    /////////////////////////////////////////////////////////////


    private Long pkId;

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

    /**
     * 精品专区PV
     */
    private BigDecimal mainRegPv = BigDecimal.ZERO;
    /**
     * 甄选专区PV
     */
    private BigDecimal mainUpPv = BigDecimal.ZERO;
    /**
     * 商城专区PV
     */
    private BigDecimal mainRepurPv = BigDecimal.ZERO;
    /**
     * 直推收益
     */
    private BigDecimal directIncome = BigDecimal.ZERO;
    /**
     * 直推收益拨比
     */
    private BigDecimal directIncomeRate = BigDecimal.ZERO;
    /**
     * 直推收益合计
     */
    private BigDecimal directIncomeSum = BigDecimal.ZERO;
    /**
     * 直推收益拨比合计
     */
    private BigDecimal directIncomeRateSum = BigDecimal.ZERO;
    /**
     * 阶段收益合计
     */
    private BigDecimal storeIncomeSum = BigDecimal.ZERO;
    /**
     * 阶段收益拨比合计
     */
    private BigDecimal storeIncomeRateSum = BigDecimal.ZERO;
    /**
     * 领导奖级差收益
     */
    private BigDecimal retailRangeIncome = BigDecimal.ZERO;
    /**
     * 领导奖级差收益拨比
     */
    private BigDecimal retailRangeIncomeRate = BigDecimal.ZERO;
    /**
     * 领导奖级差收益合计
     */
    private BigDecimal retailRangeIncomeSum = BigDecimal.ZERO;
    /**
     * 领导奖级差收益拨比合计
     */
    private BigDecimal retailRangeIncomeRateSum = BigDecimal.ZERO;
    /**
     * 领导奖平级收益
     */
    private BigDecimal retailSameLevelIncome = BigDecimal.ZERO;
    /**
     * 领导奖平级收益拨比
     */
    private BigDecimal retailSameLevelIncomeRate = BigDecimal.ZERO;
    /**
     * 领导奖平级收益合计
     */
    private BigDecimal retailSameLevelIncomeSum = BigDecimal.ZERO;
    /**
     * 领导奖平级收益拨比合计
     */
    private BigDecimal retailSameLevelIncomeRateSum = BigDecimal.ZERO;
    /**
     * 见点收益合计
     */
    private BigDecimal globalPointsSum = BigDecimal.ZERO;
    /**
     * 见点收益拨比合计
     */
    private BigDecimal globalPointsRateSum = BigDecimal.ZERO;
    /**
     * 实发收益总计
     */
    @BigDecimalFormat
    private BigDecimal realIncomeTotal = BigDecimal.ZERO;

    private BigDecimal firstPurchaseAll = BigDecimal.ZERO;

    private BigDecimal retailConsumePv = BigDecimal.ZERO;

    /**
     * 注册新增金额（￥）合计
     */
    @BigDecimalFormat
    private BigDecimal mainRegAmountSum = BigDecimal.ZERO;
    /**
     * 升级新增金额（￥）合计
     */
    @BigDecimalFormat
    private BigDecimal mainUpAmountSum = BigDecimal.ZERO;
    /**
     * 首购金额（￥）合计
     */
    @BigDecimalFormat
    private BigDecimal firstPurchaseAllSum = BigDecimal.ZERO;
    /**
     * 全部金额（￥）合计
     */
    @BigDecimalFormat
    private BigDecimal totalAmountSum = BigDecimal.ZERO;
    /**
     * 复购金额（￥）合计
     */
    @BigDecimalFormat
    private BigDecimal mainRepurAmountSum = BigDecimal.ZERO;
    /**
     * 重消新增金额（￥）合计
     */
    @BigDecimalFormat
    private BigDecimal retailConsumeAmountSum = BigDecimal.ZERO;
    /**
     * 总拨出金额（￥）合计
     */
    @BigDecimalFormat
    private BigDecimal totalBonusSum = BigDecimal.ZERO;
    /**
     * 总拨出比例（￥）合计
     */
    @BigDecimalFormat
    private BigDecimal totalBonusRateSum = BigDecimal.ZERO;

    /**
     * 体系ID （目前保存会员ID）
     */
    private Integer pkVertex;
    /**
     * 团队ID
     */
    private Long pkTeamCode;
    /**
     * 国家
     */
    private Integer pkCountry;
    /**
     * 体系集合
     */
    private String pkBdVertexStr;
    /**
     * 体系集合
     */
    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;
    /**
     * 奖金
     */
    @BigDecimalFormat
    private BigDecimal realIncome = BigDecimal.ZERO;

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

}
