From 457b75b642a1fdaa7158e5b047cabc5d7ae16333 Mon Sep 17 00:00:00 2001
From: xxyy <cathay_xy@163.com>
Date: 星期一, 10 三月 2025 10:10:13 +0800
Subject: [PATCH] 修复和优化 Dt_TaskService.cs 中的任务请求逻辑

---
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/AspNetCoreSchedule.cs |   45 +++++++++++++++++++++++----------------------
 1 files changed, 23 insertions(+), 22 deletions(-)

diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/AspNetCoreSchedule.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/AspNetCoreSchedule.cs
index 0942e0a..271e0af 100644
--- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/AspNetCoreSchedule.cs
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/AspNetCoreSchedule.cs
@@ -1,17 +1,11 @@
 锘縰sing Masuit.Tools;
 using Microsoft.Extensions.Hosting;
 using Microsoft.Extensions.Logging;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+using WIDESEA_Cache;
 using WIDESEA_Core.Const;
 using WIDESEA_DTO.WMS;
 using WIDESEA_IServices;
-using WIDESEA_Repository;
 using WIDESEAWCS_BasicInfoRepository;
-using WIDESEA_Model;
 
 namespace WIDESEA_StorageTaskServices
 {
@@ -24,9 +18,11 @@
         private readonly IDt_StationManagerRepository _stationManagerRepository;
         private readonly ISys_ConfigService _configService;
         private readonly ILocationInfoRepository _locationRepository;
+        private readonly ISimpleCacheService _simpleCacheService;
 
         private Timer _timer;
-        public MyBackgroundService(ILogger<MyBackgroundService> logger, ILocationInfoRepository locationRepository, IStockInfoRepository stockInfoRepository, IDt_AreaInfoRepository areaInfoRepository, IDt_TaskRepository taskRepository, IDt_StationManagerRepository stationManagerRepository, ISys_ConfigService configService)
+
+        public MyBackgroundService(ILogger<MyBackgroundService> logger, ILocationInfoRepository locationRepository, IStockInfoRepository stockInfoRepository, IDt_AreaInfoRepository areaInfoRepository, IDt_TaskRepository taskRepository, IDt_StationManagerRepository stationManagerRepository, ISys_ConfigService configService, ISimpleCacheService simpleCacheService)
         {
             _logger = logger;
             _locationRepository = locationRepository;
@@ -35,31 +31,34 @@
             _taskRepository = taskRepository;
             _stationManagerRepository = stationManagerRepository;
             _configService = configService;
+            _simpleCacheService = simpleCacheService;
         }
+
         public Task StartAsync(CancellationToken cancellationToken)
         {
-            _timer = new Timer(DoWork, null, 0, 10000);
+            _timer = new Timer(DoWork, null, TimeSpan.Zero, TimeSpan.FromMinutes(5));
             return Task.CompletedTask;
         }
+
         private void DoWork(object state)
         {
             try
             {
-
                 var area = _areaInfoRepository.QueryFirst(x => x.AreaCode == "GWSC1");
 
-                var stockInfo = _stockInfoRepository.Db.Queryable<DtStockInfo>()
-                     .Includes(x => x.LocationInfo) // 棰勫姞杞絃ocationInfo
-                     .Includes(x => x.StockInfoDetails) // 棰勫姞杞絊tockInfoDetails
-                     .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) // 杩囨护鏉′欢
+                if (area == null) { return; }
+
+                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 != null && x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && x.LocationInfo.AreaId == area.AreaID) // 杩囨护鏉′欢
                      .OrderBy(x => x.OutboundTime) // 鎺掑簭
                      .ToList(); // 鑾峰彇绗竴涓厓绱�
 
                 if (stockInfo.Count <= 0) return;
                 foreach (var item in stockInfo)
                 {
-
                     var hasTask = _taskRepository.QueryFirst(x => x.PalletCode == item.PalletCode);
                     if (hasTask != null)
                     {
@@ -77,7 +76,6 @@
                     task.NextAddress = "002-000-002";
                     // 鍒涘缓浠诲姟DTO
                     WMSTaskDTO taskDTO = CreateTaskDTO(task);
-
 
                     var configs = _configService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
                     var wmsBase = configs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.WCSIPAddress)?.ConfigValue;
@@ -98,25 +96,25 @@
                         _locationRepository.UpdateData(item.LocationInfo);
                     }
                 }
-
             }
             catch (Exception ex)
             {
-                ConsoleHelper.WriteErrorLine(ex.Message);
+                ConsoleHelper.WriteErrorLine($"楂樻俯鍑哄簱閿欒锛岄敊璇俊鎭細" + ex.Message);
             }
-            ConsoleHelper.WriteSuccessLine(DateTime.Now.ToString());
+            ConsoleHelper.WriteSuccessLine($"楂樻俯鍑哄簱璋冪敤锛�" + DateTime.Now.ToString());
         }
+
         public Task StopAsync(CancellationToken cancellationToken)
         {
             _logger.LogInformation("MyBackgroundService is stopping.");
             _timer?.Change(Timeout.Infinite, 0);
             return Task.CompletedTask;
         }
+
         public void Dispose()
         {
             _timer?.Dispose();
         }
-
 
         /// <summary>
         /// 鍒涘缓浠诲姟瀹炰緥
@@ -141,6 +139,8 @@
                 Creater = "System", // 淇鎷煎啓閿欒
                 CreateDate = DateTime.Now,
                 TaskId = 0,
+                ProductionLine = stockInfo.ProductionLine,
+                ProcessCode = stockInfo.ProcessCode,
             };
         }
 
@@ -160,7 +160,8 @@
                 TaskState = task.TaskState.Value,
                 Id = 0,
                 TaskType = task.TaskType,
+                ProductionLine = task.ProductionLine,
             };
         }
     }
-}
+}
\ No newline at end of file

--
Gitblit v1.9.3