package jnpf.personnels.mapper;

import jnpf.model.personnels.vo.analysis.FtbPersonnelsPostAdjustmentDetailsVO;
import jnpf.model.personnels.vo.analysis.FtbPersonnelsShopAdjustmentDetailsVO;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.List;

public interface FtbPersonnelChangesMapper {

    /**
     * 查询在指定月份进行过店铺调整的人员数量
     *
     * @param month   月份，格式为YYYY-MM，用于指定查询的月份
     * @param userIds 用户ID列表，用于指定需要查询的用户范围
     * @return 返回进行过店铺调整的人员数量
     */
    BigDecimal numberOfPeopleAdjustingTheStore(@Param("startMonth") String startMonth, @Param("endMonth") String endMonth, @Param("userIds") List<String> userIds, @Param("state") Integer state);

    /**
     * 查询部门人员流动比率
     * 该方法用于统计在指定时间段内，特定组织的部门人员流动情况，包括入职、离职等状态的人数比例
     * 主要用于人力资源分析，以帮助管理层理解人员流动趋势和部门人力结构变化
     *
     * @param startMonth      开始月份，格式为YYYY-MM，表示统计周期的起始时间
     * @param endMonth        结束月份，格式为YYYY-MM，表示统计周期的结束时间
     * @param userIds 用户ID
     * @param state           人员状态，用于过滤统计结果，如0代表全部状态，1代表在职，2代表离职等
     * @return 返回一个列表，包含每个指定组织在指定时间段内的人员流动比率信息
     */
    List<String> departmentHeadcountRatio(@Param("startMonth") String startMonth, @Param("endMonth") String endMonth, @Param("userIds") List<String> userIds, @Param("state") Integer state);
    /**
    * 查询在指定月份进行过店铺调整的人员列表
    */
    List<FtbPersonnelsShopAdjustmentDetailsVO> numberOfPeopleAdjustingTheStoreList(@Param("startMonth") String startMonth, @Param("endMonth") String endMonth, @Param("userIds") List<String> userIds, @Param("state") Integer state);
    
    /**
    * 查询在指定月份进行过岗位调整的人员列表
    */
    List<FtbPersonnelsPostAdjustmentDetailsVO> numberOfPeopleAdjustingThePostList(@Param("startMonth") String startMonth, @Param("endMonth") String endMonth, @Param("userIds") List<String> userIds, @Param("state") Integer state);
}
