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

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.system.controller.admin.workovertime.vo.WorkOvertimeMoreRuleExtPageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.workovertime.vo.WorkOvertimeMoreRuleExtSaveReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.workovertime.WorkOvertimeMoreRuleExtDO;

import javax.validation.Valid;
import java.util.List;

/**
 * 加班更多规则拓展 Service 接口
 *
 * @author 艾楷
 */
public interface WorkOvertimeMoreRuleExtService {

    /**
     * 创建加班更多规则拓展
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createWorkOvertimeMoreRuleExt(@Valid WorkOvertimeMoreRuleExtSaveReqVO createReqVO);

    /**
     * 更新加班更多规则拓展
     *
     * @param updateReqVO 更新信息
     */
    void updateWorkOvertimeMoreRuleExt(@Valid WorkOvertimeMoreRuleExtSaveReqVO updateReqVO);

    /**
     * 删除加班更多规则拓展
     *
     * @param id 编号
     */
    void deleteWorkOvertimeMoreRuleExt(Long id);

    /**
     * 获得加班更多规则拓展
     *
     * @param id 编号
     * @return 加班更多规则拓展
     */
    WorkOvertimeMoreRuleExtDO getWorkOvertimeMoreRuleExt(Long id);

    /**
     * 获得加班更多规则拓展分页
     *
     * @param pageReqVO 分页查询
     * @return 加班更多规则拓展分页
     */
    PageResult<WorkOvertimeMoreRuleExtDO> getWorkOvertimeMoreRuleExtPage(WorkOvertimeMoreRuleExtPageReqVO pageReqVO);

    /**
     * 根据更多规则id获取跟多规则拓展
     *
     * @param moreRuleId
     * @return
     */
    List<WorkOvertimeMoreRuleExtDO> getListByMoreRuleId(Long moreRuleId);

    /**
     * 批量新增删除修改
     *
     * @param moreRuleId
     * @param moreRuleLists
     */
    void insertUpdateDeleteBatch(Long moreRuleId, List<List<WorkOvertimeMoreRuleExtDO>> moreRuleLists);
}
