package com.sundot.airport.personnel.service;

import com.sundot.airport.personnel.domain.PersonnelMonthlyAssessment;

import java.util.List;

/**
 * 人员月度考核Service接口
 *
 * @author ruoyi
 * @date 2026-05-07
 */
public interface IPersonnelMonthlyAssessmentService {
    /**
     * 查询人员月度考核
     *
     * @param id 人员月度考核主键
     * @return 人员月度考核
     */
    PersonnelMonthlyAssessment selectPersonnelMonthlyAssessmentById(Long id);

    /**
     * 查询人员月度考核列表
     *
     * @param personnelMonthlyAssessment 人员月度考核
     * @return 人员月度考核集合
     */
    List<PersonnelMonthlyAssessment> selectPersonnelMonthlyAssessmentList(PersonnelMonthlyAssessment personnelMonthlyAssessment);

    /**
     * 新增人员月度考核
     *
     * @param personnelMonthlyAssessment 人员月度考核
     * @return 结果
     */
    int insertPersonnelMonthlyAssessment(PersonnelMonthlyAssessment personnelMonthlyAssessment);

    /**
     * 修改人员月度考核
     *
     * @param personnelMonthlyAssessment 人员月度考核
     * @return 结果
     */
    int updatePersonnelMonthlyAssessment(PersonnelMonthlyAssessment personnelMonthlyAssessment);

    /**
     * 批量删除人员月度考核
     *
     * @param ids 需要删除的人员月度考核主键集合
     * @return 结果
     */
    int deletePersonnelMonthlyAssessmentByIds(Long[] ids);

    /**
     * 删除人员月度考核信息
     *
     * @param id 人员月度考核主键
     * @return 结果
     */
    int deletePersonnelMonthlyAssessmentById(Long id);

    /**
     * 根据用户ID、年份和月份查询考核记录
     *
     * @param userId 用户ID
     * @param year   年份
     * @param month  月份
     * @return 人员月度考核
     */
    PersonnelMonthlyAssessment selectByUserIdAndYearMonth(Long userId, Integer year, Integer month);

    /**
     * 生成本月考核数据
     *
     * @param year  年份
     * @param month 月份
     * @return 生成的考核记录数量
     */
    int generateMonthlyAssessment(Integer year, Integer month);
}
