package cn.iocoder.yudao.module.bpm.service.workovertime;

import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAOvertimeItemDO;
import cn.iocoder.yudao.module.system.api.attendance.vo.AttendancePunchRecordVO;
import cn.iocoder.yudao.module.system.api.workovertime.vo.WorkOvertimeRuleApiVO;
import cn.iocoder.yudao.module.system.api.workovertime.vo.WorkOvertimeRuleItemApiVO;

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

/**
 * 加班 - Service 接口
 *
 * @author 艾楷
 */
public interface WorkOvertimeService {

    /**
     * 获取加班时长  计算方式 1按审批时长计算 2在审批的时段内，按打卡时长计算 3无需审批，按打卡时长计算  (这里是审批后的节点 只计算 1和2两种情况)
     *
     * @param item                      加班记录
     * @param recordList                打卡记录
     * @param rule                      加班规则
     * @param ruleItem 加班规则子表
     * @return
     */
    void getOvertimeHours(BpmOAOvertimeItemDO item, List<AttendancePunchRecordVO> recordList, WorkOvertimeRuleApiVO rule, WorkOvertimeRuleItemApiVO ruleItem);
}
