package com.xmomen.module.plan.entity;

import com.xmomen.framework.mybatis.model.BaseMybatisModel;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Version;

/**
 * TbTablePlan类表示数据库中"tb_table_plan"表对应的实体类，
 * 用于在Java程序中与数据库进行交互，存储和操作餐桌计划的相关数据。
 * 该类继承自BaseMybatisModel，可能包含了一些通用的数据库操作方法和属性。
 */
@Entity
@Table(name = "tb_table_plan")
public class TbTablePlan extends BaseMybatisModel {

    // 主键ID，唯一标识一条餐桌计划记录
    private Integer id;

    // 餐桌计划ID，关联到具体的计划
    private Integer cdPlanId;

    // 审核状态，0表示未审核，1表示审核通过
    private Integer auditStatus;

    // 是否暂停配送，0表示不暂停，1表示暂停
    private Integer isStop;

    // 会员ID，关联到下单的会员
    private Integer cdMemberId;

    // 卡号，可能用于标识会员卡等信息
    private String couponNumber;

    // 客户编号，用于标识客户
    private String memberCode;

    // 手机号，收货人的联系电话
    private String consigneePhone;

    // 收货人姓名
    private String consigneeName;

    // 收货人地址
    private String consigneeAddress;

    // 邮政编码
    private String postcode;

    // 星期几配送，指定配送的时间周期
    private String sendWeekDay;

    // 总配送次数，该餐桌计划的总配送次数
    private Integer totalSendValue;

    // 已配送次数，已经完成的配送次数
    private Integer sendValue;

    // 上次配送时间
    private Date lastSendDate;

    // 下次配送时间
    private Date nextSendDate;

    // 生效时间，该餐桌计划开始生效的时间
    private Date beginTime;

    // 映射到数据库表中的"ID"列，设置为主键，并使用UUIDGenerator生成唯一ID
    @Column(name = "ID")
    @Id
    @GeneratedValue(generator = "UUIDGenerator")
    public Integer getId() {
        return id;
    }

    // 设置ID值，并根据ID是否为空来处理有效字段（可能与数据验证或持久化相关）
    public void setId(Integer id) {
        this.id = id;
        if (id == null) {
            removeValidField("id");
            return;
        }
        addValidField("id");
    }

    // 获取餐桌计划ID
    @Column(name = "CD_PLAN_ID")
    public Integer getCdPlanId() {
        return cdPlanId;
    }

    // 设置餐桌计划ID，并根据其是否为空来处理有效字段
    public void setCdPlanId(Integer cdPlanId) {
        this.cdPlanId = cdPlanId;
        if (cdPlanId == null) {
            removeValidField("cdPlanId");
            return;
        }
        addValidField("cdPlanId");
    }

    // 获取审核状态
    @Column(name = "AUDIT_STATUS")
    public Integer getAuditStatus() {
        return auditStatus;
    }

    // 设置审核状态，并根据其是否为空来处理有效字段
    public void setAuditStatus(Integer auditStatus) {
        this.auditStatus = auditStatus;
        if (auditStatus == null) {
            removeValidField("auditStatus");
            return;
        }
        addValidField("auditStatus");
    }

    // 获取是否暂停配送状态
    @Column(name = "IS_STOP")
    public Integer getIsStop() {
        return isStop;
    }

    // 设置是否暂停配送状态，并根据其是否为空来处理有效字段
    public void setIsStop(Integer isStop) {
        this.isStop = isStop;
        if (isStop == null) {
            removeValidField("isStop");
            return;
        }
        addValidField("isStop");
    }

    // 获取会员ID
    @Column(name = "CD_MEMBER_ID")
    public Integer getCdMemberId() {
        return cdMemberId;
    }

    // 设置会员ID，并根据其是否为空来处理有效字段
    public void setCdMemberId(Integer cdMemberId) {
        this.cdMemberId = cdMemberId;
        if (cdMemberId == null) {
            removeValidField("cdMemberId");
            return;
        }
        addValidField("cdMemberId");
    }

    // 获取卡号
    @Column(name = "COUPON_NUMBER")
    public String getCouponNumber() {
        return couponNumber;
    }

    // 设置卡号，并根据其是否为空来处理有效字段
    public void setCouponNumber(String couponNumber) {
        this.couponNumber = couponNumber;
        if (couponNumber == null) {
            removeValidField("couponNumber");
            return;
        }
        addValidField("couponNumber");
    }

    // 获取客户编号
    @Column(name = "MEMBER_CODE")
    public String getMemberCode() {
        return memberCode;
    }

