package org.qinan.safetyeval.domain.change.gateway;

import org.qinan.safetyeval.domain.change.model.QualFilingPersonnelChangeE;

import java.time.LocalDate;
import java.util.List;

/**
 * 备案申请人员-变更网关
 *
 * @Author: WGG
 * @Date: 2022/3/22 16:49
 */
public interface QualFilingPersonnelChangeGateway {

    /**
     * 新增备案申请人员-变更
     *
     * @param qualFilingPersonnelChangeE 备案申请人员-变更
     * @return 结果
     */
    Boolean add(QualFilingPersonnelChangeE qualFilingPersonnelChangeE);

    /**
     * 修改备案申请人员-变更
     *
     * @param qualFilingPersonnelChangeE 备案申请人员-变更
     * @return 结果
     */
    Boolean update(QualFilingPersonnelChangeE qualFilingPersonnelChangeE);

    /**
     * 删除备案申请人员-变更
     *
     * @param id
     * @return 结果
     */
    Boolean deletedQualFilingPersonnelChangeById(Long id);

    /**
     * 删除备案申请人员-变更
     *
     * @param ids
     * @return 结果
     */
    Boolean deletedQualFilingPersonnelChangeByIds(Long[] ids);

    /**
     * 根据filingId查询备案申请人员-变更列表
     */
    List<QualFilingPersonnelChangeE> listByFilingId(Long filingId);

    /**
     * 统计指定filingId下的人员总数
     */
    int countByFilingId(Long filingId);

    /**
     * 统计指定filingId下注册工程师数量
     */
    int countByFilingIdAndRegisterEngineerFlag(Long filingId, Integer registerEngineerFlag);

    /**
     * 统计指定filingId下参加工作时间晚于指定日期的人数
     */
    int countByFilingIdAndJoinWorkDateAfter(Long filingId, LocalDate joinWorkDate);
}
