package com.ruoyi.info.collection.service;

import com.ruoyi.info.collection.domain.excel.CcdiAssetInfoExcel;
import com.ruoyi.info.collection.domain.vo.AssetImportFailureVO;
import com.ruoyi.info.collection.domain.vo.ImportStatusVO;

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

/**
 * 亲属资产信息异步导入 服务层
 *
 * @author ruoyi
 * @date 2026-03-12
 */
public interface ICcdiAssetInfoImportService {

    /**
     * 启动异步导入任务
     *
     * @param excelList Excel实体列表
     * @return 任务ID
     */
    String importAssetInfo(List<CcdiAssetInfoExcel> excelList);

    /**
     * 异步导入亲属资产数据
     *
     * @param excelList Excel实体列表
     * @param taskId 任务ID
     * @param userName 用户名
     */
    void importAssetInfoAsync(List<CcdiAssetInfoExcel> excelList, String taskId, String userName);

    /**
     * 同步执行亲属资产导入，可附加同一文件亲属关系Sheet成功导入的归属映射
     *
     * @param excelList          Excel实体列表
     * @param taskId             任务ID
     * @param userName           用户名
     * @param extraOwnerMappings 附加归属映射，key为亲属证件号，value为归属员工证件号集合
     */
    void importAssetInfoSync(List<CcdiAssetInfoExcel> excelList,
                             String taskId,
                             String userName,
                             Map<String, Set<String>> extraOwnerMappings);

    /**
     * 查询导入状态
     *
     * @param taskId 任务ID
     * @return 导入状态
     */
    ImportStatusVO getImportStatus(String taskId);

    /**
     * 查询导入失败记录
     *
     * @param taskId 任务ID
     * @return 失败记录列表
     */
    List<AssetImportFailureVO> getImportFailures(String taskId);
}
