package com.ruoyi.ibs.list.mapper;

import java.util.List;

import com.ruoyi.ibs.list.domain.FamilyMember;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;


/**
 * 【请填写功能名称】Mapper接口
 * 
 * @author ruoyi
 * @date 2025-03-03
 */
public interface FamilyMemberMapper 
{
    /**
     * 查询【请填写功能名称】
     * 
     * @param idCard 【请填写功能名称】主键
     * @return 【请填写功能名称】
     */
    public FamilyMember selectFamilyMemberByIdCard(String idCard);

    public List<FamilyMember> selectFamilyMemberByBsId(String bsId);

    /**
     * 查询【请填写功能名称】列表
     * 
     * @param familyMember 【请填写功能名称】
     * @return 【请填写功能名称】集合
     */
    public List<FamilyMember> selectFamilyMemberList(FamilyMember familyMember);

    /**
     * 新增【请填写功能名称】
     * 
     * @param familyMember 【请填写功能名称】
     * @return 结果
     */
    public int insertFamilyMember(FamilyMember familyMember);

    /**
     * 修改【请填写功能名称】
     * 
     * @param familyMember 【请填写功能名称】
     * @return 结果
     */
    public int updateFamilyMember(FamilyMember familyMember);

    /**
     * 删除【请填写功能名称】
     * 
     * @param idCard 【请填写功能名称】主键
     * @return 结果
     */
    public int deleteFamilyMemberByIdCard(String idCard);

    /**
     * 批量删除【请填写功能名称】
     * 
     * @param idCards 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteFamilyMemberByIdCards(String[] idCards);

    // 根据身份证查询成员
    FamilyMember getMemberByIdCard(String idCard);

    // 根据家庭ID列表批量查询成员
    List<FamilyMember> getMembersByFamilyId(String familyId);

    List<FamilyMember> getMembersByFamilyId2(String familyId);
    List<FamilyMember> getMembersSpouseByFamilyId(String familyId);

    String getSpouseFamilyId(String idCard);


    List<FamilyMember> getChildrenByAnyParent(String parentId);


//  @Select("SELECT id_card FROM family_member WHERE father_id = #{id} OR mother_id = #{id}")
//  List<String> selectChildrenIds(String id);
//
//  @Select("SELECT id_card FROM family_member WHERE (father_id = #{fatherId} OR mother_id = #{motherId}) AND id_card != #{id}")
//  List<String> selectSiblingIds(@Param("id") String id,
//      @Param("fatherId") String fatherId,
//      @Param("motherId") String motherId);


    List<FamilyMember> batchSelect(@Param("ids") List<String> ids);


    List<String> selectChildrenIds( String memberId);

    List<String> selectSiblingIds(@Param("fatherId") String fatherId,@Param("motherId")String motherId,@Param("memberId")String memberId,@Param("bsId")String bsId);
}
