From aded48e0f32d28bf61479a3c50ac63946be6f469 Mon Sep 17 00:00:00 2001
From: xxyy <cathay_xy@163.com>
Date: 星期四, 06 三月 2025 17:28:46 +0800
Subject: [PATCH] 修复空指针异常的潜在问题

---
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json                                                        |    2 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs                                        |   81 ++------------------
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MOM/CellState/CellStateService.cs                       |    4 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MOM/Unbind/UnbindService.cs                             |    4 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs                                                              |    4 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MCS/Partial/NotifyFinishTest.cs                         |    2 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/WIDESEA_StoragIntegrationServices.csproj                |    1 
 /dev/null                                                                                                                       |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MOM/AgingInOrOutInput/AgingInOrOutInputService.cs       |    4 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs                                |   95 +++++++++++------------
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MCS/MCSService.cs                                       |    6 +
 Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/copilot-chat/bef6627e/sessions/4a99214b-9f9f-4ab7-8ce9-83d07cd22a77 |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MOM/ProcessApply/ProcessApplyService.cs                 |    2 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/AspNetCoreSchedule.cs                                         |    7 -
 14 files changed, 73 insertions(+), 139 deletions(-)

diff --git a/Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/copilot-chat/bef6627e/sessions/4a99214b-9f9f-4ab7-8ce9-83d07cd22a77 b/Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/copilot-chat/bef6627e/sessions/4a99214b-9f9f-4ab7-8ce9-83d07cd22a77
new file mode 100644
index 0000000..324b841
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/copilot-chat/bef6627e/sessions/4a99214b-9f9f-4ab7-8ce9-83d07cd22a77
Binary files differ
diff --git a/Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/copilot-chat/bef6627e/sessions/85d61362-b687-48eb-8099-932a817719a7 b/Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/copilot-chat/bef6627e/sessions/85d61362-b687-48eb-8099-932a817719a7
deleted file mode 100644
index 8fc9dc5..0000000
--- a/Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/copilot-chat/bef6627e/sessions/85d61362-b687-48eb-8099-932a817719a7
+++ /dev/null
Binary files differ
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MCS/MCSService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MCS/MCSService.cs
index d224489..33a5904 100644
--- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MCS/MCSService.cs
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MCS/MCSService.cs
@@ -4,6 +4,7 @@
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using WIDESEA_Cache;
 using WIDESEA_IBusinessesRepository;
 using WIDESEA_IServices;
 using WIDESEA_IStorageBasicRepository;
@@ -22,9 +23,11 @@
         private readonly ISys_ConfigService _configService;
         private readonly IDt_StationManagerRepository _stationManagerRepository;
         private readonly IDt_AreaInfoRepository _areaInfoRepository;
+
+        private readonly ISimpleCacheService _simpleCacheService;
         private readonly LogFactory LogFactory = new LogFactory();
 
-        public MCSService(ILocationInfoRepository locationRepository,IDt_TaskRepository taskRepository,IStockInfoRepository stockInfoRepository, ISys_ConfigService configService, IDt_StationManagerRepository stationManagerRepository,IDt_AreaInfoRepository dt_AreaInfoRepository)
+        public MCSService(ILocationInfoRepository locationRepository,IDt_TaskRepository taskRepository,IStockInfoRepository stockInfoRepository, ISys_ConfigService configService, IDt_StationManagerRepository stationManagerRepository,IDt_AreaInfoRepository dt_AreaInfoRepository, ISimpleCacheService simpleCacheService)
         {
             _locationRepository = locationRepository;
             _taskRepository = taskRepository;
@@ -32,6 +35,7 @@
             _configService = configService;
             _stationManagerRepository = stationManagerRepository;
             _areaInfoRepository = dt_AreaInfoRepository;
+            _simpleCacheService = simpleCacheService;
         }
     }
 }
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MCS/Partial/NotifyFinishTest.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MCS/Partial/NotifyFinishTest.cs
index 3029cce..6aed71f 100644
--- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MCS/Partial/NotifyFinishTest.cs
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MCS/Partial/NotifyFinishTest.cs
@@ -105,6 +105,8 @@
                     if (respone.Status)
                     {
                         var taskId = _taskRepository.AddData(task);
+
+                        //_simpleCacheService.HashDel<DtStockInfo>(WIDESEA_Cache.CacheConst.Cache_DtStockInfo, new string[] { taskDTO.PalletCode });
                     }
 
                     else
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MOM/AgingInOrOutInput/AgingInOrOutInputService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MOM/AgingInOrOutInput/AgingInOrOutInputService.cs
index 67b5f60..3fa97ef 100644
--- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MOM/AgingInOrOutInput/AgingInOrOutInputService.cs
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MOM/AgingInOrOutInput/AgingInOrOutInputService.cs
@@ -35,7 +35,7 @@
             input.SessionId = Guid.NewGuid().ToString();
             input.EmployeeNo = "MITest";
             input.RequestTime = TimeZoneInfo.ConvertTimeToUtc(DateTime.Now).ToString("yyyy-MM-ddTHH:mm:ss.fffZ");
