package jnpf.entity.attendance;

import com.baomidou.mybatisplus.annotation.*;
import jnpf.model.attendance.vo.AttendanceGroupUserVo;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 划线排班配置
 *
 * @author ahua
 * @version 2.1
 * @copyright 引迈信息技术有限公司（https://www.jnpfsoft.com）
 * @date 2025-12-30
 */

@Getter
@Setter
@NoArgsConstructor
@TableName(value = "ftb_attendance_line_scheduling_config")
public class FtbAttendanceLineSchedulingConfig implements Serializable {

    private static final long serialVersionUID = 1L;
    @TableId("F_Id")
    public String id;
    /**
     * 考勤组id
     */
    @TableField(value = "F_GroupId")
    private String groupId;

    /**
     * 划线排班员工类型
     */
    @TableField(value = "F_EmployeeType")
    private String employeeType;

    /**
     * 划线排班员工工作性质
     */
    @TableField(value = "F_WorkNature")
    private String workNature;

    /**
     * 划线排班员工岗位
     */
    @TableField(value = "F_Position")
    private String position;
    /**
     * 划线排班成员标识 0全部 1指定
     */
    @TableField(value = "F_MembersType")
    private Integer membersType = 1;
    /**
     * 划线排班成员
     */
    @TableField(value = "F_Members")
    private String members;
    /**
     * 划线排班成员列表
     */
    @TableField(exist = false)
    private List<AttendanceGroupUserVo> memberList;
    /**
     * 上班打卡限制时间（小时）
     */
    @TableField(value = "F_StartCheckInLimit")
    private BigDecimal startCheckInLimit;

    /**
     * 下班打卡限制时间（小时）
     */
    @TableField(value = "F_EndCheckInLimit")
    private BigDecimal endCheckInLimit;
    /**
     * 1当日 2次日
     */
    @TableField(value = "F_StartType")
    private Integer startType;
    /**
     * 开始时间
     */
    @TableField(value = "F_StartTime")
    private String startTime;
    /**
     * 1当日 2次日
     */
    @TableField(value = "F_EndType")
    private Integer endType;
    /**
     * 结束时间
     */
    @TableField(value = "F_EndTime")
    private String endTime;

    /**
     * 员工消息通知（是/否）
     */
    @TableField(value = "F_EmployeeNotify")
    private Integer employeeNotify;

    /**
     * 划线排班提前通知岗位
     */
    @TableField(value = "F_NotifyPosition")
    private String notifyPosition;

    /**
     * 划线排班提前通知人员
     */
    @TableField(value = "F_NotifyPerson")
    private String notifyPerson;

    /**
     * 划线排班提前通知人员列表
     */
    @TableField(exist = false)
    private List<AttendanceGroupUserVo> notifyPersonList;

    /**
     * 划线排班提前通知时间类型（1每天/2每周/3每月）
     */
    @TableField(value = "F_NotifyTimeType")
    private Integer notifyTimeType;

    /**
     * 划线排班提前通知时间
     */
    @TableField(value = "F_NotifyTime", insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED)
    private String notifyTime;
    @TableField(
            value = "F_LastModifyTime",
            fill = FieldFill.UPDATE
    )
    private Date lastModifyTime;
    @TableField(
            value = "F_LastModifyUserId",
            fill = FieldFill.UPDATE
    )
    private String lastModifyUserId;
}