package com.engine.salary.service;

import com.engine.salary.entity.salaryacct.dto.SalaryCheckResultRecordCountDTO;
import com.engine.salary.entity.salaryacct.param.SalaryCheckResultRecordQueryParam;
import com.engine.salary.entity.salaryacct.po.SalaryCheckResultRecordPO;
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 SalaryCheckResultDetailService {

    /**
     * 统计薪资核算结果校验异常的明细数量
     *
     * @param checkResultId 薪资核算结果的校验异常id
     * @return
     */
    List<SalaryCheckResultRecordCountDTO> countByCheckResultId(Collection<Long> checkResultId);

    /**
     * 根据校验异常id查询校验异常明细
     *
     * @param checkResultId 校验异常id
     * @return
     */
    List<SalaryCheckResultRecordPO> listByCheckResultId(Long checkResultId);

    /**
     * 根据薪资核算记录id查询校验异常明细
     *
     * @param salaryAcctRecordId
     * @return
     */
    List<SalaryCheckResultRecordPO> listBySalaryAcctRecordId(Long salaryAcctRecordId);

    /**
     * 根据列表查询条件查询校验异常明细（分页）
     *
     * @param queryParam 列表查询条件
     * @return
     */
    PageInfo<SalaryCheckResultRecordPO> listPageByParam(SalaryCheckResultRecordQueryParam queryParam);

    /**
     * 批量保存
     *
     * @param salaryCheckResultRecordPOS
     */
    void batchSave(Collection<SalaryCheckResultRecordPO> salaryCheckResultRecordPOS);

    /**
     * 根据主键id删除校验异常明细
     *
     * @param ids       主键id
     */
    void deleteByIds(Collection<Long> ids);

    /**
     * 根据薪资核算人员id删除薪资核算结果的校验异常明细
     *
     * @param salaryAcctEmployeeIds 薪资核算人员id
     */
    void deleteBySalaryAcctEmployeeIds(Collection<Long> salaryAcctEmployeeIds);

    /**
     * 根据薪资核算记录id删除薪资核算结果的校验异常明细
     *
     * @param salaryAcctRecordIds 薪资核算记录id
     */
    void deleteBySalaryAcctRecordIds(Collection<Long> salaryAcctRecordIds);
}