-            var inputJson = input.ToDictionary();
+            var inputJson = Masuit.Tools.ObjectExtensions.ToDictionary(input); // Specify the namespace explicitly
             var configs = _configService.GetConfigsByCategory(CateGoryConst.SYS_MOMIPAddress);
             var wmsBase = configs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.MOMBaseIP)?.ConfigValue;
             var ipAddress = configs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.AgingInput)?.ConfigValue;
@@ -85,7 +85,7 @@
             input.SessionId = Guid.NewGuid().ToString();
             input.EmployeeNo = "MITest";
             input.RequestTime = TimeZoneInfo.ConvertTimeToUtc(DateTime.Now).ToString("yyyy-MM-ddTHH:mm:ss.fffZ");
-            var inputJson = input.ToDictionary();
+            var inputJson = Masuit.Tools.ObjectExtensions.ToDictionary(input); // Specify the namespace explicitly
             var configs = _configService.GetConfigsByCategory(CateGoryConst.SYS_MOMIPAddress);
             var wmsBase = configs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.MOMBaseIP)?.ConfigValue;
             var ipAddress = configs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.AgingOutput)?.ConfigValue;
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MOM/CellState/CellStateService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MOM/CellState/CellStateService.cs
index 7c2baf4..fc3786d 100644
--- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MOM/CellState/CellStateService.cs
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MOM/CellState/CellStateService.cs
@@ -42,7 +42,7 @@
             input.SessionId = Guid.NewGuid().ToString();
             input.EmployeeNo = "MITest";
             input.RequestTime = TimeZoneInfo.ConvertTimeToUtc(DateTime.Now).ToString("yyyy-MM-ddTHH:mm:ss.fffZ");
-            var inputJson = input.ToDictionary();
+            var inputJson = Masuit.Tools.ObjectExtensions.ToDictionary(input);
             var configs = _configService.GetConfigsByCategory(CateGoryConst.SYS_MOMIPAddress);
             var wmsBase = configs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.MOMBaseIP)?.ConfigValue;
             var ipAddress = configs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.CellState)?.ConfigValue; 
@@ -82,7 +82,7 @@
             input.SessionId = Guid.NewGuid().ToString();
             input.EmployeeNo = "MITest";
             input.RequestTime = TimeZoneInfo.ConvertTimeToUtc(DateTime.Now).ToString("yyyy-MM-ddTHH:mm:ss.fffZ");
-            var inputJson = input.ToDictionary();
+            var inputJson = Masuit.Tools.ObjectExtensions.ToDictionary(input);
             var configs = _configService.GetConfigsByCategory(CateGoryConst.SYS_MOMIPAddress);
             var wmsBase = configs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.MOMBaseIP)?.ConfigValue;
             var ipAddress = configs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.TrayCellsStatus)?.ConfigValue;
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MOM/ProcessApply/ProcessApplyService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MOM/ProcessApply/ProcessApplyService.cs
index 0725b0b..6cd1a81 100644
--- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MOM/ProcessApply/ProcessApplyService.cs
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MOM/ProcessApply/ProcessApplyService.cs
@@ -47,7 +47,7 @@
             input.SessionId = Guid.NewGuid().ToString();
             input.EmployeeNo = "MITest";
             input.RequestTime = TimeZoneInfo.ConvertTimeToUtc(DateTime.Now).ToString("yyyy-MM-ddTHH:mm:ss.fffZ");
