package com.ruoyi.info.collection.service;

import com.ruoyi.info.collection.domain.CcdiAssetInfo;
import com.ruoyi.info.collection.domain.dto.CcdiAssetInfoDTO;

import java.util.List;

/**
 * 员工资产信息 服务层
 *
 * @author ruoyi
 * @date 2026-03-12
 */
public interface ICcdiAssetInfoService {

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

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

    /**
     * 按归属员工身份证号覆盖资产列表
     *
     * @param familyId 归属员工身份证号
     * @param assetInfoList 资产列表
     */
    void replaceByFamilyId(String familyId, List<CcdiAssetInfoDTO> assetInfoList);

    /**
     * 按归属键覆盖资产列表
     *
     * @param familyId 归属员工证件号
     * @param personId 资产实际持有人证件号
     * @param assetInfoList 资产列表
     */
    void replaceByFamilyIdAndPersonId(String familyId, String personId, List<CcdiAssetInfoDTO> assetInfoList);

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

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

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