package com.engine.salary.service;

import com.engine.salary.entity.salarysob.param.SalarySobCheckRuleQueryParam;
import com.engine.salary.entity.salarysob.param.SalarySobCheckRuleSaveParam;
import com.engine.salary.entity.salarysob.param.UpdateCheckRuleFormulaParam;
import com.engine.salary.entity.salarysob.po.SalarySobCheckRulePO;
import com.engine.salary.util.page.PageInfo;

import java.util.Collection;
import java.util.List;

/**
 * 薪资账套的校验规则
 * <p>Copyright: Copyright (c) 2022</p>
 * <p>Company: 泛微软件</p>
 *
 * @author qiantao
 * @version 1.0
 **/
public interface SalarySobCheckRuleService {

    /**
     * 根据主键id获取单个薪资账套的校验规则
     *
     * @param id        主键id
     * @return
     */
    SalarySobCheckRulePO getById(Long id);

    /**
     * 根据主键id查询薪资账套的校验规则
     *
     * @param ids       主键id
     * @return
     */
    List<SalarySobCheckRulePO> listByIds(Collection<Long> ids);

    /**
     * 根据薪资账套id查询薪资账套的校验规则
     *
     * @param salarySobId 薪资账套的id
     * @return
     */
    List<SalarySobCheckRulePO> listBySalarySobId(Long salarySobId);

    /**
     * 根据薪资账套id、名称（精确匹配）查询薪资账套的校验规则
     *
     * @param salarySobId 薪资账套的id
     * @param name        名称
     * @return
     */
    List<SalarySobCheckRulePO> listBySalarySobIdAndName(Long salarySobId, String name);

    /**
     * 根据列表搜索条件查询薪资账套的校验规则（分页）
     *
     * @param queryParam 搜索条件
     * @return
     */
    PageInfo<SalarySobCheckRulePO> listPageByParam(SalarySobCheckRuleQueryParam queryParam);

    /**
     * 保存
     *
     * @param saveParam  保存
     */
    void save(SalarySobCheckRuleSaveParam saveParam);

    /**
     * 批量保存
     *
     * @param salarySobCheckRulePOS 薪资账套的校验规则
     */
    void batchSave(Collection<SalarySobCheckRulePO> salarySobCheckRulePOS);

    /**
     * 更新
     *
     * @param updateParam 更新参数
     */
    void update(SalarySobCheckRuleSaveParam updateParam);

    /**
     * 更新校验规则的公式
     *
     * @param updateParam 更新参数
     */
    void updateFormulaId(UpdateCheckRuleFormulaParam updateParam);

    /**
     * 根据主键id删除薪资账套的校验规则
     *
     * @param ids       主键id
     */
    void deleteByIds(Collection<Long> ids);

    /**
     * 根据薪资账套id删除薪资账套的校验规则
     *
     * @param salarySobIds 薪资账套id
     */
    void deleteBySalarySobIds(Collection<Long> salarySobIds);


}