-            var inputJson = input.ToDictionary();
+            var inputJson = Masuit.Tools.ObjectExtensions.ToDictionary(input);
             var configs = _configService.GetConfigsByCategory(CateGoryConst.SYS_MOMIPAddress);
             var wmsBase = configs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.MOMBaseIP)?.ConfigValue;
             var ipAddress = configs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.ProcessApply)?.ConfigValue;
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MOM/Unbind/UnbindService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MOM/Unbind/UnbindService.cs
index 4225e41..b84189a 100644
--- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MOM/Unbind/UnbindService.cs
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MOM/Unbind/UnbindService.cs
@@ -38,7 +38,7 @@
             input.EquipmentCode = "24MEJQ08-1091";
             input.EmployeeNo = "MITest";
             input.RequestTime = TimeZoneInfo.ConvertTimeToUtc(DateTime.Now).ToString("yyyy-MM-ddTHH:mm:ss.fffZ");
-            var inputJson = input.ToDictionary();
+            var inputJson = Masuit.Tools.ObjectExtensions.ToDictionary(input);
             LogFactory.GetLog("鎵樼洏鍗曠數鑺В缁�1").Info(true, JsonConvert.SerializeObject(inputJson));
             var configs = _configService.GetConfigsByCategory(CateGoryConst.SYS_MOMIPAddress);
             var wmsBase = configs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.MOMBaseIP)?.ConfigValue;
@@ -77,7 +77,7 @@
             input.EquipmentCode = "24MEJQ08-1091";
             input.EmployeeNo = "MITest";
             input.RequestTime = TimeZoneInfo.ConvertTimeToUtc(DateTime.Now).ToString("yyyy-MM-ddTHH:mm:ss.fffZ");
-            var inputJson = input.ToDictionary();
+            var inputJson = Masuit.Tools.ObjectExtensions.ToDictionary(input);
             Console.WriteLine(inputJson);
             var configs = _configService.GetConfigsByCategory(CateGoryConst.SYS_MOMIPAddress);
             var wmsBase = configs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.MOMBaseIP)?.ConfigValue;
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/WIDESEA_StoragIntegrationServices.csproj b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/WIDESEA_StoragIntegrationServices.csproj
index 0c382c9..aa0d93c 100644
--- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/WIDESEA_StoragIntegrationServices.csproj
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/WIDESEA_StoragIntegrationServices.csproj
@@ -8,6 +8,7 @@
 
   <ItemGroup>
     <ProjectReference Include="..\LogLibrary\LogLibrary.csproj" />
+    <ProjectReference Include="..\WIDESEA_Cache\WIDESEA_Cache.csproj" />
     <ProjectReference Include="..\WIDESEA_Common\WIDESEA_Common.csproj" />
     <ProjectReference Include="..\WIDESEA_IStoragIntegrationServices\WIDESEA_IStoragIntegrationServices.csproj" />
     <ProjectReference Include="..\WIDESEA_Services\WIDESEA_Services.csproj" />
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/AspNetCoreSchedule.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/AspNetCoreSchedule.cs
index 3a75882..271e0af 100644
--- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/AspNetCoreSchedule.cs
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/AspNetCoreSchedule.cs
@@ -36,7 +36,7 @@
 
         public Task StartAsync(CancellationToken cancellationToken)
         {
-            _timer = new Timer(DoWork, null, TimeSpan.Zero, TimeSpan.FromMinutes(20));
+            _timer = new Timer(DoWork, null, TimeSpan.Zero, TimeSpan.FromMinutes(5));
             return Task.CompletedTask;
         }
 
@@ -51,9 +51,8 @@
                 IDictionary<string, DtStockInfo>? stockInfos = _simpleCacheService.HashGetAll<DtStockInfo>(WIDESEA_Cache.CacheConst.Cache_DtStockInfo);
                 List<DtStockInfo> stockInfoList = stockInfos.Values.ToList();
 
