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;
}
}
}