package com.ruoyi.credit.mapper;

import java.util.List;
import com.ruoyi.credit.domain.ServicePeriodEmployee;
import com.ruoyi.credit.dto.ServicePeriodEmployeeDTO;

/**
 * 服务周期员工分配Mapper接口
 * 
 * @author ruoyi
 * @date 2025-12-23
 */
public interface ServicePeriodEmployeeMapper 
{
    /**
     * 查询服务周期员工分配
     * 
     * @param assignmentId 服务周期员工分配主键
     * @return 服务周期员工分配
     */
    public ServicePeriodEmployee selectServicePeriodEmployeeByAssignmentId(Long assignmentId);

    /**
     * 查询服务周期员工分配列表
     * 
     * @param servicePeriodEmployee 服务周期员工分配
     * @return 服务周期员工分配集合
     */
    public List<ServicePeriodEmployee> selectServicePeriodEmployeeList(ServicePeriodEmployee servicePeriodEmployee);

    /**
     * 根据服务周期ID查询员工分配列表
     * 
     * @param servicePeriodId 服务周期ID
     * @return 服务周期员工分配集合
     */
    public List<ServicePeriodEmployee> selectServicePeriodEmployeesByPeriodId(Long servicePeriodId);

    /**
     * 根据服务周期ID查询员工分配列表（包含员工详细信息）
     * 
     * @param servicePeriodId 服务周期ID
     * @return 服务周期员工分配DTO集合
     */
    public List<ServicePeriodEmployeeDTO> selectServicePeriodEmployeesWithInfoByPeriodId(Long servicePeriodId);

    /**
     * 根据员工ID查询服务周期分配列表
     * 
     * @param employeeId 员工ID
     * @return 服务周期员工分配集合
     */
    public List<ServicePeriodEmployee> selectServicePeriodEmployeesByEmployeeId(Long employeeId);

    /**
     * 新增服务周期员工分配
     * 
     * @param servicePeriodEmployee 服务周期员工分配
     * @return 结果
     */
    public int insertServicePeriodEmployee(ServicePeriodEmployee servicePeriodEmployee);

    /**
     * 修改服务周期员工分配
     * 
     * @param servicePeriodEmployee 服务周期员工分配
     * @return 结果
     */
    public int updateServicePeriodEmployee(ServicePeriodEmployee servicePeriodEmployee);

    /**
     * 删除服务周期员工分配
     * 
     * @param assignmentId 服务周期员工分配主键
     * @return 结果
     */
    public int deleteServicePeriodEmployeeByAssignmentId(Long assignmentId);

    /**
     * 批量删除服务周期员工分配
     * 
     * @param assignmentIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteServicePeriodEmployeeByAssignmentIds(Long[] assignmentIds);

    /**
     * 根据服务周期ID删除员工分配
     * 
     * @param servicePeriodId 服务周期ID
     * @return 结果
     */
    public int deleteServicePeriodEmployeeByPeriodId(Long servicePeriodId);
}