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.Consts;
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; }
SemaphoreSlim _s_GenTaskExecute { get; }
//电梯任务
Dictionary s_elevatortaskDic
{
get;
}
List db_ElevatorTaskExceptionHandles
{
get;
}
///
/// 电梯任务WCS请求
///
public Dictionary s_elevatortaskWCSRequestDic
{
get;
}
///
/// 获取锁
///
///
///
///
///
SemaphoreSlim GetSemaphore(string type, string warehouse_id, string region_id = "");
///
/// 入库策略
///
///
///
Task> InStockStrategy([FromQuery] InStockStrategyQuery input, ISqlSugarClient dbConn = null);
///
/// 入库策略(包材库)
///
///
///
Task> InStockStrategyBCK([FromQuery] InStockStrategyQuery input, ISqlSugarClient dbConn = null);
///
/// 包材库2楼入库策略
///
///
///
Task> BCKF2InStockStrategy([FromQuery] InStockStrategyQuery input, ISqlSugarClient dbConn = null);
///
/// 出库策略
///
///
///
Task> OutStockStrategy([FromQuery] OutStockStrategyQuery input, ISqlSugarClient dbConn = null);
///
/// 缓存仓出库策略
///
///
///
///
Task> OutStockStrategyHCC([FromQuery] OutStockStrategyQuery input);
///
/// 中储仓到二楼出库策略
///
///
///
///
Task>> OutStockStrategyZCC2Floor2([FromQuery] OutStockStrategyZCC2Floor2Query input, ISqlSugarClient dbConn = null);
///
/// 出库策略-销售出库下发
///
///
///
Task>> OutStockStrategy_saleRelease([FromQuery] OutStockStrategyQuery input, ISqlSugarClient dbConn = null);
///
/// 路径算法
///
///
///
///
Task> PathAlgorithms(string pStartId, string pEndId);
///
/// 是否为一楼出库工位
///
///
///
string[] GetFloor1OutstockLocation();
///
/// 是否为二楼包材出库工位
///
///
///
string[] GetFloor2BCOutstockLocation();
///
/// 是否为供料三工位库位
///
///
///
string[] GetFloor1GLSGWOutstockLocation();
///
/// 是否为原材料调拨出库库位
///
///
///
string[] GetFloor1YCLDBOutstockLocation();
///
/// 是否为外协三工位库位
///
///
///
string[] GetFloor1WXSGWOutstockLocation();
/////
///// 是否为二楼(一楼外协三存位送上来)入暂存仓起点
/////
/////
/////
//string[] GetFloor2WX2ZCCStartLocation();
///
/// 生成预任务
///
///
///
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, ISqlSugarClient db = null);
///
/// 任务执行
///
///
///
Task TaskExecute(TaskExecuteUpInput input);
///
/// 任务执行取操作返回(后续操作)
///
/// ///
///
Task TaskExecuteAfter(TaskExecuteAfterUpInput input, ISqlSugarClient db = null);
///
/// 路径算法(同时出库多个载具)
///
///
///
///
///
Task> PathAlgorithmsEle(string pStartId, string pEndId, int ele);
Task SsxControl(WmsDistaskH disTask, string action);
Task SsxControl_complete(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, ISqlSugarClient db = null);
Task FindElevatorFromPars(ElevagorInfoQuery input);
Task CreateCodeRules(string prefix, string custom, int watercodeLength);
public Task CallingLanding(List agvDTTasks);
///
/// 电梯第三次改动 生成Agv到电梯任务
///
///
public Task AgvelevatorTimerTaskExceptionHandle();
}
}