package com.zd.chemical.mapper;

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

import com.zd.chemical.domain.ActHxpapply;
import com.zd.chemical.domain.vo.*;

/**
 * 化学品申购Mapper接口
 *
 * @author zd
 * @date 2022-08-17
 */
public interface ActHxpapplyMapper
{
    /**
     * 查询化学品申购
     *
     * @param id 化学品申购主键
     * @return 化学品申购
     */
    ActHxpapplyInfoVo selectActHxpapplyById(Long id);

    /**
     * 查询化学品申购列表
     *
     * @param actHxpapplySearch 化学品申购
     * @return 化学品申购集合
     */
    List<ActHxpapplyListVo> selectActHxpapplyList(ActHxpapplySearch actHxpapplySearch);

    /**
     * 查询化学品申购列表(草稿箱)
     *
     * @param actHxpapplySearch 化学品申购
     * @return 化学品申购集合
     */
    List<ActHxpapplyDraftsListVo> draftsList(ActHxpapplySearch actHxpapplySearch);

    /**
     * 根据主键集合查询化学品申购列表
     *
     * @param ids 主键集合
     * @return 化学品申购集合
     */
    List<ActHxpapply> getListByIds(List <Long> ids);

    /**
     * 新增化学品申购
     *
     * @param actHxpapply 化学品申购
     * @return 结果
     */
    int insertActHxpapply(ActHxpapply actHxpapply);

    /**
     * 修改化学品申购
     *
     * @param actHxpapply 化学品申购
     * @return 结果
     */
    int updateActHxpapply(ActHxpapply actHxpapply);

    /**
     * 删除化学品申购
     *
     * @param id 化学品申购主键
     * @return 结果
     */
    int deleteActHxpapplyById(Long id);

    /**
     * 批量删除化学品申购
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    int deleteActHxpapplyByIds(Long[] ids);


    /**
     * 查询化学品申购
     *
     * @param actRestStockVo  机柜主键
     * @return 化学品申购
     */
    Map <String, String> getRestStock(ActRestStockVo actRestStockVo);

    /**
     * 查询化学品申购
     *
     * @param actRestStockVo  机柜主键
     * @return 化学品申购
     */
    List<ActRestStockVo> getRestStockClassif(ActRestStockVo actRestStockVo);


    /**
     * 查询化学品申购
     *
     * @param actRestStockVo  机柜主键
     * @return 化学品申购
     */
    List<ActRestStockManyVo> getRestStockByManyCabinet(ActRestStockManySearch actRestStockVo);


    /**
     * 获取化学品剩余可存放量（多个化学品和多个机柜返回的计算）
     *
     * @param actRestStockVo  机柜主键
     * @return 化学品申购
     */
    List<ActRestStockManyVo> getRestStockByManyCabinetAndChemical(ActRestStockManySearch actRestStockVo);
}