    // 设置客户编号，并根据其是否为空来处理有效字段
    public void setMemberCode(String memberCode) {
        this.memberCode = memberCode;
        if (memberCode == null) {
            removeValidField("memberCode");
            return;
        }
        addValidField("memberCode");
    }

    // 获取手机号
    @Column(name = "CONSIGNEE_PHONE")
    public String getConsigneePhone() {
        return consigneePhone;
    }

    // 设置手机号，并根据其是否为空来处理有效字段
    public void setConsigneePhone(String consigneePhone) {
        this.consigneePhone = consigneePhone;
        if (consigneePhone == null) {
            removeValidField("consigneePhone");
            return;
        }
        addValidField("consigneePhone");
    }

    // 获取收货人姓名
    @Column(name = "CONSIGNEE_NAME")
    public String getConsigneeName() {
        return consigneeName;
    }

    // 设置收货人姓名，并根据其是否为空来处理有效字段
    public void setConsigneeName(String consigneeName) {
        this.consigneeName = consigneeName;
        if (consigneeName == null) {
            removeValidField("consigneeName");
            return;
        }
        addValidField("consigneeName");
    }

    // 获取收货人地址
    @Column(name = "CONSIGNEE_ADDRESS")
    public String getConsigneeAddress() {
        return consigneeAddress;
    }

    // 设置收货人地址，并根据其是否为空来处理有效字段
    public void setConsigneeAddress(String consigneeAddress) {
        this.consigneeAddress = consigneeAddress;
        if (consigneeAddress == null) {
            removeValidField("consigneeAddress");
            return;
        }
        addValidField("consigneeAddress");
    }

    // 获取邮政编码
    @Column(name = "POSTCODE")
    public String getPostcode() {
        return postcode;
    }

    // 设置邮政编码，并根据其是否为空来处理有效字段
    public void setPostcode(String postcode) {
        this.postcode = postcode;
        if (postcode == null) {
            removeValidField("postcode");
            return;
        }
        addValidField("postcode");
    }

    // 获取星期几配送
    @Column(name = "SEND_WEEK_DAY")
    public String getSendWeekDay() {
        return sendWeekDay;
    }

    // 设置星期几配送，并根据其是否为空来处理有效字段
    public void setSendWeekDay(String sendWeekDay) {
        this.sendWeekDay = sendWeekDay;
        if (sendWeekDay == null) {
            removeValidField("sendWeekDay");
            return;
        }
        addValidField("sendWeekDay");
    }

    // 获取总配送次数
    @Column(name = "TOTAL_SEND_VALUE")
    public Integer getTotalSendValue() {
        return totalSendValue;
    }

    // 设置总配送次数，并根据其是否为空来处理有效字段
    public void setTotalSendValue(Integer totalSendValue) {
        this.totalSendValue = totalSendValue;
        if (totalSendValue == null) {
            removeValidField("totalSendValue");
            return;
        }
        addValidField("totalSendValue");
    }

    // 获取已配送次数
    @Column(name = "SEND_VALUE")
    public Integer getSendValue() {
        return sendValue;
    }

    // 设置已配送次数，并根据其是否为空来处理有效字段
    public void setSendValue(Integer sendValue) {
        this.sendValue = sendValue;
        if (sendValue == null) {
            removeValidField("sendValue");
            return;
        }
        addValidField("sendValue");
    }

    // 获取上次配送时间
    @Column(name = "LAST_SEND_DATE")
    public Date getLastSendDate() {
        return lastSendDate;
    }

    // 设置上次配送时间，并根据其是否为空来处理有效字段
    public void setLastSendDate(Date lastSendDate) {
        this.lastSendDate = lastSendDate;
        if (lastSendDate == null) {
            removeValidField("lastSendDate");
            return;
        }
        addValidField("lastSendDate");
    }

    // 获取下次配送时间
    @Column(name = "NEXT_SEND_DATE")
    public Date getNextSendDate() {
        return nextSendDate;
    }

    // 设置下次配送时间，并根据其是否为空来处理有效字段
    public void setNextSendDate(Date nextSendDate) {
        this.nextSendDate = nextSendDate;
        if (nextSendDate == null) {
            removeValidField("nextSendDate");
            return;
        }
        addValidField("nextSendDate");
    }

    // 获取生效时间
    @Column(name = "BEGIN_TIME")
    public Date getBeginTime() {
        return beginTime;
    }

    // 设置生效时间，并根据其是否为空来处理有效字段
    public void setBeginTime(Date beginTime) {
        this.beginTime = beginTime;
        if (beginTime == null) {
            removeValidField("beginTime");
            return;
        }
        addValidField("beginTime");
    }
}