Пример #1
0
 public List <Customer> GetAll()
 {
     return(_customerReposity.GetAll().AsNoTracking().ToList());
 }
Пример #2
0
        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);
        }