package cn.iocoder.yudao.module.system.service.hr.payslip;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.system.controller.admin.hr.vo.payslip.PayslipCreateReqVO;
import cn.iocoder.yudao.module.system.controller.admin.hr.vo.payslip.PayslipImportExcelVO;
import cn.iocoder.yudao.module.system.controller.admin.hr.vo.payslip.PayslipPageReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.hr.PayslipDO;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * 工资条 Service 接口
 *
 * @author 符溶馨
 */
public interface PayslipService {

    /**
     * 批量创建工资条
     * @param createReqVO 创建工资条请求
     */
    void createPayslip(List<PayslipCreateReqVO> createReqVO);

    /**
     * 更新工资条
     * @param updateReqVO 更新工资条请求
     */
    void updatePayslip(PayslipCreateReqVO updateReqVO);

    /**
     * 获取工资条详情
     * @param id 工资条编号
     * @return 工资条详情
     */
    PayslipDO getPayslip(Long id);

    /**
     * 获得工资条分页
     * @param pageReqVO 分页信息
     * @return 工资条分页详情
     */
    PageResult<PayslipDO> getPage(PayslipPageReqVO pageReqVO);

    /**
     * 获取当前登录用户的工资条分页
     * @param pageReqVO 分页信息
     * @return 工资条分页详情
     */
    PageResult<PayslipDO> getMyPage(PayslipPageReqVO pageReqVO);

    /**
     * 导入工资条
     * @param list 导入工资条数据
     */
    void importPayslip(List<PayslipImportExcelVO> list, String date, Long deptId, String companyName, Boolean isUpdate);

    /**
     * 下发工资条
     * @param updateReqVO 下发条件
     */
    void issuedPayslip(PayslipPageReqVO updateReqVO);

    /**
     * 工资条导出
     * @param response 响应
     * @param exportReqVO 工资条列表
     */
    void exportList(HttpServletResponse response, PayslipPageReqVO exportReqVO);
}
