1
huangxiaoqiang
2025-02-18 31eba6a8c6261adf5bfef4dafad4dc8efc1f66a2
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/AspNetCoreSchedule.cs
@@ -1,17 +1,10 @@
using 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_Core.Const;
using WIDESEA_DTO.WMS;
using WIDESEA_IServices;
using WIDESEA_Repository;
using WIDESEAWCS_BasicInfoRepository;
using WIDESEA_Model;
namespace WIDESEA_StorageTaskServices
{
@@ -26,6 +19,7 @@
        private readonly ILocationInfoRepository _locationRepository;
        private Timer _timer;
        public MyBackgroundService(ILogger<MyBackgroundService> logger, ILocationInfoRepository locationRepository, IStockInfoRepository stockInfoRepository, IDt_AreaInfoRepository areaInfoRepository, IDt_TaskRepository taskRepository, IDt_StationManagerRepository stationManagerRepository, ISys_ConfigService configService)
        {
            _logger = logger;
@@ -36,17 +30,20 @@
            _stationManagerRepository = stationManagerRepository;
            _configService = configService;
        }
        public Task StartAsync(CancellationToken cancellationToken)
        {
            _timer = new Timer(DoWork, null, 0, 10000);
            return Task.CompletedTask;
        }
        private void DoWork(object state)
        {
            try
            {
                var area = _areaInfoRepository.QueryFirst(x => x.AreaCode == "GWSC1");
                if (area == null) { return; }
                var stockInfo = _stockInfoRepository.Db.Queryable<DtStockInfo>()
                     .Includes(x => x.LocationInfo) // 预加载LocationInfo
                     .Includes(x => x.StockInfoDetails) // 预加载StockInfoDetails
@@ -58,7 +55,6 @@
                if (stockInfo.Count <= 0) return;
                foreach (var item in stockInfo)
                {
                    var hasTask = _taskRepository.QueryFirst(x => x.PalletCode == item.PalletCode);
                    if (hasTask != null)
                    {
@@ -76,7 +72,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;
@@ -97,7 +92,6 @@
                        _locationRepository.UpdateData(item.LocationInfo);
                    }
                }
            }
            catch (Exception ex)
            {
@@ -105,17 +99,18 @@
            }
            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>
        /// 创建任务实例
@@ -140,6 +135,8 @@
                Creater = "System", // 修正拼写错误
                CreateDate = DateTime.Now,
                TaskId = 0,
                ProductionLine= stockInfo.ProductionLine,
                ProcessCode = stockInfo.ProcessCode,
            };
        }
@@ -159,7 +156,8 @@
                TaskState = task.TaskState.Value,
                Id = 0,
                TaskType = task.TaskType,
                ProductionLine = task.ProductionLine,
            };
        }
    }
}
}