package com.hw.wms.service;

import java.util.List;
import com.hw.wms.domain.WmsTransfer;
import com.hw.wms.domain.WmsTransferDetail;
import org.springframework.transaction.annotation.Transactional;

/**
 * 转库记录Service接口
 *
 * @author xins
 * @date 2024-01-12
 */
public interface IWmsTransferService
{
    /**
     * 查询转库记录
     *
     * @param transferId 转库记录主键
     * @return 转库记录
     */
    public WmsTransfer selectWmsTransferByTransferId(Long transferId);

    /**
     * 查询转库记录列表
     *
     * @param wmsTransfer 转库记录
     * @return 转库记录集合
     */
    public List<WmsTransfer> selectWmsTransferList(WmsTransfer wmsTransfer);

    /**
     * 新增转库记录
     *
     * @param wmsTransfer 转库记录
     * @return 结果
     */
    public int insertWmsTransfer(WmsTransfer wmsTransfer);

    /**
     * 修改转库记录
     *
     * @param wmsTransfer 转库记录
     * @return 结果
     */
    public int updateWmsTransfer(WmsTransfer wmsTransfer);

    /**
     * 批量删除转库记录
     *
     * @param transferIds 需要删除的转库记录主键集合
     * @return 结果
     */
    public int deleteWmsTransferByTransferIds(Long[] transferIds);

    /**
     * 删除转库记录信息
     *
     * @param transferId 转库记录主键
     * @return 结果
     */
    public int deleteWmsTransferByTransferId(Long transferId);





    /**
     * 申请转库（适合五楼半成品库入成品库）
     *
     * @param wmsTransfers
     * @return
     */
    public int applyTransfers(List<WmsTransfer> wmsTransfers);

    /**
     * 查询转库记录列表，Join原仓库，目标仓库和物料
     *
     * @param wmsTransfer 转库记录
     * @return 转库记录
     */
    public List<WmsTransfer> selectWmsTransferJoinList(WmsTransfer wmsTransfer);

    /**
     * 转库出库，适合五楼半成品出半成品库
     * @param wmsTransferDetail
     * @return
     */
    public int transferOutstock(WmsTransferDetail wmsTransferDetail);

    /**
     * 转库入库，适合五楼半成品入成品库
     * @param wmsTransferDetail
     * @return
     */
    public int transferInstock(WmsTransferDetail wmsTransferDetail);
}
