public List <Customer> GetAll() { return(_customerReposity.GetAll().AsNoTracking().ToList()); }
public List <BarChartDto> GetAssCustomerAnalysisChart(QueryAssCusandVenAnalysisInputDto inputDto) { var types = (from type1 in SMOWMSDbContext.AssetsTypes where type1.TLEVEL == 1 select new { Level1 = type1.TYPEID, Level2 = "", Level3 = "" }).Union(from type1 in SMOWMSDbContext.AssetsTypes where type1.TLEVEL == 2 select new { Level1 = type1.PARENTTYPEID, Level2 = type1.TYPEID, Level3 = "" }).Union(from type1 in SMOWMSDbContext.AssetsTypes join type2 in SMOWMSDbContext.AssetsTypes on type1.PARENTTYPEID equals type2.TYPEID where type1.TLEVEL == 3 select new { Level1 = type2.PARENTTYPEID, Level2 = type1.PARENTTYPEID, Level3 = type1.TYPEID }); var customerlist = _customerReposity.GetAll(); if (inputDto.ID != null) { customerlist = customerlist.Where(a => a.CUSID == inputDto.ID); } var poRowResult = from assTemplate in SMOWMSDbContext.AssTemplates from type in types from type2 in SMOWMSDbContext.AssetsTypes join sorow in SMOWMSDbContext.AssSalesOrderRows on assTemplate.TEMPLATEID equals sorow.TEMPLATEID from customer in customerlist from so in SMOWMSDbContext.AssSalesOrders where ((assTemplate.TYPEID == type.Level1 && type.Level2 == "") || (assTemplate.TYPEID == type.Level2 && type.Level3 == "") || assTemplate.TYPEID == type.Level3) && sorow.CREATEDATE >= inputDto.StarTime && sorow.CREATEDATE <= inputDto.EndTime && so.STATUS > 0 && assTemplate.TEMPLATEID == sorow.TEMPLATEID && so.CUSID == customer.CUSID && type.Level1 == type2.TYPEID && so.SOID == sorow.SOID select new BarChartDto() { XValue = type2.NAME, Series = customer.NAME, YValue = sorow.QUANTSALED }; var poRowfresult = from assQuantDto in poRowResult group assQuantDto by new { assQuantDto.XValue, assQuantDto.Series, } into quant select new BarChartDto() { XValue = quant.Key.XValue, Series = quant.Key.Series, YValue = quant.Sum(a => a.YValue) }; var t3 = poRowfresult.ToList(); var t4 = new List <BarChartDto>(); if (inputDto.ID == null) { //如果是全部,则需要补全数量为0的项 //得到所有需要显示的一级资产类型 var allLevel1 = from assTemplate in SMOWMSDbContext.AssTemplates from type in types from type2 in SMOWMSDbContext.AssetsTypes join sorow in SMOWMSDbContext.AssSalesOrderRows on assTemplate.TEMPLATEID equals sorow.TEMPLATEID from customer in customerlist from so in SMOWMSDbContext.AssSalesOrders where ((assTemplate.TYPEID == type.Level1 && type.Level2 == "") || (assTemplate.TYPEID == type.Level2 && type.Level3 == "") || assTemplate.TYPEID == type.Level3) && sorow.CREATEDATE >= inputDto.StarTime && sorow.CREATEDATE <= inputDto.EndTime && sorow.STATUS > 0 && assTemplate.TEMPLATEID == sorow.TEMPLATEID && so.CUSID == customer.CUSID && type.Level1 == type2.TYPEID && so.SOID == sorow.SOID select type2.NAME; List <string> typeList = allLevel1.ToList(); //得到符合条件的供应商列表 var allCustomer = from assTemplate in SMOWMSDbContext.AssTemplates from type in types from type2 in SMOWMSDbContext.AssetsTypes join sorow in SMOWMSDbContext.AssSalesOrderRows on assTemplate.TEMPLATEID equals sorow.TEMPLATEID from customer in customerlist from so in SMOWMSDbContext.AssSalesOrders where ((assTemplate.TYPEID == type.Level1 && type.Level2 == "") || (assTemplate.TYPEID == type.Level2 && type.Level3 == "") || assTemplate.TYPEID == type.Level3) && sorow.CREATEDATE >= inputDto.StarTime && sorow.CREATEDATE <= inputDto.EndTime && sorow.STATUS > 0 && assTemplate.TEMPLATEID == sorow.TEMPLATEID && so.CUSID == customer.CUSID && type.Level1 == type2.TYPEID && so.SOID == sorow.SOID select customer.NAME; List <string> CusLists = allCustomer.ToList(); foreach (var customer in CusLists) { foreach (var tp in typeList) { var row = t3.Find(a => a.XValue == tp && a.Series == customer); if (row == null) { BarChartDto dto = new BarChartDto { XValue = tp, Series = customer, YValue = 0 }; t4.Add(dto); } else { t4.Add(row); } } } } else { t4 = t3; } return(t4); }