package com.ruoyi.info.collection.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.info.collection.domain.CcdiStaffFmyRelation;
import com.ruoyi.info.collection.domain.dto.CcdiStaffFmyRelationQueryDTO;
import com.ruoyi.info.collection.domain.vo.CcdiStaffFmyRelationVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 员工亲属关系 数据层
 *
 * @author ruoyi
 * @date 2026-02-09
 */
public interface CcdiStaffFmyRelationMapper extends BaseMapper<CcdiStaffFmyRelation> {

    /**
     * 分页查询员工亲属关系列表
     *
     * @param page     分页对象
     * @param queryDTO 查询条件
     * @return 员工亲属关系VO分页结果
     */
    Page<CcdiStaffFmyRelationVO> selectRelationPage(@Param("page") Page<CcdiStaffFmyRelationVO> page,
                                                     @Param("query") CcdiStaffFmyRelationQueryDTO queryDTO);

    /**
     * 查询员工亲属关系详情
     *
     * @param id 主键ID
     * @return 员工亲属关系VO
     */
    CcdiStaffFmyRelationVO selectRelationById(@Param("id") Long id);

    /**
     * 查询员工亲属关系列表（用于导出）
     *
     * @param queryDTO 查询条件
     * @return 员工亲属关系VO列表
     */
    List<CcdiStaffFmyRelationVO> selectRelationListForExport(@Param("query") CcdiStaffFmyRelationQueryDTO queryDTO);

    /**
     * 批量插入员工亲属关系数据
     *
     * @param list 员工亲属关系列表
     * @return 插入行数
     */
    int insertBatch(@Param("list") List<CcdiStaffFmyRelation> list);

    /**
     * 批量查询已存在的员工亲属关系（用于导入唯一性校验）
     *
     * @param personIds 员工身份证号列表
     * @param relationCertNos 关系人证件号码列表
     * @return 已存在的记录列表
     */
    List<CcdiStaffFmyRelation> selectExistingRelations(@Param("personIds") List<String> personIds,
                                                        @Param("relationCertNos") List<String> relationCertNos);
}
