package com.hw.wms.service;

import java.util.List;

import com.alibaba.fastjson2.JSONObject;
import com.hw.wms.domain.WmsRawOutstock;
import com.hw.wms.domain.WmsRawOutstockDetail;
import com.hw.wms.domain.vo.WmsAgvRawOutstockVo;
import com.hw.wms.domain.vo.WmsRawOutstockAuditVo;
import com.hw.wms.domain.vo.WmsRawOutstockConfirmVo;
import com.hw.wms.domain.vo.WmsWcsVo;
import org.springframework.transaction.annotation.Transactional;

/**
 * 原材料出库记录Service接口
 *
 * @author xs
 * @date 2023-12-20
 */
public interface IWmsRawOutstockService
{
    /**
     * 查询原材料出库记录
     *
     * @param rawOutstockId 原材料出库记录主键
     * @return 原材料出库记录
     */
    public WmsRawOutstock selectWmsRawOutstockByRawOutstockId(Long rawOutstockId);

    /**
     * 查询原材料出库记录列表
     *
     * @param wmsRawOutstock 原材料出库记录
     * @return 原材料出库记录集合
     */
    public List<WmsRawOutstock> selectWmsRawOutstockList(WmsRawOutstock wmsRawOutstock);

    /**
     * 新增原材料出库记录
     *
     * @param wmsRawOutstock 原材料出库记录
     * @return 结果
     */
    public int insertWmsRawOutstock(WmsRawOutstock wmsRawOutstock);

    /**
     * 修改原材料出库记录
     *
     * @param wmsRawOutstock 原材料出库记录
     * @return 结果
     */
    public int updateWmsRawOutstock(WmsRawOutstock wmsRawOutstock);

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

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

    /**
     * 审核原材料出库记录
     * @param wmsRawOutstockAuditVo
     */
    public JSONObject auditWmsRawOutstock(WmsRawOutstockAuditVo wmsRawOutstockAuditVo);

    /**
     * 原材料出库记录明细确认
     * @param wmsRawOutstockConfirmVo
     * @return
     */
    public int confirmWmsRawOutstock(WmsRawOutstockConfirmVo wmsRawOutstockConfirmVo);

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

    /**
     * 申请领料
     *
     * @param wmsRawOutstock 原材料出库记录
     * @return 结果
     */
    public int applyRawOutstock(WmsRawOutstock wmsRawOutstock);

    public List<WmsWcsVo> applyAgvRawOutstock(WmsAgvRawOutstockVo wmsAgvRawOutstockVo);
}
