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

import java.util.Date;
import lombok.Data;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;

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

import java.time.LocalDateTime;
import java.time.LocalDate;
import java.time.LocalTime;

/**
 * @date 2023-08-09 11:37:25
 */
@Data
@TableName("attendance_rule")
public class AttendanceRule {

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

    /**
     *
     */
    @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 = "create_name", fill = FieldFill.INSERT)
    private String createName;

    /**
     *
     */
    @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;

    /**
     *
     */
    @ApiModelProperty(value = "")
    @TableField("del_flag")
    @TableLogic(value = "0", delval = "1")
    private Integer delFlag;

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

    /**
     * 考勤规则名称
     */
    @ApiModelProperty(value = "考勤规则名称")
    @TableField("name")
    private String name;

    /**
     * 0-教职工打卡，1学生上学考勤，2学生宿舍考勤
     */
    @ApiModelProperty(value = "0-教职工打卡，1学生上学考勤，2学生宿舍考勤")
    @TableField("user_type")
    private Integer userType;

    /**
     * 0-固定上下班时间模式，1自由打卡模式
     */
    @ApiModelProperty(value = "0-固定上下班时间模式，1自由打卡模式")
    @TableField("type")
    private Integer type;

    /**
     * 打卡日期，1-周一，2-周二....多个用','连接
     */
    @ApiModelProperty(value = "打卡日期，1-周一，2-周二....多个用','连接")
    @TableField("week")
    private String week;

    /**
     * 法定节假日是否打卡，0-是，1-否
     */
    @ApiModelProperty(value = "法定节假日是否打卡，0-是，1-否")
    @TableField("holiday_attendance")
    private Integer holidayAttendance;

    /**
     * 管理员打卡规则内容权限，0-无，1-有
     */
    @ApiModelProperty(value = "管理员打卡规则内容权限，0-无，1-有")
    @TableField("role_rule")
    private Integer roleRule;

    /**
     * 管理员打卡人员与白名单权限，0-无，1-有
     */
    @ApiModelProperty(value = "管理员打卡人员与白名单权限，0-无，1-有")
    @TableField("role_user")
    private Integer roleUser;

    /**
     * 管理员节假日与特殊日期权限，0-无，1-有
     */
    @ApiModelProperty(value = "管理员节假日与特殊日期权限，0-无，1-有")
    @TableField("role_date")
    private Integer roleDate;

    /**
     * 管理员打卡提醒权限，0-无，1-有
     */
    @ApiModelProperty(value = "管理员打卡提醒权限，0-无，1-有")
    @TableField("role_remind")
    private Integer roleRemind;

    /**
     * 打卡是必须拍照 0-无，1-必须
     */
    @ApiModelProperty(value = "打卡是必须拍照 0-无，1-必须")
    @TableField("photo_take")
    private Integer photoTake;

    /**
     * 打卡时必须人脸识别0-无，1-必须
     */
    @ApiModelProperty(value = "打卡时必须人脸识别0-无，1-必须")
    @TableField("face_take")
    private Integer faceTake;

    /**
     * 填写备注时必须拍照0-无，1-必须
     */
    @ApiModelProperty(value = "填写备注时必须拍照0-无，1-必须")
    @TableField("photo_remark")
    private Integer photoRemark;

    /**
     * 异常打卡可以提交申请，审批后可修正打卡状态
     */
    @ApiModelProperty(value = "异常打卡可以提交申请，审批后可修正打卡状态")
    @TableField("apply_amendment")
    private Integer applyAmendment;

    /**
     * 每月补卡次数
     */
    @ApiModelProperty(value = "每月补卡次数")
    @TableField("reissue_num")
    private Integer reissueNum;

    /**
     * 每月补卡截止日期
     */
    @ApiModelProperty(value = "每月补卡截止日期")
    @TableField("reissue_end_date")
    private Integer reissueEndDate;


    /**
     * 启用状态：0-未启用，1-已启用
     */
    @ApiModelProperty(value = "启用状态：0-未启用，1-已启用")
    @TableField("status")
    private Integer status;

    /**
     * 有效开始时间
     */
    @ApiModelProperty(value = "有效开始时间")
    @TableField("start_date")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
    private LocalDate startDate;


    /**
     * 有效结束时间
     */
    @ApiModelProperty(value = "有效结束时间")
    @TableField("end_date")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
    private LocalDate endDate;
}