package com.shkj.wms.service;

import com.shkj.common.core.domain.Result;
import com.shkj.wms.bo.*;
import com.shkj.wms.domain.BaseArea;
import com.shkj.wms.config.ValidList;
import com.shkj.wms.vo.BaseAreaListVo;
import com.shkj.wms.vo.BaseAreaNoOtherVo;
import com.shkj.wms.vo.BaseAreaVo;
import com.baomidou.mybatisplus.extension.service.IService;
import com.shkj.wms.vo.BaseAreaVoExt;

import java.util.List;

/**
 * 区域资料Service接口
 *
 * @author lch
 * @date 2022-05-13
 */
public interface IBaseAreaService extends IService<BaseArea> {
	/**
	 * 查询单个
	 *
     * @param id
     * @return
     */
	Result<BaseAreaVo> queryById(Long id);

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

	/**
	 * 根据新增业务对象插入区域资料
	 * @param bo 区域资料新增业务对象
	 * @return
	 */
	Result<Boolean> insertByAddBo(BaseAreaAddBo bo);

	/**
	 * 根据编辑业务对象修改区域资料
	 * @param bo 区域资料编辑业务对象
	 * @return
	 */
	Result<Boolean> updateByEditBo(BaseAreaEditBo bo);

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


	/**
	 * 获取当前仓的所有区域信息（带库别简单信息)
	 * @return
	 */
	List<BaseAreaListVo> queryBaseAreaAndStorageList();


	/**
	 * 根据提交的数据新增或者修改区域资料
	 * @param list 区域集合
	 * @return
	 */
	Result<Boolean> saveOrUpdateBaseAreas(ValidList<BaseAreaSaveOrUpdateBo> list);


	/**
	 * 按照权限获取区域集合
	 * @return
	 */
	List<BaseAreaNoOtherVo> queryBaseAreaList(BaseAreaQueryListBo bo);



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