-
                 var stockInfo = stockInfoList.Where(x => x.AreaCode == area.AreaCode && x.OutboundTime < DateTime.Now && x.IsFull == true) // 杩囨护鏉′欢
-                     .Where(x => x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && x.LocationInfo.AreaId == area.AreaID) // 杩囨护鏉′欢
+                     .Where(x => x.LocationInfo != null && x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && x.LocationInfo.AreaId == area.AreaID) // 杩囨护鏉′欢
                      .OrderBy(x => x.OutboundTime) // 鎺掑簭
                      .ToList(); // 鑾峰彇绗竴涓厓绱�
 
@@ -140,7 +139,7 @@
                 Creater = "System", // 淇鎷煎啓閿欒
                 CreateDate = DateTime.Now,
                 TaskId = 0,
-                ProductionLine= stockInfo.ProductionLine,
+                ProductionLine = stockInfo.ProductionLine,
                 ProcessCode = stockInfo.ProcessCode,
             };
         }
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs
index 9c82d44..e696df4 100644
--- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs
@@ -1,6 +1,5 @@
 锘縰sing Mapster;
 using Masuit.Tools;
-using NewLife.Caching;
 using SqlSugar;
 using System.Text.RegularExpressions;
 using WIDESEA_Cache;
@@ -216,6 +215,8 @@
                 await DeleteTaskAsync(task.TaskId);
                 await AddTaskHtyAsync(taskHty);
             });
+
+            _simpleCacheService.HashDel<DtStockInfo>(WIDESEA_Cache.CacheConst.Cache_DtStockInfo, new string[] { stock.PalletCode });
 
             return content.OK("浠诲姟瀹屾垚鎴愬姛", task.Remark);
         }
