package cn.iocoder.yudao.module.hrm.service.salary; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.hrm.controller.admin.salary.vo.HrmSalaryCalculationPageReqVO; import cn.iocoder.yudao.module.hrm.dal.dataobject.salary.HrmSalaryCalculationDO; import java.util.List; /** * 薪酬核算 Service 接口 * * @author 芋道源码 */ public interface HrmSalaryCalculationService { /** * 获得薪酬核算分页 */ PageResult getSalaryCalculationPage(HrmSalaryCalculationPageReqVO pageReqVO); /** * 获得薪酬核算 */ HrmSalaryCalculationDO getSalaryCalculation(Long id); /** * 执行薪酬核算(按周期) * * @param period 核算周期,格式如 2024-01 */ void calculateSalary(String period); /** * 执行薪酬核算(按周期和部门) * * @param period 核算周期,格式如 2024-01 * @param deptId 部门ID,为空则核算所有部门 */ void calculateSalary(String period, Long deptId); /** * 批量确认薪酬核算 * * @param ids 核算ID列表 */ void confirmSalaryCalculation(List ids); /** * 撤销薪酬核算确认 * 将已确认的核算记录状态恢复为待确认,同时删除关联的发放明细 * * @param ids 核算ID列表 */ void revokeSalaryCalculation(List ids); /** * 删除薪酬核算记录(仅待确认状态可删除) * * @param id 核算ID */ void deleteSalaryCalculation(Long id); /** * 获得指定周期的薪酬核算列表 */ List getSalaryCalculationListByPeriod(String period); /** * 预览部门下所有员工的薪资核算信息(已计算好的) * * @param period 核算周期,格式如 2024-01 * @param deptId 部门ID * @return 薪酬核算列表 */ List previewSalaryCalculation(String period, Long deptId); /** * 批量保存薪酬核算记录 * * @param calculationList 薪酬核算列表 */ void saveSalaryCalculationList(List calculationList); }