using langguanApi.Extensions.AutoDI; using langguanApi.Model; using langguanApi.Model.Dto; using System.Linq.Expressions; namespace langguanApi.Service { [ServiceInjection(InjectionType.Transient)] public class Hj212Service : BaseService { private DeviceService _deviceSerive; public Hj212Service(IConfiguration config, DeviceService deviceSerive) : base(config, nameof(Model.HJ212)) { _deviceSerive = deviceSerive; } /// /// 新加数据 /// /// /// /// public async Task Add(Model.HJ212 hJ212, string deviceIp) { ////判断设备类型 tsp 会有经纬度数据 int deviceType = 1;//设备类型为1 =voc if (hJ212.lat > 0 && hJ212.lng > 0) { deviceType = 1; } //先判断当前设备是否存在 await _deviceSerive.Add(new DeviceAddDto() { deviceMN = hJ212.deviceMN, Ip = deviceIp, lat = hJ212.lat, lng = hJ212.lng, DeviceType = deviceType }); await base.CreateAsync(hJ212); } /// /// 最近10个小时的数据 /// /// /// public async Task> GetViewTop(int hours = -10) { var date = DateTime.Now.AddHours(-8).AddHours(hours); Expression> exp = filter => filter.CreateDateTime >= date; var result = (await base.GetListWithExp(exp)).ToList(); return result; } /// /// 按设备号查询数据 /// /// /// public async Task GetViewByDeviceMn(string deviceMn) { Expression> exp = filter => filter.deviceMN == deviceMn; var result = (await base.GetListWithExp(exp)).OrderByDescending(s => s.CreateDateTime).Take(60).ToList(); List list = new List(); var temp = result.Select(s => new { s.a34001, s.a34002, s.a34004, hour = s.CreateDateTime.AddHours(8).ToString("yyyy-MM-dd HH:mm") }).ToList(); temp.GroupBy(g => new { g.hour }).ToList().ForEach(s => { var v1 = temp.Where(m => m.hour == s.Key.hour).Sum(t => t.a34001); var v2 = temp.Where(m => m.hour == s.Key.hour).Sum(t => t.a34002); var v3 = temp.Where(m => m.hour == s.Key.hour).Sum(t => t.a34004); list.Add(new columnView() { hour = s.Key.hour, type = "a34001", value = v1 }); list.Add(new columnView() { hour = s.Key.hour, type = "a34002", value = Math.Round(v2, 2) }); list.Add(new columnView() { hour = s.Key.hour, type = "a34004", value = Math.Round(v3, 2) }); }); return list; } /// /// 实时的数据 /// /// public async Task> Realtime() { Expression> exp = filter => true; var result = (await base.GetListWithExp(exp)).OrderByDescending(s => s.CreateDateTime) .Take(60).OrderBy(s => s.CreateDateTime).ToList(); List list = new List(); var temp = result.Select(s => new { s.a34001, s.a34002, s.a34004, hour = s.CreateDateTime.AddHours(8).ToString("yyyy-MM-dd HH:mm") }).ToList(); temp.GroupBy(g => new { g.hour }).ToList().ForEach(s => { var v1 = temp.Where(m => m.hour == s.Key.hour).Sum(t => t.a34001); var v2 = temp.Where(m => m.hour == s.Key.hour).Sum(t => t.a34002); var v3 = temp.Where(m => m.hour == s.Key.hour).Sum(t => t.a34004); list.Add(new columnView() { hour = s.Key.hour, type = "a34001", value = v1 }); list.Add(new columnView() { hour = s.Key.hour, type = "a34002", value = Math.Round(v2, 2) }); list.Add(new columnView() { hour = s.Key.hour, type = "a34004", value = Math.Round(v3, 2) }); }); return list; } } }