@@ -451,6 +452,7 @@
             {
                 _locationStatusChangeRecordRepository.AddLocationStatusChangeRecord(locationInf, lastStatus, (int)StatusChangeTypeEnum.AutomaticStorage, task.TaskNum);
 
+                stock.StockInfoDetails = new List<DtStockInfoDetail>() { { stock.StockInfoDetails[0] } };
                 _simpleCacheService.HashAdd(WIDESEA_Cache.CacheConst.Cache_DtStockInfo, stock.PalletCode, stock);
 
                 content.OK("鍏ュ簱浠诲姟瀹屾垚鎴愬姛");
@@ -1286,67 +1288,6 @@
                           .OrderBy(x => x.OutboundTime)
                           .FirstOrDefault();
 
-        if (result != null)
-        {
-            stockInfoList = stockInfoList.Where(x => x != result).ToList();
-            _simpleCacheService.HashDel<DtStockInfo>(WIDESEA_Cache.CacheConst.Cache_DtStockInfo, new string[] { result.PalletCode });
-        }
-
-        return result;
-
-        if (stockInfoList.IsNullOrEmpty())
-        {
-            stockInfoList = await _stockInfoRepository.Db.Queryable<DtStockInfo>().IncludesAllFirstLayer().ToListAsync();
-
-            result = stockInfoList.Where(x => x.AreaCode == areaCode && x.OutboundTime < DateTime.Now && x.IsFull == true)
-                .WhereIF(!productionLine.IsNullOrEmpty(), x => x.ProductionLine == productionLine)
-                .Where(x => x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && x.LocationInfo.AreaId == area.AreaID && x.LocationInfo.EnalbeStatus == (int)EnableEnum.Enable) // 杩囨护鏉′欢
-                .WhereIF(!devices.IsNullOrEmpty(), x => devices.Contains(x.LocationInfo.RoadwayNo))
-                .WhereIF(!materielCodes.IsNullOrEmpty(), x => x.StockInfoDetails.Any(y => materielCodes.Contains(y.MaterielCode)))
-                .OrderBy(x => x.OutboundTime) // 鎺掑簭
-                .FirstOrDefault(); // 鑾峰彇绗竴涓厓绱�
-
-            if (result != null)
-            {
-                // 鎺掗櫎 result 涓殑鍏冪礌
-                stockInfoList = stockInfoList.Where(x => x != result).ToList();
-            }
-            foreach (var item in stockInfoList)
-            {
-                _simpleCacheService.HashAdd(WIDESEA_Cache.CacheConst.Cache_DtStockInfo, item.PalletCode, item);
-            }
-        }
-        else
-        {
-            result = stockInfoList.Where(x => x.AreaCode == areaCode && x.OutboundTime < DateTime.Now && x.IsFull == true)
-                .WhereIF(!productionLine.IsNullOrEmpty(), x => x.ProductionLine == productionLine)
-                .Where(x => x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && x.LocationInfo.AreaId == area.AreaID && x.LocationInfo.EnalbeStatus == (int)EnableEnum.Enable) // 杩囨护鏉′欢
-                .WhereIF(!devices.IsNullOrEmpty(), x => devices.Contains(x.LocationInfo.RoadwayNo))
-                .WhereIF(!materielCodes.IsNullOrEmpty(), x => x.StockInfoDetails.Any(y => materielCodes.Contains(y.MaterielCode)))
-                .OrderBy(x => x.OutboundTime) // 鎺掑簭
-                .FirstOrDefault(); // 鑾峰彇绗竴涓厓绱�
-            if (result != null)
-            {
-                // 鎺掗櫎 result 涓殑鍏冪礌
-                stockInfoList = stockInfoList.Where(x => x != result).ToList();
-            }
-            string[] xfasd = new string[] { result.PalletCode };
-            _simpleCacheService.HashDel<DtStockInfo>(WIDESEA_Cache.CacheConst.Cache_DtStockInfo, new string[] { result.PalletCode });
-        }
-
-        #region
-        //var result = await _stockInfoRepository.Db.Queryable<DtStockInfo>()
-        //    .Includes(x => x.LocationInfo) // 棰勫姞杞絃ocationInfo
-        //    .Includes(x => x.StockInfoDetails) // 棰勫姞杞絊tockInfoDetails
-        //    .Where(x => x.AreaCode == areaCode && x.OutboundTime < DateTime.Now && x.IsFull == true) // 杩囨护鏉′欢
-        //    .WhereIF(!productionLine.IsNullOrEmpty(), x => x.ProductionLine == productionLine)
-        //    .Where(x => x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && x.LocationInfo.AreaId == area.AreaID && x.LocationInfo.EnalbeStatus == (int)EnableEnum.Enable) // 杩囨护鏉′欢
-        //    .WhereIF(!devices.IsNullOrEmpty(), x => devices.Contains(x.LocationInfo.RoadwayNo))
-        //    .WhereIF(!materielCodes.IsNullOrEmpty(), x => x.StockInfoDetails.Any(y => materielCodes.Contains(y.MaterielCode)))
-        //    .OrderBy(x => x.OutboundTime) // 鎺掑簭
-        //    .FirstAsync(); // 鑾峰彇绗竴涓厓绱�
-        #endregion 璇锋眰鍑哄簱锛堝疄鐩�&绌虹洏锛�
-
         return result;
     }
 
@@ -1393,12 +1334,6 @@
             .OrderBy(x => x.OutboundTime) // 鎺掑簭
             .FirstOrDefault(); // 鑾峰彇绗竴涓厓绱�
 
-        if (result != null)
-        {
-            stockInfoList = stockInfoList.Where(x => x != result).ToList();
-            _simpleCacheService.HashDel<DtStockInfo>(WIDESEA_Cache.CacheConst.Cache_DtStockInfo, new string[] { result.PalletCode });
-        }
-
         return result;
     }
 
@@ -1431,11 +1366,11 @@
             .OrderBy(x => x.CreateDate) // 鎺掑簭
             .FirstOrDefault(); // 杞崲涓哄垪琛�
 
