diff --git a/Controllers/OutputRequestController.cs b/Controllers/OutputRequestController.cs index 710bcf9..b29594d 100644 --- a/Controllers/OutputRequestController.cs +++ b/Controllers/OutputRequestController.cs @@ -159,12 +159,70 @@ namespace WMS_GIRAF_Interface.Controllers } return returnJsonString; } - - + /// + /// 根据Sku生成出库任务 + /// SendOutputRequestByLotWithManyPool + /// + /// [HttpPost("BySku")] - public void OutputRequestBySku(OutputRequestBySku.RootObjectForOutputRequestBySku outputRequest) + public OutputRequestBySkuReturn OutputRequestBySku(OutputRequestBySku.RootObjectForOutputRequestBySku? outputRequest) { + bool bResult = true; + string sResult = string.Empty; + OutputRequestBySkuReturn returnJsonString = new OutputRequestBySkuReturn(); + if (outputRequest!=null) + { + //先判断当前sku是否有可用库存,然后筛选出库,如果没有的话就就启用备用sku的库存出库 + if (context.V_StorageList.FromSqlRaw($"SELECT TOP 1 STOCK_BARCODE FROM V_STORAGE_LIST WHERE requestNumber = '{outputRequest.outputRequestId}'").ToList().Count>0) + { + returnJsonString.status = "0"; + returnJsonString.evacuationPost = string.Empty; + returnJsonString.estimatedExitTime = string.Empty; + returnJsonString.errorDetails = "RefusedBecauseSameRequestNumber"; + } + else + { + //检查post number + var checkPost = + destinationIdRepository.GetDestinationId(outputRequest.evacuationPost); + if (checkPost==null) + { + returnJsonString.status = "0"; + returnJsonString.evacuationPost = string.Empty; + returnJsonString.estimatedExitTime = string.Empty; + returnJsonString.errorDetails = "RefusedBecauseUnknownPostNumber"; + } + else + { + //tlt:根据SKu来筛选物料信息 + //无需筛选巷道状态,直接选择可用轮胎,只需考虑availableEvacuationPosts即可,筛选lane_way + #region outlevel 4/3/2/1 + + var checkHighPriorityTire = context.V_StorageList.FromSqlRaw( + $@"SELECT TOP 1 STORAGE_ID FROM V_STORAGE_LIST + WHERE RUN_STATUS = 'Enable' + AND (requestNumber IS NULL OR requestNumber = '') + AND IsBlocked = {(outputRequest.productIsBlocked ? 1 : 0)} + AND LOTNUMBER = '{outputRequest.sku}' + AND PopulationNumber = '{outputRequest.productClass}' + AND Lane_way IN({string.Join(",",outputRequest.availableEvacuationPosts)})"); + + #endregion + + + } + } + } + else + { + //当前入参为空 + returnJsonString.status = "3"; + returnJsonString.evacuationPost = string.Empty; + returnJsonString.estimatedExitTime = string.Empty; + returnJsonString.errorDetails = "RefusedBecauseEmptyInputParameter"; + } + return returnJsonString; } [HttpPut] diff --git a/Entities/MANAGE_DETAIL.cs b/Entities/MANAGE_DETAIL.cs new file mode 100644 index 0000000..e62be69 --- /dev/null +++ b/Entities/MANAGE_DETAIL.cs @@ -0,0 +1,41 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using System.Runtime.Serialization; + +namespace WMS_GIRAF_Interface.Entities; + +[Table("MANAGE_DETAIL")] +public class MANAGE_DETAIL +{ + [Column("requestNumber")] + + public string? requestNumber { get; set; } + + [Column("poolNumber")] + public string? poolNumber { get; set; } + + [Column("lotNumber")] + public string? lotNumber { get; set; } + + [Column("populationNumber")] + public string? populationNumber { get; set; } + + [Column("destinationId")] + public string? destinationId { get; set; } + + [Column("targetOutputDateInUtc")] + public DateTime? targetOutputDateInUtc { get; set; } + + [Column("keepRequestInMemoryEvenIfMechanicalIssue")] + public bool? keepRequestInMemoryEvenIfMechanicalIssue { get; set; } + + [Column("keepRequestInMemoryEvenIfLackOfProductIssue")] + public bool? KeepRequestInMemoryEvenIfLackOfProductIssue { get; set; } + + [Column("requestStatus")] + public int? requestStatus { get; set; } + + [Column("errorText")] + public string? errorText { get; set; } + +} \ No newline at end of file