|  |  |  | 
|---|
|  |  |  | 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 | 
|---|
|  |  |  | { | 
|---|
|  |  |  | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  | 
|---|
|  |  |  | _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 | 
|---|
|  |  |  | 
|---|
|  |  |  | if (stockInfo.Count <= 0) return; | 
|---|
|  |  |  | foreach (var item in stockInfo) | 
|---|
|  |  |  | { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | var hasTask = _taskRepository.QueryFirst(x => x.PalletCode == item.PalletCode); | 
|---|
|  |  |  | if (hasTask != null) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  | 
|---|
|  |  |  | _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> | 
|---|
|  |  |  | /// 创建任务实例 | 
|---|
|  |  |  | 
|---|
|  |  |  | Creater = "System", // 修正拼写错误 | 
|---|
|  |  |  | CreateDate = DateTime.Now, | 
|---|
|  |  |  | TaskId = 0, | 
|---|
|  |  |  | ProductionLine= stockInfo.ProductionLine, | 
|---|
|  |  |  | ProcessCode = stockInfo.ProcessCode, | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | TaskState = task.TaskState.Value, | 
|---|
|  |  |  | Id = 0, | 
|---|
|  |  |  | TaskType = task.TaskType, | 
|---|
|  |  |  | ProductionLine = task.ProductionLine, | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|