package jnpf.personnels.service;

import jnpf.model.personnels.dto.roster.meta.PersonnelsMetaDTO;
import jnpf.model.personnels.req.roster.FtbPersonnelsMetaDataReq;
import jnpf.model.personnels.req.roster.FtbPersonnelsMetaFuctionReq;
import org.springframework.web.bind.annotation.RequestBody;

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

public interface FtbPersonnelsMetaDataService {

    /**
     * 支持薪酬 查询花名册元数据信息
     * @param info
     * @return
     */
    List<PersonnelsMetaDTO> getMetaData(FtbPersonnelsMetaDataReq info);
    /**
     * 查询用户当月是否已经离职
     *
     * @param userId   用户ID
     * @param tenantId 租户ID
     * @return true-已经离职  false-未离职
     */
    Boolean queryCurrMonthDepartStatus(String userId, String tenantId);

    /**
     * 查询用户当月是否已经离职
     *
     * @param userId   用户ID
     * @param tenantId 租户ID
     * @param tenantId startDate
     * @param tenantId endDate
     * @return true-已经离职  false-未离职
     */
    Boolean queryCurrMonthDepartStatusByDate(String userId, String tenantId, Date startDate, Date endDate);

    /**
     * 查询用户当月是否已经离职 批量
     *
     */
    Map<String,Boolean> queryCurrMonthLeave( FtbPersonnelsMetaFuctionReq req);

    /**
     * 查询在A和B天数范围内入职的用户ID
     *
     * @param startDays 开始天数
     * @param endDays   结束天数
     * @return 用户id集合
     */
    List<String> queryUserIdsForCompanyAge(Integer startDays, Integer endDays);

    /**
     * 查询指定用户的司龄
     * @param userIds 用户ID
     * @return
     */
    Map<String, Integer> queryCompanyAge(List<String> userIds);

    /**
     * 查询指定用户的司龄
     * @param rosterId 花名册iD
     * @return
     */
    Integer queryCompanyAgeByRosterId(String rosterId);

    /**
     * 查询所有用户的司龄
     * @return
     */
    Map<String, Integer> queryAllUserCompanyAge();
}
