package com.hw.wms.service;

import java.util.List;

import com.hw.common.core.constant.WmsConstants;
import com.hw.wms.domain.WmsProductInstock;
import com.hw.wms.domain.vo.WmsProduceInstockVo;
import com.hw.wms.domain.vo.WmsProductInstockVo;
import org.springframework.transaction.annotation.Transactional;

/**
 * 成品入库记录;成品入库记录Service接口
 *
 * @author xins
 * @date 2023-12-25
 */
public interface IWmsProductInstockService {
    /**
     * 查询成品入库记录;成品入库记录
     *
     * @param productInstockId 成品入库记录;成品入库记录主键
     * @return 成品入库记录;成品入库记录
     */
    public WmsProductInstock selectWmsProductInstockByProductInstockId(Long productInstockId);

    /**
     * 查询成品入库记录;成品入库记录列表
     *
     * @param wmsProductInstock 成品入库记录;成品入库记录
     * @return 成品入库记录;成品入库记录集合
     */
    public List<WmsProductInstock> selectWmsProductInstockList(WmsProductInstock wmsProductInstock);

    /**
     * 新增成品入库记录;成品入库记录
     *
     * @param wmsProductInstock 成品入库记录;成品入库记录
     * @return 结果
     */
    public int insertWmsProductInstock(WmsProductInstock wmsProductInstock);

    /**
     * 修改成品入库记录;成品入库记录
     *
     * @param wmsProductInstock 成品入库记录;成品入库记录
     * @return 结果
     */
    public int updateWmsProductInstock(WmsProductInstock wmsProductInstock);

    /**
     * 批量删除成品入库记录;成品入库记录
     *
     * @param productInstockIds 需要删除的成品入库记录;成品入库记录主键集合
     * @return 结果
     */
    public int deleteWmsProductInstockByProductInstockIds(Long[] productInstockIds);

    /**
     * 删除成品入库记录;成品入库记录信息
     *
     * @param productInstockId 成品入库记录;成品入库记录主键
     * @return 结果
     */
    public int deleteWmsProductInstockByProductInstockId(Long productInstockId);


    /**
     * 新增成品入库记录(适用于移动手持端)
     *
     * @param wmsProductInstockVo 原材料入库记录
     * @return 结果
     */
    public int insertWmsProductInstock(WmsProductInstockVo wmsProductInstockVo);



    /**
     * 生产入库，适合在五楼背板安装区（将组装好的柜体入到半成品库）
     *
     * @param wmsProduceInstockVo
     * @return
     */
    public int fifthFloorProduceInstock(WmsProduceInstockVo wmsProduceInstockVo);

    /**
     * 新增成品入库记录(适用于Web端，适用于1楼成品入库，入虚拟库，无库位)
     *
     * @param wmsProduceInstockVo
     * @return
     */
    public int firstFloorProduceInstock(WmsProduceInstockVo wmsProduceInstockVo);


    /**
     * 新增成品入库记录(适用于Web端，适用于4楼成品入库，入虚拟库，无库位)
     *
     * @param wmsProduceInstockVo
     * @return
     */
    public int fourthFloorProduceInstock(WmsProduceInstockVo wmsProduceInstockVo);
}
