using System.Linq.Expressions;
using Microsoft.AspNetCore.Mvc;
using Tnb.BasicData.Entities;
using Tnb.WarehouseMgr.Entities;
using Tnb.WarehouseMgr.Entities.Dto;
using Tnb.WarehouseMgr.Entities.Dto.Inputs;
namespace Tnb.WarehouseMgr.Interfaces
{
///
/// 库房业务(出入库)接口
///
public interface IWareHouseService
{
///
/// 入库策略
///
///
///
Task> InStockStrategy([FromQuery] InStockStrategyQuery input);
///
/// 出库策略
///
///
///
Task> OutStockStrategy([FromQuery] OutStockStrategyQuery input);
///
/// 路径算法
///
///
///
///
Task> PathAlgorithms(string pStartId, string pEndId);
///
/// 生成预任务
///
///
///
Task GenPreTask(List preTasks, List preTaskCodes);
///
/// 生成预任务成功后操作
///
///
///
Task GenInStockTaskHandleAfter(GenPreTaskUpInput input, Expression> setCarryColumnsExp, Expression> setLocaionColumbExp);
///
/// 生成任务执行
///
///
Task GenTaskExecute();
///
/// 任务完成
///
///
///
Task TaskComplate(TaskCompleUpInput input);
///
/// 任务执行
///
///
///
Task TaskExecute(TaskExecuteUpInput input);
///
/// 任务执行取操作返回(后续操作)
///
/// ///
///
Task TaskExecuteAfter(TaskExecuteAfterUpInput input);
///
/// 路径算法(同时出库多个载具)
///
///
///
///
///
Task> PathAlgorithmsEle(string pStartId, string pEndId, int ele);
Task SsxControl(WmsDistaskH disTask, string action);
Func AddUnExecuteTask { get; set; }
Task Check(string code, string action);
///
/// // 二楼机械臂
///
///
Task Floor2MechanicalComplete(WmsDistaskH disTask, string action);
}
}