package com.ssm.manage.entity;

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

import java.io.Serializable;
import java.util.Date;
import javax.persistence.*;

@Table(name = "base_project_type")
public class BaseProjectType implements Serializable {
    /**
     * 主键ID
     */
    @Id
    private Long id;

    /**
     * 项目类别编码
     */
    @Column(name = "project_type_num")
    @ExcelProperty("项目类别编码*")
    private String projectTypeNum;

    /**
     * 类别名称
     */
    @Column(name = "project_type_name")
    @ExcelProperty("项目类别名称*")
    private String projectTypeName;

    /**
     * 状态 1：使用；0：停用
     */
    @ExcelProperty("状态*")
    private Integer state;

    /**
     * 建立人（用户名称（用户编码）），来源于员工档案
     */
    @Column(name = "founder_staff")
    private String founderStaff;

    /**
     * 建立日期
     */
    @Column(name = "Founder_datetime")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private Date founderDatetime;

    /**
     * 最近修改人（用户名称（用户编码）），来源于员工档案
     */
    @Column(name = "modify_by")
    private String modifyBy;

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

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

    /**
     * 门店名称
     */
    @Column(name = "store_name")
    private String storeName;
    /**
     * 父ID
     */
    @Column(name = "parent_id")
    private Long parentId;

    /**
     * 父ID
     */
    @Column(name = "parent_num")
    private String parentNum;

    private static final long serialVersionUID = 1L;

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



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

    /**
     * 获取项目类别编码
     *
     * @return project_type_num - 项目类别编码
     */
    public String getProjectTypeNum() {
        return projectTypeNum;
    }

    /**
     * 设置项目类别编码
     *
     * @param projectTypeNum 项目类别编码
     */
    public void setProjectTypeNum(String projectTypeNum) {
        this.projectTypeNum = projectTypeNum;
    }

    /**
     * 获取类别名称
     *
     * @return project_type_name - 类别名称
     */
    public String getProjectTypeName() {
        return projectTypeName;
    }

    /**
     * 设置类别名称
     *
     * @param projectTypeName 类别名称
     */
    public void setProjectTypeName(String projectTypeName) {
        this.projectTypeName = projectTypeName;
    }

    /**
     * 获取状态 1：使用；0：停用
     *
     * @return state - 状态 1：使用；0：停用
     */
    public Integer getState() {
        return state;
    }

    /**
     * 设置状态 1：使用；0：停用
     *
     * @param state 状态 1：使用；0：停用
     */
    public void setState(Integer state) {
        this.state = state;
    }

    /**
     * 获取建立人（用户名称（用户编码）），来源于员工档案
     *
     * @return founder_staff - 建立人（用户名称（用户编码）），来源于员工档案
     */
    public String getFounderStaff() {
        return founderStaff;
    }

    /**
     * 设置建立人（用户名称（用户编码）），来源于员工档案
     *
     * @param founderStaff 建立人（用户名称（用户编码）），来源于员工档案
     */
    public void setFounderStaff(String founderStaff) {
        this.founderStaff = founderStaff;
    }

    /**
     * 获取建立日期
     *
     * @return Founder_datetime - 建立日期
     */
    public Date getFounderDatetime() {
        return founderDatetime;
    }

    /**
     * 设置建立日期
     *
     * @param founderDatetime 建立日期
     */
    public void setFounderDatetime(Date founderDatetime) {
        this.founderDatetime = founderDatetime;
    }

    /**
     * 获取最近修改人（用户名称（用户编码）），来源于员工档案
     *
     * @return modify_by - 最近修改人（用户名称（用户编码）），来源于员工档案
     */
    public String getModifyBy() {
        return modifyBy;
    }

    /**
     * 设置最近修改人（用户名称（用户编码）），来源于员工档案
     *
     * @param modifyBy 最近修改人（用户名称（用户编码）），来源于员工档案
     */
    public void setModifyBy(String modifyBy) {
        this.modifyBy = modifyBy;
    }

    /**
     * 获取最近修改时间
     *
     * @return modify_datetime - 最近修改时间
     */
    public Date getModifyDatetime() {
        return modifyDatetime;
    }

    /**
     * 设置最近修改时间
     *
     * @param modifyDatetime 最近修改时间
     */
    public void setModifyDatetime(Date modifyDatetime) {
        this.modifyDatetime = modifyDatetime;
    }

    /**
     * 获取门店编码
     *
     * @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;
    }

    public Long getParentId() {
        return parentId;
    }

    public void setParentId(Long parentId) {
        this.parentId = parentId;
    }

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

    public String getParentNum() {
        return parentNum;
    }

    public void setParentNum(String parentNum) {
        this.parentNum = parentNum;
    }

    @Override
    public boolean equals(Object that) {
        if (this == that) {
            return true;
        }
        if (that == null) {
            return false;
        }
        if (getClass() != that.getClass()) {
            return false;
        }
        BaseProjectType other = (BaseProjectType) that;
        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))
            && (this.getProjectTypeNum() == null ? other.getProjectTypeNum() == null : this.getProjectTypeNum().equals(other.getProjectTypeNum()))
            && (this.getProjectTypeName() == null ? other.getProjectTypeName() == null : this.getProjectTypeName().equals(other.getProjectTypeName()))
            && (this.getState() == null ? other.getState() == null : this.getState().equals(other.getState()))
            && (this.getFounderStaff() == null ? other.getFounderStaff() == null : this.getFounderStaff().equals(other.getFounderStaff()))
            && (this.getFounderDatetime() == null ? other.getFounderDatetime() == null : this.getFounderDatetime().equals(other.getFounderDatetime()))
            && (this.getModifyBy() == null ? other.getModifyBy() == null : this.getModifyBy().equals(other.getModifyBy()))
            && (this.getModifyDatetime() == null ? other.getModifyDatetime() == null : this.getModifyDatetime().equals(other.getModifyDatetime()))
            && (this.getStoreId() == null ? other.getStoreId() == null : this.getStoreId().equals(other.getStoreId()))
            && (this.getStoreName() == null ? other.getStoreName() == null : this.getStoreName().equals(other.getStoreName()));
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());
        result = prime * result + ((getProjectTypeNum() == null) ? 0 : getProjectTypeNum().hashCode());
        result = prime * result + ((getProjectTypeName() == null) ? 0 : getProjectTypeName().hashCode());
        result = prime * result + ((getState() == null) ? 0 : getState().hashCode());
        result = prime * result + ((getFounderStaff() == null) ? 0 : getFounderStaff().hashCode());
        result = prime * result + ((getFounderDatetime() == null) ? 0 : getFounderDatetime().hashCode());
        result = prime * result + ((getModifyBy() == null) ? 0 : getModifyBy().hashCode());
        result = prime * result + ((getModifyDatetime() == null) ? 0 : getModifyDatetime().hashCode());
        result = prime * result + ((getStoreId() == null) ? 0 : getStoreId().hashCode());
        result = prime * result + ((getStoreName() == null) ? 0 : getStoreName().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(", projectTypeNum=").append(projectTypeNum);
        sb.append(", projectTypeName=").append(projectTypeName);
        sb.append(", state=").append(state);
        sb.append(", founderStaff=").append(founderStaff);
        sb.append(", founderDatetime=").append(founderDatetime);
        sb.append(", modifyBy=").append(modifyBy);
        sb.append(", modifyDatetime=").append(modifyDatetime);
        sb.append(", storeId=").append(storeId);
        sb.append(", storeName=").append(storeName);
        sb.append(", serialVersionUID=").append(serialVersionUID);
        sb.append("]");
        return sb.toString();
    }
}