using AUCMA.STORE.Entity.DAO;
using AUCMA.STORE.Entity.DTO;
using AUCMA.STORE.Entity.Enums;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AUCMA.STORE.Business.Interface
{
///
/// 出库业务逻辑
///
public interface IOutStoreBusiness
{
///
/// 根据箱体码获取物料规格信息
///
///
///
Task GetMaterialInfo(string boxCode);
///
/// 判断堆垛机状态
///
///
///
List EstimatePilerStatus();
///
/// 判断物料所在库位
///
///
///
Task> EstimateMaterialLocation(BaseMaterialInfo baseMaterialInfo);
///
/// 选取最优库位
///
///
///
///
BaseLocationInfo FiltrateLocation(List pilerStatusDTOs, List baseLocationInfos);
///
/// 筛选最佳库位
///
///
///
BaseLocationInfo FiltrateBestlocation(List baseLocationInfos);
///
/// 创建出库任务
///
///
///
///
///
Task CreateOutStoreTask(BaseLocationInfo baseLocationInfo, List pilerStatusDTOs, BaseMaterialInfo baseMaterialInfo);
///
/// 创建出库任务
///
///
///
///
Task CreateTask(BaseLocationInfo baseLocationInfo, BaseMaterialInfo baseMaterialInfo, OperationType operationType);
///
/// 创建待出库
///
///
///
Task CreatePrepareOutStore(TaskDTO taskDTO);
///
/// 修改库位状态
///
///
///
///
Task updateLocationStatus(TaskDTO task, LocationStatus locationStatus);
///
/// 修改出库任务状态
///
///
///
Task UpdateOutStoreStatus(TaskDTO taskDTO);
///
/// 修改待出库记录状态
///
///
///
Task UpdatePrePareOutStoreStatus(TaskDTO taskDTO);
///
/// 创建出库记录
///
///
///
Task SaveOutStoreRecord(TaskDTO taskDTO);
///
/// 清楚物料与库位绑定记录
///
///
///
Task DeleteMaterialLocation(TaskDTO taskDTO);
///
/// 更新库存
///
///
Task UpdateStock(BaseMaterialInfo baseMaterialInfo);
///
/// 保存出库操作指令记录
///
///
///
Task SaveOutStoreDirecticeOperation(RecordDirectiveOperation recordDirectiveOperation);
bool SaveBarCode(string P_Bar_Code, string P_Device_Code);
}
}