package com.hw.mes.mapper;

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

import com.hw.mes.domain.MesMaterialCheckResult;
import org.apache.ibatis.annotations.Param;

/**
 * 生产计划校验记录Mapper接口
 *
 * @author xins
 * @date 2024-02-21
 */
public interface MesMaterialCheckResultMapper {
    /**
     * 查询生产计划校验记录
     *
     * @param materialCheckResultId 生产计划校验记录主键
     * @return 生产计划校验记录
     */
    public MesMaterialCheckResult selectMesMaterialCheckResultByMaterialCheckResultId(Long materialCheckResultId);

    /**
     * 查询生产计划校验记录列表
     *
     * @param mesMaterialCheckResult 生产计划校验记录
     * @return 生产计划校验记录集合
     */
    public List<MesMaterialCheckResult> selectMesMaterialCheckResultList(MesMaterialCheckResult mesMaterialCheckResult);

    /**
     * 新增生产计划校验记录
     *
     * @param mesMaterialCheckResult 生产计划校验记录
     * @return 结果
     */
    public int insertMesMaterialCheckResult(MesMaterialCheckResult mesMaterialCheckResult);

    /**
     * 修改生产计划校验记录
     *
     * @param mesMaterialCheckResult 生产计划校验记录
     * @return 结果
     */
    public int updateMesMaterialCheckResult(MesMaterialCheckResult mesMaterialCheckResult);

    /**
     * 删除生产计划校验记录
     *
     * @param materialCheckResultId 生产计划校验记录主键
     * @return 结果
     */
    public int deleteMesMaterialCheckResultByMaterialCheckResultId(Long materialCheckResultId);

    /**
     * 批量删除生产计划校验记录
     *
     * @param materialCheckResultIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteMesMaterialCheckResultByMaterialCheckResultIds(Long[] materialCheckResultIds);

    /**
     * 根据唯一索引查询生产计划校验记录
     *
     * @param planId
     * @param planDetailId
     * @param materialId
     * @return
     */
    public MesMaterialCheckResult selectMesMaterialCheckResultByUI(@Param("planId") Long planId,
                                                                   @Param("planDetailId") Long planDetailId,
                                                                   @Param("materialId") Long materialId);


    /**
     * 查询生产计划校验记录列表
     * @param planId
     * @param planDetailId
     * @param ancestors
     * @return
     */
    public List<MesMaterialCheckResult> selectMesMaterialCheckResult(@Param("planId") Long planId,
                                                                     @Param("planDetailId") Long planDetailId,
                                                                     @Param("ancestors") String ancestors);


    /**
     * 查询物料已安装情况
     * @param hashMap
     * @return
     */
    List<HashMap<String, Object>> selectMaterialInstallationCircumstance(Map hashMap);

    /**
     * 查询物料未安装情况
     * @param hashMap
     * @return
     */
    List<HashMap<String, Object>> selectMaterialUnInstallationCircumstance(Map hashMap);

}
