package com.ruoyi.project.plant.mapper;

import com.ruoyi.framework.aspectj.lang.annotation.DataScope;
import com.ruoyi.framework.web.domain.BaseEntity;
import com.ruoyi.project.common.domain.DataEntity;
import com.ruoyi.project.plant.domain.TStaffmgr;
import com.ruoyi.project.system.domain.SysUser;

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

/**
 * 人员管理Mapper接口
 *
 * @author ruoyi
 * @date 2020-11-25
 */
public interface TStaffmgrMapper
{
    /**
     * 获取SAI验证人列表
     */
    public List<TStaffmgr> selectSaiInspectors();

    /**
     * 获取SAI整改负责人列表
     */
    public List<TStaffmgr> selectSaiExecutors();

    /**
     * 查询导师下拉列表
     *
     * @param tStaffmgr 人员管理
     * @return 人员管理集合
     */
    public List<TStaffmgr> selectMentorList(TStaffmgr tStaffmgr);

    /**
     * 查询人员管理
     *
     * @param staffid 人员管理员工编号
     * @return 人员管理
     */
    public TStaffmgr selectTStaffmgrByStaffId(String staffid);

    /**
     * 查询人员管理
     *
     * @param id 人员管理ID
     * @return 人员管理
     */
    public TStaffmgr selectTStaffmgrById(Long id);

    /**
     * 查询人员管理列表
     *
     * @param tStaffmgr 人员管理
     * @return 人员管理集合
     */
    @DataScope(deptAlias = "d")
    public List<TStaffmgr> selectTStaffmgrList(TStaffmgr tStaffmgr);

    /**
     * 查询人员管理列表
     *
     * @param tStaffmgr 人员管理
     * @return 人员管理集合
     */
    public List<TStaffmgr> selectTStaffmgrListByDeptId(TStaffmgr tStaffmgr);

    @DataScope(deptAlias = "d")
    public List<TStaffmgr> selectAllTStaffmgrList(TStaffmgr tStaffmgr);

    public List<TStaffmgr> selectTStaffmgrListByDeptAndTeam(TStaffmgr tStaffmgr);

    /**
     * 查询人员管理列表
     *
     * @param tStaffmgr 人员管理
     * @return 人员管理集合
     */
    public List<TStaffmgr> selectTStaffmgrListAll(TStaffmgr tStaffmgr);

    /**
     * 定时任务查询人员管理列表
     *
     * @param tStaffmgr 人员管理
     * @return 人员管理集合
     */
    @DataScope(deptAlias = "d")
    public List<TStaffmgr> selectList(TStaffmgr tStaffmgr);

    List<TStaffmgr> selectTaskList(TStaffmgr tStaffmgr);
    /**
     * 培训查询人员管理列表
     *
     * @param tStaffmgr 人员管理
     * @return 人员管理集合
     */
    @DataScope(deptAlias = "d")
    public List<TStaffmgr> selectRecordList(TStaffmgr tStaffmgr);

    /**
     * 新增人员管理
     *
     * @param tStaffmgr 人员管理
     * @return 结果
     */
    public int insertTStaffmgr(TStaffmgr tStaffmgr);

    /**
     * 修改人员管理
     *
     * @param tStaffmgr 人员管理
     * @return 结果
     */
    public int updateTStaffmgr(TStaffmgr tStaffmgr);

    /**
     * 删除人员管理
     *
     * @param id 人员管理ID
     * @return 结果
     */
    public int deleteTStaffmgrById(Long id);
    public int deleteLeftTStaffmgrByIds(Long ids);
    /**
     * 批量删除人员管理
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deleteTStaffmgrByIds(Long[] ids);

    @DataScope(deptAlias = "d")
    List<DataEntity> selectEduData(TStaffmgr param);

    @DataScope(deptAlias = "d")
    List<DataEntity> selectEngData(TStaffmgr param);

    @DataScope(deptAlias = "d")
    List<DataEntity> selectTeamData(TStaffmgr param);

    @DataScope(deptAlias = "d")
    List<DataEntity> selectAgeData(TStaffmgr param);

    @DataScope(deptAlias = "d")
    List<TStaffmgr> selectLeftTStaffmgrList(TStaffmgr tStaffmgr);


    int reLeftTStaffmgrByIds(Long id);


    List<TStaffmgr> selectTStaffmgrByPost(SysUser sysUser);

    List<TStaffmgr> selectTMentorStaffmgrByPost(SysUser sysUser);

    List<Map<String,Object>> selectUserInfoByStaffmgr(TStaffmgr tStaffmgr);

    int deleteRetireTStaffmgrByIds(Long id);


}
