package com.hotent.project.manager;

import com.hotent.project.model.CostProjectTaskMaterialSummary;
import com.hotent.base.manager.BaseManager;

import java.util.List;

/**
 * 资料归纳主表 服务类
 *
 * @company 山西清众科技股份有限公司
 * @author 超级管理员
 * @since 2025-01-27
 */
public interface CostProjectTaskMaterialSummaryManager extends BaseManager<CostProjectTaskMaterialSummary> {

    /**
     * 根据taskId查询资料归纳列表（包含明细，不含封面/目录/封底）
     * @param taskId 任务ID
     * @return 资料归纳列表
     */
    List<CostProjectTaskMaterialSummary> listByTaskId(String taskId);

    /**
     * 根据taskId查询全部资料归纳列表（包含封面/目录/封底）
     * @param taskId 任务ID
     * @return 全部资料归纳列表
     */
    List<CostProjectTaskMaterialSummary> listAllByTaskId(String taskId);

    /**
     * 根据id查询资料归纳详情（包含明细）
     * @param id 主表ID
     * @return 资料归纳详情
     */
    CostProjectTaskMaterialSummary getDetail(String id);

    /**
     * 新建、更新资料归纳主表
     * @param summary 资料归纳主表
     */
    void createOrUpdate(CostProjectTaskMaterialSummary summary);

    /**
     * 批量保存资料归纳（主表+明细）
     * @param summary 资料归纳主表（包含detailList）
     */
    void saveWithDetails(CostProjectTaskMaterialSummary summary);

    /**
     * 删除资料归纳（级联删除明细）
     * @param id 主表ID
     */
    void deleteById(String id);

    /**
     * 资料排序
     * @param id 主表ID
     * @param direction 排序方向：up-上移，down-下移
     */
    void sort(String id, String direction);

    /**
     * 获取卷宗文书（封面/目录/封底）
     * @param taskId 任务ID
     * @param documentType 文书类型：1-案卷封面 2-卷内目录 3-案卷封底
     * @return 卷宗文书记录
     */
    CostProjectTaskMaterialSummary getArchiveDocument(String taskId, Integer documentType);

}

