From 206f31a5608f01a4506d571db8e3230656a9c493 Mon Sep 17 00:00:00 2001 From: taoleite Date: Fri, 27 Jun 2025 17:12:23 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E5=89=A9=E4=BD=99=E5=87=BA?= =?UTF-8?q?=E5=BA=93=E6=8E=A5=E5=8F=A3=E9=80=BB=E8=BE=91=E5=BC=80=E5=8F=91?= =?UTF-8?q?=E5=B7=A5=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Controllers/OutputRequestController.cs | 109 ++++++++++++++++-- Data/MichelinDbContext.cs | 1 + Entities/MANAGE_DETAIL.cs | 2 +- Entities/STORAGE_MAIN.cs | 8 +- Entities/V_STORAGE_LIST.cs | 43 ++++--- Models/CancelOutputRequest.cs | 2 +- .../Implement/ManageMainRepository.cs | 4 +- .../Implement/StorageMainRepository.cs | 6 +- 8 files changed, 132 insertions(+), 43 deletions(-) diff --git a/Controllers/OutputRequestController.cs b/Controllers/OutputRequestController.cs index 14360bd..3dbf8c4 100644 --- a/Controllers/OutputRequestController.cs +++ b/Controllers/OutputRequestController.cs @@ -8,6 +8,7 @@ using WMS_GIRAF_Interface.Entities; using WMS_GIRAF_Interface.Models; using WMS_GIRAF_Interface.Repositories.Interface; using WMS_GIRAF_Interface.TaskServices; +using Newtonsoft.Json; namespace WMS_GIRAF_Interface.Controllers { @@ -34,6 +35,8 @@ namespace WMS_GIRAF_Interface.Controllers { bool bResult = true; string sResult = string.Empty; + Log.Information($"{nameof(OutputRequestByProductIds)} Received new request:{JsonConvert.SerializeObject(outputRequest)}"); + OutputRequestByProductIdsReturn returnJsonString = new OutputRequestByProductIdsReturn(); if (outputRequest!=null) { @@ -171,11 +174,12 @@ namespace WMS_GIRAF_Interface.Controllers { bool bResult = true; string sResult = string.Empty; + Log.Information($"{nameof(OutputRequestBySku)} Received new request:{JsonConvert.SerializeObject(outputRequest)}"); 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) + if (context.V_StorageList.FromSqlRaw($"SELECT TOP 1 * FROM V_STORAGE_LIST WHERE requestNumber = '{outputRequest.outputRequestId}'").ToList().Count>0) { returnJsonString.status = "0"; returnJsonString.evacuationPost = string.Empty; @@ -200,7 +204,7 @@ namespace WMS_GIRAF_Interface.Controllers //无需筛选巷道状态,直接选择可用轮胎,只需考虑availableEvacuationPosts即可,筛选lane_way #region outlevel 4/3/2/1/0 var poolNumber = string.Empty; - string queryStringForLevel1234 = $@"SELECT TOP 1 STORAGE_ID,WAREHOUSE_CODE FROM V_STORAGE_LIST + string queryStringForLevel1234 = $@"SELECT TOP 1 * FROM V_STORAGE_LIST WHERE RUN_STATUS = 'Enable' AND (requestNumber IS NULL OR requestNumber = '') AND IsBlocked = {(outputRequest.productIsBlocked ? 1 : 0)} @@ -218,7 +222,7 @@ namespace WMS_GIRAF_Interface.Controllers poolNumber = checkHighPriorityTire[0].WAREHOUSE_CODE; if (storageId != 0 && storageId !=null) { - var getStorageMain = storageMainRepository.GetStorageMain("StorageId", storageId.ToString()); + var getStorageMain = storageMainRepository.GetStorageMain("storageId", storageId.ToString()); if (getStorageMain != null) { @@ -255,7 +259,7 @@ namespace WMS_GIRAF_Interface.Controllers { //未找到当前库存信息 //查看level为0的库存信息 - var checkLowPriorityTire = $@"SELECT STORAGE_ID,WAREHOUSE_CODE FROM V_STORAGE_LIST + var checkLowPriorityTire = $@"SELECT * FROM V_STORAGE_LIST WHERE RUN_STATUS = 'Enable' AND OutLevel = 0 AND IsBlocked = 0 @@ -273,7 +277,7 @@ namespace WMS_GIRAF_Interface.Controllers if (storageId!=0 && storageId!=null) { - var storageMain = storageMainRepository.GetStorageMain("ID", storageId.ToString()); + var storageMain = storageMainRepository.GetStorageMain("storageId", storageId.ToString()); if (storageMain != null) { storageMain.requestNumber = outputRequest.outputRequestId; @@ -323,6 +327,13 @@ namespace WMS_GIRAF_Interface.Controllers KeepRequestInMemoryEvenIfLackOfProductIssue = true }; context.Manage_Detail.Add(manageDetail); + context.SaveChanges(); + bResult = true; + returnJsonString.status = "1"; + returnJsonString.evacuationPost = outputRequest.evacuationPost; + returnJsonString.estimatedExitTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); + returnJsonString.errorDetails = string.Empty; + Log.Information($" Create manage_detail task completed! the detail list :{JsonConvert.SerializeObject(manageDetail)} "); } @@ -340,16 +351,96 @@ namespace WMS_GIRAF_Interface.Controllers return returnJsonString; } + /// + /// 修改任务信息 + /// + /// [HttpPut] - public void UpdateOutputRequest(UpdateOutputRequest.RootObjectForUpdateOutputRequest updateOutputRequest) + public UpdateOutputRequestReturn UpdateOutputRequest(UpdateOutputRequest.RootObjectForUpdateOutputRequest? updateOutputRequest) { + Log.Information($"{nameof(UpdateOutputRequest)} Received new request:{JsonConvert.SerializeObject(updateOutputRequest)}"); + if (updateOutputRequest!=null) + { + if (!string.IsNullOrEmpty(updateOutputRequest.outputRequestId) ) + { + var checkTask = + manageMainRepository.GetManageMain("requestId", updateOutputRequest.outputRequestId); + if (checkTask!=null) + { + //更新信息 + checkTask.TargetOutputDateInUtc = updateOutputRequest.expectedCompletionDate; + manageMainRepository.UpdateManageMain(checkTask); + Log.Information($"update output request : TargetOutputDateInUtc new is {updateOutputRequest.expectedCompletionDate};"); + return new UpdateOutputRequestReturn + { + status = "1", + errorDetails = null + }; + } + else + { + //无任务情况下, + return new UpdateOutputRequestReturn + { + status = "5", + errorDetails = "OutputRequestAlreadyPerformed" + }; + } + } + else + { + //任务ID为空 + return new UpdateOutputRequestReturn() + { + status = "2", + errorDetails = "UnknownOutputRequestId" + }; + } + } + else + { + //报错,入参为空 + return new UpdateOutputRequestReturn() + { + status = "0", + errorDetails = "RefusedBecauseEmptyInputParameter" + }; + } + } - + /// + /// 取消任务 + /// + /// [HttpPost("Cancel")] - public void CancelOutputRequest(CancelOutputRequest.RootObjectForCancelOutputRequest cancelOutputRequest) + public CancelOutputRequestReturn CancelOutputRequest(CancelOutputRequest.RootObjectForCancelOutputRequest? cancelOutputRequest) { - + Log.Information($"{nameof(CancelOutputRequest)} Received new request:{JsonConvert.SerializeObject(cancelOutputRequest)}"); + if (cancelOutputRequest!=null) + { + if (!string.IsNullOrEmpty(cancelOutputRequest.ouputRequestId)) + { + + } + else + { + //requestID 为空 + return new CancelOutputRequestReturn + { + status = "2", + errorDetails = "RefusedBecauseEmptyOutputRequestID" + }; + } + } + else + { + return new CancelOutputRequestReturn + { + status = "0", + errorDetails = "RefusedBecauseEmptyInputParameter" + }; + } } } } diff --git a/Data/MichelinDbContext.cs b/Data/MichelinDbContext.cs index 5a582f4..e75f51b 100644 --- a/Data/MichelinDbContext.cs +++ b/Data/MichelinDbContext.cs @@ -39,6 +39,7 @@ public class MichelinDbContext : DbContext modelBuilder.Entity().HasNoKey(); modelBuilder.Entity().HasNoKey(); modelBuilder.Entity().HasNoKey(); + modelBuilder.Entity(x => x.Property(e => e.MANAGE_LIST_QUANTITY).HasColumnType("decimal")); } } \ No newline at end of file diff --git a/Entities/MANAGE_DETAIL.cs b/Entities/MANAGE_DETAIL.cs index e62be69..acaa405 100644 --- a/Entities/MANAGE_DETAIL.cs +++ b/Entities/MANAGE_DETAIL.cs @@ -8,7 +8,7 @@ namespace WMS_GIRAF_Interface.Entities; public class MANAGE_DETAIL { [Column("requestNumber")] - + [Key] public string? requestNumber { get; set; } [Column("poolNumber")] diff --git a/Entities/STORAGE_MAIN.cs b/Entities/STORAGE_MAIN.cs index 5cf1c3d..4129607 100644 --- a/Entities/STORAGE_MAIN.cs +++ b/Entities/STORAGE_MAIN.cs @@ -24,13 +24,13 @@ public class STORAGE_MAIN [Column("PopulationNumber")] public string? PopulationNumber { get; set; } [Column("FabricationDateTimeInUtc")] - public string? FabricationDateTimeInUtc { get; set; } + public DateTime? FabricationDateTimeInUtc { get; set; } [Column("DryDateTimeInUtc")] - public string? DryDateTimeInUtc { get; set; } + public DateTime? DryDateTimeInUtc { get; set; } [Column("OldDateTimeInUtc")] - public string? OldDateTimeInUtc { get; set; } + public DateTime? OldDateTimeInUtc { get; set; } [Column("HdvDateTimeInUtc")] - public string? HdvDateTimeInUtc { get; set; } + public DateTime? HdvDateTimeInUtc { get; set; } [Column("IsPriority")] public bool? IsPriority { get; set; } [Column("IsBlocked")] diff --git a/Entities/V_STORAGE_LIST.cs b/Entities/V_STORAGE_LIST.cs index ebe15fc..d77ca90 100644 --- a/Entities/V_STORAGE_LIST.cs +++ b/Entities/V_STORAGE_LIST.cs @@ -6,7 +6,7 @@ namespace WMS_GIRAF_Interface.Entities; public class V_STORAGE_LIST { [Column("PRIORITY")] - public string? PRIORITY { get; set; } + public int? PRIORITY { get; set; } [Column("CELL_ID")] public int CELL_ID { get; set; } @@ -31,9 +31,6 @@ public class V_STORAGE_LIST [Column("CELL_CODE")] public string? CELL_CODE { get; set; } - [Column("AREA_ID")] - public int? AREA_ID { get; set; } - [Column("AREA_CODE")] public string? AreaCode { get; set; } [Column("AREA_TYPE")] @@ -42,7 +39,7 @@ public class V_STORAGE_LIST public string? LANE_WAY { get; set; } [Column("MANAGE_LIST_QUANTITY")] - public int? MANAGE_LIST_QUANTITY { get; set; } + public decimal? MANAGE_LIST_QUANTITY { get; set; } [Column("CELL_X")] public int? CELL_X { get; set; } @@ -64,22 +61,22 @@ public class V_STORAGE_LIST public string? LOTNUMBER { get; set; } [Column("PopulationNumber")] public string? PopulationNumber { get; set; } - [Column("DryDateTimeUtc")] - public DateTime? DryDateTimeUtc { get; set; } - [Column("DryDateTimeLoc")] - public DateTime? DryDateTimeLoc { get; set; } - [Column("OldDateTimeUtc")] - public DateTime? OldDateTimeUtc { get; set; } - [Column("OldDateTimeLoc")] - public DateTime? OldDateTimeLoc { get; set; } - [Column("HdvDateTimeUtc")] - public DateTime? HdvDateTimeUtc { get; set; } - [Column("HdvDateTimeLoc")] - public DateTime? HdvDateTimeLoc { get; set; } - [Column("FabricationDateTimeUtc")] - public DateTime? FabricationDateTimeUtc { get; set; } - [Column("FabricationDateTimeLoc")] - public DateTime? FabricationDateTimeLoc { get; set; } + [Column("DryDateTimeInUtc")] + public DateTime? DryDateTimeInUtc { get; set; } + [Column("DryDateTimeInLoc")] + public DateTime? DryDateTimeInLoc { get; set; } + [Column("OldDateTimeInUtc")] + public DateTime? OldDateTimeInUtc { get; set; } + [Column("OldDateTimeInLoc")] + public DateTime? OldDateTimeInLoc { get; set; } + [Column("HdvDateTimeInUtc")] + public DateTime? HdvDateTimeInUtc { get; set; } + [Column("HdvDateTimeInLoc")] + public DateTime? HdvDateTimeInLoc { get; set; } + [Column("FabricationDateTimeInUtc")] + public DateTime? FabricationDateTimeInUtc { get; set; } + [Column("FabricationDateTimeInLoc")] + public DateTime? FabricationDateTimeInLoc { get; set; } [Column("IsBlocked")] public bool? IsBlocked { get; set; } [Column("IsPriority")] @@ -89,9 +86,9 @@ public class V_STORAGE_LIST [Column("CELL_NAME")] public string? CELL_NAME { get; set; } [Column("EntryTime")] - public DateTime? EntryTime { get; set; } + public string? EntryTime { get; set; } [Column("OutLevel")] - public string? OutLevel { get; set; } + public int? OutLevel { get; set; } [Column("WAREHOUSE_CODE")] public string? WAREHOUSE_CODE { get; set; } [Column("AREA_NAME")] diff --git a/Models/CancelOutputRequest.cs b/Models/CancelOutputRequest.cs index 6e0a05d..b2cbb62 100644 --- a/Models/CancelOutputRequest.cs +++ b/Models/CancelOutputRequest.cs @@ -15,6 +15,6 @@ public class CancelOutputRequest /// /// Input request id /// - public string inputRequestId { get; set; } + public string ouputRequestId { get; set; } } } \ No newline at end of file diff --git a/Repositories/Implement/ManageMainRepository.cs b/Repositories/Implement/ManageMainRepository.cs index f6b1cad..3465e6d 100644 --- a/Repositories/Implement/ManageMainRepository.cs +++ b/Repositories/Implement/ManageMainRepository.cs @@ -27,10 +27,10 @@ public class ManageMainRepository: IManageMainRepository /// public MANAGE_MAIN? GetManageMain(string type, string filterInfo) { - MANAGE_MAIN? manageMain = type switch + MANAGE_MAIN? manageMain = type.ToLower() switch { "barcode" => _context.Manage_Main.FirstOrDefault(x => x.STOCK_BARCODE == filterInfo), - "requestNumber" => _context.Manage_Main.FirstOrDefault(x => x.requestNumber == filterInfo), + "requestnumber" => _context.Manage_Main.FirstOrDefault(x => x.requestNumber == filterInfo), _ => _context.Manage_Main.FirstOrDefault(x => x.STOCK_BARCODE == filterInfo) }; diff --git a/Repositories/Implement/StorageMainRepository.cs b/Repositories/Implement/StorageMainRepository.cs index 7b5131a..f8357a3 100644 --- a/Repositories/Implement/StorageMainRepository.cs +++ b/Repositories/Implement/StorageMainRepository.cs @@ -21,11 +21,11 @@ public class StorageMainRepository:IStorageMainRepository public STORAGE_MAIN? GetStorageMain(string type, string filterInfo) { - STORAGE_MAIN? storageMain = type switch + STORAGE_MAIN? storageMain = type.ToLower() switch { "barcode" => _context.Storage_Main.FirstOrDefault(x => x.STOCK_BARCODE == filterInfo), - "storageId" => _context.Storage_Main.FirstOrDefault(x => x.STORAGE_ID == Convert.ToInt32(filterInfo)), - "requestNumber" => _context.Storage_Main.FirstOrDefault(x => x.requestNumber == filterInfo), + "storageid" => _context.Storage_Main.FirstOrDefault(x => x.STORAGE_ID == Convert.ToInt32(filterInfo)), + "requestnumber" => _context.Storage_Main.FirstOrDefault(x => x.requestNumber == filterInfo), _ => _context.Storage_Main.FirstOrDefault(x => x.STOCK_BARCODE == filterInfo) };