package com.engine.salary.report.service;

import com.engine.salary.entity.hrm.dto.EmployeeInfoExpandDTO;
import com.engine.salary.report.entity.param.SalaryStatisticsDimensionQueryParam;
import com.engine.salary.report.entity.param.SalaryStatisticsDimensionSaveParam;
import com.engine.salary.report.entity.po.SalaryStatisticsDimensionPO;
import com.engine.salary.util.page.PageInfo;

import java.util.Collection;
import java.util.List;
import java.util.Map;


/**
 * 薪酬统计维度
 * <p>Copyright: Copyright (c) 2022</p>
 * <p>Company: 泛微软件</p>
 *
 * @author qiantao
 * @version 1.0
 **/
public interface SalaryStatisticsDimensionService {

    /**
     * 初始化
     *
     * @param currentEmployeeId
     */
    void init(Long currentEmployeeId);

    /**
     * 获取单个薪酬统计维度
     *
     * @param id
     * @return
     */
    SalaryStatisticsDimensionPO getById(Long id);

    /**
     * 获取租户下的所有统计维度
     *
     * @return
     */
    List<SalaryStatisticsDimensionPO> listAll();

    /**
     * 获取薪酬统计维度分页列表
     *
     * @param queryParam
     * @return
     */
    PageInfo<SalaryStatisticsDimensionPO> listPage(SalaryStatisticsDimensionQueryParam queryParam);

    /**
     * 保存薪酬统计维度
     *
     * @param saveParam
     * @return
     */
    String save(SalaryStatisticsDimensionSaveParam saveParam);

    /**
     * 保存字段扩展
     * @param saveParam
     * @return
     */
    void saveExpandFieldSettings(EmployeeInfoExpandDTO saveParam);

    /**
     * 查询薪酬统计维度扩展字段设置
     * @param module
     * @return
     */
    EmployeeInfoExpandDTO getExpandFieldSettings(String module);

    /**
     * 删除薪酬统计维度
     *
     * @param ids
     * @return
     */
    Map<String, Object> delete(Collection<Long> ids);

    /**
     * 获取默认薪酬统计维度
     *
     * @return
     */
    List<SalaryStatisticsDimensionPO> listAllDefaultDimension();

}
