using System.Reflection; using JNPF.Common.Cache; using JNPF.Common.Dtos.VisualDev; using JNPF.Common.Security; using JNPF.DependencyInjection; using JNPF.DynamicApiController; using JNPF.FriendlyException; using JNPF.VisualDev; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using SqlSugar; using Tnb.Common.Redis; using Tnb.ProductionMgr.Entities; using Tnb.ProductionMgr.Interfaces; namespace Tnb.ProductionMgr { /// /// 数据采集 /// [ApiDescriptionSettings(Tag = ModuleConst.Tag, Area = ModuleConst.Area, Order = 700)] [Route("api/[area]/[controller]/[action]")] [OverideVisualDev(ModuleId)] public class RedisDataService : IOverideVisualDevService, IRedisDataService, IDynamicApiController, ITransient { private const string ModuleId = "30062789830933"; private readonly RedisData _redisData; private readonly ISqlSugarRepository _repository; public OverideVisualDevFunc OverideFuncs { get; } = new OverideVisualDevFunc(); public RedisDataService(RedisData redisData, ISqlSugarRepository repository) { _redisData = redisData; _repository = repository; OverideFuncs.CreateAsync = Create; } private async Task Create(VisualDevModelDataCrInput input) { RedisReadConfig redisReadConfig = new RedisReadConfig(); redisReadConfig.id = SnowflakeIdHelper.NextId(); redisReadConfig.dev_name = input.data[nameof(RedisReadConfig.dev_name)].ToString(); redisReadConfig.tag_name = input.data[nameof(RedisReadConfig.tag_name)].ToString(); redisReadConfig.data = input.data[nameof(RedisReadConfig.data)].ToString(); redisReadConfig.event_type = int.Parse(input.data[nameof(RedisReadConfig.event_type)].ToString()!); redisReadConfig.data_type = int.Parse(input.data[nameof(RedisReadConfig.data_type)].ToString()!); redisReadConfig.check_type = int.Parse(input.data[nameof(RedisReadConfig.check_type)].ToString()!); redisReadConfig.enabled = int.Parse(input.data[nameof(RedisReadConfig.enabled)].ToString()!); await _repository.AsSugarClient().Insertable(redisReadConfig).ExecuteCommandAsync(); return await Task.FromResult(true); } /// /// 根据机号获取重量 /// [HttpPost] public async Task GetWeight(string device, string jihao) { bool flag = await _redisData.HashExist(device, jihao); if (!flag) { throw Oops.Bah("没有找到" + device + "----" + jihao + "的数据"); } string data = await _redisData.GetHash(device, jihao); JObject? res = JsonConvert.DeserializeObject(data); decimal result = res != null && res["Value"] != null ? decimal.Parse(res["Value"]!.ToString()) : throw Oops.Bah("数据格式错误"); return result; } } }