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

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

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

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

    /**
     * 0-教职工考勤推送，1学生考勤推送，2家长提醒
     */
    @ApiModelProperty(value = "0-教职工考勤推送，1学生考勤推送，2家长提醒")
    @TableField("type")
    private Integer type;

    /**
     * 是否推送周报0-否，1是
     */
    @ApiModelProperty(value = "是否推送周报0-否，1是")
    @TableField("week_report")
    private Integer weekReport;

    @ApiModelProperty(value = "周报推送推送日期：小于周三，推送上月周。大于周三推送本周")
    @TableField("week_report_date")
    private Integer weekReportDate;

    /**
     * 周报推送时间：每周一XX点
     */
    @ApiModelProperty(value = "周报推送时间：每周一XX点")
    @TableField("week_report_time")
    @DateTimeFormat(pattern = "HH:mm:ss")
    @JsonFormat(timezone = "GMT+8", pattern = "HH:mm:ss")
    private LocalTime weekReportTime;


    /**
     * 是否推送月报0-否，1是
     */
    @ApiModelProperty(value = "是否推送月报0-否，1是")
    @TableField("month_report")
    private Integer monthReport;

    @ApiModelProperty(value = "月报推送推送日期：小于5号，推送上月。大于5号推送本月")
    @TableField("month_report_date")
    private Integer monthReportDate;

    /**
     * 月报推送时间：每月1号XX点
     */
    @ApiModelProperty(value = "月报推送时间：每月1号XX点")
    @TableField("month_report_time")
    @DateTimeFormat(pattern = "HH:mm:ss")
    @JsonFormat(timezone = "GMT+8", pattern = "HH:mm:ss")
    private LocalTime monthReportTime;

    /**
     * 是否推送迟到报告 0-否，1是
     */
    @ApiModelProperty(value = "是否推送迟到报告 0-否，1是")
    @TableField("late_report")
    private Integer lateReport;

    /**
     * 迟到报告推送时间：超过考勤开始时间XXX分钟
     */
    @ApiModelProperty(value = "迟到报告推送时间：超过考勤开始时间XXX分钟")
    @TableField("late_report_time")
    private Integer lateReportTime;


    /**
     * 是否推送缺勤报告 0-否，1是
     */
    @ApiModelProperty(value = "是否推送缺勤报告 0-否，1是")
    @TableField("miss_report")
    private Integer missReport;

    /**
     * 缺勤报告推送时间：超过考勤结束时间XXX分钟
     */
    @ApiModelProperty(value = "缺勤报告推送时间：超过考勤结束时间XXX分钟")
    @TableField("miss_report_time")
    private Integer missReportTime;


    /**
     * 考勤管理员是否推送报告，1是，0否
     */
    @ApiModelProperty(value = "考勤管理员是否推送报告，1是，0否")
    @TableField("obj_manager")
    private Integer objManager;


    /**
     * 指定人员：职工ID集合，逗号分隔
     */
    @ApiModelProperty(value = "指定人员：职工ID集合，逗号分隔")
    @TableField("obj_staff_ids")
    private String objStaffIds;

    /**
     * 家长入校/离校提醒：0否，1是
     */
    @ApiModelProperty(value = "家长入校/离校提醒：0否，1是")
    @TableField("parent_enroll_report")
    private Integer parentEnrollReport;


    /**
     * 是否推送日报0-否，1是
     */
    @ApiModelProperty(value = "是否推送日报0-否，1是")
    @TableField("day_report")
    private Integer dayReport;

    /**
     * 日报推送时间：超过考勤结束时间XXX分钟
     */
    @ApiModelProperty(value = "日报推送时间：超过考勤结束时间XXX分钟")
    @TableField("day_report_time")
    private Integer dayReportTime;
}