package com.engine.salary.mapper.extemp;

import com.engine.salary.entity.datacollection.DataCollectionEmployee;
import com.engine.salary.entity.extemp.po.ExtEmpPO;
import com.engine.salary.entity.salarysob.param.SalarySobRangeEmpQueryParam;
import org.apache.ibatis.annotations.Param;

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

public interface ExternalEmployeeMapper {

    /**
     * 查询所有记录
     *
     * @return 返回集合，没有返回空List
     */
    List<ExtEmpPO> listAll();


    /**
     * 根据主键查询
     *
     * @param id 主键
     * @return 返回记录，没有返回null
     */
    ExtEmpPO getById(Long id);

    List<ExtEmpPO> listSome(ExtEmpPO po);

    /**
     * 新增，忽略null字段
     *
     * @param externalEmployee 新增的记录
     * @return 返回影响行数
     */
    int insertIgnoreNull(ExtEmpPO externalEmployee);

    /**
     * 修改，修改所有字段
     *
     * @param externalEmployee 修改的记录
     * @return 返回影响行数
     */
    int update(ExtEmpPO externalEmployee);

    /**
     * 修改，忽略null字段
     *
     * @param externalEmployee 修改的记录
     * @return 返回影响行数
     */
    int updateIgnoreNull(ExtEmpPO externalEmployee);

    /**
     * 删除记录
     *
     * @return 返回影响行数
     */
    int delete(Long id);

    /**
     * 根据薪资账套的人员范围转换而成的查询参数查询人员
     *
     * @param queryParams 薪资账套的人员范围转换而成的查询参数
     * @return
     */
    Collection<DataCollectionEmployee> listByParams( @Param("params") List<SalarySobRangeEmpQueryParam> queryParams);

    /**
     * 获取所有员工，关联部门
     *
     * @return
     */
    List<DataCollectionEmployee> listEmployee();

    /**
     * 多表联查
     * @param ids
     * @return
     */
    List<DataCollectionEmployee> getEmployeeByIdsAll(@Param("collection")List<Long> ids);

    /**
     * 报表专用
     * @return
     */
    Collection<DataCollectionEmployee> listAllForReport();


    List<DataCollectionEmployee> listSomeDataCollectionEmployee(ExtEmpPO po);
}