diff --git a/ProductionMgr/Tnb.ProductionMgr.Interfaces/IRedisDataService.cs b/ProductionMgr/Tnb.ProductionMgr.Interfaces/IRedisDataService.cs index c32ab2af..35ff9417 100644 --- a/ProductionMgr/Tnb.ProductionMgr.Interfaces/IRedisDataService.cs +++ b/ProductionMgr/Tnb.ProductionMgr.Interfaces/IRedisDataService.cs @@ -13,7 +13,5 @@ namespace Tnb.ProductionMgr.Interfaces /// 根据机号获取重量 /// Task GetWeight(string key, string field); - - } } diff --git a/ProductionMgr/Tnb.ProductionMgr/RedisBackGround.cs b/ProductionMgr/Tnb.ProductionMgr/RedisBackGround.cs new file mode 100644 index 00000000..2a2150c6 --- /dev/null +++ b/ProductionMgr/Tnb.ProductionMgr/RedisBackGround.cs @@ -0,0 +1,77 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using JNPF.Common.Cache; +using Microsoft.Extensions.Hosting; +using Newtonsoft.Json.Linq; +using Newtonsoft.Json; +using UAParser; +using Tnb.ProductionMgr.Interfaces; +using Tnb.ProductionMgr.Entities.Dto; + +namespace Tnb.ProductionMgr +{ + //redis定时获取数采数据 + public class RedisBackGround : IHostedService, IDisposable + { + private Timer? packtimer; + private Timer? limittimer; + private readonly RedisCache _redisCache; + private readonly IPrdInstockService _prdInstockService; + public RedisBackGround(RedisCache redisCache, IPrdInstockService prdInstockService) + { + _redisCache = redisCache; + _prdInstockService = prdInstockService; + } + //获取装箱状态 + private void GetPackStatus(object state) + { + Console.WriteLine($"{DateTime.Now:yyyy-MM-dd HH:mm:ss}"); + Console.WriteLine($"获取装箱状态"); + /* + var data = _redisCache.GetHash("TY4C-JICHU", "weight_4").Result; + var res = JsonConvert.DeserializeObject(data); + if (res != null && res["Value"] != null) + { + InstockInput instockInput = new InstockInput(); + instockInput.equip_code = res["Value"]!.ToString(); + _prdInstockService.InstockTypeOne(instockInput); + Console.WriteLine(decimal.Parse(res["Value"]!.ToString())); + }*/ + } + //获取限位状态 + private void GetLimitStatus(object state) + { + Console.WriteLine($"{DateTime.Now:yyyy-MM-dd HH:mm:ss}"); + Console.WriteLine($"获取限位状态"); + /* + var data = _redisCache.GetHash("TY4C-JICHU", "weight_4").Result; + var res = JsonConvert.DeserializeObject(data); + if (res != null && res["Value"] != null) + { + InstockInput instockInput = new InstockInput(); + instockInput.equip_code = res["Value"]!.ToString(); + _prdInstockService.InstockTypeOne(instockInput); + Console.WriteLine(decimal.Parse(res["Value"]!.ToString())); + }*/ + } + public void Dispose() + { + packtimer?.Dispose(); + limittimer?.Dispose(); + } + public Task StartAsync(CancellationToken cancellationToken) + { + // packtimer = new Timer(GetPackStatus, null, TimeSpan.Zero, TimeSpan.FromSeconds(2)); + // limittimer = new Timer(GetLimitStatus, null, TimeSpan.Zero, TimeSpan.FromSeconds(2)); + return Task.CompletedTask; + } + public Task StopAsync(CancellationToken cancellationToken) + { + return Task.CompletedTask; + } + + } +} \ No newline at end of file diff --git a/ProductionMgr/Tnb.ProductionMgr/RedisDataService.cs b/ProductionMgr/Tnb.ProductionMgr/RedisDataService.cs index 58ecd15b..d9ea93f4 100644 --- a/ProductionMgr/Tnb.ProductionMgr/RedisDataService.cs +++ b/ProductionMgr/Tnb.ProductionMgr/RedisDataService.cs @@ -1,10 +1,13 @@ using System.Collections; using JNPF.Common.Cache; +using JNPF.Common.Extension; using JNPF.Common.Manager; using JNPF.DependencyInjection; using JNPF.DynamicApiController; using JNPF.FriendlyException; +using JNPF.TaskScheduler; using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Options; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using Tnb.ProductionMgr.Interfaces; @@ -22,6 +25,7 @@ namespace Tnb.ProductionMgr public RedisDataService(RedisCache redisCache) { _redisCache = redisCache; + } /// /// 根据机号获取重量 @@ -29,19 +33,35 @@ namespace Tnb.ProductionMgr [HttpPost] public async Task GetWeight(string device, string jihao) { + /* + var dic = _redisCache.HGetAll("TY4C-ZHUSU1"); + string a= "weighCall_7&{\"DevName\":\"TY4C-ZHUSU1\",\"TagName\":\"weighCall_7\",\"StatusCode\":0,\"Value\":false,\"TagValueType\":\"Bit\",\"TimeStamp\":\"2023-11-03 09:09:02\"}$weighCall_4&{\"DevName\":\"TY4C-ZHUSU1\",\"TagName\":\"weighCall_4\",\"StatusCode\":0,\"Value\":false,\"TagValueType\":\"Bit\",\"TimeStamp\":\"2023-11-03 09:09:02\"}$weightSum_6&{\"DevName\":\"TY4C-ZHUSU1\",\"TagName\":\"weightSum_6\",\"StatusCode\":0,\"Value\":0.0,\"TagValueType\":\"Float\",\"TimeStamp\":\"2023-11-03 09:09:02\"}$weightSum_2&{\"DevName\":\"TY4C-ZHUSU1\",\"TagName\":\"weightSum_2\",\"StatusCode\":0,\"Value\":0.0,\"TagValueType\":\"Float\",\"TimeStamp\":\"2023-11-03 09:09:02\"}$weighCall_5&{\"DevName\":\"TY4C-ZHUSU1\",\"TagName\":\"weighCall_5\",\"StatusCode\":0,\"Value\":false,\"TagValueType\":\"Bit\",\"TimeStamp\":\"2023-11-03 09:09:02\"}$weightSum_11&{\"DevName\":\"TY4C-ZHUSU1\",\"TagName\":\"weightSum_11\",\"StatusCode\":0,\"Value\":0.0,\"TagValueType\":\"Float\",\"TimeStamp\":\"2023-11-03 09:09:02\"}$weight_1&{\"DevName\":\"TY4C-ZHUSU1\",\"TagName\":\"weight_1\",\"StatusCode\":0,\"Value\":1.0,\"TagValueType\":\"Float\",\"TimeStamp\":\"2023-11-03 09:31:03\"}$weight_12&{\"DevName\":\"TY4C-ZHUSU1\",\"TagName\":\"weight_12\",\"StatusCode\":0,\"Value\":0.0,\"TagValueType\":\"Float\",\"TimeStamp\":\"2023-11-03 09:09:02\"}$weight_11&{\"DevName\":\"TY4C-ZHUSU1\",\"TagName\":\"weight_11\",\"StatusCode\":0,\"Value\":0.0,\"TagValueType\":\"Float\",\"TimeStamp\":\"2023-11-03 09:09:02\"}$weighDone_9&{\"DevName\":\"TY4C-ZHUSU1\",\"TagName\":\"weighDone_9\",\"StatusCode\":0,\"Value\":false,\"TagValueType\":\"Bit\",\"TimeStamp\":\"2023-11-03 09:09:02\"}$weight_4&{\"DevName\":\"TY4C-ZHUSU1\",\"TagName\":\"weight_4\",\"StatusCode\":0,\"Value\":0.0,\"TagValueType\":\"Float\",\"TimeStamp\":\"2023-11-03 09:09:02\"}$weight_7&{\"DevName\":\"TY4C-ZHUSU1\",\"TagName\":\"weight_7\",\"StatusCode\":0,\"Value\":0.0,\"TagValueType\":\"Float\",\"TimeStamp\":\"2023-11-03 09:09:02\"}$weighCall_14&{\"DevName\":\"TY4C-ZHUSU1\",\"TagName\":\"weighCall_14\",\"StatusCode\":0,\"Value\":false,\"TagValueType\":\"Bit\",\"TimeStamp\":\"2023-11-03 09:09:02\"}$weighDone_7&{\"DevName\":\"TY4C-ZHUSU1\",\"TagName\":\"weighDone_7\",\"StatusCode\":0,\"Value\":false,\"TagValueType\":\"Bit\",\"TimeStamp\":\"2023-11-03 09:09:02\"}$weightSum_10&{\"DevName\":\"TY4C-ZHUSU1\",\"TagName\":\"weightSum_10\",\"StatusCode\":0,\"Value\":0.0,\"TagValueType\":\"Float\",\"TimeStamp\":\"2023-11-03 09:09:02\"}$weighCall_1&{\"DevName\":\"TY4C-ZHUSU1\",\"TagName\":\"weighCall_1\",\"StatusCode\":0,\"Value\":true,\"TagValueType\":\"Bit\",\"TimeStamp\":\"2023-11-03 09:10:51\"}$weighDone_12&{\"DevName\":\"TY4C-ZHUSU1\",\"TagName\":\"weighDone_12\",\"StatusCode\":0,\"Value\":false,\"TagValueType\":\"Bit\",\"TimeStamp\":\"2023-11-03 09:09:02\"}$weightSum_14&{\"DevName\":\"TY4C-ZHUSU1\",\"TagName\":\"weightSum_14\",\"StatusCode\":0,\"Value\":0.0,\"TagValueType\":\"Float\",\"TimeStamp\":\"2023-11-03 09:09:02\"}$weight_14&{\"DevName\":\"TY4C-ZHUSU1\",\"TagName\":\"weight_14\",\"StatusCode\":0,\"Value\":0.0,\"TagValueType\":\"Float\",\"TimeStamp\":\"2023-11-03 09:09:02\"}$weighCall_11&{\"DevName\":\"TY4C-ZHUSU1\",\"TagName\":\"weighCall_11\",\"StatusCode\":0,\"Value\":false,\"TagValueType\":\"Bit\",\"TimeStamp\":\"2023-11-03 09:09:02\"}$weightSum_5&{\"DevName\":\"TY4C-ZHUSU1\",\"TagName\":\"weightSum_5\",\"StatusCode\":0,\"Value\":0.0,\"TagValueType\":\"Float\",\"TimeStamp\":\"2023-11-03 09:09:02\"}$weighCall_9&{\"DevName\":\"TY4C-ZHUSU1\",\"TagName\":\"weighCall_9\",\"StatusCode\":0,\"Value\":false,\"TagValueType\":\"Bit\",\"TimeStamp\":\"2023-11-03 09:09:02\"}$weighCall_13&{\"DevName\":\"TY4C-ZHUSU1\",\"TagName\":\"weighCall_13\",\"StatusCode\":0,\"Value\":false,\"TagValueType\":\"Bit\",\"TimeStamp\":\"2023-11-03 09:09:02\"}$weighCall_8&{\"DevName\":\"TY4C-ZHUSU1\",\"TagName\":\"weighCall_8\",\"StatusCode\":0,\"Value\":false,\"TagValueType\":\"Bit\",\"TimeStamp\":\"2023-11-03 09:09:02\"}$weight_2&{\"DevName\":\"TY4C-ZHUSU1\",\"TagName\":\"weight_2\",\"StatusCode\":0,\"Value\":0.0,\"TagValueType\":\"Float\",\"TimeStamp\":\"2023-11-03 09:09:02\"}$weighCall_2&{\"DevName\":\"TY4C-ZHUSU1\",\"TagName\":\"weighCall_2\",\"StatusCode\":0,\"Value\":false,\"TagValueType\":\"Bit\",\"TimeStamp\":\"2023-11-03 09:09:02\"}$weightSum_8&{\"DevName\":\"TY4C-ZHUSU1\",\"TagName\":\"weightSum_8\",\"StatusCode\":0,\"Value\":0.0,\"TagValueType\":\"Float\",\"TimeStamp\":\"2023-11-03 09:09:02\"}$weightSum_3&{\"DevName\":\"TY4C-ZHUSU1\",\"TagName\":\"weightSum_3\",\"StatusCode\":0,\"Value\":0.0,\"TagValueType\":\"Float\",\"TimeStamp\":\"2023-11-03 09:09:02\"}$weighDone_14&{\"DevName\":\"TY4C-ZHUSU1\",\"TagName\":\"weighDone_14\",\"StatusCode\":0,\"Value\":false,\"TagValueType\":\"Bit\",\"TimeStamp\":\"2023-11-03 09:09:02\"}$weightSum_9&{\"DevName\":\"TY4C-ZHUSU1\",\"TagName\":\"weightSum_9\",\"StatusCode\":0,\"Value\":0.0,\"TagValueType\":\"Float\",\"TimeStamp\":\"2023-11-03 09:09:02\"}$weightSum_7&{\"DevName\":\"TY4C-ZHUSU1\",\"TagName\":\"weightSum_7\",\"StatusCode\":0,\"Value\":0.0,\"TagValueType\":\"Float\",\"TimeStamp\":\"2023-11-03 09:09:02\"}$weighCall_3&{\"DevName\":\"TY4C-ZHUSU1\",\"TagName\":\"weighCall_3\",\"StatusCode\":0,\"Value\":false,\"TagValueType\":\"Bit\",\"TimeStamp\":\"2023-11-03 09:09:02\"}$weighDone_8&{\"DevName\":\"TY4C-ZHUSU1\",\"TagName\":\"weighDone_8\",\"StatusCode\":0,\"Value\":false,\"TagValueType\":\"Bit\",\"TimeStamp\":\"2023-11-03 09:09:02\"}$weighDone_1&{\"DevName\":\"TY4C-ZHUSU1\",\"TagName\":\"weighDone_1\",\"StatusCode\":0,\"Value\":false,\"TagValueType\":\"Bit\",\"TimeStamp\":\"2023-11-03 09:09:02\"}$weightSum_12&{\"DevName\":\"TY4C-ZHUSU1\",\"TagName\":\"weightSum_12\",\"StatusCode\":0,\"Value\":0.0,\"TagValueType\":\"Float\",\"TimeStamp\":\"2023-11-03 09:09:02\"}$weighDone_4&{\"DevName\":\"TY4C-ZHUSU1\",\"TagName\":\"weighDone_4\",\"StatusCode\":0,\"Value\":false,\"TagValueType\":\"Bit\",\"TimeStamp\":\"2023-11-03 09:09:02\"}$weightSum_1&{\"DevName\":\"TY4C-ZHUSU1\",\"TagName\":\"weightSum_1\",\"StatusCode\":0,\"Value\":0.0,\"TagValueType\":\"Float\",\"TimeStamp\":\"2023-11-03 09:09:02\"}$weighDone_6&{\"DevName\":\"TY4C-ZHUSU1\",\"TagName\":\"weighDone_6\",\"StatusCode\":0,\"Value\":false,\"TagValueType\":\"Bit\",\"TimeStamp\":\"2023-11-03 09:09:02\"}$weighDone_2&{\"DevName\":\"TY4C-ZHUSU1\",\"TagName\":\"weighDone_2\",\"StatusCode\":0,\"Value\":false,\"TagValueType\":\"Bit\",\"TimeStamp\":\"2023-11-03 09:09:02\"}$weighDone_3&{\"DevName\":\"TY4C-ZHUSU1\",\"TagName\":\"weighDone_3\",\"StatusCode\":0,\"Value\":false,\"TagValueType\":\"Bit\",\"TimeStamp\":\"2023-11-03 09:09:02\"}$weighDone_10&{\"DevName\":\"TY4C-ZHUSU1\",\"TagName\":\"weighDone_10\",\"StatusCode\":0,\"Value\":false,\"TagValueType\":\"Bit\",\"TimeStamp\":\"2023-11-03 09:09:02\"}$weighCall_10&{\"DevName\":\"TY4C-ZHUSU1\",\"TagName\":\"weighCall_10\",\"StatusCode\":0,\"Value\":false,\"TagValueType\":\"Bit\",\"TimeStamp\":\"2023-11-03 09:09:02\"}$weighDone_13&{\"DevName\":\"TY4C-ZHUSU1\",\"TagName\":\"weighDone_13\",\"StatusCode\":0,\"Value\":false,\"TagValueType\":\"Bit\",\"TimeStamp\":\"2023-11-03 09:09:02\"}$State&{\"DevName\":\"TY4C-ZHUSU1\",\"TagName\":\"State\",\"StatusCode\":0,\"Value\":\"OK\",\"TagValueType\":\"Unkown\",\"TimeStamp\":\"2023-11-02 11:14:28\"}$weighCall_12&{\"DevName\":\"TY4C-ZHUSU1\",\"TagName\":\"weighCall_12\",\"StatusCode\":0,\"Value\":false,\"TagValueType\":\"Bit\",\"TimeStamp\":\"2023-11-03 09:09:02\"}$weight_6&{\"DevName\":\"TY4C-ZHUSU1\",\"TagName\":\"weight_6\",\"StatusCode\":0,\"Value\":0.0,\"TagValueType\":\"Float\",\"TimeStamp\":\"2023-11-03 09:09:02\"}$weight_13&{\"DevName\":\"TY4C-ZHUSU1\",\"TagName\":\"weight_13\",\"StatusCode\":0,\"Value\":0.0,\"TagValueType\":\"Float\",\"TimeStamp\":\"2023-11-03 09:09:02\"}$weight_10&{\"DevName\":\"TY4C-ZHUSU1\",\"TagName\":\"weight_10\",\"StatusCode\":0,\"Value\":33.0,\"TagValueType\":\"Float\",\"TimeStamp\":\"2023-11-03 10:19:44\"}$weighDone_11&{\"DevName\":\"TY4C-ZHUSU1\",\"TagName\":\"weighDone_11\",\"StatusCode\":0,\"Value\":false,\"TagValueType\":\"Bit\",\"TimeStamp\":\"2023-11-03 09:09:02\"}$weight_9&{\"DevName\":\"TY4C-ZHUSU1\",\"TagName\":\"weight_9\",\"StatusCode\":0,\"Value\":11.0,\"TagValueType\":\"Float\",\"TimeStamp\":\"2023-11-03 10:15:26\"}$weight_8&{\"DevName\":\"TY4C-ZHUSU1\",\"TagName\":\"weight_8\",\"StatusCode\":0,\"Value\":0.0,\"TagValueType\":\"Float\",\"TimeStamp\":\"2023-11-03 09:09:02\"}$weightSum_4&{\"DevName\":\"TY4C-ZHUSU1\",\"TagName\":\"weightSum_4\",\"StatusCode\":0,\"Value\":0.0,\"TagValueType\":\"Float\",\"TimeStamp\":\"2023-11-03 09:09:02\"}$weighCall_6&{\"DevName\":\"TY4C-ZHUSU1\",\"TagName\":\"weighCall_6\",\"StatusCode\":0,\"Value\":false,\"TagValueType\":\"Bit\",\"TimeStamp\":\"2023-11-03 09:09:02\"}$weight_5&{\"DevName\":\"TY4C-ZHUSU1\",\"TagName\":\"weight_5\",\"StatusCode\":0,\"Value\":0.0,\"TagValueType\":\"Float\",\"TimeStamp\":\"2023-11-03 09:09:02\"}$weighDone_5&{\"DevName\":\"TY4C-ZHUSU1\",\"TagName\":\"weighDone_5\",\"StatusCode\":0,\"Value\":false,\"TagValueType\":\"Bit\",\"TimeStamp\":\"2023-11-03 09:09:02\"}$weightSum_13&{\"DevName\":\"TY4C-ZHUSU1\",\"TagName\":\"weightSum_13\",\"StatusCode\":0,\"Value\":0.0,\"TagValueType\":\"Float\",\"TimeStamp\":\"2023-11-03 09:09:02\"}$weight_3&{\"DevName\":\"TY4C-ZHUSU1\",\"TagName\":\"weight_3\",\"StatusCode\":0,\"Value\":0.0,\"TagValueType\":\"Float\",\"TimeStamp\":\"2023-11-03 09:09:02\"}$"; + foreach (var kvp in dic) + { + a += kvp.Key + "&" + kvp.Value + "$"; + } + var ss= a.Split('$', StringSplitOptions.RemoveEmptyEntries); + foreach (var s in ss) + { + var b = s.Split('&'); + _redisCache.HSet("TY4C-ZHUSU1", b[0], b[1]); + } + */ decimal result = 0; - if (!_redisCache.HashExist(device, jihao)) + bool flag = await _redisCache.HashExist(device, jihao); + if (!flag) throw Oops.Bah("没有找到" + device + "----" + jihao + "的数据"); - var data = _redisCache.GetHash(device, jihao); - + var data = await _redisCache.GetHash(device, jihao); var res = JsonConvert.DeserializeObject(data); if (res != null && res["Value"] != null) { - result=decimal.Parse( res["Value"]!.ToString()); + result = decimal.Parse(res["Value"]!.ToString()); } - - return data; + else + { + throw Oops.Bah("数据格式错误"); + } + return result; } - } } diff --git a/apihost/Tnb.API.Entry/Startup.cs b/apihost/Tnb.API.Entry/Startup.cs index 07ba27d3..f517e4d4 100644 --- a/apihost/Tnb.API.Entry/Startup.cs +++ b/apihost/Tnb.API.Entry/Startup.cs @@ -23,6 +23,7 @@ using Senparc.Weixin; using Senparc.Weixin.Entities; using Senparc.Weixin.RegisterServices; using SqlSugar; +using Tnb.ProductionMgr; using Tnb.WarehouseMgr; namespace JNPF.API.Entry; @@ -66,7 +67,7 @@ public class Startup : AppStartup //定时任务 services.AddHostedService(); - + services.AddHostedService(); } diff --git a/common/Tnb.Common/Cache/RedisCache.cs b/common/Tnb.Common/Cache/RedisCache.cs index a58db000..a57fe0c5 100644 --- a/common/Tnb.Common/Cache/RedisCache.cs +++ b/common/Tnb.Common/Cache/RedisCache.cs @@ -224,12 +224,20 @@ public class RedisCache : ICache, ISingleton long second = RedisHelper.PTtl(key); return DateTime.Now.AddMilliseconds(second); } - public string GetHash(string key, string field) + public Task GetHash(string key, string field) { - return RedisHelper.HGet(key, field); + return RedisHelper.HGetAsync(key, field); } - public bool HashExist(string key, string field) + public Task HashExist(string key, string field) { - return RedisHelper.HExists(key, field); + return RedisHelper.HExistsAsync(key, field); + } + public Task> HGetAll(string key) + { + return RedisHelper.HGetAllAsync(key); + } + public Task HSet(string key, string field, string value) + { + return RedisHelper.HSetAsync(key, field,value); } } \ No newline at end of file