package com.hw.qms.service;

import java.util.List;

import com.hw.qms.domain.MesBaseBarcodeInfo;
import com.hw.qms.domain.QmsCheckResult;
import com.hw.qms.domain.QmsCheckRule;

/**
 * 质检结果Service接口
 *
 * @author xins
 * @date 2024-01-23
 */
public interface IQmsCheckResultService
{
    /**
     * 查询质检结果
     *
     * @param checkResultId 质检结果主键
     * @return 质检结果
     */
    public QmsCheckResult selectQmsCheckResultByCheckResultId(Long checkResultId);

    /**
     * 查询质检结果列表
     *
     * @param qmsCheckResult 质检结果
     * @return 质检结果集合
     */
    public List<QmsCheckResult> selectQmsCheckResultList(QmsCheckResult qmsCheckResult);

    /**
     * 新增质检结果
     *
     * @param qmsCheckResult 质检结果
     * @return 结果
     */
    public int insertQmsCheckResult(QmsCheckResult qmsCheckResult);

    /**
     * 修改质检结果
     *
     * @param qmsCheckResult 质检结果
     * @return 结果
     */
    public int updateQmsCheckResult(QmsCheckResult qmsCheckResult);

    /**
     * 批量删除质检结果
     *
     * @param checkResultIds 需要删除的质检结果主键集合
     * @return 结果
     */
    public int deleteQmsCheckResultByCheckResultIds(Long[] checkResultIds);

    /**
     * 删除质检结果信息
     *
     * @param checkResultId 质检结果主键
     * @return 结果
     */
    public int deleteQmsCheckResultByCheckResultId(Long checkResultId);

    /**
     * 在扫描物料条码时，如果是第一次对此批次质检，需要插入质检结果记录
     *
     * @param mesBaseBarcodeInfo
     * @param qmsCheckRule
     * @return checkResultId
     */
    public Long insertCheckResult(MesBaseBarcodeInfo mesBaseBarcodeInfo, QmsCheckRule qmsCheckRule);

    /**
     * 查询质检结果列表,Join material
     *
     * @param qmsCheckResult 质检结果
     * @return 质检结果
     */
    public List<QmsCheckResult> selectQmsCheckResultJoinList(QmsCheckResult qmsCheckResult);


    /**
     * 更新质检结果状态
     *
     * @param qmsCheckResult 质检结果
     * @return 结果
     */
    public int auditQmsCheckResult(QmsCheckResult qmsCheckResult);
}
