using JNPF.Common.Cache; using Microsoft.Extensions.Hosting; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using Tnb.Common.Redis; using Tnb.ProductionMgr.Entities.Dto; using Tnb.ProductionMgr.Entities.Enums; using Tnb.ProductionMgr.Interfaces; namespace Tnb.ProductionMgr { //redis定时获取数采数据 public class RedisBackGround : IHostedService, IDisposable { private Timer? ZSpacktimer; private Timer? JCpacktimer; private Timer? limittimer; private readonly RedisData _redisData; private readonly IPrdInstockService _prdInstockService; public RedisBackGround(RedisData redisData, IPrdInstockService prdInstockService) { _redisData = redisData; _prdInstockService = prdInstockService; } //获取注塑装箱状态 private void GetZSPackStatus(object state) { try { string[] strs = new string[1] { "TY4C-ZHUSU1" }; string sign = "agvMode"; foreach (string s in strs) { Dictionary dic = _redisData.HGetAll(s).Result; foreach (KeyValuePair kv in dic) { if (!kv.Key.Contains(sign)) { continue; } JObject? res = JsonConvert.DeserializeObject(kv.Value); if (res != null && res["Value"] != null) { if (int.Parse(res["Value"]!.ToString()) is not ((int)Eagvmode.无请求) and not ((int)Eagvmode.收到请求)) { InstockInput instockInput = new() { equip_code = res["DevName"]!.ToString(), label_code = res["TagName"]!.ToString() }; _prdInstockService.InstockTypeOne(instockInput); } } } } } catch (Exception) { } } //获取挤出装箱状态 private void GetJCPackStatus(object state) { try { string[] strs = new string[1] { "TY4C-SHUSONG-JC" }; string sign = "AGVFullCall"; foreach (string s in strs) { Dictionary dic = _redisData.HGetAll(s).Result; foreach (KeyValuePair kv in dic) { if (!kv.Key.Contains(sign)) { continue; } JObject? res = JsonConvert.DeserializeObject(kv.Value); if (res != null && res["Value"] != null) { if (res.Value("Value")) { InstockInput instockInput = new() { equip_code = res["DevName"]!.ToString(), label_code = res["TagName"]!.ToString() }; _prdInstockService.InstockTypeOne(instockInput); } } } } } catch (Exception) { } } //获取限位状态 private void GetLimitStatus(object state) { /* Console.WriteLine($"{DateTime.Now:yyyy-MM-dd HH:mm:ss}"); Console.WriteLine($"获取挤出装箱状态"); string data = _redisData.GetHash("TY4C-SHUSONG-JC", "AGVFullCall").Result; Console.WriteLine(data);*/ try { string[] strs = new string[1] { "TY4C-WAIBAO" }; string sign = "AGVCall"; foreach (string s in strs) { Dictionary dic = _redisData.HGetAll(s).Result; foreach (KeyValuePair kv in dic) { if (!kv.Key.Contains(sign)) { continue; } JObject? res = JsonConvert.DeserializeObject(kv.Value); if (res != null && res["Value"] != null) { if (res.Value("Value")) { InstockInput instockInput = new() { equip_code = res["DevName"]!.ToString(), label_code = res["TagName"]!.ToString() }; _prdInstockService.InstockOutPack(instockInput); } } } } } catch (Exception) { } } public void Dispose() { ZSpacktimer?.Dispose(); JCpacktimer?.Dispose(); limittimer?.Dispose(); } public Task StartAsync(CancellationToken cancellationToken) { ZSpacktimer = new Timer(GetZSPackStatus, null, TimeSpan.Zero, TimeSpan.FromSeconds(5)); JCpacktimer = new Timer(GetJCPackStatus, null, TimeSpan.Zero, TimeSpan.FromSeconds(5)); limittimer = new Timer(GetLimitStatus, null, TimeSpan.Zero, TimeSpan.FromSeconds(5)); return Task.CompletedTask; } public Task StopAsync(CancellationToken cancellationToken) { return Task.CompletedTask; } } }