using System.Linq.Expressions;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using SqlSugar;
using Tnb.BasicData.Entities;
using Tnb.WarehouseMgr.Entities;
using Tnb.WarehouseMgr.Entities.Dto;
using Tnb.WarehouseMgr.Entities.Dto.Inputs;
using Tnb.WarehouseMgr.Entities.Dto.Queries;
namespace Tnb.WarehouseMgr.Interfaces
{
///
/// 库房业务(出入库)接口
///
public interface IWareHouseService
{
///
/// 原材料入库
///
SemaphoreSlim s_taskExecuteSemaphore_YCLInstock { get; }
///
/// 原材料出库
///
SemaphoreSlim s_taskExecuteSemaphore_YCLOutstock { get; }
///
/// 暂存仓入库
///
SemaphoreSlim s_taskExecuteSemaphore_F2ZCCInstock { get; }
///
/// 暂存仓出库
///
SemaphoreSlim s_taskExecuteSemaphore_F2ZCCOutstock { get; }
///
/// 入库策略
///
///
///
Task> InStockStrategy([FromQuery] InStockStrategyQuery input);
///
/// 入库策略(包材库)
///
///
///
Task> InStockStrategyBCK([FromQuery] InStockStrategyQuery input);
///
/// 包材库2楼入库策略
///
///
///
Task> BCKF2InStockStrategy([FromQuery] InStockStrategyQuery input);
///
/// 出库策略
///
///
///
Task> OutStockStrategy([FromQuery] OutStockStrategyQuery input);
///
/// 缓存仓出库策略
///
///
///
///
Task> OutStockStrategyHCC([FromQuery] OutStockStrategyQuery input);
///
/// 中储仓到二楼出库策略
///
///
///
///
Task>> OutStockStrategyZCC2Floor2([FromQuery] OutStockStrategyZCC2Floor2Query input);
///
/// 出库策略-销售出库下发
///
///
///
Task>> OutStockStrategy_saleRelease([FromQuery] OutStockStrategyQuery input);
///
/// 路径算法
///
///
///
///
Task> PathAlgorithms(string pStartId, string pEndId);
///
/// 是否为一楼出库工位
///
///
///
string[] GetFloor1OutstockLocation();
///
/// 是否为二楼包材出库工位
///
///
///
string[] GetFloor2BCOutstockLocation();
///
/// 是否为供料三工位库位
///
///
///
string[] GetFloor1GLSGWOutstockLocation();
///
/// 是否为外协三工位库位
///
///
///
string[] GetFloor1WXSGWOutstockLocation();
///
/// 生成预任务
///
///
///
Task GenPreTask(List preTasks, List preTaskCodes, ISqlSugarClient dbConn = null);
///
/// 生成预任务成功后操作
///
///
///
Task GenInStockTaskHandleAfter(GenPreTaskUpInput input, Expression> setCarryColumnsExp, Expression> setLocaionColumbExp, ISqlSugarClient dbConn = null);
///
/// 生成任务执行
///
///
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 Floor2MechanicalConfirm(WmsDistaskH disTask, string action);
///
/// // 二楼机械臂(完成)
///
///
Task Floor2MechanicalComplete(WmsDistaskH disTask, string action);
///
/// 二楼kiva把料架送到下升降机后生成中储仓入库任务
///
/// 料架id
///
Task Floor2EmptyCarryCreateZZCPretask(string rackid);
///
/// 生成预任务接口 CTU需要传task_type
///
///
///
[HttpPost, NonUnify, AllowAnonymous]
Task CommonCreatePretask(CommonCreatePretaskInput input, ISqlSugarClient db = null);
///
/// 执行到目标楼层电梯任务
///
///
///
Task ExecuteTargetFloorTask(List disTasks);
Task FindElevatorFromPars(ElevagorInfoQuery input);
}
}