package com.bonus.material.countersign.mapper;

import com.bonus.material.countersign.domain.SignConfigVo;
import com.bonus.material.countersign.domain.SignProcessVo;
import com.bonus.material.purchase.domain.PurchaseSignRecord;
import feign.Param;

import java.util.List;

/**
 * 会签流程配置管理Mapper接口
 * 
 * @author hongchao
 * @date 2025-01-16
 */
public interface SignProcessMapper
{

    /**
     * 查询采购任务的会签记录
     * @param taskId 任务id
     */
    List<PurchaseSignRecord> getPurchaseSignRecordByTask(Long taskId);

    /**
     * 批量查询采购任务的会签记录
     * @param taskIds 任务id列表
     */
    List<PurchaseSignRecord> getPurchaseSignRecordByTasksBatch(List<Long> taskIds);

    /**
     * 查询采新购验收任务已进行会签的签名地址
     * @param taskId 任务id
     */
    List<PurchaseSignRecord> getPurchaseSignUrlListByTaskId(Long taskId);

    /**
     * 插入新购任务的会签记录
     */
    int insertPurchaseSignRecord(PurchaseSignRecord purchaseSignRecord);

    /**
     * 查询会签流程配置管理列表
     * 
     * @param signProcessVo 会签流程配置管理
     * @return 会签流程配置管理集合
     */
    List<SignProcessVo> getList(SignProcessVo signProcessVo);

    /**
     * 查询会签流程配置管理列表
     *
     * @param signProcessVo 会签流程配置管理
     * @return 会签流程配置管理集合
     */
    List<SignProcessVo> getListNew(SignProcessVo signProcessVo);

    /**
     * 新增时查询流程id和会签类型下会签组织是否重复
     *
     * @param signProcessVo 会签流程配置管理
     * @return 会签流程配置管理
     */
    int selectProcessRepeat(SignProcessVo signProcessVo);

    /**
     * 新增会签流程配置管理
     *
     * @param signProcessVo 会签流程配置管理
     * @return 结果
     */
    int insertProcessInfo(SignProcessVo signProcessVo);

    /**
     * 查询会签流程配置管理详情
     *
     * @param id 主键
     * @return 会签流程配置管理
     */
    SignProcessVo selectProcessInfoById(@Param("id") Long[] id);

    /**
     * 修改时查询查询流程id和会签类型下会签组织是否重复
     *
     * @param signProcessVo 会签流程配置管理
     * @return 会签流程配置管理
     */
    int selectProcessRepeatEdit(SignProcessVo signProcessVo);

    /**
     * 编辑会签流程配置管理
     *
     * @param signProcessVo 会签流程配置管理
     * @return 结果
     */
    int updateProcessInfo(SignProcessVo signProcessVo);


    /**
     * 删除会签流程配置管理
     *
     * @param id 主键
     * @return 结果
     */
    int delProcess(Long id);

}
