using Infrastructure.Attribute; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using ZR.Model.MES.dev; using ZR.Model.MES.dev.Dto; using ZR.Service.MES.dev.IService; namespace ZR.Service.MES.dev { /// /// 设备数据分析 /// [AppService(ServiceType = typeof(IDeviceDataAnalysisServcie), ServiceLifetime = LifeTime.Transient)] public class DeviceDataAnalysisService : BaseService, IDeviceDataAnalysisServcie { /// /// 故障类型 pie /// /// /// public List DefaultTypePie(DeviceDefaultDto devicedefault) { List resultList = new List(); var predicate = Expressionable.Create() .AndIF(devicedefault.DevicetTypeId > 0, (r, a) => a.FkDeviceType == devicedefault.DevicetTypeId) .AndIF(!string.IsNullOrEmpty(devicedefault.DeviceName), (r, a) => a.DeviceName.Contains(devicedefault.DeviceName)) .AndIF(!string.IsNullOrEmpty(devicedefault.DeviceCode), (r, a) => a.DeviceCode.Contains(devicedefault.DeviceCode)) .AndIF(devicedefault.searchTime[0] > new DateTime(1991, 1, 1), (r, a) => a.CreatedTime >= devicedefault.searchTime[0]) .AndIF(devicedefault.searchTime[1] > new DateTime(1991, 1, 1), (r, a) => a.CreatedTime <= devicedefault.searchTime[1]); List deviceRepair_list= Context.Queryable() .LeftJoin((r, a) => r.FkDeviceId == a.Id) .Where(predicate.ToExpression()) .Select((r,a)=>r).ToList(); var TypeGroups= deviceRepair_list.GroupBy(it => it.Type); foreach(var group in TypeGroups) { DeviceStatusAnalysisResultDto result=new DeviceStatusAnalysisResultDto(); result.name = group.Key; result.value = group.Count(); resultList.Add(result); } return resultList; } } }