package com.srs.flowable.domain;

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.srs.common.annotation.Excel;
import com.srs.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;

import java.util.Date;


/**
 * 应征入伍保留学籍申请对象 rt_enlistment_reserve
 *
 * @author srs
 * @date 2025-10-31
 */
@Data
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@AllArgsConstructor
@Builder
@ApiModel(value = "RtEnlistmentReserve对象" , description = "应征入伍保留学籍申请表")
@TableName("rt_enlistment_reserve")
public class EnlistmentReserve extends BaseEntity{
private static final long serialVersionUID=1L;

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

    /**
     * 申请编号（规则：RY+年份+6位序号，如RY2024000001）
     */
    @ApiModelProperty("申请编号（规则：RY+年份+6位序号，如RY2024000001）")
    @TableField("apply_no")
    @Excel(name = "申请编号" , readConverterExp = "规=则：RY+年份+6位序号，如RY2024000001")
    private String applyNo;

    /**
     * 学生ID（关联sys_user）
     */
    @ApiModelProperty("学生ID（关联sys_user）")
    @TableField("student_id")
    @Excel(name = "学生ID" , readConverterExp = "关=联sys_user")
    private Long studentId;


    /**
     * 辅导员姓名
     */
    @ApiModelProperty("辅导员姓名")
    @TableField("teacher_name")
    @Excel(name = "辅导员姓名")
    private String teacherName;

    /**
     * 姓名
     */
    @ApiModelProperty("姓名")
    @TableField("student_name")
    @Excel(name = "姓名")
    private String studentName;

    /**
     * 性别（0-男
     */
    @ApiModelProperty("性别（1-男 0-女）")
    @TableField("gender")
    @Excel(name = "性别" , readConverterExp = "性别（1-男 0-女）")
    private String gender;

    /**
     * 民族
     */
    @ApiModelProperty("民族")
    @TableField("nation")
    @Excel(name = "民族")
    private String nation;

    /**
     * 年级
     */
    @ApiModelProperty("年级")
    @TableField("grade")
    @Excel(name = "年级")
    private String grade;

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

    /**
     * 班级
     */
    @ApiModelProperty("班级")
    @TableField("class_name")
    @Excel(name = "班级")
    private String className;

    /**
     * 专业名称
     */
    @ApiModelProperty("专业名称")
    @TableField("major")
    @Excel(name = "专业名称")
    private String major;

    /**
     * 家庭地址
     */
    @ApiModelProperty("家庭地址")
    @TableField("family_address")
    @Excel(name = "家庭地址")
    private String familyAddress;

    /**
     * 家长联系电话
     */
    @ApiModelProperty("家长联系电话")
    @TableField("parent_phone")
    @Excel(name = "家长联系电话")
    private String parentPhone;

    /**
     * 申请理由（含入伍时间、服役期限）
     */
    @ApiModelProperty("申请理由（含入伍时间、服役期限）")
    @TableField("apply_reason")
    @Excel(name = "申请理由" , readConverterExp = "含=入伍时间、服役期限")
    private String applyReason;

    /**
     * 申请状态（0-草稿
     */
    @ApiModelProperty("申请状态（0-草稿 1-审批中 2-通过 3-驳回）")
    @TableField("apply_status")
    @Excel(name = "申请状态" , readConverterExp = "申请状态（0-草稿 1-审批中 2-通过 3-驳回）")
    private Long applyStatus;

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

    /**
     * 保留学籍编号（审批通过后生成）
     */
    @ApiModelProperty("保留学籍编号（审批通过后生成）")
    @TableField("reserve_no")
    @Excel(name = "保留学籍编号" , readConverterExp = "审=批通过后生成")
    private String reserveNo;

    /**
     * 保留学籍开始日期
     */
    @ApiModelProperty("保留学籍开始日期")
    @TableField("reserve_start_date")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "保留学籍开始日期" , width = 30, dateFormat = "yyyy-MM-dd")
    private Date reserveStartDate;

    /**
     * 保留学籍结束日期（入伍时间+服役期限）
     */
    @ApiModelProperty("保留学籍结束日期（入伍时间+服役期限）")
    @TableField("reserve_end_date")
    @Excel(name = "保留学籍结束日期" , readConverterExp = "入=伍时间+服役期限")
    private Date reserveEndDate;

    /**
     * 批文号
     */
    @ApiModelProperty("批文号")
    @TableField("approval_no")
    @Excel(name = "批文号")
    private String approvalNo;

    @ApiModelProperty("申请日期")
    @TableField("create_time")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date  createTime;

    @ApiModelProperty("更新日期")
    @TableField("update_time")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date  updateTime;
}
