package com.hzs.member.base.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.hzs.common.core.annotation.Excel;
import com.hzs.common.core.annotation.Transaction;
import com.hzs.common.core.constant.EnumsPrefixConstants;
import com.hzs.common.core.web.domain.BaseApprovalEntity;
import com.hzs.member.account.dto.MemberAmountDTO;
import lombok.Data;

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

/**
 * <p>
 * 注水业绩记录表VO
 * </p>
 *
 * @author hzs
 * @since 2022-08-22
 */
@Data
public class CuMemberAchieveLogVO extends BaseApprovalEntity {

    private static final long serialVersionUID = 1L;

    private Integer pkId;

    /**
     * 会员主键
     */
    private Long pkMember;
    /**
     * 会员编号
     */
    @Excel(name = "会员编号")
    private String memberCode;

    /**
     * 会员编号集合
     */
    private List<String> memberCodeList;
    /**
     * 注水业绩枚举列表
     */
    private List<Integer> achieveList;

    /**
     * 会员姓名
     */
    @Excel(name = "会员姓名")
    private String memberName;

    /**
     * 真实奖衔
     */
    @Transaction(transactionKey = EnumsPrefixConstants.KEY_AWARD)
    private Integer awards;
    @Excel(name = "真实奖衔")
    private String awardsVal;

    /**
     * 体系名称
     */
    @Excel(name = "隶属体系")
    private String vertexName;
    /**
     * 团队名称
     */
    @Excel(name = "隶属团队")
    private String teamName;

    /**
     * 注水方式 EInfusingWaterType 1 增加 2减少 3 最终
     */
    @Transaction(transactionKey = EnumsPrefixConstants.INFUSING_WATER_TYPE)
    private Integer infusingWaterType;
    @Excel(name = "注水方式")
    private String infusingWaterTypeVal;
    /**
     * 变更后左区真实业绩
     */
    @Excel(name = "变更后左区真实业绩(PV)")
    private BigDecimal asumRealModifyPv=BigDecimal.ZERO;
    /**
     * 变更后右区真实业绩
     */
    @Excel(name = "变更后右区真实业绩(PV)")
    private BigDecimal bsumRealModifyPv=BigDecimal.ZERO;
    /**
     * 变更后左区首购业绩
     */
    @Excel(name = "变更后左区首购业绩(PV)")
    private BigDecimal afirstModifyPv=BigDecimal.ZERO;
    /**
     * 变更后右区首购业绩
     */
    @Excel(name = "变更后右区首购业绩(PV)")
    private BigDecimal bfirstModifyPv=BigDecimal.ZERO;
    /**
     * 变更后左区首购结余
     */
    @Excel(name = "变更后左区首购结余")
    private BigDecimal repAFirstModifyBalance=BigDecimal.ZERO;
    /**
     * 变更后右区首购结余
     */
    @Excel(name = "变更后右区首购结余")
    private BigDecimal repBFirstModifyBalance=BigDecimal.ZERO;
    /**
     * 变更后左区复购业绩
     */
    @Excel(name = "变更后左区复购业绩(PV)")
    private BigDecimal repAModifySumPv=BigDecimal.ZERO;
    /**
     * 变更后右区复购业绩
     */
    @Excel(name = "变更后右区复购业绩(PV)")
    private BigDecimal repBModifySumPv=BigDecimal.ZERO;
    /**
     * 变更后左区复购结余
     */
    @Excel(name = "变更后左区复购结余")
    private BigDecimal repAModifyBalance=BigDecimal.ZERO;
    /**
     * 变更后右区复购结余
     */
    @Excel(name = "变更后右区复购结余")
    private BigDecimal repBModifyBalance=BigDecimal.ZERO;
    /**
     * 变更前左区真实业绩
     */
    @Excel(name = "变更前左区真实业绩(PV)")
    private BigDecimal asumRealPv;


