package com.aegis.resource.procurement.mapper;

import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.aegis.resource.procurement.domain.Procurement;

/**
 * 采购申请Mapper接口
 * 
 * @author aegis
 */
public interface ResourceProcurementMapper {

    /**
     * 查询采购申请列表
     * 
     * @param procurement 采购申请信息
     * @return 采购申请集合
     */
    public List<Procurement> selectProcurementList(Procurement procurement);

    /**
     * 根据ID查询采购申请
     * 
     * @param id 采购ID
     * @return 采购申请信息
     */
    public Procurement selectProcurementById(Long id);

    /**
     * 根据采购编号查询采购申请
     * 
     * @param procurementNo 采购编号
     * @return 采购申请信息
     */
    public Procurement selectProcurementByNo(String procurementNo);

    /**
     * 新增采购申请
     * 
     * @param procurement 采购申请信息
     * @return 结果
     */
    public int insertProcurement(Procurement procurement);

    /**
     * 修改采购申请
     * 
     * @param procurement 采购申请信息
     * @return 结果
     */
    public int updateProcurement(Procurement procurement);

    /**
     * 删除采购申请（逻辑删除）
     * 
     * @param id 采购ID
     * @return 结果
     */
    public int deleteProcurementById(Long id);

    /**
     * 批量删除采购申请（逻辑删除）
     * 
     * @param ids 需要删除的采购ID数组
     * @return 结果
     */
    public int deleteProcurementByIds(Long[] ids);

    /**
     * 校验采购编号是否唯一
     * 
     * @param procurementNo 采购编号
     * @param id 采购ID（更新时排除自己）
     * @return 结果
     */
    public Procurement checkProcurementNoUnique(@Param("procurementNo") String procurementNo, @Param("id") Long id);

    /**
     * 根据采购编号查找已删除的采购申请（包括逻辑删除的记录）
     * 
     * @param procurementNo 采购编号
     * @return 采购申请信息
     */
    public Procurement selectDeletedProcurementByNo(@Param("procurementNo") String procurementNo);

    /**
     * 恢复并更新已删除的采购申请
     * 
     * @param procurement 采购申请信息
     * @return 结果
     */
    public int restoreProcurement(Procurement procurement);
}