package com.yida.data.common.core.entity.user;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yida.data.common.core.entity.user.enums.GraduatedStatusEnum;
import com.yida.data.common.core.entity.user.enums.SectionTypeEnum;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 家校部门表(只有学校会有) Entity
 *
 * @author ZYJ
 * @date 2021-11-11 09:25:44
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@TableName("edu_user_dept")
public class EduUserDept implements Serializable {

    private static final long serialVersionUID = -5423327548177192923L;

    /**
     * 家校部门ID
     */
    @ApiModelProperty(value = "家校部门ID")
    @TableId(value = "DEPT_ID", type = IdType.AUTO)
    private Long deptId;

    /**
     * 上级部门ID(校区的父级id为学校id的相反数)
     */
    @ApiModelProperty(value = "上级部门ID(校区的父级id为学校id的相反数)")
    @TableField("PARENT_ID")
    private Long parentId;

    /**
     * 部门名称
     */
    @ApiModelProperty(value = "部门名称")
    @TableField("DEPT_NAME")
    private String deptName;

    /**
     * 排序 在父部门中的次序值，order值大的排序靠前。有效的值范围是[0, 2^32)，仅在API设置后才返回
     */
    @ApiModelProperty(value = "排序")
    @TableField("ORDER_NUM")
    private Integer orderNum;

    /**
     * 创建时间
     */
    @ApiModelProperty(value = "创建时间")
    @TableField("CREATE_TIME")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createDate;

    /**
     * 修改时间
     */
    @ApiModelProperty(value = "修改时间")
    @TableField("MODIFY_TIME")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateDate;

    /**
     * t_dept学校id
     */
    @ApiModelProperty(value = "t_dept学校id")
    @TableField("school_id")
    private Long schoolId;

    /**
     * 部门简称
     */
    @ApiModelProperty(value = "部门简称")
    @TableField("dept_abbreviation")
    private String deptAbbreviation;

    /**
     * 家校部门类型，1表示班级，2表示年级，3表示学段，4表示校区
     */
    @ApiModelProperty(value = "家校部门类型，1表示班级，2表示年级，3表示学段，4表示校区")
    @TableField("dept_type")
    private Integer deptType;

    /**
     * 企业微信家校部门id
     */
    @ApiModelProperty(value = "企业微信家校部门id")
    @TableField("wx_id")
    private Long wxId;

    /**
     * 企业微信家校父部门id
     */
    @ApiModelProperty(value = "企业微信家校父部门id")
    @TableField("parent_wx_id")
    private Long parentWxId;

    /**
     * 升级时对应的年级id，添加年级时需要
     */
    @ApiModelProperty(value = "升级时对应的年级id，添加年级时需要")
    @TableField("update_grade_id")
    private Integer updateGradeId;

    /**
     * 机构组织的图标
     */
    @ApiModelProperty(value = "机构组织的图标")
    @TableField("icon")
    private String icon;

    /**
     * 部门是否可见，0-是，1-否
     */
    @ApiModelProperty(value = "部门是否可见，0-是，1-否")
    @TableField("visible")
    private Integer visible;

    /**
     * 当家校部门是标准年级时对应的标准年级值
     */
    @ApiModelProperty(value = "当家校部门是标准年级时对应的标准年级值")
    @TableField("standard_grade_value")
    private Integer standardGradeValue;

    /**
     * 学段类型. 当家校部门类型为3时存在 {@link SectionTypeEnum}
     */
    @ApiModelProperty(value = "学段类型. 当家校部门类型为3时存在")
    @TableField("section_type")
    private String sectionType;

    /**
     * 是否是已毕业，1表示是，0表示不是。仅部门类型为年级时存在 {@link GraduatedStatusEnum}
     */
    @ApiModelProperty(value = "是否是已毕业，1表示是，0表示不是。仅部门类型为年级时存在")
    @TableField("graduated_status")
    private Integer graduatedStatus;

    /**
     * 大华学籍id
     */
    @ApiModelProperty(value = "大华学籍id")
    @TableField("da_hua_id")
    private String daHuaId;

    /**
     * 入学年份
     */
    @TableField(exist = false)
    private Integer registerYear;
}