From 1d88587a3350a95ab4052242275aabd3f78461b7 Mon Sep 17 00:00:00 2001 From: taoleite Date: Thu, 26 Jun 2025 16:49:36 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90bysku=E5=87=BA=E5=BA=93?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E7=9A=84=E7=9A=84=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Controllers/OutputRequestController.cs | 120 +++++++++++++++--- Data/MichelinDbContext.cs | 1 + Program.cs | 5 +- Repositories/Implement/WhCellRepository.cs | 10 +- .../Interface/IIoControlRepository.cs | 2 +- 5 files changed, 118 insertions(+), 20 deletions(-) diff --git a/Controllers/OutputRequestController.cs b/Controllers/OutputRequestController.cs index 4d22cb5..14360bd 100644 --- a/Controllers/OutputRequestController.cs +++ b/Controllers/OutputRequestController.cs @@ -2,6 +2,7 @@ using Microsoft.EntityFrameworkCore; using Microsoft.Identity.Client.Extensions.Msal; using System.Drawing; +using Serilog; using WMS_GIRAF_Interface.Data; using WMS_GIRAF_Interface.Entities; using WMS_GIRAF_Interface.Models; @@ -197,9 +198,9 @@ namespace WMS_GIRAF_Interface.Controllers { //tlt:根据SKu来筛选物料信息 //无需筛选巷道状态,直接选择可用轮胎,只需考虑availableEvacuationPosts即可,筛选lane_way - #region outlevel 4/3/2/1 - - string temp = $@"SELECT TOP 1 STORAGE_ID FROM V_STORAGE_LIST + #region outlevel 4/3/2/1/0 + var poolNumber = string.Empty; + string queryStringForLevel1234 = $@"SELECT TOP 1 STORAGE_ID,WAREHOUSE_CODE FROM V_STORAGE_LIST WHERE RUN_STATUS = 'Enable' AND (requestNumber IS NULL OR requestNumber = '') AND IsBlocked = {(outputRequest.productIsBlocked ? 1 : 0)} @@ -208,39 +209,124 @@ namespace WMS_GIRAF_Interface.Controllers AND Lane_way IN ({string.Join(",", outputRequest.availableEvacuationPosts)}) ORDER BY OutLevel DESC , HdvDateTimeInUtc"; - 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)}) - ORDER BY OutLevel DESC , HdvDateTimeInUtc").ToList(); + var checkHighPriorityTire = context.V_StorageList.FromSqlRaw(queryStringForLevel1234).ToList(); if (checkHighPriorityTire.Count > 0) { //选择当前的可用的轮胎,更新需求号 var storageId = checkHighPriorityTire[0].STORAGE_ID; + poolNumber = checkHighPriorityTire[0].WAREHOUSE_CODE; if (storageId != 0 && storageId !=null) { var getStorageMain = storageMainRepository.GetStorageMain("StorageId", storageId.ToString()); - } + + if (getStorageMain != null) + { + getStorageMain.requestNumber = outputRequest.outputRequestId; + storageMainRepository.UpdateStorageMain(getStorageMain); + Log.Information($"Level1234 Update storage main info({getStorageMain.STOCK_BARCODE}) request number:{outputRequest.outputRequestId};"); + } + else + { + //未查询到当前的库存信息 + bResult = false; + returnJsonString.status = "0"; + returnJsonString.evacuationPost = string.Empty; + returnJsonString.estimatedExitTime = string.Empty; + returnJsonString.errorDetails = "RefusedBecauseUnknownStorageInfo"; + Log.Error($"Level1234 Update storage main failed: can not get storage main info; request number:{outputRequest.outputRequestId};"); + } + } + else + { + //未获取storage + bResult = false; + returnJsonString.status = "0"; + returnJsonString.evacuationPost = string.Empty; + returnJsonString.estimatedExitTime = string.Empty; + returnJsonString.errorDetails = "Level1234 RefusedBecauseUnknownStorage ;storage info equal to 0 or null "; + } - + } else - { - + { + //未找到当前库存信息 + //查看level为0的库存信息 + var checkLowPriorityTire = $@"SELECT STORAGE_ID,WAREHOUSE_CODE FROM V_STORAGE_LIST + WHERE RUN_STATUS = 'Enable' + AND OutLevel = 0 + AND IsBlocked = 0 + AND ( requestNumber IS NULL OR requestNumber = '' ) + AND GETUTCDate() > DryDateTimeInUtc + AND LOTNUMBER = '{outputRequest.sku}' + AND populationNumber = '{outputRequest.productClass}' + AND LANE_WAY IN({string.Join(",", outputRequest.availableEvacuationPosts)}) + ORDER BY HdvDateTimeInUtc,PRIORITY,CELL_X,CELL_Y DESC"; + var level0TireList = context.V_StorageList.FromSqlRaw(checkLowPriorityTire).ToList(); + if (level0TireList is { Count: >0}) + { + var storageId = level0TireList[0].STORAGE_ID; + poolNumber = level0TireList[0].WAREHOUSE_CODE; + if (storageId!=0 && storageId!=null) + { + + var storageMain = storageMainRepository.GetStorageMain("ID", storageId.ToString()); + if (storageMain != null) + { + storageMain.requestNumber = outputRequest.outputRequestId; + storageMainRepository.UpdateStorageMain(storageMain); + Log.Information($"Level0 Update storage main info({storageMain.STOCK_BARCODE}) request number:{outputRequest.outputRequestId};"); + + } + else + { + //未查询到当前的库存信息 + bResult = false; + returnJsonString.status = "0"; + returnJsonString.evacuationPost = string.Empty; + returnJsonString.estimatedExitTime = string.Empty; + returnJsonString.errorDetails = "RefusedBecauseUnknownStorageInfo"; + Log.Error($"Level0 Update storage main failed: can not get storage main info; request number:{outputRequest.outputRequestId};"); + } + } + else + { + //未获取storage + bResult = false; + returnJsonString.status = "0"; + returnJsonString.evacuationPost = string.Empty; + returnJsonString.estimatedExitTime = string.Empty; + returnJsonString.errorDetails = "RefusedBecauseUnknownStorage"; + Log.Information($" Level0 RefusedBecauseUnknownStorage ;storage info equal to 0 or null "); + } + } + } #endregion - + if (bResult) + { + //添加出库轮询信息到数据库中 + MANAGE_DETAIL manageDetail = new MANAGE_DETAIL() + { + requestNumber = outputRequest.outputRequestId, + destinationId = outputRequest.evacuationPost, + lotNumber = outputRequest.sku, + populationNumber = outputRequest.productClass, + poolNumber = poolNumber, + targetOutputDateInUtc = Convert.ToDateTime(outputRequest.expectedCompletionDate), + keepRequestInMemoryEvenIfMechanicalIssue = true, + KeepRequestInMemoryEvenIfLackOfProductIssue = true + }; + context.Manage_Detail.Add(manageDetail); } + + } } } else diff --git a/Data/MichelinDbContext.cs b/Data/MichelinDbContext.cs index 5b9d4ed..5a582f4 100644 --- a/Data/MichelinDbContext.cs +++ b/Data/MichelinDbContext.cs @@ -23,6 +23,7 @@ public class MichelinDbContext : DbContext public DbSet ProductInformation { get; set; } public DbSet Storage_Main { get; set; } + public DbSet Manage_Detail { get; set; } //视图类声明 public virtual DbSet V_ManageInCount { get; set; } diff --git a/Program.cs b/Program.cs index 1a90917..93de7dc 100644 --- a/Program.cs +++ b/Program.cs @@ -5,6 +5,7 @@ using Serilog; using System; using System.Configuration; using WMS_GIRAF_Interface.Data; +using WMS_GIRAF_Interface.Helper; using WMS_GIRAF_Interface.Repositories.Implement; using WMS_GIRAF_Interface.Repositories.Interface; using WMS_GIRAF_Interface.TaskServices; @@ -24,10 +25,12 @@ builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); +builder.Services.AddScoped(); + //ʹõĴ߼ builder.Services.AddScoped(); builder.Services.AddScoped(); - +builder.Services.AddScoped(); #if DEBUG var connectionString = builder.Configuration.GetConnectionString("TestConnectString"); diff --git a/Repositories/Implement/WhCellRepository.cs b/Repositories/Implement/WhCellRepository.cs index f0b3dc8..9fb5175 100644 --- a/Repositories/Implement/WhCellRepository.cs +++ b/Repositories/Implement/WhCellRepository.cs @@ -49,7 +49,15 @@ public class WhCellRepository(MichelinDbContext context):IWhCellRepository bResult = false; return bResult; } - + var updateCell = context.Wh_Cell.FirstOrDefault(x => x.CELL_ID == cellId); + if (updateCell != null) + { + updateCell.CELL_STATUS = cellStatus; + updateCell.RUN_STATUS = runStatus; + context.Wh_Cell.Update(updateCell); + + } + return true; } } \ No newline at end of file diff --git a/Repositories/Interface/IIoControlRepository.cs b/Repositories/Interface/IIoControlRepository.cs index b0f401e..159c3d3 100644 --- a/Repositories/Interface/IIoControlRepository.cs +++ b/Repositories/Interface/IIoControlRepository.cs @@ -5,5 +5,5 @@ namespace WMS_GIRAF_Interface.Repositories.Interface; public interface IIoControlRepository { public IO_CONTROL? GetIoControlTaskByManageId(int manageId); - public bool AddIoControlTask(IO_CONTROL? ioControl, out int? controlId) + public bool AddIoControlTask(IO_CONTROL? ioControl, out int? controlId); } \ No newline at end of file