package com.hw.wms.service;

import java.util.List;
import com.hw.wms.domain.WmsRawReturn;
import com.hw.wms.domain.WmsRawReturnDetail;
import com.hw.wms.domain.vo.WmsRawReturnAuditVo;
import com.hw.wms.domain.vo.WmsRawReturnConfirmVo;
import org.springframework.transaction.annotation.Transactional;

/**
 * 原材料退库记录Service接口
 *
 * @author xs
 * @date 2023-12-20
 */
public interface IWmsRawReturnService
{
    /**
     * 查询原材料退库记录
     *
     * @param rawReturnId 原材料退库记录主键
     * @return 原材料退库记录
     */
    public WmsRawReturn selectWmsRawReturnByRawReturnId(Long rawReturnId);

    /**
     * 查询原材料退库记录，退库确认使用
     *
     * @param rawReturnId 原材料退库记录主键
     * @return 原材料退库记录
     */
    public WmsRawReturn selectWmsRawReturnByRawReturnId4Confirm(Long rawReturnId);
    /**
     * 查询原材料退库记录列表
     *
     * @param wmsRawReturn 原材料退库记录
     * @return 原材料退库记录集合
     */
    public List<WmsRawReturn> selectWmsRawReturnList(WmsRawReturn wmsRawReturn);

    /**
     * 新增原材料退库记录
     *
     * @param wmsRawReturn 原材料退库记录
     * @return 结果
     */
    public int insertWmsRawReturn(WmsRawReturn wmsRawReturn);

    /**
     * 修改原材料退库记录
     *
     * @param wmsRawReturn 原材料退库记录
     * @return 结果
     */
    public int updateWmsRawReturn(WmsRawReturn wmsRawReturn);

    /**
     * 批量删除原材料退库记录
     *
     * @param rawReturnIds 需要删除的原材料退库记录主键集合
     * @return 结果
     */
    public int deleteWmsRawReturnByRawReturnIds(Long[] rawReturnIds);

    /**
     * 删除原材料退库记录信息
     *
     * @param rawReturnId 原材料退库记录主键
     * @return 结果
     */
    public int deleteWmsRawReturnByRawReturnId(Long rawReturnId);

    /**
     * 查询原材料退库记录列表,供手持退库审核使用
     *
     * @param wmsRawReturn 原材料退库记录
     * @return 原材料退库记录
     */
    public List<WmsRawReturn> selectWmsRawReturnJoinList(WmsRawReturn wmsRawReturn);


    /**
     * 审核原材料退库记录
     *
     * @param wmsRawReturnAuditVo
     */
    public int auditWmsRawReturn(WmsRawReturnAuditVo wmsRawReturnAuditVo);

    /**
     * 原材料退库记录明细确认
     *
     * @param wmsRawReturnConfirmVo
     * @return
     */
    public int confirmWmsRawReturn(WmsRawReturnConfirmVo wmsRawReturnConfirmVo);

    /**
     * 查询原材料退记录明细列表，供手持出库使用
     *
     * @param wmsRawReturnDetail 原材料退库记录明细
     * @return 原材料退库记录明细
     */
    public List<WmsRawReturnDetail> selectAuditPassRawReturnDetails(WmsRawReturnDetail wmsRawReturnDetail);


    /**
     * 申请退库
     *
     * @param wmsRawReturns 原材料退库记录列表
     * @return 结果
     */
    public int applyRawReturn(List<WmsRawReturn> wmsRawReturns);
}