    /**
     * 变更前右区真实业绩
     */
    @Excel(name = "变更前右区真实业绩(PV)")
    private BigDecimal bsumRealPv;
    /**
     * 变更前左区首购业绩
     */
    @Excel(name = "变更前左区首购业绩(PV)")
    private BigDecimal asumPv;


    /**
     * 变更前右区首购业绩
     */
    @Excel(name = "变更前右区首购业绩(PV)")
    private BigDecimal bsumPv;

    /**
     * 变更前左区首购结余
     */
    @Excel(name = "变更前左区首购结余")
    private BigDecimal abalance;

    /**
     * 变更前右区首购结余
     */
    @Excel(name = "变更前右区首购结余")
    private BigDecimal bbalance;
    /**
     * 变更前左区复购业绩
     */
    @Excel(name = "变更前左区复购业绩(PV)")
    private BigDecimal repASumPv;


    /**
     * 变更前右区复购业绩
     */
    @Excel(name = "变更前右区复购业绩(PV)")
    private BigDecimal repBSumPv;

    /**
     * 变更前左区复购结余
     */
    @Excel(name = "变更前左区复购结余")
    private BigDecimal repABalance;


    /**
     * 变更前右区复购结余
     */
    @Excel(name = "变更前右区复购结余")
    private BigDecimal repBBalance;

    /**
     * 结算日期 注水日期（年-月-日）
     */
    @Excel(name = "注水日期",dateFormat = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date settleDate;
    private String settleDateStr;

    /**
     * 到期日期
     */
    @Excel(name = "结束日期",dateFormat = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date dueDate;
    private String dueDateStr;
    /**
     * 注水状态 EActivityStatus 0 未开始 1 进行中 2 已结束
     */
    @Transaction(transactionKey = EnumsPrefixConstants.ACTIVITY_STATUS)
    private Integer waterStatus;
    @Excel(name = "注水状态")
    private String waterStatusVal;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date creationTime;
    /**
     * 注水开始日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date startDate;
    /**
     * 注水结束日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date endtDate;

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

    /**
     * 创建人ID
     */
    private Long pkCreator;


    /**
     * 注水业绩记录
     */
    private List<CuMemberAchieveLogVO> cmalvList;


    /**
     * 注水备注
     */
    private String remarks;

    /**
     * 业务单号
     */
    private String businessNo;
    /**
     * 审批业务类型 来源于枚举  EApprovalBusiness
     */
    private Integer editType;

    /**
     * 审核状态  2  待审核  4 已驳回   5 已完成(审核成功)  枚举 ： EApproveStatus
     */
    private Integer approveStatus;

    /**
     * 审核次数
     */
    private Integer approveNumber;

    /**
     * 流程类型（1 免签呈 2免付费 3免签呈+免付费 4 需要签呈需要付费）
     */
    private Integer processType;
    /**
     * 签呈类型文件类型 （ESignType）
     */
    private Integer signType;

    /**
     * 费用
     */
    private BigDecimal cost;
    /**
     * 扣款币种类型
     */
    private Integer pkAccount;
    /**
     * 扣款币种类型
     */
    @Transaction(transactionKey = EnumsPrefixConstants.KEY_ACC)
    private Integer pkAccountKey;
    /**
     * 扣款币种类型
     */
    private String pkAccountKeyVal;
    /**
     * 会员手续费
     */
    List<MemberAmountDTO> memberAmountDTOList;
    /**
     * 错误信息
     */
    private String errorMsg;
    /**
     * 会员ID列表 --提交审核必传
     */
    private Set<Long> pkMemberList;
    /**
     * 期间 期数
     */
    private Integer period;

    /**
     * 结束日期开始日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date staDueDate;
    /**
     * 结束日期结束日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date endDueDate;



    /**
     * 修改时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date modifiedTime;

    /**
     * 手机
     */
    private String phone;

    private Integer pkAwards;
    private Integer pkTeamCode;
    private Integer pkVertex;

    /**
     * 会员集合
     */
    private List<Long> pkMemberParamList;
    private String tableName;






}
