package com.hw.wms.service;

import java.util.List;
import java.util.Map;

import com.hw.wms.domain.WmsInventoryCheck;
import com.hw.wms.domain.WmsInventoryCheckDetail;
import com.hw.wms.domain.vo.WmsInventoryCheckDetailVo;
import com.hw.wms.domain.vo.WmsInventoryCheckVo;
import org.springframework.transaction.annotation.Transactional;

/**
 * 盘点记录Service接口
 *
 * @author xs
 * @date 2023-12-20
 */
public interface IWmsInventoryCheckService
{
    /**
     * 查询盘点记录
     *
     * @param inventoryCheckId 盘点记录主键
     * @return 盘点记录
     */
    public WmsInventoryCheck selectWmsInventoryCheckByInventoryCheckId(Long inventoryCheckId);

    /**
     * 查询盘点记录列表
     *
     * @param wmsInventoryCheck 盘点记录
     * @return 盘点记录集合
     */
    public List<WmsInventoryCheck> selectWmsInventoryCheckList(WmsInventoryCheck wmsInventoryCheck);

    /**
     * 新增盘点记录
     *
     * @param wmsInventoryCheckVo 进行盘点VO对象
     * @return 结果
     */
    public Long insertWmsInventoryCheck(WmsInventoryCheckVo wmsInventoryCheckVo);

    /**
     * 修改盘点记录
     *
     * @param wmsInventoryCheck 盘点记录
     * @return 结果
     */
    public int updateWmsInventoryCheck(WmsInventoryCheck wmsInventoryCheck);

    /**
     * 批量删除盘点记录
     *
     * @param inventoryCheckIds 需要删除的盘点记录主键集合
     * @return 结果
     */
    public int deleteWmsInventoryCheckByInventoryCheckIds(Long[] inventoryCheckIds);

    /**
     * 删除盘点记录信息
     *
     * @param inventoryCheckId 盘点记录主键
     * @return 结果
     */
    public int deleteWmsInventoryCheckByInventoryCheckId(Long inventoryCheckId);


    /**
     * 查询盘点记录列表,join warehouse
     *
     * @param wmsInventoryCheck 盘点记录
     * @return 盘点记录
     */
    public List<WmsInventoryCheck> selectWmsInventoryCheckJoinList(WmsInventoryCheck wmsInventoryCheck);

//    /**
//     * 根据判断状态获取数据，按状态返回list数据
//     * @param wmsInventoryCheckDetail
//     * @return
//     */
//    public Map<String,List<WmsInventoryCheckDetail>> getIncompletedInventoryCheckDetails(WmsInventoryCheckDetail wmsInventoryCheckDetail);

    /**
     * 根据状态获取数据，按状态返回list数据
     *
     * @param wmsInventoryCheckDetail
     * @return
     */
    public List<WmsInventoryCheckDetail> getInventoryCheckDetails(WmsInventoryCheckDetail wmsInventoryCheckDetail);

    /**
     * 确认盘点
     * @param wmsInventoryCheckDetailVo
     * @return
     */
    public int confirmInventoryCheckDetail(WmsInventoryCheckDetailVo wmsInventoryCheckDetailVo);

    /**
     * 盘点完成
     * @param wmsInventoryCheck
     * @return
     */
    @Transactional(rollbackFor = Exception.class)
    public int completeInventoryCheck(WmsInventoryCheck wmsInventoryCheck);
}
