using Kean.Application.Command.ViewModels;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace Kean.Application.Command.Interfaces
{
///
/// 表示任务命令服务
///
public interface ITaskService
{
///
/// 创建上架任务
///
/// 任务视图
/// 分配的 ID 及失败信息
Task<(int Id, Failure Failure)> Infeed(ViewModels.Task task);
///
/// 创建下架任务
///
/// 任务视图
/// 分配的 ID 及失败信息
Task<(int Id, Failure Failure)> Outfeed(ViewModels.Task task);
///
/// 创建移库任务
///
/// 任务视图
/// 分配的 ID 及失败信息
Task<(int Id, Failure Failure)> Transfer(ViewModels.Task task);
///
/// 创建输送任务
///
/// 任务视图
/// 分配的 ID 及失败信息
Task<(int Id, Failure Failure)> Bypass(ViewModels.Task task);
///
/// 任务执行
///
/// 标识
/// 失败信息
Task Execute(int id);
///
/// 任务取消
///
/// 标识
/// 失败信息
Task Cancel(int id);
///
/// 任务完成
///
/// 标识
/// 失败信息
Task Complete(int id);
///
/// 任务阻塞
///
/// 标识
/// 异常信息
/// 失败信息
Task Block(int id, string message);
///
/// 货位禁用
///
/// 库房
/// 货位
/// 货位状态及失败信息
Task<(IEnumerable States, Failure Failure)> Disable(int warehouse, IEnumerable cells, string celltag);
///
/// 货位启用
///
/// 库房
/// 货位
/// 货位状态及失败信息
Task<(IEnumerable States, Failure Failure)> Enable(int warehouse, IEnumerable cells);
////////////////////////////////////////////////////
///
/// 创建申请出库任务
///
/// 任务视图
/// 分配的 ID 及失败信息
Task<(int Id, Failure Failure)> ApplyOut(ViewModels.Task task);
///
/// 创建托盘出库任务
///
/// 任务视图
/// 分配的 ID 及失败信息
Task<(int Id, Failure Failure)> PalletOut(ViewModels.Task task);
///
/// AGV申请出库
///
Task<(string barcode, Failure Failure)> AgvApplyOut(string requestNo,
string code,
Batch batch,
string qty,
string slTarget,
string postUser);
///
/// 重新上传海辰WMS数据
///
/// 标识
/// 失败信息
Task<(string message, Failure failure)> ReuploadHiWMS(int id);
/////
///// 创建直接出库任务
/////
///// 任务视图
///// 分配的 ID 及失败信息
//Task<(int Id, Failure failure)> DirectOutbound(ViewModels.Task task);
///
/// 设置应急模式
///
/// 失败信息
Task Emergency(string stationCode, string stationModel, int @operator);
///
/// 强制完成设置膜卷质量状态
///
/// 标识
/// 失败信息
Task<(string message, Failure failure)> SetRollTaskByLocalComplete(int id, int @operator);
///
/// 人工重报完成
///
/// 任务视图
/// 分配的 ID 及失败信息
Task<(int taskid, Failure failure)> RecompleteForNoAgv(ViewModels.Task task);
///
/// 人工重报完成
///
/// 任务视图
/// 分配的 ID 及失败信息
Task<(int taskid, Failure failure)> RecompleteForNoHiwms(ViewModels.Task task);
///
/// 任务WCS请求删除
///
/// 标识
/// 失败信息
Task CallDelete(int id);
///
/// 设置任务优先级
///
/// 标识
/// 失败信息
Task SetPriority(ViewModels.Task task);
///
/// 取消出库申请
///
Task CancelAgvApplyOut(string requestNo, string postUser);
///
/// 空托盘自动出库
///
Task AutoPalletOut();
}
}