package com.cim.idm.dao;

import com.cim.idm.model.dto.WareHouseEditDto;
import com.cim.idm.model.dto.storage.StorageAddDto;
import com.cim.idm.model.dto.storage.StorageDelDto;
import com.cim.idm.model.dto.storage.StorageEditDto;
import com.cim.idm.model.dto.storage.StoragePageDto;
import com.cim.idm.model.po.storage.StorageSpec;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;

import java.util.List;


@Component
@Mapper
public interface WareHouseDao {

    /**
     * 编辑
     * @param dto 请求
     * @return 结果
     */
    int edit(@Param("dto") WareHouseEditDto dto);

    /**
     * 获取采购订单
     */
    List<StorageSpec> page(@Param("dto") StoragePageDto storagePageDto);

    /**
     * 获取货位
     * @param siteName 工厂
     * @param storageName 货位编码
     * @return 货位
     */
    StorageSpec get(@Param("siteName") String siteName, @Param("storageName") String storageName);

    /**
     * 新增
     * @param storageAddDto 货位
     * @return 结果
     */
    int add(@Param("storageSpec") StorageAddDto storageAddDto);

    /**
     * 编辑
     * @param storageEditDto 请求
     * @return 结果
     */
    int editStorage(@Param("edit") StorageEditDto storageEditDto);

    /**
     * 删除
     * @param storageDelDto 请求
     * @return 结果
     */
    int delStorage(@Param("del") StorageDelDto storageDelDto);

    /**
     * 检索
     * @param prefix 前缀
     * @return 结果
     */
    List<StorageSpec> search(@Param("storageName") String storageName,
                             @Param("prefix") List<String> prefix);
}
