package com.hzs.member.base.vo;

import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
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 com.hzs.system.sys.dto.LoginUser;
import lombok.Data;
import lombok.EqualsAndHashCode;

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

/**
 * <p>
 * 真实奖衔控制VO
 * </p>
 *
 * @author hzs
 * @since 2023-04-07
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class CuAwardsControlVO extends BaseApprovalEntity {

    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    private Long pkId;
    /**
     * 会员主键
     */
    private Long pkMember;
    /**
     * 会员编号
     */
    @Excel(name = "会员编号", scale = 1)
    private String memberCode;
    /**
     * 会员编号集合
     */
    private List<String> memberCodeList;

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


    /**
     * 真实奖衔
     */
    private Long realAwards;
    /**
     * 真实奖衔
     */
    @Transaction(transactionKey = EnumsPrefixConstants.KEY_AWARD)
    private Integer realAwardsKey;
    /**
     * 隶属体系
     */
    @Excel(name = "隶属体系", scale = 3)
    private String  vertexName;
    /**
     * 真实奖衔
     */
    @Excel(name = "真实奖衔", scale = 4)
    private String realAwardsKeyVal;

    /**
     * 辅导奖衔
     */
    private Long mentoringAward;
    /**
     * 辅导奖衔
     */
    @Transaction(transactionKey = EnumsPrefixConstants.KEY_AWARD)
    private Integer mentoringAwardKey;
    /**
     * 辅导奖衔
     */
    @Excel(name = "辅导奖衔", scale = 5)
    private String mentoringAwardKeyVal;

    /**
     * 分红奖衔
     */
    private Long dividendAward;
    /**
     * 分红奖衔
     */
    @Transaction(transactionKey = EnumsPrefixConstants.KEY_AWARD)
    private Integer dividendAwardKey;
    /**
     * 分红奖衔
     */
    @Excel(name = "分红奖衔", scale = 6)
    private String dividendAwardKeyVal;

    /**
     * 极差奖衔
     */
    private Long extremeAwards;
    /**
     * 极差奖衔
     */
    @Transaction(transactionKey = EnumsPrefixConstants.KEY_AWARD)
    private Integer extremeAwardsKey;
    /**
     * 极差奖衔
     */
    @Excel(name = "级差奖衔", scale = 7)
    private String extremeAwardsKeyVal;

    /**
     * 复购考核奖衔 REPLY_EXAM_AWARD
     */
    private Long replyExamAward;
    /**
     * 复购考核奖衔
     */
    @Transaction(transactionKey = EnumsPrefixConstants.KEY_AWARD)
    private Integer replyExamAwardKey;
    /**
     * 复购考核奖衔
     */
    @Excel(name = "复购考核奖衔", scale = 8)
    private String replyExamAwardKeyVal;

    /**
     * 分红考核奖衔 DIVVY_EXAM_AWARDS
     */
    private Long divvyExamAwards;
    /**
     * 分红考核奖衔 DIVVY_EXAM_AWARDS
     */
    @Transaction(transactionKey = EnumsPrefixConstants.KEY_AWARD)
    private Integer divvyExamAwardsKey;
    /**
     * 分红考核奖衔 DIVVY_EXAM_AWARDS
     */
    @Excel(name = "分红考核奖衔", scale = 9)
    private String divvyExamAwardsKeyVal;

    /**
     * 创建人ID
     */
    @TableField("PK_CREATOR")
    private Long pkCreator;

    /**
     * 创建时间
     */
    @Excel(name = "创建时间",dateFormat = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date creationTime;

    /**
     * 修改人ID
     */
    private Long pkModified;

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

    /**
     * 体系ID
     */
    private Integer pkVertex;

    /**
     * 逻辑删除 (0=未删除，1已删除)
     */
    @JsonIgnore
    private Integer delFlag;

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

    /**
     * 业务单号
     */
    private String businessNo;
    /**
     * 签呈流程类型（1 免签呈 2免付费 3免签呈+免付费 4 需要签呈需要付费）
     */
    private Integer processType;

    /**
     * 审核状态  2  待审核  4 已驳回   5 已完成(审核成功)  枚举 ： EApproveStatus
     */
    private Integer approveStatus;
    /**
     * 错误信息
     */
    private String errorMsg;
    /**
     * 当前登录用户信息
     */
    private LoginUser loginUser;

    /**
     * 真实奖衔控制集合（发起签呈）
     */
    @Transaction
    private List<CuAwardsControlVO> updateParentParamList;
    /**
     * 办理次数
     */
    private Integer changeNumber;
    /**
     * 业务涉及会员ID列表 -- 提交审核必传
     */
    private Set<Long> pkMemberList;
    /**
     * 0新增 1 修改 2删除
     *
     */
    private Integer addAwards;
    /**
     * 费用
     */
    private BigDecimal cost;
    /**
     * 扣款币种类型
     */
    private Integer pkAccount;
    /**
     * 扣款币种翻译key
     */
    @Transaction(transactionKey = EnumsPrefixConstants.KEY_ACC)
    private Integer pkAccountKey;
    /**
     * 扣款币种翻译
     */
    private String pkAccountKeyVal;
    /**
     * 会员手续费
     */
    List<MemberAmountDTO> memberAmountDTOList;
    /**
     * 新值
     */
    @TableField("NEW_VALUE")
    private String newValue;

    /**
     * 创建时间开始时间
     */
    private String startDate;

    /**
     * 创建时间结束时间
     */
    private String endDate;

}
