package com.zd.chemical.mapper;

import java.math.BigDecimal;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import com.zd.chemical.domain.HxpChemical;
import com.zd.chemical.domain.HxpStock;
import com.zd.chemical.domain.vo.*;
import org.apache.ibatis.annotations.Param;

/**
 * 化学品信息Mapper接口
 *
 * @author liubo
 * @date 2022-06-16
 */
public interface HxpChemicalMapper
{
    /**
     * 查询化学品信息
     *
     * @param id 化学品信息主键
     * @return 化学品信息
     */
    public HxpChemical selectHxpChemicalById(Long id);

    /**
     * 查询化学品信息列表
     *
     * @param hxpChemicalSearch 化学品信息
     * @return 化学品信息集合
     */
    public List<HxpChemicalVo> selectHxpChemicalList(HxpChemicalSearch hxpChemicalSearch);

    /**
     * 新增化学品信息
     *
     * @param hxpChemical 化学品信息
     * @return 结果
     */
    public int insertHxpChemical(HxpChemical hxpChemical);

    /**
     * 修改化学品信息
     *
     * @param hxpChemical 化学品信息
     * @return 结果
     */
    public int updateHxpChemical(HxpChemical hxpChemical);

    /**
     * 修改化学品信息
     *
     * @param hxpChemical 化学品信息
     * @return 结果
     */
    public int clearHxpChemicalByJoinHazard(HxpChemical hxpChemical);

    /**
     * 删除化学品信息
     *
     * @param id 化学品信息主键
     * @return 结果
     */
    public int deleteHxpChemicalById(Long id);

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


    /**
     * 查询化学品编号最大的信息
     *
     * @param chemicalNum 化学品信息主键
     * @return 化学品信息
     */
    public HxpChemical selectHxpChemicalMaxById(String chemicalNum);

    /**
     * 查询化学品信息列表
     *
     * @param hxpChemical 化学品信息
     * @return 化学品信息集合
     */
    public HxpHomeChemicalVo chemicalUsageCount(HxpChemical hxpChemical);

    /**
     * 查询化学品特别信息统计
     *
     * @param hxpChemical 化学品信息
     * @return 化学品信息集合
     */
    public HxpHomeChemicalUnusualVo chemicalUnusualCount(HxpChemical hxpChemical);

    /**
     * 化学品使用量top6
     *
     * @param hxpChemical 化学品信息
     * @return 化学品信息集合
     */
    public List<HxpHomeChemicalUsagesVo> chemicalUsagesCount(HxpChemical hxpChemical);


    /**
     * 化学品分类占比
     *
     * @param hxpChemical 化学品信息
     * @return 化学品信息集合
     */
    public List<LinkedHashMap <String,String>> chemicalClassifyMix(HxpChemical hxpChemical);


    /**
     * 化学品分类占比
     *
     * @param hxpChemical 化学品信息
     * @return 化学品信息集合
     */
    public Long stockTotal(HxpChemical hxpChemical);

    /**
     * 化学品分类占比
     *
     * @param hxpStock 化学品信息
     * @return 化学品信息集合
     */
    public List<LinkedHashMap <String,String>> joinOutCount(HxpStock hxpStock);

    List<Map<String, Object>> queryCriticaliBySubId(@Param("subIds") List<Long> subIds);
}
