package com.shkj.wms.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.shkj.common.core.domain.Result;
import com.shkj.wms.domain.BaseStorage;
import com.shkj.wms.bo.BaseStorageQueryBo;
import com.shkj.wms.bo.BaseStorageQueryListBo;
import com.shkj.wms.bo.BaseStorageSaveOrUpdateBo;
import com.shkj.wms.config.ValidList;
import com.shkj.wms.vo.BaseStorageVo;

import java.util.List;

/**
 * 库别资料Service接口
 *
 * @author lch
 * @date 2022-04-19
 */
public interface IBaseStorageService extends IService<BaseStorage> {

    /**
     * 查询列表
     *
     * @param bo
     * @return
     */
    List<BaseStorageVo> queryList(BaseStorageQueryBo bo);

    /**
     * 查询单个
     *
     * @param id
     * @return
     */
    Result<BaseStorageVo> queryById(Long id);

    /**
     * 校验并删除数据
     *
     * @param ids     主键集合
     * @param isValid 是否校验,true-删除前校验,false-不校验
     * @return
     */
    Result<Boolean> deleteWithValidById(List<Long> ids, Boolean isValid);

    /**
     * 查询库别信息列表
     */
    List<BaseStorageVo> queryBaseStorageList(BaseStorageQueryListBo bo);

    /**
     * 保存或者修改库别信息（根据是否有id来判断新增或者修改）
     * @param list
     * @return
     */
    Result<Boolean> saveOrUpdateBaseStorage(ValidList<BaseStorageSaveOrUpdateBo> list);

    /**
     * 查询存储列表
     *
     * @param branchId 分支id
     * @return {@link List}<{@link BaseStorage}>
     */
    List<BaseStorage> queryStorageList(Long branchId);

    Result<Boolean> switchStatus(Long id, String status);
}
