package cn.iocoder.yudao.module.system.dal.dataobject.workovertime;

import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
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.*;

import java.math.BigDecimal;
import java.util.List;

/**
 * 加班规则子表(按日类型区分) DO
 *
 * @author 艾楷
 */
@TableName("kq_work_overtime_rule_item")
@KeySequence("kq_work_overtime_rule_item_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class WorkOvertimeRuleItemDO extends BaseDO {

    /**
     * 主键
     */
    @TableId
    private Long id;
    /**
     * 加班规则id
     */
    private Long ruleId;
    /**
     * 类型 1工作日 2休息日 3节假日
     */
    private Integer type;
    /**
     * 状态 0不允许加班 1允许加班
     */
    private Integer status;
    /**
     * 可加班时间类型(只有类型为工作日有意义) 1允许班前和班后加班  2仅允许班前加班 3仅允许班后加班
     */
    private Integer allowOvertimeTimeType;
    /**
     * 计算方式 1按审批时长计算 2在审批的时段内，按打卡时长计算 3无需审批，按打卡时长计算
     */
    private Integer calculationMode;
    /**
     * 加班起算时间 下班n分钟后开始算加班
     */
    private Integer overtimeStartingTime;
    /**
     * 班前加班少于多少分钟，不计入加班
     */
    private Integer beforeWorkOvertime;
    /**
     * 班后加班少于多少分钟，不计入加班
     */
    private Integer afterWorkOvertime;
    /**
     * 累计加班少于多少分钟，不计入加班
     */
    private Integer overtimeTotalHours;
    /**
     * 是否扣除休息时间 0否 1是
     */
    private Integer isDeductBreakTime;
    /**
     * 加班时长计为调休或加班费 0否 1是
     */
    private Integer isTransformation;
    /**
     * 转换类型 1计为调休 2计为加班费
     */
    private Integer transformationType;
    /**
     * 调休转换比例
     */
    private BigDecimal compensatoryLeaveRatio;
    /**
     * 假期id
     */
    private Long holidayId;
    /**
     * 加班扣除规则
     */
    @TableField(exist = false)
    private List<WorkOvertimeDeductRuleDO> deductRules;
}
