Esempio n. 1
0
        /// <summary>
        /// Add Data To Cache
        /// </summary>
        private DataTable AddDataToCache()
        {
            var userData  = UserData;
            var cacheKey1 = WebUtility.GetCacheKeyName(userData, "dev-alarm-source1");
            var cacheKey2 = WebUtility.GetCacheKeyName(userData, "dev-alarm-source2");
            var cacheKey3 = WebUtility.GetCacheKeyName(userData, "dev-alarm-source3");

            HttpRuntime.Cache.Remove(cacheKey1);
            HttpRuntime.Cache.Remove(cacheKey2);
            HttpRuntime.Cache.Remove(cacheKey3);

            if (String.IsNullOrEmpty(CountItemField.RawValue.ToString()))
            {
                return(null);
            }
            var values      = WebUtility.StringSplit(CountItemField.RawValue.ToString());
            var beginTime   = Convert.ToDateTime(BeginFromDate.Text);
            var endTime     = Convert.ToDateTime(BeginToDate.Text);
            var minInterval = MinNumberField.Number;
            var maxInterval = MaxNumberField.Number;

            if (maxInterval == 0)
            {
                maxInterval = int.MaxValue;
            }

            var levels  = new Dictionary <Int32, String>();
            var devtyps = new Dictionary <Int32, String>();
            var almIds  = new Dictionary <Int32, String>();
            var prdors  = new List <String>();

            if (AlarmLevelMultiCombo.SelectedItems.Count == 0)
            {
                return(null);
            }
            for (int i = 0; i < AlarmLevelMultiCombo.SelectedItems.Count; i++)
            {
                var key   = Int32.Parse(AlarmLevelMultiCombo.SelectedItems[i].Value);
                var value = AlarmLevelMultiCombo.SelectedItems[i].Text;
                levels[key] = value;
            }

            if (DevTypeMultiCombo.SelectedItems.Count > 0)
            {
                for (int i = 0; i < DevTypeMultiCombo.SelectedItems.Count; i++)
                {
                    var key   = Int32.Parse(DevTypeMultiCombo.SelectedItems[i].Value);
                    var value = DevTypeMultiCombo.SelectedItems[i].Text;
                    devtyps[key] = value;
                }
            }

            var text1 = AlarmNameDropDownField.Text.Trim();

            if (text1 != "")
            {
                var names = WebUtility.StringSplit(text1);
                for (int i = 0; i < names.Length; i++)
                {
                    almIds[Int32.Parse(names[i])] = null;
                }
            }

            var text2 = ProductorText.Text.Trim();

            if (text2 != "")
            {
                prdors.AddRange(WebUtility.StringSplit(text2));
            }

            var colcnt    = MainGridPanel.ColumnModel.Columns.Count;
            var countType = CountTypeComboBox.SelectedItem.Value;
            var condition = new List <GroupTreeInfo>();
            var source1   = CreateCustomizeTable(colcnt);
            var source2   = new Dictionary <String, List <AlarmInfo> >();
            var source3   = new Dictionary <String, List <DeviceInfo> >();

            var total1 = new List <AlarmInfo>();
            var total2 = new List <DeviceInfo>();

            if (countType.Equals("0"))
            {
                #region Lsc
                foreach (var v in values)
                {
                    var ids = WebUtility.ItemSplit(v);
                    if (ids.Length != 5)
                    {
                        continue;
                    }

                    var lscId       = Int32.Parse(ids[0]);
                    var groupId     = Int32.Parse(ids[1]);
                    var nodeId      = Int32.Parse(ids[2]);
                    var nodeType    = Int32.Parse(ids[3]);
                    var remark      = ids[4];
                    var enmNodeType = Enum.IsDefined(typeof(EnmNodeType), nodeType) ? (EnmNodeType)nodeType : EnmNodeType.Null;
                    if (enmNodeType == EnmNodeType.LSC)
                    {
                        condition.Add(new GroupTreeInfo()
                        {
                            LscID    = lscId,
                            GroupID  = groupId,
                            NodeID   = nodeId,
                            NodeType = enmNodeType,
                            Remark   = remark
                        });
                    }
                }

                var ls = from c in condition
                         group c by new { c.LscID } into g
                    select new { g.Key.LscID };

                foreach (var l in ls)
                {
                    var lscUser = userData.LscUsers.Find(lu => { return(lu.LscID == l.LscID); });
                    if (lscUser == null)
                    {
                        continue;
                    }

                    var alarms = new BAlarm().GetHisAlarms(lscUser.LscID, lscUser.LscName, userData.StandardProtocol, lscUser.Group.GroupNodes, beginTime, endTime).FindAll(a => {
                        var interval = a.EndTime.Subtract(a.StartTime).TotalMinutes;
                        return(interval >= minInterval && interval <= maxInterval);
                    });
                    if (levels.Count > 0)
                    {
                        alarms = alarms.FindAll(a => levels.ContainsKey((Int32)a.AlarmLevel));
                    }
                    if (almIds.Count > 0)
                    {
                        alarms = alarms.FindAll(a => almIds.ContainsKey(a.AlarmID));
                    }

                    var devices = new BOther().GetDevices(lscUser.LscID, lscUser.Group.GroupID);
                    if (devtyps.Count > 0)
                    {
                        devices = devices.FindAll(d => devtyps.ContainsKey(d.DevTypeID));
                    }
                    if (prdors.Count > 0)
                    {
                        devices = devices.FindAll(d => WebUtility.Contain(d.ProdName, prdors.ToArray()));
                    }

                    var temp1 = from alm in alarms
                                join dev in devices on WebUtility.GetDevID(alm.NodeID) equals dev.DevID
                                select new {
                        Device = dev,
                        Alarm  = alm
                    };

                    var temp2 = (from t in temp1
                                 group t by new { t.Device.DevTypeID, t.Device.ProdID, t.Alarm.AlarmID } into g
                                 select new {
                        DevTypeID = g.Key.DevTypeID,
                        DevTypeName = g.First().Device.DevTypeName,
                        ProdID = g.Key.ProdID,
                        ProdName = g.First().Device.ProdName,
                        AlarmID = g.Key.AlarmID,
                        AlarmName = g.First().Alarm.AlarmName,
                        Alarms = g.Select(a => a.Alarm).ToList(),
                        Devices = g.Select(a => a.Device).Distinct().ToList()
                    }).ToList();

                    for (var i = 0; i < temp2.Count; i++)
                    {
                        var dr = source1.NewRow();
                        dr[1] = lscUser.LscName;
                        dr[2] = temp2[i].DevTypeName;
                        dr[3] = temp2[i].ProdName;
                        dr[4] = temp2[i].AlarmName;
                        dr[5] = temp2[i].Alarms.Count;
                        dr[6] = temp2[i].Devices.Count;
                        dr[7] = WebUtility.GetDateTimeFromSec(temp2[i].Alarms.Sum(a => a.EndTime.Subtract(a.StartTime).TotalSeconds));

                        source2[String.Format("{0}-{1}", source1.Rows.Count, source1.Columns[5].ColumnName)] = temp2[i].Alarms;
                        source3[String.Format("{0}-{1}", source1.Rows.Count, source1.Columns[6].ColumnName)] = temp2[i].Devices;
                        source1.Rows.Add(dr);

                        total1.AddRange(temp2[i].Alarms);
                        total2.AddRange(temp2[i].Devices);
                    }
                }

                if (total1.Count > 0)
                {
                    var dr = source1.NewRow();
                    dr[1] = "总计";
                    dr[2] = "--";
                    dr[3] = "--";
                    dr[4] = "--";
                    dr[5] = total1.Count;
                    dr[6] = total2.Count;
                    dr[7] = WebUtility.GetDateTimeFromSec(total1.Sum(a => a.EndTime.Subtract(a.StartTime).TotalSeconds));

                    source2[String.Format("{0}-{1}", source1.Rows.Count, source1.Columns[5].ColumnName)] = total1;
                    source3[String.Format("{0}-{1}", source1.Rows.Count, source1.Columns[6].ColumnName)] = total2;
                    source1.Rows.Add(dr);
                }
                #endregion
            }
            else if (countType.Equals("1"))
            {
                #region Area=2
                foreach (var v in values)
                {
                    var ids = WebUtility.ItemSplit(v);
                    if (ids.Length != 5)
                    {
                        continue;
                    }

                    var lscId       = Int32.Parse(ids[0]);
                    var groupId     = Int32.Parse(ids[1]);
                    var nodeId      = Int32.Parse(ids[2]);
                    var nodeType    = Int32.Parse(ids[3]);
                    var remark      = ids[4];
                    var enmNodeType = Enum.IsDefined(typeof(EnmNodeType), nodeType) ? (EnmNodeType)nodeType : EnmNodeType.Null;
                    if (enmNodeType == EnmNodeType.Area && remark.Equals("2"))
                    {
                        condition.Add(new GroupTreeInfo()
                        {
                            LscID    = lscId,
                            GroupID  = groupId,
                            NodeID   = nodeId,
                            NodeType = enmNodeType,
                            Remark   = remark
                        });
                    }
                }

                var ls = from c in condition
                         group c by new { c.LscID } into g
                    select new { g.Key.LscID };

                foreach (var l in ls)
                {
                    var lscUser = userData.LscUsers.Find(lu => { return(lu.LscID == l.LscID); });
                    if (lscUser == null)
                    {
                        continue;
                    }

                    var alarms = new BAlarm().GetHisAlarms(lscUser.LscID, lscUser.LscName, userData.StandardProtocol, lscUser.Group.GroupNodes, beginTime, endTime).FindAll(a => {
                        var interval = a.EndTime.Subtract(a.StartTime).TotalMinutes;
                        return(interval >= minInterval && interval <= maxInterval);
                    });
                    if (levels.Count > 0)
                    {
                        alarms = alarms.FindAll(a => levels.ContainsKey((Int32)a.AlarmLevel));
                    }
                    if (almIds.Count > 0)
                    {
                        alarms = alarms.FindAll(a => almIds.ContainsKey(a.AlarmID));
                    }

                    var devices = new BOther().GetDevices(lscUser.LscID, lscUser.Group.GroupID);
                    if (devtyps.Count > 0)
                    {
                        devices = devices.FindAll(d => devtyps.ContainsKey(d.DevTypeID));
                    }
                    if (prdors.Count > 0)
                    {
                        devices = devices.FindAll(d => WebUtility.Contain(d.ProdName, prdors.ToArray()));
                    }

                    var temp1 = from alm in alarms
                                join dev in devices on WebUtility.GetDevID(alm.NodeID) equals dev.DevID
                                select new {
                        Device = dev,
                        Alarm  = alm
                    };

                    var areas = from a in new BOther().GetAreas(lscUser.LscID, lscUser.Group.GroupID, 2)
                                join c in condition on new { a.LscID, a.Area2ID } equals new { c.LscID, Area2ID = c.NodeID }
                    select a;

                    foreach (var area in areas)
                    {
                        var temp2 = temp1.Where(a => a.Device.Area2ID == area.Area2ID);
                        if (temp2.Any())
                        {
                            var temp3 = (from t in temp2
                                         group t by new { t.Device.DevTypeID, t.Device.ProdID, t.Alarm.AlarmID } into g
                                         select new {
                                DevTypeID = g.Key.DevTypeID,
                                DevTypeName = g.First().Device.DevTypeName,
                                ProdID = g.Key.ProdID,
                                ProdName = g.First().Device.ProdName,
                                AlarmID = g.Key.AlarmID,
                                AlarmName = g.First().Alarm.AlarmName,
                                Alarms = g.Select(a => a.Alarm).ToList(),
                                Devices = g.Select(a => a.Device).Distinct().ToList()
                            }).ToList();

                            for (var i = 0; i < temp3.Count; i++)
                            {
                                var dr = source1.NewRow();
                                dr[1] = area.LscName;
                                dr[2] = area.Area2Name;
                                dr[3] = temp3[i].DevTypeName;
                                dr[4] = temp3[i].ProdName;
                                dr[5] = temp3[i].AlarmName;
                                dr[6] = temp3[i].Alarms.Count;
                                dr[7] = temp3[i].Devices.Count;
                                dr[8] = WebUtility.GetDateTimeFromSec(temp3[i].Alarms.Sum(a => a.EndTime.Subtract(a.StartTime).TotalSeconds));

                                source2[String.Format("{0}-{1}", source1.Rows.Count, source1.Columns[6].ColumnName)] = temp3[i].Alarms;
                                source3[String.Format("{0}-{1}", source1.Rows.Count, source1.Columns[7].ColumnName)] = temp3[i].Devices;
                                source1.Rows.Add(dr);

                                total1.AddRange(temp3[i].Alarms);
                                total2.AddRange(temp3[i].Devices);
                            }
                        }
                    }
                }

                if (total1.Count > 0)
                {
                    var dr = source1.NewRow();
                    dr[1] = "总计";
                    dr[2] = "--";
                    dr[3] = "--";
                    dr[4] = "--";
                    dr[5] = "--";
                    dr[6] = total1.Count;
                    dr[7] = total2.Count;
                    dr[8] = WebUtility.GetDateTimeFromSec(total1.Sum(a => a.EndTime.Subtract(a.StartTime).TotalSeconds));

                    source2[String.Format("{0}-{1}", source1.Rows.Count, source1.Columns[6].ColumnName)] = total1;
                    source3[String.Format("{0}-{1}", source1.Rows.Count, source1.Columns[7].ColumnName)] = total2;
                    source1.Rows.Add(dr);
                }
                #endregion
            }
            else if (countType.Equals("2"))
            {
                #region Area=3
                foreach (var v in values)
                {
                    var ids = WebUtility.ItemSplit(v);
                    if (ids.Length != 5)
                    {
                        continue;
                    }

                    var lscId       = Int32.Parse(ids[0]);
                    var groupId     = Int32.Parse(ids[1]);
                    var nodeId      = Int32.Parse(ids[2]);
                    var nodeType    = Int32.Parse(ids[3]);
                    var remark      = ids[4];
                    var enmNodeType = Enum.IsDefined(typeof(EnmNodeType), nodeType) ? (EnmNodeType)nodeType : EnmNodeType.Null;
                    if (enmNodeType == EnmNodeType.Area && remark.Equals("3"))
                    {
                        condition.Add(new GroupTreeInfo()
                        {
                            LscID    = lscId,
                            GroupID  = groupId,
                            NodeID   = nodeId,
                            NodeType = enmNodeType,
                            Remark   = remark
                        });
                    }
                }

                var ls = from c in condition
                         group c by new { c.LscID } into g
                    select new { g.Key.LscID };

                foreach (var l in ls)
                {
                    var lscUser = userData.LscUsers.Find(lu => { return(lu.LscID == l.LscID); });
                    if (lscUser == null)
                    {
                        continue;
                    }

                    var alarms = new BAlarm().GetHisAlarms(lscUser.LscID, lscUser.LscName, userData.StandardProtocol, lscUser.Group.GroupNodes, beginTime, endTime).FindAll(a => {
                        var interval = a.EndTime.Subtract(a.StartTime).TotalMinutes;
                        return(interval >= minInterval && interval <= maxInterval);
                    });
                    if (levels.Count > 0)
                    {
                        alarms = alarms.FindAll(a => levels.ContainsKey((Int32)a.AlarmLevel));
                    }
                    if (almIds.Count > 0)
                    {
                        alarms = alarms.FindAll(a => almIds.ContainsKey(a.AlarmID));
                    }

                    var devices = new BOther().GetDevices(lscUser.LscID, lscUser.Group.GroupID);
                    if (devtyps.Count > 0)
                    {
                        devices = devices.FindAll(d => devtyps.ContainsKey(d.DevTypeID));
                    }
                    if (prdors.Count > 0)
                    {
                        devices = devices.FindAll(d => WebUtility.Contain(d.ProdName, prdors.ToArray()));
                    }

                    var temp1 = from alm in alarms
                                join dev in devices on WebUtility.GetDevID(alm.NodeID) equals dev.DevID
                                select new {
                        Device = dev,
                        Alarm  = alm
                    };

                    var areas = from a in new BOther().GetAreas(lscUser.LscID, lscUser.Group.GroupID, 3)
                                join c in condition on new { a.LscID, a.Area3ID } equals new { c.LscID, Area3ID = c.NodeID }
                    select a;

                    foreach (var area in areas)
                    {
                        var temp2 = temp1.Where(a => a.Device.Area3ID == area.Area3ID);
                        if (temp2.Any())
                        {
                            var temp3 = (from t in temp2
                                         group t by new { t.Device.DevTypeID, t.Device.ProdID, t.Alarm.AlarmID } into g
                                         select new {
                                DevTypeID = g.Key.DevTypeID,
                                DevTypeName = g.First().Device.DevTypeName,
                                ProdID = g.Key.ProdID,
                                ProdName = g.First().Device.ProdName,
                                AlarmID = g.Key.AlarmID,
                                AlarmName = g.First().Alarm.AlarmName,
                                Alarms = g.Select(a => a.Alarm).ToList(),
                                Devices = g.Select(a => a.Device).Distinct().ToList()
                            }).ToList();

                            for (var i = 0; i < temp3.Count; i++)
                            {
                                var dr = source1.NewRow();
                                dr[1] = area.LscName;
                                dr[2] = area.Area2Name;
                                dr[3] = area.Area3Name;
                                dr[4] = temp3[i].DevTypeName;
                                dr[5] = temp3[i].ProdName;
                                dr[6] = temp3[i].AlarmName;
                                dr[7] = temp3[i].Alarms.Count;
                                dr[8] = temp3[i].Devices.Count;
                                dr[9] = WebUtility.GetDateTimeFromSec(temp3[i].Alarms.Sum(a => a.EndTime.Subtract(a.StartTime).TotalSeconds));

                                source2[String.Format("{0}-{1}", source1.Rows.Count, source1.Columns[7].ColumnName)] = temp3[i].Alarms;
                                source3[String.Format("{0}-{1}", source1.Rows.Count, source1.Columns[8].ColumnName)] = temp3[i].Devices;
                                source1.Rows.Add(dr);

                                total1.AddRange(temp3[i].Alarms);
                                total2.AddRange(temp3[i].Devices);
                            }
                        }
                    }
                }

                if (total1.Count > 0)
                {
                    var dr = source1.NewRow();
                    dr[1] = "总计";
                    dr[2] = "--";
                    dr[3] = "--";
                    dr[4] = "--";
                    dr[5] = "--";
                    dr[6] = "--";
                    dr[7] = total1.Count;
                    dr[8] = total2.Count;
                    dr[9] = WebUtility.GetDateTimeFromSec(total1.Sum(a => a.EndTime.Subtract(a.StartTime).TotalSeconds));

                    source2[String.Format("{0}-{1}", source1.Rows.Count, source1.Columns[7].ColumnName)] = total1;
                    source3[String.Format("{0}-{1}", source1.Rows.Count, source1.Columns[8].ColumnName)] = total2;
                    source1.Rows.Add(dr);
                }
                #endregion
            }
            else if (countType.Equals("3"))
            {
                #region Station
                foreach (var v in values)
                {
                    var ids = WebUtility.ItemSplit(v);
                    if (ids.Length != 5)
                    {
                        continue;
                    }

                    var lscId       = Int32.Parse(ids[0]);
                    var groupId     = Int32.Parse(ids[1]);
                    var nodeId      = Int32.Parse(ids[2]);
                    var nodeType    = Int32.Parse(ids[3]);
                    var remark      = ids[4];
                    var enmNodeType = Enum.IsDefined(typeof(EnmNodeType), nodeType) ? (EnmNodeType)nodeType : EnmNodeType.Null;
                    if (enmNodeType == EnmNodeType.Area && remark.Equals("3"))
                    {
                        condition.Add(new GroupTreeInfo()
                        {
                            LscID    = lscId,
                            GroupID  = groupId,
                            NodeID   = nodeId,
                            NodeType = enmNodeType,
                            Remark   = remark
                        });
                    }
                }

                var ls = from c in condition
                         group c by new { c.LscID } into g
                    select new { g.Key.LscID };

                foreach (var l in ls)
                {
                    var lscUser = userData.LscUsers.Find(lu => { return(lu.LscID == l.LscID); });
                    if (lscUser == null)
                    {
                        continue;
                    }

                    var alarms = new BAlarm().GetHisAlarms(lscUser.LscID, lscUser.LscName, userData.StandardProtocol, lscUser.Group.GroupNodes, beginTime, endTime).FindAll(a => {
                        var interval = a.EndTime.Subtract(a.StartTime).TotalMinutes;
                        return(interval >= minInterval && interval <= maxInterval);
                    });
                    if (levels.Count > 0)
                    {
                        alarms = alarms.FindAll(a => levels.ContainsKey((Int32)a.AlarmLevel));
                    }
                    if (almIds.Count > 0)
                    {
                        alarms = alarms.FindAll(a => almIds.ContainsKey(a.AlarmID));
                    }

                    var devices = new BOther().GetDevices(lscUser.LscID, lscUser.Group.GroupID);
                    if (devtyps.Count > 0)
                    {
                        devices = devices.FindAll(d => devtyps.ContainsKey(d.DevTypeID));
                    }
                    if (prdors.Count > 0)
                    {
                        devices = devices.FindAll(d => WebUtility.Contain(d.ProdName, prdors.ToArray()));
                    }

                    var temp1 = from alm in alarms
                                join dev in devices on WebUtility.GetDevID(alm.NodeID) equals dev.DevID
                                select new {
                        Device = dev,
                        Alarm  = alm
                    };

                    var stations = from c in condition
                                   join s in new BOther().GetStations(lscUser.LscID, lscUser.Group.GroupID) on new { c.LscID, Area3ID = c.NodeID } equals new { s.LscID, s.Area3ID }
                    select s;

                    foreach (var sta in stations)
                    {
                        var temp2 = temp1.Where(a => a.Device.StaID == sta.StaID);
                        if (temp2.Any())
                        {
                            var temp3 = (from t in temp2
                                         group t by new { t.Device.DevTypeID, t.Device.ProdID, t.Alarm.AlarmID } into g
                                         select new {
                                DevTypeID = g.Key.DevTypeID,
                                DevTypeName = g.First().Device.DevTypeName,
                                ProdID = g.Key.ProdID,
                                ProdName = g.First().Device.ProdName,
                                AlarmID = g.Key.AlarmID,
                                AlarmName = g.First().Alarm.AlarmName,
                                Alarms = g.Select(a => a.Alarm).ToList(),
                                Devices = g.Select(a => a.Device).Distinct().ToList()
                            }).ToList();

                            for (var i = 0; i < temp3.Count; i++)
                            {
                                var dr = source1.NewRow();
                                dr[1]  = sta.LscName;
                                dr[2]  = sta.Area2Name;
                                dr[3]  = sta.Area3Name;
                                dr[4]  = sta.StaName;
                                dr[5]  = temp3[i].DevTypeName;
                                dr[6]  = temp3[i].ProdName;
                                dr[7]  = temp3[i].AlarmName;
                                dr[8]  = temp3[i].Alarms.Count;
                                dr[9]  = temp3[i].Devices.Count;
                                dr[10] = WebUtility.GetDateTimeFromSec(temp3[i].Alarms.Sum(a => a.EndTime.Subtract(a.StartTime).TotalSeconds));

                                source2[String.Format("{0}-{1}", source1.Rows.Count, source1.Columns[8].ColumnName)] = temp3[i].Alarms;
                                source3[String.Format("{0}-{1}", source1.Rows.Count, source1.Columns[9].ColumnName)] = temp3[i].Devices;
                                source1.Rows.Add(dr);

                                total1.AddRange(temp3[i].Alarms);
                                total2.AddRange(temp3[i].Devices);
                            }
                        }
                    }
                }

                if (total1.Count > 0)
                {
                    var dr = source1.NewRow();
                    dr[1]  = "总计";
                    dr[2]  = "--";
                    dr[3]  = "--";
                    dr[4]  = "--";
                    dr[5]  = "--";
                    dr[6]  = "--";
                    dr[7]  = "--";
                    dr[8]  = total1.Count;
                    dr[9]  = total2.Count;
                    dr[10] = WebUtility.GetDateTimeFromSec(total1.Sum(a => a.EndTime.Subtract(a.StartTime).TotalSeconds));

                    source2[String.Format("{0}-{1}", source1.Rows.Count, source1.Columns[8].ColumnName)] = total1;
                    source3[String.Format("{0}-{1}", source1.Rows.Count, source1.Columns[9].ColumnName)] = total2;
                    source1.Rows.Add(dr);
                }
                #endregion
            }

            var cacheDuration = Int32.Parse(WebConfigurationManager.AppSettings["DefaultCacheDuration"]);
            HttpRuntime.Cache.Insert(cacheKey1, source1, null, Cache.NoAbsoluteExpiration, TimeSpan.FromSeconds(cacheDuration), CacheItemPriority.Default, null);
            HttpRuntime.Cache.Insert(cacheKey2, source2, null, Cache.NoAbsoluteExpiration, TimeSpan.FromSeconds(cacheDuration), CacheItemPriority.Default, null);
            HttpRuntime.Cache.Insert(cacheKey3, source3, null, Cache.NoAbsoluteExpiration, TimeSpan.FromSeconds(cacheDuration), CacheItemPriority.Default, null);
            return(source1);
        }