package com.aegis.resource.procurement.mapper;

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

/**
 * 供应商报价Mapper接口
 * 
 * @author aegis
 */
public interface ResourceProcurementQuoteMapper {

    /**
     * 查询供应商报价列表
     * 
     * @param quote 报价信息
     * @return 报价集合
     */
    public List<ProcurementQuote> selectProcurementQuoteList(ProcurementQuote quote);

    /**
     * 根据采购申请ID查询报价列表
     * 
     * @param procurementId 采购申请ID
     * @return 报价集合
     */
    public List<ProcurementQuote> selectProcurementQuoteListByProcurementId(Long procurementId);

    /**
     * 根据ID查询报价
     * 
     * @param id 报价ID
     * @return 报价信息
     */
    public ProcurementQuote selectProcurementQuoteById(Long id);

    /**
     * 根据采购申请ID和供应商ID查询报价
     * 
     * @param procurementId 采购申请ID
     * @param supplierId 供应商ID
     * @return 报价信息
     */
    public ProcurementQuote selectProcurementQuoteByProcurementAndSupplier(@Param("procurementId") Long procurementId, @Param("supplierId") Long supplierId);

    /**
     * 新增供应商报价
     * 
     * @param quote 报价信息
     * @return 结果
     */
    public int insertProcurementQuote(ProcurementQuote quote);

    /**
     * 修改供应商报价
     * 
     * @param quote 报价信息
     * @return 结果
     */
    public int updateProcurementQuote(ProcurementQuote quote);

    /**
     * 删除供应商报价
     * 
     * @param id 报价ID
     * @return 结果
     */
    public int deleteProcurementQuoteById(Long id);

    /**
     * 根据采购申请ID删除所有报价
     * 
     * @param procurementId 采购申请ID
     * @return 结果
     */
    public int deleteProcurementQuoteByProcurementId(Long procurementId);

    /**
     * 取消所有中标标记（确认新中标前使用）
     * 
     * @param procurementId 采购申请ID
     * @return 结果
     */
    public int cancelAwardedByProcurementId(Long procurementId);

    /**
     * 设置中标标记
     * 
     * @param id 报价ID
     * @return 结果
     */
    public int setAwarded(Long id);
}