package com.ssm.manage.entity;

import com.alibaba.excel.annotation.ExcelProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import javax.persistence.*;

@Table(name = "member_init")
public class MemberInit implements Serializable {
    @Column(name = "give_type")
    @Getter
    @Setter
    private Integer giveType;
    @Getter@Setter
    private List<MemberInitStaff> memberInitStaffList;
    @Getter@Setter
    private List<Salesman> salesmanList;
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Getter
    @Setter
    @Transient
    private Date startTime;
//
//    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
//    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
//    @Getter@Setter
//    @Transient
//    private Date endTime;
    /**
     * 主键ID
     */
    @Id
    private Long id;

    /**
     * 初始化单据号
     */
    @Column(name = "init_num")
    private String initNum;

    /**
     * 门店编码
     */
    @Column(name = "store_id")
    private Long storeId;

    /**
     * 门店名称
     */
    @Column(name = "store_name")
    private String storeName;

    /**
     * 会员ID
     */
    @Column(name = "member_id")
    private Long memberId;

    /**
     * 会员编码
     */
    @Column(name = "member_num")
    @ExcelProperty("会员编码")
    private String memberNum;

    /**
     * 会员名称
     */
    @Column(name = "member_name")
    @ExcelProperty("会员名称*")
    private String memberName;

    /**
     * 性别：1：男；0：女
     */
    @ExcelProperty("性别")
    private Integer sex;

    /**
     * 状态 1:启用/0:停用2/启用中
     */
    @Column(name = "member_state")
    private Integer memberState;

    /**
     * 手机
     */
    @Column(name = "mobile_phone")
    @ExcelProperty("手机")
    private String mobilePhone;

    /**
     * 交易ID
     */
    @Column(name = "trade_id")
    private Long tradeId;

    /**
     * 交易名称
     */
    @Column(name = "trade_name")
    @ExcelProperty("交易名称*")
    private String tradeName;

    /**
     * 标准金额
     */
    @Column(name = "standard_money")
    @ExcelProperty("标准金额")
    private BigDecimal standardMoney;

    /**
     * 标准次数
     */
    @Column(name = "standard_count")
    @ExcelProperty("标准次数")
    private Integer standardCount;

    /**
     * 最近消费日期
     */
    @Column(name = "last_consume_time")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date lastConsumeTime;

    /**
     * 单据号
     */
    @Column(name = "doc_num")
    @ExcelProperty("单据号")
    private String docNum;

    /**
     * 单据交易时间
     */
    @Column(name = "doc_date")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @ExcelProperty("单据交易时间")
    private Date docDate;

    /**
     * 类别 0:充值1:疗程
     */
    @Column(name = "card_type")
    @ExcelProperty("账户类别")
    private Integer cardType;

    /**
     * 0:锁定/1:正常
     */
    @Column(name = "card_state")
    @ExcelProperty("账户状态")
    private Integer cardState;

    /**
     * 账户剩余金额
     */
    @Column(name = "rest_money")
    @ExcelProperty("账户剩余金额")
    private BigDecimal restMoney;

    /**
     * 开卡剩余次数
     */
    @Column(name = "rest_count")
    @ExcelProperty("账户剩余次数")
    private Integer restCount;

    /**
     * 赠送卡赠送金额
     */
    @Column(name = "card_gift_money")
    @ExcelProperty("账户赠送金额")
    private BigDecimal cardGiftMoney;

    /**
     * 享受优惠
     */
    private BigDecimal discount;

    /**
     * 账户可用金额
     */
    @Column(name = "card_consume_money")
    @ExcelProperty("账户可用金额")
    private BigDecimal cardConsumeMoney;

    /**
     * 赠送卡可用金额
     */
    @Column(name = "gift_consume_money")
    @ExcelProperty("赠送可用金额")
    private BigDecimal giftConsumeMoney;

    /**
     * 开卡可用次数
     */
    @Column(name = "course_consume_count")
    @ExcelProperty("账户可用次数")
    private Integer courseConsumeCount;

    /**
     * 欠款单交易欠款金额
     */
    @Column(name = "debt_money")
    @ExcelProperty("欠款金额")
    private BigDecimal debtMoney;

