package com.engine.salary.service; import com.engine.salary.entity.salaryBill.dto.*; import com.engine.salary.entity.salaryBill.param.*; import com.engine.salary.entity.salaryBill.po.SalarySendInfoPO; import com.engine.salary.entity.salaryBill.po.SalarySendPO; import com.engine.salary.entity.salaryBill.po.SalaryTemplatePO; import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO; import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO; import com.engine.salary.entity.salaryacct.po.SalaryAcctResultPO; import com.engine.salary.util.page.PageInfo; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.util.Collection; import java.util.List; import java.util.Map; import java.util.Set; /** * @Description: 工资单发放 */ public interface SalarySendService { /** * 获取单个工资单发放 * * @param salarySendId * @return */ SalarySendPO getById(Long salarySendId); List findReAccountingIdsByAcctIds(List salaryAccountingIds, String tenantKey); /** * 薪资核算-归档生成工资单 * @param salaryAccountingId * @return */ String generateSalaryBill(Long salaryAccountingId); /** * 薪资核算-归档撤销工资单 * @param salaryAcctRecord * @return */ void revokeSalaryBill(SalaryAcctRecordPO salaryAcctRecord); /** * 工资单发放列表(分页) * * @param queryParam * @return */ PageInfo listPage(SalarySendQueryParam queryParam); /** * 工资单发放 * @param queryParam * @return */ Map grant(SalarySendGrantParam queryParam); /** * 工资单撤回 * @param queryParam * @return */ Map withdraw(SalarySendWithdrawParam queryParam); /** * 工资单发放基本信息 * @param id * @return */ SalarySendBaseInfoDTO getBaseInfo(Long id); /** * 我的工资单 * @param salaryInfoId * @param currentEmployeeId * @return */ Map mySalaryBill(Long salaryInfoId, Long currentEmployeeId); /** * 工资单发放信息列表(分页) * @param queryParam * @return */ PageInfo salarySendInfoListPage(SalarySendInfoQueryParam queryParam); List salarySendInfoList(Long salarySendId); /** * 我的工资单列表详情 * * @param queryParam * @return */ PageInfo mySalaryBillListPage(SalaryBillQueryParam queryParam); /** * 工资单发放详情列表 * @param queryParam * @return */ PageInfo salarySendInfoDetailListPage(SalarySendDetailQueryParam queryParam); /** * 获取薪资项目设置 * * @param salaryTemplatePO * @return */ List getSalaryItemsSetting(SalaryTemplatePO salaryTemplatePO, boolean isReplenish); /** * 构建详情列表 * * @param salaryItems * @param records * @param salaryAccountingId * @return */ List> buildDetailList(List salaryItems, List records, Long salaryAccountingId); /** * 构建详情列表 * * @param records * @param salaryAcctResultValues * @return */ List> buildDetailList(List records,List salaryAcctEmployees, List salaryAcctResultValues); /** * 导出-工资单发放详情列表 * * @param queryParam */ XSSFWorkbook exportInfoList(SalarySendInfoQueryParam queryParam); /** * 导出-工资单发放详情列表 * @param salarySend * @param queryParam */ XSSFWorkbook exportDetailList(SalarySendPO salarySend, SalarySendDetailQueryParam queryParam); /** * 获取核算工资单发放结果 * * @param salaryAcctRecordIds * @return */ List getSalarySendCheckResult(Set salaryAcctRecordIds); /** * @description 处理历史数据 * @return null * @author Harryxzy * @date 2022/11/25 10:45 */ void handleHistory(); /** * 合计行 * * @param queryParam * @return */ Map sumRow(SalarySendInfoQueryParam queryParam); /** * 根据薪资核算id删除 工资单 * @param ids */ void deleteBySalaryAcctRecordIds(Collection ids); /** * 发送短信验证码 * @param param */ void sendMobileCode(SMSCodeSendParam param); /** * 校验验证码 * @param param */ Boolean checkMobileCode(SMSCodeCheckParam param); /** * 获取工资单id下需要发放的工资单明细 * @return */ List getNeedSendInfoList(List salarySendIds); /** * 获取这些模板下未发放完的工资单 * @param salarySobIds * @return */ List getNeedSendListBySalarySobIds(List salarySobIds); /** * 获取所有为确认的工资单 * @return * @return */ List listAllUnConfirmedSendInfo(); /** * 自动确认工资单 * @param needAutoIds */ void autoConfirmSalaryBill(List needAutoIds); }