From fc9cba5f058089887aa7061d2e6b4006b9e04a9a Mon Sep 17 00:00:00 2001
From: 陈勇 <竞男@ASUNA>
Date: 星期二, 10 三月 2026 09:46:43 +0800
Subject: [PATCH] 同步

---
 项目代码/WMS/WMSServer/WIDESEA_StorageTaskServices/AutoTask/AspNetCoreSchedule.cs |  327 +++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 211 insertions(+), 116 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_StorageTaskServices/AutoTask/AspNetCoreSchedule.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_StorageTaskServices/AutoTask/AspNetCoreSchedule.cs"
index 9463982..8cde817 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_StorageTaskServices/AutoTask/AspNetCoreSchedule.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServer/WIDESEA_StorageTaskServices/AutoTask/AspNetCoreSchedule.cs"
@@ -1,7 +1,9 @@
 锘縰sing Masuit.Tools;
+using Microsoft.Extensions.DependencyInjection;
 using Microsoft.Extensions.Hosting;
 using Microsoft.Extensions.Logging;
 using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
 using WIDESEA_Core.Const;
 using WIDESEA_DTO.WMS;
 using WIDESEA_IServices;
@@ -13,36 +15,27 @@
 {
     public class MyBackgroundService : IHostedService, IDisposable
     {
-        private readonly ILogger<MyBackgroundService> _logger;
-        private readonly IDt_PalletStockInfoRepository _palletStockInfoRepository;
-        private readonly IDt_AreaInfoRepository _areaInfoRepository; //鍖哄煙
-        private readonly IDt_TaskRepository _taskRepository;
-        private readonly IDt_StationManagerRepository _stationManagerRepository;
-        private readonly ISys_ConfigService _configService;
-        private readonly ILocationInfoRepository _locationRepository;
-        private readonly IVV_StockInfoRepository _VVStockInfoRepository;
-        private readonly IUnitOfWorkManage _unitOfWorkManage;
-        private readonly IDt_MESLockInfoRepository _MESLockInfoRepository;
+        private ILogger<MyBackgroundService> _logger;
+        private IDt_PalletStockInfoRepository _palletStockInfoRepository;
+        private IDt_AreaInfoRepository _areaInfoRepository; //鍖哄煙
+        private IDt_TaskRepository _taskRepository;
+        private IDt_StationManagerRepository _stationManagerRepository;
+        private ISys_ConfigService _configService;
+        private ILocationInfoRepository _locationRepository;
+        private IVV_StockInfoRepository _VVStockInfoRepository;
+        private IUnitOfWorkManage _unitOfWorkManage;
+        private IDt_MESLockInfoRepository _MESLockInfoRepository;
 
         private Timer _timer;
 
-        public MyBackgroundService(ILogger<MyBackgroundService> logger, ILocationInfoRepository locationRepository, IDt_AreaInfoRepository areaInfoRepository, IDt_TaskRepository taskRepository, IDt_StationManagerRepository stationManagerRepository, ISys_ConfigService configService, IDt_PalletStockInfoRepository palletStockInfoRepository, IVV_StockInfoRepository VV_StockInfoRepository, IUnitOfWorkManage unitOfWorkManage, IDt_MESLockInfoRepository MESLockInfoRepository)
+        public MyBackgroundService(/*ILogger<MyBackgroundService> logger, ILocationInfoRepository locationRepository, IDt_AreaInfoRepository areaInfoRepository, IDt_TaskRepository taskRepository, IDt_StationManagerRepository stationManagerRepository, ISys_ConfigService configService, IDt_PalletStockInfoRepository palletStockInfoRepository, IVV_StockInfoRepository VV_StockInfoRepository, IUnitOfWorkManage unitOfWorkManage, IDt_MESLockInfoRepository MESLockInfoRepository*/)
         {
-            _logger = logger;
-            _locationRepository = locationRepository;
-            _areaInfoRepository = areaInfoRepository;
-            _taskRepository = taskRepository;
-            _stationManagerRepository = stationManagerRepository;
-            _configService = configService;
-            _palletStockInfoRepository = palletStockInfoRepository;
-            _VVStockInfoRepository = VV_StockInfoRepository;
-            _unitOfWorkManage = unitOfWorkManage;
-            _MESLockInfoRepository = MESLockInfoRepository;
+
         }
 
         public Task StartAsync(CancellationToken cancellationToken)
         {
-            _timer = new Timer(DoWork, null, TimeSpan.Zero, TimeSpan.FromMinutes(5));
+            //_timer = new Timer(DoWork, null, TimeSpan.Zero, TimeSpan.FromSeconds(15));
             return Task.CompletedTask;
         }
 
@@ -50,6 +43,17 @@
         {
             try
             {
+                IServiceScope scope = App.RootServices.CreateScope();
+                _logger = scope.ServiceProvider.GetService<ILogger<MyBackgroundService>>();
+                _locationRepository = scope.ServiceProvider.GetService<ILocationInfoRepository>();
+                _areaInfoRepository = scope.ServiceProvider.GetService<IDt_AreaInfoRepository>();
+                _taskRepository = scope.ServiceProvider.GetService<IDt_TaskRepository>();
+                _stationManagerRepository = scope.ServiceProvider.GetService<IDt_StationManagerRepository>();
+                _configService = scope.ServiceProvider.GetService<ISys_ConfigService>();
+                _palletStockInfoRepository = scope.ServiceProvider.GetService<IDt_PalletStockInfoRepository>();
+                _VVStockInfoRepository = scope.ServiceProvider.GetService<IVV_StockInfoRepository>();
+                _unitOfWorkManage = scope.ServiceProvider.GetService<IUnitOfWorkManage>();
+                _MESLockInfoRepository = scope.ServiceProvider.GetService<IDt_MESLockInfoRepository>();
                 //var area = _areaInfoRepository.QueryFirst(x => x.AreaCode == "GWSC1");
 
                 //if (area == null) { return; }
@@ -69,107 +73,198 @@
 
 
                 if (lockInfo.Where(x => x.LockStatue == 1).Count() > 10) return;
+                if (lockInfo.Count == 0) return;
 
-                var lockCar = lockInfo.Where(x => x.LockStatue == 0).First();
-
-                foreach (var item in lockInfo)
+                var lockCar = lockInfo.Where(x => x.LockStatue == 0).FirstOrDefault();
+                if (lockCar == null) return;
+                var hasTask = _taskRepository.QueryFirst(x => x.PalletCode == lockCar.CarBodyInfo.PalletCode);
+                if (hasTask != null)
                 {
-                    var hasTask = _taskRepository.QueryFirst(x => x.PalletCode == item.CarBodyInfo.PalletCode);
-                    if (hasTask != null)
-                    {
-                        Console.WriteLine("宸插瓨鍦ㄥ嚭搴撲换鍔�");
-                        continue;
-                    }
-
-                    List<Dt_StationManager> stationLists = null;
-                    if (item.CarBodyInfo.CarType == 1)
-                    {
-                        stationLists = _stationManagerRepository.QueryData(x => x.RoadwayNo == item.TCLine && x.stationType == 2 && x.stationStatus == "1" && x.stationArea == "3");
-                    }
-                    else if (item.CarBodyInfo.CarType == 2)
-                    {
-                        stationLists = _stationManagerRepository.QueryData(x => x.RoadwayNo == item.TCLine && x.stationType == 2 && x.stationStatus == "1" && x.stationArea == "4");
-                    }
-                    //else if (item.CarBodyInfo.CarType == 3)
-                    //{
-                    //    stationLists = _stationManagerRepository.QueryData(x => x.RoadwayNo == item.TCLine && x.stationType == 7 && x.stationStatus == "1" && x.stationArea == "3");
-                    //}
-
-                    var stock = _VVStockInfoRepository.QueryFirst(x => x.carBodyID == item.carBodyID);
-                    var lockStock = _palletStockInfoRepository.QueryFirst(x => x.carBodyID == item.carBodyID);
-                    var location = _locationRepository.QueryFirst(x => x.LocationCode == stock.LocationCode);
-                    location.LocationStatus = (int)LocationEnum.InStockDisable;
-                    item.LockStatue = 1;
-                    lockStock.TaskStatus = 1;
-                    if (stationLists == null || stationLists.Count == 0) throw new Exception("鍑哄簱绔欏彴鏈厤缃垨鏈惎鐢�");
-
-                    Dt_StationManager Outstation = null;
-
-                    //if (stationLists.Count > 1)
-                    //{
-                    //    var Outtask = BaseDal.QueryData(x => x.Roadway == stationLists.FirstOrDefault().Roadway && x.TaskType == (int)TaskTypeEnum.Outbound).OrderByDescending(x => x.CreateDate).FirstOrDefault();
-                    //    if (Outtask != null) Outstation = stationLists.Where(x => x.stationChildCode != task.NextAddress && x.stationChildCode != Outtask.CurrentAddress).FirstOrDefault();
-                    //    else Outstation = stationLists.FirstOrDefault();
-                    //}
-                    //else
-                    //{
-                    Outstation = stationLists.FirstOrDefault();
-                    //}
-                    //var stationInfo = stationInfos.FirstOrDefault();
-
-                    // 鍒涘缓骞舵坊鍔犱换鍔″埌鏁版嵁搴�
-                    hasTask = new Dt_Task
-                    {
-                        Grade = 1,
-                        Roadway = Outstation.Roadway,
-                        TargetAddress = "RB043",
-                        Dispatchertime = DateTime.Now,
-                        NextAddress = Outstation.stationChildCode,
-                        OrderNo = null,
-                        PalletCode = stock.PalletCode,
-                        PVI = stock.PVI,
-                        SourceAddress = stock.LocationCode,
-                        CurrentAddress = stock.LocationCode,
-                        TaskState = (int)TaskOutStatusEnum.OutNew,
-                        TaskType = (int)TaskOutboundTypeEnum.Outbound,
-                        TaskNum = _taskRepository.GetTaskNo().Result,
-                        Creater = "System",
-                        CreateDate = DateTime.Now,
-                        TaskId = 0,
-                    };
-
-                    // 鍒涘缓浠诲姟浼犺緭鐢ㄧ殑DTO瀵硅薄
-                    var taskDTO = CreateTaskDTO(hasTask);
-
-                    // 鑾峰彇WMS IP鍦板潃鐢ㄤ簬鍙戦�佷换鍔¤姹�
-                    var wmsIpAddress = GetWCSIpReceiveTask();
-                    if (wmsIpAddress == null)
-                    {
-                        throw new InvalidOperationException("WMS IP 鏈厤缃�");
-                    }
-
-                    var tasks = new List<WMSTaskDTO>() { taskDTO };
-                    // 鍙戦�佷换鍔¤姹傚埌WMS
-                    var result = HttpHelper.PostAsync(wmsIpAddress, tasks.ToJsonString()).Result;
-                    WebResponseContent content = JsonConvert.DeserializeObject<WebResponseContent>(result);
-                    if (content.Status)
-                    {
-                        _unitOfWorkManage.BeginTran();
-                        // 娣诲姞浠诲姟鍒版暟鎹簱
-                        _taskRepository.AddData(hasTask);
-                        // 鏇存柊搴撲綅浣嶇疆鐘舵�佷负涓嶅彲鐢�
-                        _locationRepository.UpdateData(location);
-                        _MESLockInfoRepository.UpdateData(item);
-                        _palletStockInfoRepository.UpdateData(lockStock);
-                        _unitOfWorkManage.CommitTran();
-                    }
+                    Console.WriteLine("宸插瓨鍦ㄥ嚭搴撲换鍔�");
+                    return;
                 }
+
+                List<Dt_StationManager> stationLists = null;
+                if (lockCar.CarBodyInfo.CarType == 1)
+                {
+                    stationLists = _stationManagerRepository.QueryData(x => x.RoadwayNo == lockCar.TCLine && x.stationType == 2 && x.stationStatus == "1" && x.stationArea == "3");
+                }
+                else if (lockCar.CarBodyInfo.CarType == 2)
+                {
+                    stationLists = _stationManagerRepository.QueryData(x => x.RoadwayNo == lockCar.TCLine && x.stationType == 2 && x.stationStatus == "1" && x.stationArea == "4");
+                }
+                //else if (item.CarBodyInfo.CarType == 3)
+                //{
+                //    stationLists = _stationManagerRepository.QueryData(x => x.RoadwayNo == item.TCLine && x.stationType == 7 && x.stationStatus == "1" && x.stationArea == "3");
+                //}
+
+                var stock = _VVStockInfoRepository.QueryFirst(x => x.carBodyID == lockCar.carBodyID);
+                var lockStock = _palletStockInfoRepository.QueryFirst(x => x.carBodyID == lockCar.carBodyID);
+                var location = _locationRepository.QueryFirst(x => x.LocationCode == stock.LocationCode);
+                location.LocationStatus = (int)LocationEnum.InStockDisable;
+                lockCar.LockStatue = 1;
+                lockStock.TaskStatus = 1;
+                if (stationLists == null || stationLists.Count == 0) throw new Exception("鍑哄簱绔欏彴鏈厤缃垨鏈惎鐢�");
+
+                Dt_StationManager Outstation = null;
+
+                //if (stationLists.Count > 1)
+                //{
+                //    var Outtask = BaseDal.QueryData(x => x.Roadway == stationLists.FirstOrDefault().Roadway && x.TaskType == (int)TaskTypeEnum.Outbound).OrderByDescending(x => x.CreateDate).FirstOrDefault();
+                //    if (Outtask != null) Outstation = stationLists.Where(x => x.stationChildCode != task.NextAddress && x.stationChildCode != Outtask.CurrentAddress).FirstOrDefault();
+                //    else Outstation = stationLists.FirstOrDefault();
+                //}
+                //else
+                //{
+                Outstation = stationLists.FirstOrDefault();
+                //}
+                //var stationInfo = stationInfos.FirstOrDefault();
+
+                // 鍒涘缓骞舵坊鍔犱换鍔″埌鏁版嵁搴�
+                hasTask = new Dt_Task
+                {
+                    Grade = 1,
+                    Roadway = Outstation.Roadway,
+                    TargetAddress = "RB043",
+                    Dispatchertime = DateTime.Now,
+                    NextAddress = Outstation.stationChildCode,
+                    OrderNo = null,
+                    PalletCode = stock.PalletCode,
+                    PVI = stock.PVI,
+                    SourceAddress = stock.LocationCode,
+                    CurrentAddress = stock.LocationCode,
+                    TaskState = (int)TaskOutStatusEnum.OutNew,
+                    TaskType = (int)TaskOutboundTypeEnum.Outbound,
+                    TaskNum = _taskRepository.GetTaskNo().Result,
+                    Creater = "System",
+                    CreateDate = DateTime.Now,
+                    TaskId = 0,
+                };
+
+                // 鍒涘缓浠诲姟浼犺緭鐢ㄧ殑DTO瀵硅薄
+                var taskDTO = CreateTaskDTO(hasTask);
+
+                // 鑾峰彇WMS IP鍦板潃鐢ㄤ簬鍙戦�佷换鍔¤姹�
+                var wmsIpAddress = GetWCSIpReceiveTask();
+                if (wmsIpAddress == null)
+                {
+                    throw new InvalidOperationException("WMS IP 鏈厤缃�");
+                }
+
+                var tasks = new List<WMSTaskDTO>() { taskDTO };
+                // 鍙戦�佷换鍔¤姹傚埌WMS
+                var result = HttpHelper.PostAsync(wmsIpAddress, tasks.ToJsonString()).Result;
+                WebResponseContent content = JsonConvert.DeserializeObject<WebResponseContent>(result);
+                if (content.Status)
+                {
+                    _unitOfWorkManage.BeginTran();
+                    // 娣诲姞浠诲姟鍒版暟鎹簱
+                    _taskRepository.AddData(hasTask);
+                    // 鏇存柊搴撲綅浣嶇疆鐘舵�佷负涓嶅彲鐢�
+                    _locationRepository.UpdateData(location);
+                    _MESLockInfoRepository.UpdateData(lockCar);
+                    _palletStockInfoRepository.UpdateData(lockStock);
+                    _unitOfWorkManage.CommitTran();
+                }
+
+                //foreach (var item in lockInfo)
+                //{
+                //    var hasTask = _taskRepository.QueryFirst(x => x.PalletCode == item.CarBodyInfo.PalletCode);
+                //    if (hasTask != null)
+                //    {
+                //        Console.WriteLine("宸插瓨鍦ㄥ嚭搴撲换鍔�");
+                //        continue;
+                //    }
+
+                //    List<Dt_StationManager> stationLists = null;
+                //    if (item.CarBodyInfo.CarType == 1)
+                //    {
+                //        stationLists = _stationManagerRepository.QueryData(x => x.RoadwayNo == item.TCLine && x.stationType == 2 && x.stationStatus == "1" && x.stationArea == "3");
+                //    }
+                //    else if (item.CarBodyInfo.CarType == 2)
+                //    {
+                //        stationLists = _stationManagerRepository.QueryData(x => x.RoadwayNo == item.TCLine && x.stationType == 2 && x.stationStatus == "1" && x.stationArea == "4");
+                //    }
+                //    //else if (item.CarBodyInfo.CarType == 3)
+                //    //{
+                //    //    stationLists = _stationManagerRepository.QueryData(x => x.RoadwayNo == item.TCLine && x.stationType == 7 && x.stationStatus == "1" && x.stationArea == "3");
+                //    //}
+
+                //    var stock = _VVStockInfoRepository.QueryFirst(x => x.carBodyID == item.carBodyID);
+                //    var lockStock = _palletStockInfoRepository.QueryFirst(x => x.carBodyID == item.carBodyID);
+                //    var location = _locationRepository.QueryFirst(x => x.LocationCode == stock.LocationCode);
+                //    location.LocationStatus = (int)LocationEnum.InStockDisable;
+                //    item.LockStatue = 1;
+                //    lockStock.TaskStatus = 1;
+                //    if (stationLists == null || stationLists.Count == 0) throw new Exception("鍑哄簱绔欏彴鏈厤缃垨鏈惎鐢�");
+
+                //    Dt_StationManager Outstation = null;
+
+                //    //if (stationLists.Count > 1)
+                //    //{
+                //    //    var Outtask = BaseDal.QueryData(x => x.Roadway == stationLists.FirstOrDefault().Roadway && x.TaskType == (int)TaskTypeEnum.Outbound).OrderByDescending(x => x.CreateDate).FirstOrDefault();
+                //    //    if (Outtask != null) Outstation = stationLists.Where(x => x.stationChildCode != task.NextAddress && x.stationChildCode != Outtask.CurrentAddress).FirstOrDefault();
+                //    //    else Outstation = stationLists.FirstOrDefault();
+                //    //}
+                //    //else
+                //    //{
+                //    Outstation = stationLists.FirstOrDefault();
+                //    //}
+                //    //var stationInfo = stationInfos.FirstOrDefault();
+
+                //    // 鍒涘缓骞舵坊鍔犱换鍔″埌鏁版嵁搴�
+                //    hasTask = new Dt_Task
+                //    {
+                //        Grade = 1,
+                //        Roadway = Outstation.Roadway,
+                //        TargetAddress = "RB043",
+                //        Dispatchertime = DateTime.Now,
+                //        NextAddress = Outstation.stationChildCode,
+                //        OrderNo = null,
+                //        PalletCode = stock.PalletCode,
+                //        PVI = stock.PVI,
+                //        SourceAddress = stock.LocationCode,
+                //        CurrentAddress = stock.LocationCode,
+                //        TaskState = (int)TaskOutStatusEnum.OutNew,
+                //        TaskType = (int)TaskOutboundTypeEnum.Outbound,
+                //        TaskNum = _taskRepository.GetTaskNo().Result,
+                //        Creater = "System",
+                //        CreateDate = DateTime.Now,
+                //        TaskId = 0,
+                //    };
+
+                //    // 鍒涘缓浠诲姟浼犺緭鐢ㄧ殑DTO瀵硅薄
+                //    var taskDTO = CreateTaskDTO(hasTask);
+
+                //    // 鑾峰彇WMS IP鍦板潃鐢ㄤ簬鍙戦�佷换鍔¤姹�
+                //    var wmsIpAddress = GetWCSIpReceiveTask();
+                //    if (wmsIpAddress == null)
+                //    {
+                //        throw new InvalidOperationException("WMS IP 鏈厤缃�");
+                //    }
+
+                //    var tasks = new List<WMSTaskDTO>() { taskDTO };
+                //    // 鍙戦�佷换鍔¤姹傚埌WMS
+                //    var result = HttpHelper.PostAsync(wmsIpAddress, tasks.ToJsonString()).Result;
+                //    WebResponseContent content = JsonConvert.DeserializeObject<WebResponseContent>(result);
+                //    if (content.Status)
+                //    {
+                //        _unitOfWorkManage.BeginTran();
+                //        // 娣诲姞浠诲姟鍒版暟鎹簱
+                //        _taskRepository.AddData(hasTask);
+                //        // 鏇存柊搴撲綅浣嶇疆鐘舵�佷负涓嶅彲鐢�
+                //        _locationRepository.UpdateData(location);
+                //        _MESLockInfoRepository.UpdateData(item);
+                //        _palletStockInfoRepository.UpdateData(lockStock);
+                //        _unitOfWorkManage.CommitTran();
+                //    }
+                //}
             }
             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)

--
Gitblit v1.9.3