package com.ruoyi.info.collection.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.info.collection.domain.CcdiAssetInfo;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 资产信息 数据层
 *
 * @author ruoyi
 * @date 2026-03-12
 */
public interface CcdiAssetInfoMapper extends BaseMapper<CcdiAssetInfo> {

    /**
     * 按归属员工身份证号查询资产列表
     *
     * @param familyId 归属员工身份证号
     * @return 资产列表
     */
    List<CcdiAssetInfo> selectByFamilyId(@Param("familyId") String familyId);

    /**
     * 按归属键查询资产列表
     *
     * @param familyId 归属员工证件号
     * @param personId 资产实际持有人证件号
     * @return 资产列表
     */
    List<CcdiAssetInfo> selectByFamilyIdAndPersonId(@Param("familyId") String familyId,
                                                    @Param("personId") String personId);

    /**
     * 按归属员工身份证号删除资产
     *
     * @param familyId 归属员工身份证号
     * @return 影响行数
     */
    int deleteByFamilyId(@Param("familyId") String familyId);

    /**
     * 按归属键删除资产
     *
     * @param familyId 归属员工证件号
     * @param personId 资产实际持有人证件号
     * @return 影响行数
     */
    int deleteByFamilyIdAndPersonId(@Param("familyId") String familyId,
                                    @Param("personId") String personId);

    /**
     * 批量删除归属员工资产
     *
     * @param familyIds 归属员工身份证号列表
     * @return 影响行数
     */
    int deleteByFamilyIds(@Param("familyIds") List<String> familyIds);

    /**
     * 按资产实际持有人身份证号查询资产列表
     *
     * @param personId 资产实际持有人身份证号
     * @return 资产列表
     */
    List<CcdiAssetInfo> selectByPersonId(@Param("personId") String personId);

    /**
     * 批量插入资产数据
     *
     * @param list 资产列表
     * @return 影响行数
     */
    int insertBatch(@Param("list") List<CcdiAssetInfo> list);

    /**
     * 按关系人证件号查询归属员工候选
     *
     * @param relationCertNos 关系人证件号列表
     * @return 归属映射
     */
    List<Map<String, String>> selectOwnerCandidatesByRelationCertNos(@Param("relationCertNos") List<String> relationCertNos);

    /**
     * 按员工身份证号查询员工本人归属候选
     *
     * @param idCards 员工身份证号列表
     * @return 归属映射
     */
    List<Map<String, String>> selectOwnerCandidatesByBaseStaffIdCards(@Param("idCards") List<String> idCards);
}