    /**
     * 充值提成比率
     */
    @Column(name = "type_ratio")
    private BigDecimal typeRatio;

    /**
     * 账户到期时间
     */
    @Column(name = "end_time")
    @ExcelProperty("账户到期时间")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date endTime;

    /**
     * 账户ID
     */
    @Column(name = "account_id")
    private Long accountId;

    /**
     * 初始化记录状态0:封存删除1:插入2:异常3:正常4:已初始化
     */
    @Column(name = "init_state")
    private Integer initState;

    /**
     * 最后修改人ID
     */
    @Column(name = "modify_id")
    private Long modifyId;

    /**
     * 最后修改人名称
     */
    @Column(name = "modify_by")
    private String modifyBy;

    /**
     * 最后修改时间
     */
    @Column(name = "modify_date")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date modifyDate;

    /**
     * 录入人ID
     */
    @Column(name = "input_id")
    private Long inputId;

    /**
     * 录入人名称
     */
    @Column(name = "input_by")
    private String inputBy;

    /**
     * 录入时间
     */
    @Column(name = "input_date")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date inputDate;


    /**
     * 修改时间
     */
    @Column(name = "course_rest_price")
    private BigDecimal courseRestPrice;

    /**
     * 修改时间
     */
    @Column(name = "course_consume_price")
    private BigDecimal courseConsumePrice;


    /**
     * 原项目充值类别编码
     */
    @Column(name = "old_project_num")
    private String oldProjectNum;

    /**
     * 原项目充值类别名称
     */
    @Column(name = "old_project_name")
    private String oldProjectName;
    /**
     * 原项目充值类别名称
     */
    @Column(name = "remark")
    private String remark;

    public Long getInputId() {
        return inputId;
    }

    public void setInputId(Long inputId) {
        this.inputId = inputId;
    }

    public String getInputBy() {
        return inputBy;
    }

    public void setInputBy(String inputBy) {
        this.inputBy = inputBy;
    }

    public Date getInputDate() {
        return inputDate;
    }

