package com.srs.routine.domain;

import java.math.BigDecimal;
import java.util.Date;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.srs.common.annotation.Excel;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import com.srs.common.core.domain.BaseEntity;


/**
 * 学生请假申请对象 rt_stu_leave_application
 *
 * @author LSD
 * @date 2024-03-30
 */
@Data
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@AllArgsConstructor
@Builder
@ApiModel(value = "RtStuLeaveApplication对象", description = "学生请假申请表")
@TableName("rt_stu_leave_application")
public class RtStuLeaveApplication extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 请假申请ID
     */
    @ApiModelProperty("请假申请ID")
    @TableField("leave_application_id")
    private Long leaveApplicationId;

    /**
     * 学号
     */
    @ApiModelProperty("学生表id")
    @TableField("stu_id")
    private Long stuId;

    /**
     * 学号
     */
    @ApiModelProperty("学号")
    @TableField("stu_no")
    @Excel(name = "学号")
    private String stuNo;

    @ApiModelProperty("父亲姓名")
    private String fatherName;

    @ApiModelProperty("父亲联系电话")
    private String fatherRelation;

    /**
     * 请假事由
     */
    @ApiModelProperty("请假事由")
    @TableField("reason")
    @Excel(name = "请假事由")
    private String reason;

    /**
     * 请假类型（0、病假；1、因事）
     */
    @ApiModelProperty("请假类型（0、病假；1、因事）")
    @TableField("leave_type")
    @Excel(name = "请假类型", readConverterExp = "0=、病假；1、因事")
    private String leaveType;

    /**
     * 请假起始时间
     */
    @ApiModelProperty("请假起始时间")
    @TableField("start_date")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "请假起始时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date startDate;

    /**
     * 请假截止时间
     */
    @ApiModelProperty("请假截止时间")
    @TableField("end_date")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "请假截止时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date endDate;

    /**
     * 请假天数
     */
    @ApiModelProperty("请假天数")
    @TableField("leave_days")
    @Excel(name = "请假天数")
    private BigDecimal leaveDays;

    /**
     * 目的地
     */
    @ApiModelProperty("目的地")
    @TableField("destination")
    @Excel(name = "目的地")
    private String destination;

    /**
     * 目的地详细
     */
    @ApiModelProperty("目的地详细")
    @TableField("destination_details")
    @Excel(name = "目的地详细")
    private String destinationDetails;

    /**
     * 是否勾选安全承诺书(0：否；1、是)
     */
    @ApiModelProperty("是否勾选安全承诺书(0：否；1、是)")
    @TableField("safety_promise")
    @Excel(name = "是否勾选安全承诺书(0：否；1、是)")
    private String safetyPromise;

    /**
     * 请假人签字
     */
    @ApiModelProperty("请假人签字")
    @TableField("applicant_signature")
    @Excel(name = "请假人签字")
    private String applicantSignature;

    /**
     * 材料附件
     */
    @ApiModelProperty("材料附件")
    @TableField("attachment")
    @Excel(name = "材料附件")
    private String attachment;

    /**
     * 辅导员意见
     */
    @ApiModelProperty("辅导员意见")
    @TableField("counselor_comments")
    @Excel(name = "辅导员意见")
    private String counselorComments;

    /**
     * 是否销假
     */
    @ApiModelProperty("是否销假")
    @TableField("cancellation")
    @Excel(name = "是否销假")
    private Integer cancellation;

    @ApiModelProperty("销假定位地址")
    @TableField("cancellation_address")
    @Excel(name = "销假定位地址")
    private String cancellationAddress;


    /**
     * 假条状态（0、保存；1、提交）
     */
    @ApiModelProperty("假条状态（0、保存；1、提交）")
    @TableField("leave_status")
    @Excel(name = "假条状态", readConverterExp = "0=、保存；1、提交")
    private String leaveStatus;

    /**
     * 是否离桂(0：否；1、是)
     */
    @ApiModelProperty("是否离桂(0：否；1、是)")
    @TableField("leaving_gx")
    @Excel(name = "是否离桂(0：否；1、是)")
    private String leavingGx;

    /**
     * 申请状态（0、待审批；1、已通过；2、已驳回）
     */
    @ApiModelProperty("审批状态（0、待审批；1、已通过；2、已驳回；3、不同意）")
    @TableField("status")
    @Excel(name = "审批状态", readConverterExp = "审批状态（0、待审批；1、已通过；2、已驳回；3、不同意）")
    private String status;


    /** 流程实例ID */
    @ApiModelProperty("流程实例ID")
    @Excel(name = "流程实例ID")
    @TableField("process_instance_id")
    private String processInstanceId;

    @ApiModelProperty("流程部署编号")
    @TableField("deploy_id")
    @Excel(name = "流程实例ID")
    private String deployId;
}
