package cn.iocoder.yudao.module.system.dal.dataobject.holiday.holidaysetting;

import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import cn.iocoder.yudao.module.system.dal.dataobject.holiday.holidaybalancesetting.HolidayBalanceSettingDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;

/**
 * 假期设置 DO
 *
 * @author 艾楷
 */
@TableName("kq_holiday_setting")
@KeySequence("kq_holiday_setting_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class HolidaySettingDO extends BaseDO {

    /**
     * 编号
     */
    @TableId
    private Long id;
    /**
     * 假期规则名称
     */
    private String name;
    /**
     * 应用范围 0全公司 1指定(记录在kq_holiday_setting_range 表中)
     */
    private Integer applicationScope;

    /**
     * 新员工请假类型 1入职即可请假 2转正后才可请假
     */
    private Integer newEmployeeLeaveType;
    /**
     * 是否带薪 0否 1是
     */
    private Integer salaryFlag;
    /**
     * 请假最小单位 1按天 2按半天 3按小时
     */
    private Integer minUnit;
    /**
     * 请假取整 0否 1是
     */
    private Integer roundFlag;
    /**
     * 取整方向 0向下 1向上 (需要取整才有意义)
     */
    private Integer roundDirection;
    /**
     * 取整单位 0按半小时 1按小时  (需要取整才有意义)
     */
    private Integer roundUnit;
    /**
     * 请假计算方式 0按自然日计算（休息日也会记录请假） 1按工作日计算（请假时段中不包含员工的休息日）
     */
    private Integer calculationMethod;

    /**
     * 余额规则 发放方式 1每月自动发放 2每年自动发放 3手动发放 4加班时长自动计入余额 null 表示不限制余额
     */
    @TableField(exist = false)
    private Integer balanceRule;

    /**
     * 假期余额设置
     */
    @TableField(exist = false)
    private HolidayBalanceSettingDO holidayBalanceSettingDO;
}
