package com.engine.salary.service;
import com.engine.salary.entity.datacollection.DataCollectionEmployee;
import com.engine.salary.entity.salaryacct.dto.SalaryAcctEmployeeCountDTO;
import com.engine.salary.entity.salaryacct.param.*;
import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO;
import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO;
import com.engine.salary.util.page.PageInfo;
import java.util.Collection;
import java.util.List;
/**
* 薪资核算人员
*
Copyright: Copyright (c) 2022
* Company: 泛微软件
*
* @author qiantao
* @version 1.0
**/
public interface SalaryAcctEmployeeService {
/**
* 根据薪资核算记录id统计薪资核算人员的数量
*
* @param salaryAcctRecordIds 薪资核算记录的id
* @return
*/
List countBySalaryAcctRecordId(Collection salaryAcctRecordIds);
/**
* 根据主键id获取单个薪资核算人员
*
* @param id 主键id
* @return
*/
SalaryAcctEmployeePO getById(Long id);
/**
* 根据主键id查询薪资核算人员
*
* @param ids 主键id
* @return
*/
List listByIds(Collection ids);
/**
* 根据薪资核算记录id查询薪资核算人员
*
* @param salaryAcctRecordId 薪资核算记录id
* @return
*/
List listBySalaryAcctRecordId(Long salaryAcctRecordId);
/**
* 根据薪资核算记录id查询薪资核算人员
*
* @param salaryAcctRecordIds 薪资核算记录id
* @return
*/
List listBySalaryAcctRecordIds(Collection salaryAcctRecordIds);
/**
* 根据薪资核算记录id、个税扣缴义务人id查询薪资核算人员
*
* @param salaryAcctRecordId 薪资核算记录id
* @param taxAgentId 个税扣缴义务人id
* @return
*/
List listBySalaryAcctRecordIdAndTaxAgentId(Long salaryAcctRecordId, Long taxAgentId);
/**
* 根据薪资核算记录id、主键id查询薪资核算人员
*
* @param salaryAcctRecordId 薪资核算记录id
* @param ids 主键id
* @return
*/
List listBySalaryAcctRecordIdAndIds(Long salaryAcctRecordId, Collection ids);
/**
* 根据薪资核算记录id、人员id查询薪资核算人员
*
* @param salaryAcctRecordId 薪资核算记录id
* @param employeeIds 人员id
* @return
*/
List listBySalaryAcctRecordIdAndEmployeeIds(Long salaryAcctRecordId, Collection employeeIds);
/**
* 根据薪资核算记录id、人员id查询薪资核算人员
*
* @param salaryAcctRecordIds 薪资核算记录id
* @param employeeIds 人员id
* @return
*/
List listBySalaryAcctRecordIdsAndEmployeeIds(Collection salaryAcctRecordIds, Collection employeeIds);
/**
* 根据薪资核算记录id、人员id、个税扣缴义务人id查询薪资核算人员
*
* @param salaryAcctRecordIds 薪资核算记录id
* @param employeeId 人员id
* @param taxAgentId 个税扣缴义务人
* @return
*/
List listByRecordIdsAndEmpIdAndTaxAgentId(Collection salaryAcctRecordIds, Long employeeId, Long taxAgentId);
/**
* 根据列表查询条件查询薪资核算人员(分页)
*
* @param queryParam 列表查询条件
* @return
*/
PageInfo listPageByParam(SalaryAcctEmployeeQueryParam queryParam);
/**
* 根据列表查询条件查询薪资核算人员
*
* @param queryParam 列表查询条件
* @return
*/
List listByParam(SalaryAcctEmployeeQueryParam queryParam);
/**
* 根据薪资核算结果列表的列表查询条件查询薪资核算人员(分页)
*
* @param queryParam 薪资核算结果列表的列表查询条件
* @return
*/
PageInfo listPageByResultQueryParam(SalaryAcctResultQueryParam queryParam) ;
/**
* 根据薪资核算结果列表的列表查询条件查询薪资核算人员
*
* @param queryParam 薪资核算结果列表的列表查询条件
* @return
*/
List listByResultQueryParam(SalaryAcctResultQueryParam queryParam);
/**
* 根据列表查询条件查询同比减少的薪资核算人员(分页)
*
* @param queryParam 列表查询条件
* @return
*/
PageInfo listPageByParam4Reduce(SalaryAcctEmployeeQueryParam queryParam);
/**
* 根据列表查询条件查询同比减少的薪资核算人员
*
* @param queryParam 列表查询条件
* @return
*/
List listByParam4Reduce(SalaryAcctEmployeeQueryParam queryParam);
/**
* 根据列表查询条件查询合并计税的薪资核算人员(分页)
*
* @param queryParam 列表查询条件
* @return
*/
PageInfo listPageByParam4ConsolidatedTax(SalaryAcctEmployeeQueryParam queryParam);
/**
* 根据列表查询条件查询合并计税的薪资核算人员
*
* @param queryParam 列表查询条件
* @return
*/
List listByParam4ConsolidatedTax(SalaryAcctEmployeeQueryParam queryParam);
/**
* 添加薪资核算人员
*
* @param saveParam 保存参数
*/
void save(SalaryAcctEmployeeSaveParam saveParam);
/**
* 从环比上月减少添加薪资核算人员
*
* @param param
*/
void addFromReduce(SalaryAcctEmployeeAddParam param);
/**
* 批量保存
*
* @param salaryAcctEmployeePOS 薪资核算人员
*/
void batchSave(Collection salaryAcctEmployeePOS);
/**
* 薪资核算记录(会删除薪资核算结果、校验异常明细、线下对比导入结果)
*
* @param ids
*/
void deleteByIds(Collection ids);
/**
* 根据参数删除薪资核算人员
*
* @param deleteParam 删除参数
*/
void deleteByParam(SalaryAcctEmployeeDeleteParam deleteParam);
/**
* 根据薪资核算记录id删除薪资核算人员
*
* @param salaryAcctRecordIds 薪资核算记录id
*/
void deleteBySalaryAcctRecordIds(Collection salaryAcctRecordIds);
/**
* 根据薪资核算记录id初始化薪资核算人员
*
* @param salaryAcctRecordPO 薪资核算记录
*/
void initBySalaryAcctRecord(SalaryAcctRecordPO salaryAcctRecordPO);
/**
* 刷新薪资核算人员的个税扣缴义务人
*
* @param salaryAcctRecordId 薪资核算记录
*/
void refresh(Long salaryAcctRecordId);
/**
* 筛选导入人员信息可以在人力资源池中匹配到的人员信息
* @param employeeList 人力资源池
* @param userName 姓名
* @param deparmentName 部门
* @param mobile 手机号
* @param workcode 工号
*/
List matchImportEmployee(List employeeList, String userName, String deparmentName, String mobile, String workcode);
}