package com.ruoyi.storageLocation.service;

import com.ruoyi.storageLocation.domain.Operlog;
import com.ruoyi.storageLocation.domain.StorageLocation;
import com.ruoyi.storageLocation.domain.StorageSelected;

import java.util.List;

/**
 * 库位管理Service接口
 *
 * @author ruoyi
 * @date 2024-02-28
 */
public interface StorageLocationService
{

    /**
     * 获取库位信息
     * @param storageLocation
     * @return
     */
    List<StorageLocation> selectStorageLocationAList(StorageLocation storageLocation);
    List<StorageLocation> selectStorageLocationBList(StorageLocation storageLocation);
    List<StorageLocation> selectStorageLocationCList(StorageLocation storageLocation);

    /**
     * 录入库位信息
     * @param storageLocation
     * @return
     */
    int addStorageLocation(StorageLocation storageLocation);

    /**
     * 确认完成认领
     * @param materialBhArr
     */
    void confirmStorageLocation(List<String> materialBhArr);

    /**
     * 判断已选库位表是否存在库位信息
     * @param materialBh
     * @return
     */
    StorageSelected hasStorageLocation(String materialBh);

    /**
     * 保存至已选库位表
     * @param materialBh
     */
    void saveStorageLocation(String userName,String materialBh);

    /**
     * 删除已选库位表记录
     * @param userName
     * @param materialBh
     */
    void deleteStorageLocation(String userName, String materialBh);

    /**
     * 读取已选列表
     * @param userName
     * @return
     */
    List<StorageLocation> selectStorageSelectedLocationAList(String userName);
    List<StorageLocation> selectStorageSelectedLocationBList(String userName);
    List<StorageLocation> selectStorageSelectedLocationCList(String userName);

    /**
     * 读取全部已选列表
     * @return
     */
    List<StorageSelected> selectStorageSelectedLocationList();

    /**
     * 批量删除已选库位表记录
     * @param userName
     * @param materialBhList
     */
    void deleteBatchStorageLocation(String userName, List<String> materialBhList);

    /**
     * 插入操作记录表
     * @param operlog
     */
    void addOperlog(Operlog operlog);

    /**
     * 查询已选库位信息
     *  @param userName
     * @param materialBhList
     * @return StorageLocation
     */
    List<StorageLocation> selectStorageLocation(String userName,List<String> materialBhList);

    /**
     * 批量插入操作记录表
     * @param operlogList
     */
    void addBatchOperlog(List<Operlog> operlogList);

    /**
     * 获取操作记录
     * @param operlog
     * @return
     */
    List<Operlog> selectOperlogs(Operlog operlog);
}
