/// <summary> /// Add data to cache. /// </summary> private List <Report108Entity> AddDataToCache() { var userData = UserData; var cacheKey = WebUtility.GetCacheKeyName(userData, "kpi-report-108"); HttpRuntime.Cache.Remove(cacheKey); var lscs = new List <LscUserInfo>(); if (LscsComboBox.SelectedIndex > 0) { var ids = WebUtility.ItemSplit(LscsComboBox.SelectedItem.Value); if (ids.Length != 2) { return(null); } var lscId = Int32.Parse(ids[0]); var groupId = Int32.Parse(ids[1]); var lscUser = userData.LscUsers.Find(lu => { return(lu.LscID == lscId); }); if (lscUser == null) { return(null); } lscs.Add(lscUser); } else { lscs.AddRange(userData.LscUsers); } var fromTime = DateTime.Parse(BeginFromDate.Text); var toTime = DateTime.Parse(BeginToDate.Text); var alarmNames = new Dictionary <Int32, String>(); foreach (var item in AlarmNameMultiCombo.SelectedItems) { alarmNames[Convert.ToInt32(item.Value)] = item.Text; } if (alarmNames.Count == 0) { return(null); } var split = ";"; var alarmIds = String.Join(split, alarmNames.Select(n => n.Key.ToString()).ToArray()); var otherEntity = new BOther(); var alarmEntity = new BAlarm(); var result = new List <Report108Entity>(); foreach (var lsc in lscs) { var stations = otherEntity.GetStations(lsc.LscID, lsc.Group.GroupID).FindAll(s => s.BuildingID != WebUtility.DefaultInt32); if (Area2ComboBox.SelectedIndex > 0) { var area2Id = Int32.Parse(Area2ComboBox.SelectedItem.Value); stations = stations.FindAll(s => s.Area2ID == area2Id); } if (Area3ComboBox.SelectedIndex > 0) { var area3Id = Int32.Parse(Area3ComboBox.SelectedItem.Value); stations = stations.FindAll(s => s.Area3ID == area3Id); } if (stations.Count == 0) { continue; } var fsuCnt = otherEntity.GetStationFSUCnt(lsc.LscID, lsc.Group.GroupID, alarmIds, split); var alarms = WebUtility.GetUserAlarms(userData).FindAll(alarm => alarm.LscID == lsc.LscID && alarm.StartTime >= fromTime && alarm.StartTime <= toTime && alarmNames.ContainsKey(alarm.AlarmID)); alarms.AddRange(alarmEntity.GetHisAlarms(lsc.LscID, lsc.LscName, userData.StandardProtocol, lsc.Group.GroupNodes, fromTime, toTime).FindAll(alarm => { return(alarmNames.ContainsKey(alarm.AlarmID)); })); var staWam = from alarm in alarms group alarm by new { alarm.LscID, alarm.StaName } into g select new { LscID = g.Key.LscID, StaName = g.Key.StaName, Alarms = g }; var staWfa = from sn in stations join fc in fsuCnt on new { sn.LscID, sn.StaID } equals new { fc.LscID, fc.StaID } into lt1 from fs in lt1.DefaultIfEmpty() join sw in staWam on new { sn.LscID, sn.StaName } equals new { sw.LscID, sw.StaName } into lt2 from ws in lt2.DefaultIfEmpty() select new { Station = sn, FSUCnt = fs != null ? fs.AICnt + fs.AOCnt + fs.DICnt + fs.DOCnt : 0, Alarms = ws != null?ws.Alarms.ToList() : new List <AlarmInfo>() }; result.AddRange(from sf in staWfa group sf by new { sf.Station.LscID, sf.Station.Area3ID, sf.Station.BuildingID } into g orderby g.Key.LscID, g.Key.Area3ID, g.Key.BuildingID select new Report108Entity { Station = g.First().Station, BeginTime = fromTime, EndTime = toTime, FSUCnt = g.Sum(f => f.FSUCnt), Alarms = g.SelectMany(a => a.Alarms).ToList() }); } int cacheDuration = Int32.Parse(WebConfigurationManager.AppSettings["DefaultCacheDuration"]); HttpRuntime.Cache.Insert(cacheKey, result, null, Cache.NoAbsoluteExpiration, TimeSpan.FromSeconds(cacheDuration), CacheItemPriority.Default, null); return(result); }
/// <summary> /// Add data to cache. /// </summary> private List <Report005Entity> AddDataToCache() { var userData = UserData; var cacheKey = WebUtility.GetCacheKeyName(userData, "kpi-report-005"); HttpRuntime.Cache.Remove(cacheKey); var lscs = new List <LscUserInfo>(); if (LscsComboBox.SelectedIndex > 0) { var ids = WebUtility.ItemSplit(LscsComboBox.SelectedItem.Value); if (ids.Length == 2) { var lscId = Int32.Parse(ids[0]); var groupId = Int32.Parse(ids[1]); var lscUser = userData.LscUsers.Find(lu => { return(lu.LscID == lscId); }); if (lscUser != null) { lscs.Add(lscUser); } } } else { lscs.AddRange(userData.LscUsers); } if (lscs.Count == 0) { return(null); } var staTypes = new Dictionary <Int32, String>(); foreach (var dt in StaTypeMultiCombo.SelectedItems) { staTypes[Int32.Parse(dt.Value)] = dt.Text; } if (staTypes.Count == 0) { return(null); } var fromTime = DateTime.Parse(BeginFromDate.Text); var toTime = DateTime.Parse(BeginToDate.Text); var alarmNames = new Dictionary <Int32, String>(); foreach (var item in AlarmNameMultiCombo.SelectedItems) { alarmNames[Convert.ToInt32(item.Value)] = item.Text; } if (alarmNames.Count == 0) { return(null); } var split = ";"; var alarmIds = String.Join(split, alarmNames.Select(n => n.Key.ToString()).ToArray()); var alarmEntity = new BAlarm(); var otherEntity = new BOther(); var result = new List <Report005Entity>(); foreach (var lsc in lscs) { var fsuCnt = otherEntity.GetStationFSUCnt(lsc.LscID, lsc.Group.GroupID, alarmIds, split).FindAll(fc => staTypes.ContainsKey(fc.StaTypeID)); var alarms = WebUtility.GetUserAlarms(userData).FindAll(alarm => alarm.LscID == lsc.LscID && alarm.StartTime >= fromTime && alarm.StartTime <= toTime && alarmNames.ContainsKey(alarm.AlarmID) && string.IsNullOrEmpty(alarm.ProjName)); alarms.AddRange(alarmEntity.GetHisAlarms(lsc.LscID, lsc.LscName, userData.StandardProtocol, lsc.Group.GroupNodes, fromTime, toTime).FindAll(alarm => { return(alarmNames.ContainsKey(alarm.AlarmID) && string.IsNullOrEmpty(alarm.ProjName)); })); var temp = from alarm in alarms join fct in fsuCnt on alarm.StaName equals fct.StaName select alarm; result.Add(new Report005Entity() { LscID = lsc.LscID, LscName = lsc.LscName, BeginTime = fromTime, EndTime = toTime, FSUCnt = fsuCnt.Sum(fc => fc.AICnt + fc.AOCnt + fc.DICnt + fc.DOCnt), Alarms = temp.ToList() }); } if (result.Count > 0) { result.Add(new Report005Entity { LscID = -100, LscName = "汇总(平均值)", BeginTime = fromTime, EndTime = toTime, FSUCnt = 0, Alarms = new List <AlarmInfo>() }); } int cacheDuration = Int32.Parse(WebConfigurationManager.AppSettings["DefaultCacheDuration"]); HttpRuntime.Cache.Insert(cacheKey, result, null, Cache.NoAbsoluteExpiration, TimeSpan.FromSeconds(cacheDuration), CacheItemPriority.Default, null); return(result); }