package com.engine.salary.service;
import com.engine.salary.common.LocalDateRange;
import com.engine.salary.entity.salaryacct.param.SalaryAcctBatParam;
import com.engine.salary.entity.salaryacct.param.SalaryAcctRecordQueryParam;
import com.engine.salary.entity.salaryacct.param.SalaryAcctRecordSaveParam;
import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO;
import com.engine.salary.entity.salaryacct.po.SalaryAcctResultPO;
import com.engine.salary.entity.salarysob.dto.SalarySobCycleDTO;
import com.engine.salary.enums.salaryaccounting.SalaryAcctRecordStatusEnum;
import com.engine.salary.util.page.PageInfo;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import java.util.Set;
/**
* 薪资核算记录
*
Copyright: Copyright (c) 2022
* Company: 泛微软件
*
* @author qiantao
* @version 1.0
**/
public interface SalaryAcctRecordService {
/**
* 根据主键id获取单条薪资核算记录
*
* @param id 主键id
* @return
*/
SalaryAcctRecordPO getById(Long id);
List listAll();
/**
* 根据主键id查询薪资核算记录
*
* @param ids 主键id
* @return
*/
List listByIds(Collection ids);
/**
* 根据薪资账套id、薪资所属月查询薪资核算记录
*
* @param salarySobIds 薪资账套id
* @param salaryMonthDateRange 薪资所属月的时间范围
* @return
*/
List listBySalarySobIdsAndSalaryMonth(Collection salarySobIds, LocalDateRange salaryMonthDateRange);
/**
* 根据薪资账套id、税款所属期查询薪资核算记录
*
* @param salarySobIds 薪资账套id
* @param taxCycleDateRange 税款所属期的时间范围
* @return
*/
List listBySalarySobIdsAndTaxCycle(Collection salarySobIds, LocalDateRange taxCycleDateRange);
/**
* 根据薪资所属月查询薪资核算记录
*
* @param salaryMonthDateRange 薪资所属月的时间范围
* @return
*/
List listBySalaryMonth(LocalDateRange salaryMonthDateRange);
/**
* 根据税款周期查询薪资核算记录
*
* @param salaryMonthDateRange
* @return
*/
List listByTaxCycle(LocalDateRange salaryMonthDateRange,Collection salarySobIds);
/**
* 根据列表查询条件查询薪资核算记录(分页)
*
* @param queryParam 列表查询条件
* @return
*/
PageInfo listPageByParam(SalaryAcctRecordQueryParam queryParam);
/**
* 根据id查询同一个账套上一个月的薪资核算记录
*
* @param id 薪资核算记录id
* @return
*/
List listById4LastSalaryMonth(Long id);
/**
* 根据薪资账套ID查询薪资核算记录
*
* @param salarySobIds 薪资账套id
* @return
*/
List listBySalarySobIds(Collection salarySobIds);
/**
* 根据id查询其他合并计税的薪资核算记录
*
* @param id 薪资核算记录的id
* @return
*/
List listById4OtherConsolidatedTax(Long id);
/**
* 薪资核算记录所用的薪资账套薪资周期、考勤周期……
*
* @param id 薪资核算记录的id
* @return
*/
SalarySobCycleDTO getSalarySobCycleById(Long id);
/**
* 保存
*
* @param saveParam 保存参数
* @return
*/
Long save(SalaryAcctRecordSaveParam saveParam);
/**
* 更新薪资核算记录的状态
*
* @param ids 主键id
* @param status 薪资核算记录的状态
*/
void updateStatusByIds(Collection ids, SalaryAcctRecordStatusEnum status);
/**
* 根据主键id删除
*
* @param ids 薪资核算记录的id
*/
void deleteByIds(Collection ids);
/**
* 归档
*
* @param id 薪资核算记录的id
*/
void file(Long id);
/**
* 重新核算(并不是重新执行公式,而是变更薪资核算记录状态为未归档,并且撤回生成的工资单)
*
* @param id 薪资核算记录的id
*/
void reCalculate(Long id);
/**
* 判断是否存在合并计税
*
* @param id 薪资核算记录的id
* @return 0:不存在、1:存在
*/
Integer hasConsolidatedTax(Long id);
/**
* 查询操作日志中的操作对象名称
*
* @param id 薪资核算记录的id
* @return
*/
String getLogTargetNameById(Long id);
/**
* 根据状态查询薪资核算记录
*
* @param status
* @return
*/
List listByStatus(SalaryAcctRecordStatusEnum status);
/**
* 根据核算人和核算状态查询核算记录
*
* @param status
* @param employeeId
* @return
*/
List listByStatusAndEmployeeId(SalaryAcctRecordStatusEnum status, Long employeeId);
void updateLockSalaryItemIds(SalaryAcctRecordPO salaryAcctRecord);
/**
* @description 回算
* @return void
* @author Harryxzy
* @date 2022/11/24 16:09
*/
void backCalculate(Long salaryAcctRecordId);
/**
* @description 获取是回算的薪资核算
* @return List
* @author Harryxzy
* @date 2022/12/19 9:05
*/
List getBackCalcRecordByIds(Set salaryAcctIds);
List listBySalaryAcctEmpId(Long salaryAcctEmpId);
List listSome(SalaryAcctRecordPO po);
void updateDate(Long id, Date updateTime);
void batSave(SalaryAcctBatParam saveParam);
void batFile(SalaryAcctBatParam param);
void batReCalculate(SalaryAcctBatParam param);
}