    public void setInputDate(Date inputDate) {
        this.inputDate = inputDate;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    public String getOldProjectNum() {
        return oldProjectNum;
    }

    public void setOldProjectNum(String oldProjectNum) {
        this.oldProjectNum = oldProjectNum;
    }

    public String getOldProjectName() {
        return oldProjectName;
    }

    public void setOldProjectName(String oldProjectName) {
        this.oldProjectName = oldProjectName;
    }

    private static final long serialVersionUID = 1L;

    public BigDecimal getCourseRestPrice() {
        return courseRestPrice;
    }

    public void setCourseRestPrice(BigDecimal courseRestPrice) {
        this.courseRestPrice = courseRestPrice;
    }

    public BigDecimal getCourseConsumePrice() {
        return courseConsumePrice;
    }

    public void setCourseConsumePrice(BigDecimal courseConsumePrice) {
        this.courseConsumePrice = courseConsumePrice;
    }

    /**
     * 获取主键ID
     *
     * @return id - 主键ID
     */
    public Long getId() {
        return id;
    }

    /**
     * 设置主键ID
     *
     * @param id 主键ID
     */
    public void setId(Long id) {
        this.id = id;
    }

    /**
     * 获取初始化单据号
     *
     * @return init_num - 初始化单据号
     */
    public String getInitNum() {
        return initNum;
    }

    /**
     * 设置初始化单据号
     *
     * @param initNum 初始化单据号
     */
    public void setInitNum(String initNum) {
        this.initNum = initNum;
    }

    /**
     * 获取门店编码
     *
     * @return store_id - 门店编码
     */
    public Long getStoreId() {
        return storeId;
    }

    /**
     * 设置门店编码
     *
     * @param storeId 门店编码
     */
    public void setStoreId(Long storeId) {
        this.storeId = storeId;
    }

    /**
     * 获取门店名称
     *
     * @return store_name - 门店名称
     */
    public String getStoreName() {
        return storeName;
    }

    /**
     * 设置门店名称
     *
     * @param storeName 门店名称
     */
    public void setStoreName(String storeName) {
        this.storeName = storeName;
    }

    /**
     * 获取会员ID
     *
     * @return member_id - 会员ID
     */
    public Long getMemberId() {
        return memberId;
    }

    /**
     * 设置会员ID
     *
     * @param memberId 会员ID
     */
    public void setMemberId(Long memberId) {
        this.memberId = memberId;
    }

    /**
     * 获取会员编码
     *
     * @return member_num - 会员编码
     */
    public String getMemberNum() {
        return memberNum;
    }

    /**
     * 设置会员编码
     *
     * @param memberNum 会员编码
     */
    public void setMemberNum(String memberNum) {
        this.memberNum = memberNum;
    }

    /**
     * 获取会员名称
     *
     * @return member_name - 会员名称
     */
    public String getMemberName() {
        return memberName;
    }

    /**
     * 设置会员名称
     *
     * @param memberName 会员名称
     */
    public void setMemberName(String memberName) {
        this.memberName = memberName;
    }

    /**
     * 获取性别：1：男；0：女
     *
     * @return sex - 性别：1：男；0：女
     */
    public Integer getSex() {
        return sex;
    }

    /**
     * 设置性别：1：男；0：女
     *
     * @param sex 性别：1：男；0：女
     */
    public void setSex(Integer sex) {
        this.sex = sex;
    }

    /**
     * 获取状态 1:启用/0:停用2/启用中
     *
     * @return member_state - 状态 1:启用/0:停用2/启用中
     */
    public Integer getMemberState() {
        return memberState;
    }

    /**
     * 设置状态 1:启用/0:停用2/启用中
     *
     * @param memberState 状态 1:启用/0:停用2/启用中
     */
    public void setMemberState(Integer memberState) {
        this.memberState = memberState;
    }

    /**
     * 获取手机
     *
     * @return mobile_phone - 手机
     */
    public String getMobilePhone() {
        return mobilePhone;
    }

    /**
     * 设置手机
     *
     * @param mobilePhone 手机
     */
    public void setMobilePhone(String mobilePhone) {
        this.mobilePhone = mobilePhone;
    }

    /**
     * 获取交易ID
     *
     * @return trade_id - 交易ID
     */
    public Long getTradeId() {
        return tradeId;
    }

    /**
     * 设置交易ID
     *
     * @param tradeId 交易ID
     */
    public void setTradeId(Long tradeId) {
        this.tradeId = tradeId;
    }

    /**
     * 获取交易名称
     *
     * @return trade_name - 交易名称
     */
    public String getTradeName() {
        return tradeName;
    }

    /**
     * 设置交易名称
     *
     * @param tradeName 交易名称
     */
    public void setTradeName(String tradeName) {
        this.tradeName = tradeName;
    }

    /**
     * 获取标准金额
     *
     * @return standard_money - 标准金额
     */
    public BigDecimal getStandardMoney() {
        return standardMoney;
    }

    /**
     * 设置标准金额
     *
     * @param standardMoney 标准金额
     */
    public void setStandardMoney(BigDecimal standardMoney) {
        this.standardMoney = standardMoney;
    }

    /**
     * 获取标准次数
     *
     * @return standard_count - 标准次数
     */
    public Integer getStandardCount() {
        return standardCount;
    }

    /**
     * 设置标准次数
     *
     * @param standardCount 标准次数
     */
    public void setStandardCount(Integer standardCount) {
        this.standardCount = standardCount;
    }

    /**
     * 获取最近消费日期
     *
     * @return last_consume_time - 最近消费日期
     */
    public Date getLastConsumeTime() {
        return lastConsumeTime;
    }

    /**
     * 设置最近消费日期
     *
     * @param lastConsumeTime 最近消费日期
     */
    public void setLastConsumeTime(Date lastConsumeTime) {
        this.lastConsumeTime = lastConsumeTime;
    }

    /**
     * 获取单据号
     *
     * @return doc_num - 单据号
     */
    public String getDocNum() {
        return docNum;
    }

    /**
     * 设置单据号
     *
     * @param docNum 单据号
     */
    public void setDocNum(String docNum) {
        this.docNum = docNum;
    }

    /**
     * 获取单据交易时间
     *
     * @return doc_date - 单据交易时间
     */
    public Date getDocDate() {
        return docDate;
    }

    /**
     * 设置单据交易时间
     *
     * @param docDate 单据交易时间
     */
    public void setDocDate(Date docDate) {
        this.docDate = docDate;
    }

    /**
     * 获取类别 0:充值1:疗程
     *
     * @return card_type - 类别 0:充值1:疗程
     */
    public Integer getCardType() {
        return cardType;
    }

    /**
     * 设置类别 0:充值1:疗程
     *
     * @param cardType 类别 0:充值1:疗程
     */
    public void setCardType(Integer cardType) {
        this.cardType = cardType;
    }

    /**
     * 获取0:锁定/1:正常
     *
     * @return card_state - 0:锁定/1:正常
     */
    public Integer getCardState() {
        return cardState;
    }

    /**
     * 设置0:锁定/1:正常
     *
     * @param cardState 0:锁定/1:正常
     */
    public void setCardState(Integer cardState) {
        this.cardState = cardState;
    }

    /**
     * 获取账户剩余金额
     *
     * @return rest_money - 账户剩余金额
     */
    public BigDecimal getRestMoney() {
        return restMoney;
    }

    /**
     * 设置账户剩余金额
     *
     * @param restMoney 账户剩余金额
     */
    public void setRestMoney(BigDecimal restMoney) {
        this.restMoney = restMoney;
    }

    /**
     * 获取开卡剩余次数
     *
     * @return rest_count - 开卡剩余次数
     */
    public Integer getRestCount() {
        return restCount;
    }

    /**
     * 设置开卡剩余次数
     *
     * @param restCount 开卡剩余次数
     */
    public void setRestCount(Integer restCount) {
        this.restCount = restCount;
    }

    /**
     * 获取赠送卡赠送金额
     *
     * @return card_gift_money - 赠送卡赠送金额
     */
    public BigDecimal getCardGiftMoney() {
        return cardGiftMoney;
    }

    /**
     * 设置赠送卡赠送金额
     *
     * @param cardGiftMoney 赠送卡赠送金额
     */
    public void setCardGiftMoney(BigDecimal cardGiftMoney) {
        this.cardGiftMoney = cardGiftMoney;
    }

    /**
     * 获取享受优惠
     *
     * @return discount - 享受优惠
     */
    public BigDecimal getDiscount() {
        return discount;
    }

    /**
     * 设置享受优惠
     *
     * @param discount 享受优惠
     */
    public void setDiscount(BigDecimal discount) {
        this.discount = discount;
    }

    /**
     * 获取账户可用金额
     *
     * @return card_consume_money - 账户可用金额
     */
    public BigDecimal getCardConsumeMoney() {
        return cardConsumeMoney;
    }

    /**
     * 设置账户可用金额
     *
     * @param cardConsumeMoney 账户可用金额
     */
    public void setCardConsumeMoney(BigDecimal cardConsumeMoney) {
        this.cardConsumeMoney = cardConsumeMoney;
    }

    /**
     * 获取赠送卡可用金额
     *
     * @return gift_consume_money - 赠送卡可用金额
     */
    public BigDecimal getGiftConsumeMoney() {
        return giftConsumeMoney;
    }

    /**
     * 设置赠送卡可用金额
     *
     * @param giftConsumeMoney 赠送卡可用金额
     */
    public void setGiftConsumeMoney(BigDecimal giftConsumeMoney) {
        this.giftConsumeMoney = giftConsumeMoney;
    }

    /**
     * 获取开卡可用次数
     *
     * @return course_consume_count - 开卡可用次数
     */
    public Integer getCourseConsumeCount() {
        return courseConsumeCount;
    }

    /**
     * 设置开卡可用次数
     *
     * @param courseConsumeCount 开卡可用次数
     */
    public void setCourseConsumeCount(Integer courseConsumeCount) {
        this.courseConsumeCount = courseConsumeCount;
    }

    /**
     * 获取欠款单交易欠款金额
     *
     * @return debt_money - 欠款单交易欠款金额
     */
    public BigDecimal getDebtMoney() {
        return debtMoney;
    }

    /**
     * 设置欠款单交易欠款金额
     *
     * @param debtMoney 欠款单交易欠款金额
     */
    public void setDebtMoney(BigDecimal debtMoney) {
        this.debtMoney = debtMoney;
    }

    /**
     * 获取充值提成比率
     *
     * @return type_ratio - 充值提成比率
     */
    public BigDecimal getTypeRatio() {
        return typeRatio;
    }

    /**
     * 设置充值提成比率
     *
     * @param typeRatio 充值提成比率
     */
    public void setTypeRatio(BigDecimal typeRatio) {
        this.typeRatio = typeRatio;
    }

    /**
     * 获取账户到期时间
     *
     * @return end_time - 账户到期时间
     */
    public Date getEndTime() {
        return endTime;
    }

    /**
     * 设置账户到期时间
     *
     * @param endTime 账户到期时间
     */
    public void setEndTime(Date endTime) {
        this.endTime = endTime;
    }

    /**
     * 获取账户ID
     *
     * @return account_id - 账户ID
     */
    public Long getAccountId() {
        return accountId;
    }

    /**
     * 设置账户ID
     *
     * @param accountId 账户ID
     */
    public void setAccountId(Long accountId) {
        this.accountId = accountId;
    }

    /**
     * 获取初始化记录状态0:封存删除1:插入2:异常3:正常4:已初始化
     *
     * @return init_state - 初始化记录状态0:封存删除1:插入2:异常3:正常4:已初始化
     */
    public Integer getInitState() {
        return initState;
    }

    /**
     * 设置初始化记录状态0:封存删除1:插入2:异常3:正常4:已初始化
     *
     * @param initState 初始化记录状态0:封存删除1:插入2:异常3:正常4:已初始化
     */
    public void setInitState(Integer initState) {
        this.initState = initState;
    }

    /**
     * 获取最后修改人ID
     *
     * @return modify_id - 最后修改人ID
     */
    public Long getModifyId() {
        return modifyId;
    }

    /**
     * 设置最后修改人ID
     *
     * @param modifyId 最后修改人ID
     */
    public void setModifyId(Long modifyId) {
        this.modifyId = modifyId;
    }

    /**
     * 获取最后修改人名称
     *
     * @return modify_by - 最后修改人名称
     */
    public String getModifyBy() {
        return modifyBy;
    }

    /**
     * 设置最后修改人名称
     *
     * @param modifyBy 最后修改人名称
     */
    public void setModifyBy(String modifyBy) {
        this.modifyBy = modifyBy;
    }

    /**
     * 获取最后修改时间
     *
     * @return modify_date - 最后修改时间
     */
    public Date getModifyDate() {
        return modifyDate;
    }

    /**
     * 设置最后修改时间
     *
     * @param modifyDate 最后修改时间
     */
    public void setModifyDate(Date modifyDate) {
        this.modifyDate = modifyDate;
    }

    @Override
    public boolean equals(Object that) {
        if (this == that) {
            return true;
        }
        if (that == null) {
            return false;
        }
        if (getClass() != that.getClass()) {
            return false;
        }
        MemberInit other = (MemberInit) that;
        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))
            && (this.getInitNum() == null ? other.getInitNum() == null : this.getInitNum().equals(other.getInitNum()))
            && (this.getStoreId() == null ? other.getStoreId() == null : this.getStoreId().equals(other.getStoreId()))
            && (this.getStoreName() == null ? other.getStoreName() == null : this.getStoreName().equals(other.getStoreName()))
            && (this.getMemberId() == null ? other.getMemberId() == null : this.getMemberId().equals(other.getMemberId()))
            && (this.getMemberNum() == null ? other.getMemberNum() == null : this.getMemberNum().equals(other.getMemberNum()))
            && (this.getMemberName() == null ? other.getMemberName() == null : this.getMemberName().equals(other.getMemberName()))
            && (this.getSex() == null ? other.getSex() == null : this.getSex().equals(other.getSex()))
            && (this.getMemberState() == null ? other.getMemberState() == null : this.getMemberState().equals(other.getMemberState()))
            && (this.getMobilePhone() == null ? other.getMobilePhone() == null : this.getMobilePhone().equals(other.getMobilePhone()))
            && (this.getTradeId() == null ? other.getTradeId() == null : this.getTradeId().equals(other.getTradeId()))
            && (this.getTradeName() == null ? other.getTradeName() == null : this.getTradeName().equals(other.getTradeName()))
            && (this.getStandardMoney() == null ? other.getStandardMoney() == null : this.getStandardMoney().equals(other.getStandardMoney()))
            && (this.getStandardCount() == null ? other.getStandardCount() == null : this.getStandardCount().equals(other.getStandardCount()))
            && (this.getLastConsumeTime() == null ? other.getLastConsumeTime() == null : this.getLastConsumeTime().equals(other.getLastConsumeTime()))
            && (this.getDocNum() == null ? other.getDocNum() == null : this.getDocNum().equals(other.getDocNum()))
            && (this.getDocDate() == null ? other.getDocDate() == null : this.getDocDate().equals(other.getDocDate()))
            && (this.getCardType() == null ? other.getCardType() == null : this.getCardType().equals(other.getCardType()))
            && (this.getCardState() == null ? other.getCardState() == null : this.getCardState().equals(other.getCardState()))
            && (this.getRestMoney() == null ? other.getRestMoney() == null : this.getRestMoney().equals(other.getRestMoney()))
            && (this.getRestCount() == null ? other.getRestCount() == null : this.getRestCount().equals(other.getRestCount()))
            && (this.getCardGiftMoney() == null ? other.getCardGiftMoney() == null : this.getCardGiftMoney().equals(other.getCardGiftMoney()))
            && (this.getDiscount() == null ? other.getDiscount() == null : this.getDiscount().equals(other.getDiscount()))
            && (this.getCardConsumeMoney() == null ? other.getCardConsumeMoney() == null : this.getCardConsumeMoney().equals(other.getCardConsumeMoney()))
            && (this.getGiftConsumeMoney() == null ? other.getGiftConsumeMoney() == null : this.getGiftConsumeMoney().equals(other.getGiftConsumeMoney()))
            && (this.getCourseConsumeCount() == null ? other.getCourseConsumeCount() == null : this.getCourseConsumeCount().equals(other.getCourseConsumeCount()))
            && (this.getDebtMoney() == null ? other.getDebtMoney() == null : this.getDebtMoney().equals(other.getDebtMoney()))
            && (this.getTypeRatio() == null ? other.getTypeRatio() == null : this.getTypeRatio().equals(other.getTypeRatio()))
            && (this.getEndTime() == null ? other.getEndTime() == null : this.getEndTime().equals(other.getEndTime()))
            && (this.getAccountId() == null ? other.getAccountId() == null : this.getAccountId().equals(other.getAccountId()))
            && (this.getInitState() == null ? other.getInitState() == null : this.getInitState().equals(other.getInitState()))
            && (this.getModifyId() == null ? other.getModifyId() == null : this.getModifyId().equals(other.getModifyId()))
            && (this.getModifyBy() == null ? other.getModifyBy() == null : this.getModifyBy().equals(other.getModifyBy()))
            && (this.getModifyDate() == null ? other.getModifyDate() == null : this.getModifyDate().equals(other.getModifyDate()));
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());
        result = prime * result + ((getInitNum() == null) ? 0 : getInitNum().hashCode());
        result = prime * result + ((getStoreId() == null) ? 0 : getStoreId().hashCode());
        result = prime * result + ((getStoreName() == null) ? 0 : getStoreName().hashCode());
        result = prime * result + ((getMemberId() == null) ? 0 : getMemberId().hashCode());
        result = prime * result + ((getMemberNum() == null) ? 0 : getMemberNum().hashCode());
        result = prime * result + ((getMemberName() == null) ? 0 : getMemberName().hashCode());
        result = prime * result + ((getSex() == null) ? 0 : getSex().hashCode());
        result = prime * result + ((getMemberState() == null) ? 0 : getMemberState().hashCode());
        result = prime * result + ((getMobilePhone() == null) ? 0 : getMobilePhone().hashCode());
        result = prime * result + ((getTradeId() == null) ? 0 : getTradeId().hashCode());
        result = prime * result + ((getTradeName() == null) ? 0 : getTradeName().hashCode());
        result = prime * result + ((getStandardMoney() == null) ? 0 : getStandardMoney().hashCode());
        result = prime * result + ((getStandardCount() == null) ? 0 : getStandardCount().hashCode());
        result = prime * result + ((getLastConsumeTime() == null) ? 0 : getLastConsumeTime().hashCode());
        result = prime * result + ((getDocNum() == null) ? 0 : getDocNum().hashCode());
        result = prime * result + ((getDocDate() == null) ? 0 : getDocDate().hashCode());
        result = prime * result + ((getCardType() == null) ? 0 : getCardType().hashCode());
        result = prime * result + ((getCardState() == null) ? 0 : getCardState().hashCode());
        result = prime * result + ((getRestMoney() == null) ? 0 : getRestMoney().hashCode());
        result = prime * result + ((getRestCount() == null) ? 0 : getRestCount().hashCode());
        result = prime * result + ((getCardGiftMoney() == null) ? 0 : getCardGiftMoney().hashCode());
        result = prime * result + ((getDiscount() == null) ? 0 : getDiscount().hashCode());
        result = prime * result + ((getCardConsumeMoney() == null) ? 0 : getCardConsumeMoney().hashCode());
        result = prime * result + ((getGiftConsumeMoney() == null) ? 0 : getGiftConsumeMoney().hashCode());
        result = prime * result + ((getCourseConsumeCount() == null) ? 0 : getCourseConsumeCount().hashCode());
        result = prime * result + ((getDebtMoney() == null) ? 0 : getDebtMoney().hashCode());
        result = prime * result + ((getTypeRatio() == null) ? 0 : getTypeRatio().hashCode());
        result = prime * result + ((getEndTime() == null) ? 0 : getEndTime().hashCode());
        result = prime * result + ((getAccountId() == null) ? 0 : getAccountId().hashCode());
        result = prime * result + ((getInitState() == null) ? 0 : getInitState().hashCode());
        result = prime * result + ((getModifyId() == null) ? 0 : getModifyId().hashCode());
        result = prime * result + ((getModifyBy() == null) ? 0 : getModifyBy().hashCode());
        result = prime * result + ((getModifyDate() == null) ? 0 : getModifyDate().hashCode());
        return result;
    }

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append(getClass().getSimpleName());
        sb.append(" [");
        sb.append("Hash = ").append(hashCode());
        sb.append(", id=").append(id);
        sb.append(", initNum=").append(initNum);
        sb.append(", storeId=").append(storeId);
        sb.append(", storeName=").append(storeName);
        sb.append(", memberId=").append(memberId);
        sb.append(", memberNum=").append(memberNum);
        sb.append(", memberName=").append(memberName);
        sb.append(", sex=").append(sex);
        sb.append(", memberState=").append(memberState);
        sb.append(", mobilePhone=").append(mobilePhone);
        sb.append(", tradeId=").append(tradeId);
        sb.append(", tradeName=").append(tradeName);
        sb.append(", standardMoney=").append(standardMoney);
        sb.append(", standardCount=").append(standardCount);
        sb.append(", lastConsumeTime=").append(lastConsumeTime);
        sb.append(", docNum=").append(docNum);
        sb.append(", docDate=").append(docDate);
        sb.append(", cardType=").append(cardType);
        sb.append(", cardState=").append(cardState);
        sb.append(", restMoney=").append(restMoney);
        sb.append(", restCount=").append(restCount);
        sb.append(", cardGiftMoney=").append(cardGiftMoney);
        sb.append(", discount=").append(discount);
        sb.append(", cardConsumeMoney=").append(cardConsumeMoney);
        sb.append(", giftConsumeMoney=").append(giftConsumeMoney);
        sb.append(", courseConsumeCount=").append(courseConsumeCount);
        sb.append(", debtMoney=").append(debtMoney);
        sb.append(", typeRatio=").append(typeRatio);
        sb.append(", endTime=").append(endTime);
        sb.append(", accountId=").append(accountId);
        sb.append(", initState=").append(initState);
        sb.append(", modifyId=").append(modifyId);
        sb.append(", modifyBy=").append(modifyBy);
        sb.append(", modifyDate=").append(modifyDate);
        sb.append(", serialVersionUID=").append(serialVersionUID);
        sb.append("]");
        return sb.toString();
    }
}