private void Bind() { try { string wareId = btnWare == null ? "" : btnWare.Tag.ToString(); string typeId = btnType == null ? "" : btnType.Tag.ToString(); QueryAssQuantInputDto inputDto = new QueryAssQuantInputDto { WAREID = wareId, TYPEID = typeId }; var chartInfo = _autofacConfig.AssAnalysisService.GetAssQuantChart(inputDto); bc.DataSource = chartInfo; bc.DataBind(); var rows = _autofacConfig.AssAnalysisService.GetAssQuant(inputDto); lv.DataSource = rows; lv.DataBind(); } catch (Exception ex) { Toast(ex.Message); } }
public List <AssQuantDto> GetAssQuantChart(QueryAssQuantInputDto inputDto) { var asset = _assetsRepository.GetAll().Where(a => a.ISINWAREHOUSE == 1); if (!string.IsNullOrEmpty(inputDto.WAREID)) { asset = asset.Where(a => a.WAREID == inputDto.WAREID); } 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 typelist = types; if (!string.IsNullOrEmpty(inputDto.TYPEID)) { typelist = typelist.Where(a => a.Level1 == inputDto.TYPEID); } var result = from assetse in asset from assTemplate in SMOWMSDbContext.AssTemplates from type in typelist from type1 in SMOWMSDbContext.AssetsTypes join wareHouse in SMOWMSDbContext.WareHouses on assetse.WAREID equals wareHouse.WAREID where assetse.TEMPLATEID == assTemplate.TEMPLATEID && ((assTemplate.TYPEID == type.Level1 && type.Level2 == "") || (assTemplate.TYPEID == type.Level2 && type.Level3 == "") || assTemplate.TYPEID == type.Level3) && type.Level1 == type1.TYPEID select new AssQuantDto() { WARENAME = wareHouse.NAME, TYPENAME = type1.NAME, QUANT = 1 }; var fresult = from assQuantDto in result group assQuantDto by new { assQuantDto.WARENAME, assQuantDto.TYPENAME } into quant select new AssQuantDto() { WARENAME = quant.Key.WARENAME, TYPENAME = quant.Key.TYPENAME, QUANT = quant.Count() }; var quantlist = fresult.ToList(); var all = new List <AssQuantDto>(); if (string.IsNullOrEmpty(inputDto.TYPEID) && string.IsNullOrEmpty(inputDto.WAREID)) { //如果是全部,则需要补全行项为0的项 var warelist = from assetse in asset from assTemplate in SMOWMSDbContext.AssTemplates from type in typelist from type1 in SMOWMSDbContext.AssetsTypes join wareHouse in SMOWMSDbContext.WareHouses on assetse.WAREID equals wareHouse.WAREID where assetse.TEMPLATEID == assTemplate.TEMPLATEID && ((assTemplate.TYPEID == type.Level1 && type.Level2 == "") || (assTemplate.TYPEID == type.Level2 && type.Level3 == "") || assTemplate.TYPEID == type.Level3) && type.Level1 == type1.TYPEID select wareHouse.NAME; var typelists = from assetse in asset from assTemplate in SMOWMSDbContext.AssTemplates from type in typelist from type1 in SMOWMSDbContext.AssetsTypes join wareHouse in SMOWMSDbContext.WareHouses on assetse.WAREID equals wareHouse.WAREID where assetse.TEMPLATEID == assTemplate.TEMPLATEID && ((assTemplate.TYPEID == type.Level1 && type.Level2 == "") || (assTemplate.TYPEID == type.Level2 && type.Level3 == "") || assTemplate.TYPEID == type.Level3) && type.Level1 == type1.TYPEID select type1.NAME; foreach (var ware in warelist.ToList()) { foreach (var tp in typelists.ToList()) { var row = quantlist.Find(a => a.TYPENAME == tp && a.WARENAME == ware); if (row == null) { AssQuantDto dto = new AssQuantDto { TYPENAME = tp, WARENAME = ware, QUANT = 0 }; all.Add(dto); } else { all.Add(row); } } } } else { all = quantlist; } return(all.ToList()); }
public List <AssQuantDto> GetAssQuant(QueryAssQuantInputDto inputDto) { var asset = _assetsRepository.GetAll().Where(a => a.ISINWAREHOUSE == 1); if (!string.IsNullOrEmpty(inputDto.WAREID)) { asset = asset.Where(a => a.WAREID == inputDto.WAREID); } 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 typelist = types; if (!string.IsNullOrEmpty(inputDto.TYPEID)) { typelist = typelist.Where(a => a.Level1 == inputDto.TYPEID); } var result = from assetse in asset from assTemplate in SMOWMSDbContext.AssTemplates from type in typelist from type1 in SMOWMSDbContext.AssetsTypes join wareHouse in SMOWMSDbContext.WareHouses on assetse.WAREID equals wareHouse.WAREID where assetse.TEMPLATEID == assTemplate.TEMPLATEID && ((assTemplate.TYPEID == type.Level1 && type.Level2 == "") || (assTemplate.TYPEID == type.Level2 && type.Level3 == "") || assTemplate.TYPEID == type.Level3) && type.Level1 == type1.TYPEID select new AssQuantDto() { IMAGE = assTemplate.IMAGE, NAME = assTemplate.NAME, TEMPLATEID = assTemplate.TEMPLATEID, WARENAME = wareHouse.NAME, TYPENAME = type1.NAME, QUANT = 1 }; var fresult = from assQuantDto in result group assQuantDto by new { assQuantDto.TEMPLATEID, assQuantDto.IMAGE, assQuantDto.NAME, assQuantDto.WARENAME, assQuantDto.TYPENAME } into quant select new AssQuantDto() { IMAGE = quant.Key.IMAGE, NAME = quant.Key.NAME, TEMPLATEID = quant.Key.TEMPLATEID, WARENAME = quant.Key.WARENAME, TYPENAME = quant.Key.TYPENAME, QUANT = quant.Count() }; return(fresult.ToList()); }