Files
tnb.server/WarehouseMgr/Tnb.WarehouseMgr.Interfaces/IWareHouseService.cs

240 lines
8.7 KiB
C#

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
{
/// <summary>
/// 库房业务(出入库)接口
/// </summary>
public interface IWareHouseService
{
/// <summary>
/// 原材料入库
/// </summary>
SemaphoreSlim s_taskExecuteSemaphore_YCLInstock { get; }
/// <summary>
/// 原材料出库
/// </summary>
SemaphoreSlim s_taskExecuteSemaphore_YCLOutstock { get; }
/// <summary>
/// 暂存仓入库
/// </summary>
SemaphoreSlim s_taskExecuteSemaphore_F2ZCCInstock { get; }
/// <summary>
/// 暂存仓出库
/// </summary>
SemaphoreSlim s_taskExecuteSemaphore_F2ZCCOutstock { get; }
SemaphoreSlim _s_GenTaskExecute { get; }
//电梯任务
Dictionary<string, SemaphoreSlim> s_elevatortaskDic
{
get;
}
List<ISqlSugarClient> db_ElevatorTaskExceptionHandles
{
get;
}
/// <summary>
/// 电梯任务WCS请求
/// </summary>
public Dictionary<string, SemaphoreSlim> s_elevatortaskWCSRequestDic
{
get;
}
/// <summary>
/// 获取锁
/// </summary>
/// <param name="type"></param>
/// <param name="warehouse_id"></param>
/// <param name="region_id"></param>
/// <returns></returns>
SemaphoreSlim GetSemaphore(string type, string warehouse_id, string region_id = "");
/// <summary>
/// 入库策略
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
Task<List<BasLocation>> InStockStrategy([FromQuery] InStockStrategyQuery input);
/// <summary>
/// 入库策略(包材库)
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
Task<List<BasLocation>> InStockStrategyBCK([FromQuery] InStockStrategyQuery input);
/// <summary>
/// 包材库2楼入库策略
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
Task<List<BasLocation>> BCKF2InStockStrategy([FromQuery] InStockStrategyQuery input);
/// <summary>
/// 出库策略
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
Task<List<WmsCarryH>> OutStockStrategy([FromQuery] OutStockStrategyQuery input);
/// <summary>
/// 缓存仓出库策略
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
/// <exception cref="AppFriendlyException"></exception>
Task<List<WmsCarryH>> OutStockStrategyHCC([FromQuery] OutStockStrategyQuery input);
/// <summary>
/// 中储仓到二楼出库策略
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
/// <exception cref="AppFriendlyException"></exception>
Task<List<Tuple<WmsCarryH, decimal, BasLocation>>> OutStockStrategyZCC2Floor2([FromQuery] OutStockStrategyZCC2Floor2Query input);
/// <summary>
/// 出库策略-销售出库下发
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
Task<List<Tuple<string, WmsCarryH, WmsCarryCode, BasLocation>>> OutStockStrategy_saleRelease([FromQuery] OutStockStrategyQuery input);
/// <summary>
/// 路径算法
/// </summary>
/// <param name="pStartId"></param>
/// <param name="pEndId"></param>
/// <returns></returns>
Task<List<WmsPointH>> PathAlgorithms(string pStartId, string pEndId);
/// <summary>
/// 是否为一楼出库工位
/// </summary>
/// <param name="location_id"></param>
/// <returns></returns>
string[] GetFloor1OutstockLocation();
/// <summary>
/// 是否为二楼包材出库工位
/// </summary>
/// <param name="location_id"></param>
/// <returns></returns>
string[] GetFloor2BCOutstockLocation();
/// <summary>
/// 是否为供料三工位库位
/// </summary>
/// <param name="location_id"></param>
/// <returns></returns>
string[] GetFloor1GLSGWOutstockLocation();
/// <summary>
/// 是否为原材料调拨出库库位
/// </summary>
/// <param name="location_id"></param>
/// <returns></returns>
string[] GetFloor1YCLDBOutstockLocation();
/// <summary>
/// 是否为外协三工位库位
/// </summary>
/// <param name="location_id"></param>
/// <returns></returns>
string[] GetFloor1WXSGWOutstockLocation();
///// <summary>
///// 是否为二楼(一楼外协三存位送上来)入暂存仓起点
///// </summary>
///// <param name="location_id"></param>
///// <returns></returns>
//string[] GetFloor2WX2ZCCStartLocation();
/// <summary>
/// 生成预任务
/// </summary>
/// <param name="preTasks"></param>
/// <returns></returns>
Task<bool> GenPreTask(List<WmsPretaskH> preTasks, List<WmsPretaskCode> preTaskCodes, ISqlSugarClient dbConn = null);
/// <summary>
/// 生成预任务成功后操作
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
Task GenInStockTaskHandleAfter(GenPreTaskUpInput input, Expression<Func<WmsCarryH, WmsCarryH>> setCarryColumnsExp, Expression<Func<BasLocation, BasLocation>> setLocaionColumbExp, ISqlSugarClient dbConn = null);
/// <summary>
/// 生成任务执行
/// </summary>
/// <returns></returns>
Task GenTaskExecute();
/// <summary>
/// 任务完成
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
Task TaskComplate(TaskCompleUpInput input, ISqlSugarClient db = null);
/// <summary>
/// 任务执行
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
Task TaskExecute(TaskExecuteUpInput input);
/// <summary>
/// 任务执行取操作返回(后续操作)
/// </summary>
/// /// <param name="input"></param>
/// <returns></returns>
Task TaskExecuteAfter(TaskExecuteAfterUpInput input, ISqlSugarClient db = null);
/// <summary>
/// 路径算法(同时出库多个载具)
/// </summary>
/// <param name="pStartId"></param>
/// <param name="pEndId"></param>
/// <param name="ele"></param>
/// <returns></returns>
Task<List<WmsPointH>> PathAlgorithmsEle(string pStartId, string pEndId, int ele);
Task SsxControl(WmsDistaskH disTask, string action);
Func<string, int, Task> AddUnExecuteTask { get; set; }
Task<bool> Check(string code, string action);
/// <summary>
/// // 二楼机械臂(请求)
/// </summary>
/// <returns></returns>
Task Floor2MechanicalConfirm(WmsDistaskH disTask, string action);
/// <summary>
/// // 二楼机械臂(完成)
/// </summary>
/// <returns></returns>
Task Floor2MechanicalComplete(WmsDistaskH disTask, string action);
/// <summary>
/// 二楼kiva把料架送到下升降机后生成中储仓入库任务
/// </summary>
/// <param name="rackid">料架id</param>
/// <returns></returns>
Task<bool> Floor2EmptyCarryCreateZZCPretask(string rackid);
/// <summary>
/// 生成预任务接口 CTU需要传task_type
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost, NonUnify, AllowAnonymous]
Task<Tnb.WarehouseMgr.Entities.Dto.Outputs.Result> CommonCreatePretask(CommonCreatePretaskInput input, ISqlSugarClient db = null);
/// <summary>
/// 执行到目标楼层电梯任务
/// </summary>
/// <param name="disTask"></param>
/// <returns></returns>
Task ExecuteTargetFloorTask(List<WmsDistaskH> disTasks, ISqlSugarClient db = null);
Task<WmsElevatorH> FindElevatorFromPars(ElevagorInfoQuery input);
Task<string> CreateCodeRules(string prefix, string custom, int watercodeLength);
}
}