-        if (result != null)
-        {
-            stockInfoList = stockInfoList.Where(x => x != result).ToList();
-            _simpleCacheService.HashDel<DtStockInfo>(WIDESEA_Cache.CacheConst.Cache_DtStockInfo, new string[] { result.PalletCode });
-        }
+        //if (result != null)
+        //{
+        //    stockInfoList = stockInfoList.Where(x => x != result).ToList();
+        //    _simpleCacheService.HashDel<DtStockInfo>(WIDESEA_Cache.CacheConst.Cache_DtStockInfo, new string[] { result.PalletCode });
+        //}
 
         return result;
     }
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs
index a3180a9..6714028 100644
--- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs
@@ -542,12 +542,13 @@
         {
             if (stationManager.stationType != 7) throw new Exception("閿欒鐨勮皟鍙�");
 
-            var stockinfo = await _stockInfoRepository.Db.Queryable<DtStockInfo>()
-                .Includes(x => x.LocationInfo)
-                //.Includes(x=>x.StockInfoDetails)
-                .Where(x => !x.IsFull && x.LocationInfo.RoadwayNo == stationManager.Roadway)
+            // 浠庣紦瀛樹腑鑾峰彇搴撳瓨淇℃伅
+            IDictionary<string, DtStockInfo>? stockInfos = _simpleCacheService.HashGetAll<DtStockInfo>(WIDESEA_Cache.CacheConst.Cache_DtStockInfo);
+            List<DtStockInfo> stockInfoList = stockInfos.Values.ToList();
+
+            var stockinfo = stockInfoList.Where(x => x.LocationInfo != null && !x.IsFull && x.LocationInfo.RoadwayNo == stationManager.Roadway)
                 .OrderBy(x => x.CreateDate)
-                .FirstAsync();
+                .FirstOrDefault();
 
             if (stockinfo == null) return null;
 
@@ -886,11 +887,34 @@
 
     #region 甯告俯琛ョ┖鎵樼洏鑷冲垎瀹�
 
+    private static readonly Dictionary<string, (int Count, DateTime LastRequestTime)> requestTrackerToCW = new();
+
     public async Task<WebResponseContent> GetFROutTrayToCW(RequestTaskDto taskDTO)
     {
         WebResponseContent content = new WebResponseContent();
         try
         {
+            string requestKey = JsonConvert.SerializeObject(taskDTO);
+            // 妫�鏌ヨ姹傛鏁板拰鏃堕棿闄愬埗
+            if (requestTrackerToCW.TryGetValue(requestKey, out var requestInfo))
+            {
+                if (requestInfo.Count > 5 && DateTime.Now < requestInfo.LastRequestTime.AddMinutes(2))
+                {
+                    // 濡傛灉璇锋眰娆℃暟瓒呰繃闄愬埗涓旀湭瓒呰繃10鍒嗛挓锛屾姏鍑哄紓甯�
+                    throw new InvalidOperationException("璇锋眰娆℃暟宸茶揪鍒伴檺鍒讹紝璇风◢鍚庡啀璇曘��");
+                }
+            }
+
+            // 鏇存柊璇锋眰璺熻釜淇℃伅
+            if (requestTrackerToCW.ContainsKey(requestKey))
+            {
+                requestTrackerToCW[requestKey] = (requestInfo.Count + 1, DateTime.Now);
+            }
+            else
+            {
+                requestTrackerToCW[requestKey] = (1, DateTime.Now);
+            }
+
             var station = _stationManagerRepository.QueryFirst(x => x.stationChildCode == taskDTO.Position && x.stationStatus == "1");
             var locations = _locationRepository.QueryData(x => x.RoadwayNo == station.Roadway && x.LocationStatus == (int)LocationEnum.Free && x.LocationType == 1);
 
@@ -923,6 +947,8 @@
                     _locationStatusChangeRecordRepository.AddLocationStatusChangeRecord(location, lastStatus, (int)StatusChangeTypeEnum.AutomaticDelivery, task.TaskNum);
 
                     // 杩斿洖鎴愬姛鍝嶅簲
+                    requestTrackerToCW.Remove(requestKey);
+
                     return content.OK(data: wmsTask);
                 }
                 else
@@ -960,17 +986,12 @@
 
         var result = stockInfoList.Where(x => x.ProductionLine == productLine)
             .Where(x => x.AreaCode == areaCode && x.IsFull == false)
-            .Where(x => x.StockInfoDetails.Any(y => y.MaterielCode == "绌烘墭鐩�"))
-            .Where(x => x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && x.LocationInfo.AreaId == area.AreaID && x.LocationInfo.EnalbeStatus == (int)EnableEnum.Enable) // 杩囨护鏉′欢
-            .WhereIF(!deviceCode.IsNullOrEmpty(), x => deviceCode.Contains(x.LocationInfo.RoadwayNo))
+            .Where(x => x.StockInfoDetails != null && x.StockInfoDetails.Any(y => y.MaterielCode == "绌烘墭鐩�"))
+            .Where(x => x.LocationInfo != null && x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && x.LocationInfo.AreaId == area.AreaID && x.LocationInfo.EnalbeStatus == (int)EnableEnum.Enable) // 杩囨护鏉′欢
+            .WhereIF(!deviceCode.IsNullOrEmpty(), x => x.LocationInfo != null && deviceCode.Contains(x.LocationInfo.RoadwayNo))
             .OrderBy(x => x.CreateDate) // 鎺掑簭
             .FirstOrDefault(); // 杞崲涓哄垪琛�
 
-        if (result != null)
-        {
-            stockInfoList = stockInfoList.Where(x => x != result).ToList();
-            _simpleCacheService.HashDel<DtStockInfo>(WIDESEA_Cache.CacheConst.Cache_DtStockInfo, new string[] { result.PalletCode });
-        }
         return result;
     }
 
@@ -991,28 +1012,6 @@
         WebResponseContent content = new WebResponseContent();
         try
         {
-            //string requestKey = JsonConvert.SerializeObject(json);
-            //// 妫�鏌ヨ姹傛鏁板拰鏃堕棿闄愬埗
-            //if (requestTracker.TryGetValue(requestKey, out var requestInfo))
-            //{
-            //    if (requestInfo.Count >= 9 && DateTime.Now < requestInfo.LastRequestTime.AddMinutes(5))
-            //    {
-            //        // 濡傛灉璇锋眰娆℃暟瓒呰繃闄愬埗涓旀湭瓒呰繃10鍒嗛挓锛屾姏鍑哄紓甯�
-            //        throw new InvalidOperationException("璇锋眰娆℃暟宸茶揪鍒伴檺鍒讹紝璇风◢鍚庡啀璇曘��");
-            //    }
-            //}
-
-            //// 鏇存柊璇锋眰璺熻釜淇℃伅
-            //if (requestTracker.ContainsKey(requestKey))
-            //{
-            //    requestTracker[requestKey] = (requestInfo.Count + 1, DateTime.Now);
-            //}
-            //else
-            //{
-            //    requestTracker[requestKey] = (1, DateTime.Now);
-            //}
-            //LogFactory.GetLog("甯告俯3鍑哄簱鑷冲寘瑁�").Info(true, $"甯告俯3鍑哄簱鑷冲寘瑁呬紶鍏ュ弬鏁帮細" + JsonConvert.SerializeObject(json, Formatting.Indented));
-
             Dt_StationManager station = _stationManagerRepository.QueryFirst(x => x.stationChildCode == json.Position && x.stationType == 12 && x.stationArea == "Call");
             if (station == null) { throw new Exception($"鏈壘鍒板寘瑁呯珯鍙颁俊鎭紝璇锋鏌ヤ紶鍏ュ弬鏁皗json.Position}"); }
 
@@ -1021,26 +1020,20 @@
                 .Where(x => x.DeviceCode.Contains("CWSC")) // 杩囨护鏉′欢
                 .ToList().Select(x => x.DeviceCode).ToList();
 
-
             // 浠庣紦瀛樹腑鑾峰彇搴撳瓨淇℃伅
             IDictionary<string, DtStockInfo>? stockInfos = _simpleCacheService.HashGetAll<DtStockInfo>(WIDESEA_Cache.CacheConst.Cache_DtStockInfo);
             List<DtStockInfo> stockInfoList = stockInfos.Values.ToList();
 
-
-
-            var stockInfo = stockInfoList.Where(x => x.ProductionLine == station.productLine)
-                    .Where(x => x.AreaCode == "CWSC3" && x.IsFull == true) // 杩囨护鏉′欢
-                    .Where(x => x.LocationInfo.LocationStatus == (int)LocationEnum.InStock) // 杩囨护鏉′欢
-                    .WhereIF(!deviceCode.IsNullOrEmpty(), x => deviceCode.Contains(x.LocationInfo.RoadwayNo))
-                    .OrderBy(x => x.OutboundTime) // 鎺掑簭
-                    .FirstOrDefault(); // 鑾峰彇绗竴涓厓绱�
-
-            if (stockInfo != null)
-            {
-                stockInfoList = stockInfoList.Where(x => x != stockInfo).ToList();
-                _simpleCacheService.HashDel<DtStockInfo>(WIDESEA_Cache.CacheConst.Cache_DtStockInfo, new string[] { stockInfo.PalletCode });
-            }
-
+            // 淇敼鍚庣殑鏌ヨ浠g爜
+            var stockInfo = stockInfoList
+                .Where(x => x.ProductionLine == station.productLine)
+                .Where(x => x.AreaCode == "CWSC3" && x.IsFull == true)
+                // 澧炲姞瀵� LocationInfo 鐨勭┖鍊兼鏌�
+                .Where(x => x.LocationInfo != null && x.LocationInfo.LocationStatus == (int)LocationEnum.InStock)
+                // 澧炲姞瀵� LocationInfo 鐨勭┖鍊兼鏌�
+                .WhereIF(!deviceCode.IsNullOrEmpty(), x => x.LocationInfo != null && deviceCode.Contains(x.LocationInfo.RoadwayNo))
+                .OrderBy(x => x.OutboundTime)
+                .FirstOrDefault();
 
             if (stockInfo == null) throw new Exception($"搴撳唴{station.productLine}鏃犳弧瓒虫潯浠剁殑搴撳瓨鍙嚭搴�");
 
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs
index 29a2d05..a1b8b78 100644
--- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs
@@ -201,11 +201,11 @@
     redis.DelByPattern(CacheConst.Cache_Prefix);
 
     WIDESEA_Core.Helper.ConsoleHelper.WriteInfoLine("正在缓存库存信息");
-    var stockInfoList = await SqlSugarHelper.DbWMS.Queryable<DtStockInfo>()
-                .Where(x => x.LocationInfo.LocationStatus == (int)LocationEnum.InStock).IncludesAllFirstLayer().ToListAsync();
+    var stockInfoList = await SqlSugarHelper.DbWMS.Queryable<DtStockInfo>().IncludesAllFirstLayer().ToListAsync();
     // 缓存库存信息
     foreach (var item in stockInfoList)
     {
+        item.StockInfoDetails = new List<DtStockInfoDetail>() { { item.StockInfoDetails[0] } };
         redis.HashAdd(CacheConst.Cache_DtStockInfo, item.PalletCode, item);
     }
     WIDESEA_Core.Helper.ConsoleHelper.WriteInfoLine("缓存库存信息完成");
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json
index 8460061..db958e1 100644
--- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json
@@ -15,7 +15,7 @@
   //"ConnectionString": "Data Source=.\\LIULEI;Initial Catalog=WIDESEA_WMSDB_BBMain;User ID=sa;Password=123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
   //"ConnectionString": "Data Source=192.168.20.251;Initial Catalog=WIDESEA_WMSDB;User ID=sa;Password=123456@gy;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
   //"ConnectionStringWCS": "Data Source=192.168.5.251;Initial Catalog=WIDESEAWCS_TEST;User ID=sa;Password=P@ssw0rd;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
-  "ConnectionStringWCS": "Data Source=127.0.0.1;Initial Catalog=WIDESEA_WCSDB;User ID=sa;Password=sa123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
+  "ConnectionStringWCS": "Data Source=127.0.0.1;Initial Catalog=WIDESEA_WCS2F09;User ID=sa;Password=P@ssw0rd;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
   //璺ㄥ煙
   "Cors": {
     "PolicyName": "CorsIpAccess", //绛栫暐鍚嶇О

--
Gitblit v1.9.3