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

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import java.util.List;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.time.LocalDateTime;

/**
 * Entity
 *
 * @author wjm
 * @date 2022-12-01 10:51:19
 */
@Data
@TableName("edu_leave_request_user")
public class EduLeaveRequestUser {

    /**
     *
     */
    @ApiModelProperty(value = "")
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 请假人ID
     */
    @ApiModelProperty(value = "请假人ID")
    @TableField("user_id")
    private Long userId;

    /**
     * 请假人姓名
     */
    @ApiModelProperty(value = "请假人姓名")
    @TableField("user_name")
    private String userName;


    /**
     * 请假人图像
     */
    @ApiModelProperty(value = "请假人图像")
    private transient String userPicUrl;

    /**
     * 请假人所属部门
     */
    @ApiModelProperty(value = "请假人所属部门")
    private transient String userDeptName;


    /**
     * 1：病假，2：事假，0：其他，3年假，4调休假，5婚嫁，6产假，7陪产假
     */
    @ApiModelProperty(value = "1：病假，2：事假，0：其他，3年假，4调休假，5婚嫁，6产假，7陪产假")
    @TableField("type")
    private Integer type;

    /**
     * 0教师请假，1学生请假
     */
    @ApiModelProperty(value = "0教师请假，1学生请假")
    @TableField("request_type")
    private Integer requestType;

    /**
     * 请假理由
     */
    @ApiModelProperty(value = "请假理由")
    @TableField("request_reason")
    private String requestReason;
    /**
     * 请假去向
     */
    @ApiModelProperty(value = "请假去向")
    @TableField("request_for")
    private String requestFor;

    /**
     * 审核不通过原因
     */
    @ApiModelProperty(value = "审核不通过原因")
    @TableField("refuse_reason")
    private String refuseReason;

    /**
     * 开始时间
     */
    @ApiModelProperty(value = "开始时间")
    @TableField("start_time")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime startTime;

    /**
     * 结束时间
     */
    @ApiModelProperty(value = "结束时间")
    @TableField("end_time")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime endTime;

    /**
     * 审核状态:审核状态:默认0待审核审核，1已通过，2已拒绝，3审核中
     */
    @ApiModelProperty(value = "审核状态:默认0待审核审核，1已通过，2已拒绝，3审核中")
    @TableField("status")
    private Integer status;

    /**
     * 审核时间
     */
    @ApiModelProperty(value = "审核时间")
    @TableField(value = "audit_time")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime auditTime;
    /**
     * 图片路径，用逗号分割
     */
    @ApiModelProperty(value = "图片路径，用逗号分割")
    @TableField("pic_url")
    private String picUrl;

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


    /**
     *
     */
    @ApiModelProperty(value = "")
    @TableField(value = "create_date", fill = FieldFill.INSERT)
    @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(value = "create_id", fill = FieldFill.INSERT)
    private Long createId;

    /**
     *
     */
    @ApiModelProperty(value = "")
    @TableField(value = "update_date", fill = FieldFill.UPDATE)
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateDate;

    /**
     *
     */
    @ApiModelProperty(value = "")
    @TableField(value = "update_id", fill = FieldFill.UPDATE)
    private Long updateId;

    /**
     * 0为未删除，1为已删除
     */
    @ApiModelProperty(value = "0为未删除，1为已删除")
    @TableField("del_flag")
    @TableLogic(value = "0", delval = "1")
    private Integer delFlag;

    /**
     * 审核状态:审核状态:默认0待审核审核，1已通过，2已拒绝，3审核中
     */
    @ApiModelProperty(value = "审核状态:默认0待审核审核，1已通过，2已拒绝")
    private transient Integer currentUserStatus;

    @ApiModelProperty("策略id")
    private Long strategyId;

    @ApiModelProperty("当前请假审核到第几级，从0开始")
    @TableField(value = "view_sort")
    private Integer viewSort;

    @ApiModelProperty("下级审核人员ids")
    @TableField(value = "next_app_user_ids")
    private String nextAppUserIds;


    @ApiModelProperty("下一步审核人信息")
    private transient List<EduLeaveRequestProcessRecord> eduLeaveRequestProcessRecordList;

}