Example #1
0
        public string GetFilterStations(string filter)
        {
            try {
                var userData    = UserData;
                var otherEntity = new BOther();
                var stations    = otherEntity.GetStationMarkers(filter, 1, 180, 1, 90, 100);
                if (stations != null && stations.Count > 0)
                {
                    var gns = new List <GroupTreeInfo>();
                    foreach (var lu in userData.LscUsers)
                    {
                        gns.AddRange(lu.Group.GroupNodes.FindAll(g => g.NodeType == EnmNodeType.Sta));
                    }

                    var gs = from sta in stations
                             join gn in gns on new { sta.LscID, sta.StaID } equals new { gn.LscID, StaID = gn.NodeID }
                    select sta;

                    var markers = new List <string>();
                    foreach (var s in gs)
                    {
                        markers.Add(String.Format("{{lscId:{0},staId:{1},mapType:{2},lng:{3},lat:{4}}}", s.LscID, s.StaID, (int)s.LocationWay, s.Longitude, s.Latitude));
                    }
                    return(String.Format("[{0}]", String.Join(",", markers.ToArray())));
                }
            } catch { }
            return(String.Empty);
        }
Example #2
0
 public string GetStationDetail(int lscId, int staId)
 {
     try {
         var otherEntity = new BOther();
         var station     = otherEntity.GetStation(lscId, staId);
         if (station != null)
         {
             int AL1Cnt = 0, AL2Cnt = 0, AL3Cnt = 0, AL4Cnt = 0;
             var userData = UserData;
             var alarms   = WebUtility.AlarmSAlmFilter(WebUtility.GetUserAlarms(userData));
             if (alarms != null && alarms.Count > 0)
             {
                 AL1Cnt = alarms.Count(alarm => {
                     return(alarm.StaName.Equals(station.StaName) && alarm.AlarmLevel == EnmAlarmLevel.Critical);
                 });
                 AL2Cnt = alarms.Count(alarm => {
                     return(alarm.StaName.Equals(station.StaName) && alarm.AlarmLevel == EnmAlarmLevel.Major);
                 });
                 AL3Cnt = alarms.Count(alarm => {
                     return(alarm.StaName.Equals(station.StaName) && alarm.AlarmLevel == EnmAlarmLevel.Minor);
                 });
                 AL4Cnt = alarms.Count(alarm => {
                     return(alarm.StaName.Equals(station.StaName) && alarm.AlarmLevel == EnmAlarmLevel.Hint);
                 });
             }
             return(String.Format("{{lscId:{0},lscName:\"{1}\",staId:{2},staName:\"{3}\",staTypeName:\"{4}\",staFeatureName:\"{5}\",address:\"{6}\",AL1:{7},AL2:{8},AL3:{9},AL4:{10}}}", station.LscID, station.LscName, station.StaID, station.StaName, station.StaTypeName, station.StaFeatureName, station.MapDesc, AL1Cnt, AL2Cnt, AL3Cnt, AL4Cnt));
         }
     } catch { }
     return(String.Empty);
 }
Example #3
0
        public void UpdateMarker(int olscId, int ostaId, int lscId, int staId, int mapType, double lng, double lat, string address)
        {
            try {
                var lscEntity = new BLsc();
                var lsc       = lscEntity.GetLsc(lscId);
                if (lsc == null)
                {
                    WebUtility.ShowNotify(EnmErrType.Warning, "无法获取客户端信息,数据更新失败!");
                    return;
                }

                var otherEntity      = new BOther();
                var enmMapType       = Enum.IsDefined(typeof(EnmMapType), mapType) ? (EnmMapType)mapType : EnmMapType.GPS;
                var connectionString = WebUtility.CreateLscConnectionString(lsc);
                otherEntity.UpdateMarker(olscId, ostaId, lscId, staId, enmMapType, lng, lat, address);
                otherEntity.UpdateLocalMarker(connectionString, ostaId, staId, enmMapType, lng, lat, address);
            } catch (Exception err) {
                WebUtility.WriteLog(EnmSysLogLevel.Error, EnmSysLogType.Exception, err.ToString(), Page.User.Identity.Name);
                WebUtility.ShowMessage(EnmErrType.Error, err.Message);
            }
        }
Example #4
0
        public string GetViewStations(double minLng, double maxLng, double minLat, double maxLat)
        {
            try {
                var userData    = UserData;
                var otherEntity = new BOther();
                var stations    = otherEntity.GetStationMarkers(WebUtility.DefaultString, minLng, maxLng, minLat, maxLat, 150);
                if (stations != null && stations.Count > 0)
                {
                    var gns = new List <GroupTreeInfo>();
                    foreach (var lu in userData.LscUsers)
                    {
                        gns.AddRange(lu.Group.GroupNodes.FindAll(g => g.NodeType == EnmNodeType.Sta));
                    }

                    var gs = from sta in stations
                             join gn in gns on new { sta.LscID, sta.StaID } equals new { gn.LscID, StaID = gn.NodeID }
                    select new {
                        LscID   = sta.LscID,
                        LscName = sta.LscName,
                        GroupID = gn.GroupID,
                        StaID   = sta.StaID,
                        StaName = sta.StaName,
                        MapType = (int)sta.LocationWay,
                        Lng     = sta.Longitude,
                        Lat     = sta.Latitude,
                        Address = sta.MapDesc
                    };

                    var markers = new List <string>();
                    foreach (var s in gs)
                    {
                        markers.Add(String.Format("{{lscId:{0},lscName:\"{1}\",groupId:{2},staId:{3},staName:\"{4}\",mapType:{5},lng:{6},lat:{7},address:\"{8}\"}}", s.LscID, s.LscName, s.GroupID, s.StaID, s.StaName, s.MapType, s.Lng, s.Lat, s.Address));
                    }
                    return(String.Format("[{0}]", String.Join(",", markers.ToArray())));
                }
            } catch { }
            return(String.Empty);
        }
        /// <summary>
        /// Add data to cache.
        /// </summary>
        private List <OilEngineEntity> AddDataToCache()
        {
            var userData = UserData;
            var cacheKey = WebUtility.GetCacheKeyName(userData, "kpi-oil-engine-report");

            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 stexts      = new List <String>();
            var sauxSets    = new List <String>();
            var sfilterText = WebUtility.StringSplit(SNodeText.Text.Trim());

            foreach (var ft in sfilterText)
            {
                if (String.IsNullOrEmpty(ft.Trim()))
                {
                    continue;
                }
                if (SFilterList.SelectedItem.Value.Equals("1"))
                {
                    sauxSets.Add(ft.Trim());
                }
                else
                {
                    stexts.Add(ft.Trim());
                }
            }

            var ytexts      = new List <String>();
            var yauxSets    = new List <String>();
            var yfilterText = WebUtility.StringSplit(YNodeText.Text.Trim());

            foreach (var ft in yfilterText)
            {
                if (String.IsNullOrEmpty(ft.Trim()))
                {
                    continue;
                }
                if (YFilterList.SelectedItem.Value.Equals("1"))
                {
                    yauxSets.Add(ft.Trim());
                }
                else
                {
                    ytexts.Add(ft.Trim());
                }
            }

            var devTypes = new Dictionary <Int32, String>();

            foreach (var dt in DevTypeMultiCombo.SelectedItems)
            {
                devTypes[Int32.Parse(dt.Value)] = dt.Text;
            }
            if (devTypes.Count == 0)
            {
                return(null);
            }

            var otherEntity = new BOther();
            var nodeEntity  = new BNode();
            var result      = new List <OilEngineEntity>();

            foreach (var lsc in lscs)
            {
                var stations = otherEntity.GetStations(lsc.LscID, lsc.Group.GroupID);

                var snodes = new List <NodeInfo>();
                var ynodes = new List <NodeInfo>();
                if (stexts.Count > 0 || sauxSets.Count > 0)
                {
                    snodes.AddRange(nodeEntity.GetNodes(lsc.LscID, EnmNodeType.Dic, stexts.ToArray(), sauxSets.ToArray(), devTypes.Keys.ToArray()));
                }
                if (ytexts.Count > 0 || yauxSets.Count > 0)
                {
                    ynodes.AddRange(nodeEntity.GetNodes(lsc.LscID, EnmNodeType.Dic, ytexts.ToArray(), yauxSets.ToArray(), devTypes.Keys.ToArray()));
                }

                if (Area2ComboBox.SelectedIndex > 0)
                {
                    var area2Id = Int32.Parse(Area2ComboBox.SelectedItem.Value);
                    stations = stations.FindAll(s => s.Area2ID == area2Id);
                    snodes   = snodes.FindAll(n => n.Area2ID == area2Id);
                    ynodes   = ynodes.FindAll(n => n.Area2ID == area2Id);
                }
                if (Area3ComboBox.SelectedIndex > 0)
                {
                    var area3Id = Int32.Parse(Area3ComboBox.SelectedItem.Value);
                    stations = stations.FindAll(s => s.Area3ID == area3Id);
                    snodes   = snodes.FindAll(n => n.Area3ID == area3Id);
                    ynodes   = ynodes.FindAll(n => n.Area3ID == area3Id);
                }

                var spairs = new List <OilEnginePair>();
                var sdiv   = nodeEntity.GetHisDIV(lsc.LscID, snodes.Select(n => n.NodeID).ToArray(), fromTime, toTime);
                foreach (var node in snodes)
                {
                    var curNodes = sdiv.FindAll(d => d.NodeID == node.NodeID).OrderBy(d => d.UpdateTime).ToList();

                    var interval  = 0d;
                    var startTime = DateTime.MinValue;
                    foreach (var cn in curNodes)
                    {
                        if (cn.Value == GJ && startTime == DateTime.MinValue)
                        {
                            startTime = cn.UpdateTime;
                        }
                        else if (cn.Value == ZC && startTime != DateTime.MinValue)
                        {
                            interval += cn.UpdateTime.Subtract(startTime).TotalMinutes;
                            startTime = DateTime.MinValue;
                        }
                    }

                    if (startTime != DateTime.MinValue)
                    {
                        interval += toTime.Subtract(startTime).TotalMinutes;
                        startTime = DateTime.MinValue;
                    }

                    spairs.Add(new OilEnginePair {
                        Node     = node,
                        Divs     = curNodes,
                        Interval = interval
                    });
                }

                var ypairs = new List <OilEnginePair>();
                var ydiv   = nodeEntity.GetHisDIV(lsc.LscID, ynodes.Select(n => n.NodeID).ToArray(), fromTime, toTime);
                foreach (var node in ynodes)
                {
                    var curNodes = ydiv.FindAll(d => d.NodeID == node.NodeID).OrderBy(d => d.UpdateTime).ToList();

                    var interval  = 0d;
                    var startTime = DateTime.MinValue;
                    foreach (var cn in curNodes)
                    {
                        if (cn.Value == GJ && startTime == DateTime.MinValue)
                        {
                            startTime = cn.UpdateTime;
                        }
                        else if (cn.Value == ZC && startTime != DateTime.MinValue)
                        {
                            interval += cn.UpdateTime.Subtract(startTime).TotalMinutes;
                            startTime = DateTime.MinValue;
                        }
                    }

                    if (startTime != DateTime.MinValue)
                    {
                        interval += toTime.Subtract(startTime).TotalMinutes;
                        startTime = DateTime.MinValue;
                    }

                    ypairs.Add(new OilEnginePair {
                        Node     = node,
                        Divs     = curNodes,
                        Interval = interval
                    });
                }

                var sresult = from s in spairs
                              group s by new { s.Node.LscID, s.Node.StaID } into g
                    select new {
                    LscID = g.Key.LscID,
                    StaID = g.Key.StaID,
                    Nodes = g
                };

                var yresult = from y in ypairs
                              group y by new { y.Node.LscID, y.Node.StaID } into g
                    select new {
                    LscID = g.Key.LscID,
                    StaID = g.Key.StaID,
                    Nodes = g
                };

                result.AddRange(from sta in stations
                                join sr in sresult on new { sta.LscID, sta.StaID } equals new { sr.LscID, sr.StaID } into lt1
                                from ss in lt1.DefaultIfEmpty()
                                join yr in yresult on new { sta.LscID, sta.StaID } equals new { yr.LscID, yr.StaID } into lt2
                                from ys in lt2.DefaultIfEmpty()
                                select new OilEngineEntity {
                    Station = sta,
                    SNodes  = ss != null ? ss.Nodes.ToList() : new List <OilEnginePair>(),
                    YNodes  = ys != null ? ys.Nodes.ToList() : new List <OilEnginePair>()
                });
            }

            int cacheDuration = Int32.Parse(WebConfigurationManager.AppSettings["DefaultCacheDuration"]);

            HttpRuntime.Cache.Insert(cacheKey, result, null, Cache.NoAbsoluteExpiration, TimeSpan.FromSeconds(cacheDuration), CacheItemPriority.Default, null);
            return(result);
        }
Example #6
0
        /// <summary>
        /// Add data to cache.
        /// </summary>
        private List <Report002Entity> AddDataToCache()
        {
            var userData = UserData;
            var cacheKey = WebUtility.GetCacheKeyName(userData, "kpi-report-002");

            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 fromTime = DateTime.Parse(BeginFromDate.Text);
            var toTime   = DateTime.Parse(BeginToDate.Text);

            var auxSets    = new List <String>();
            var texts      = new List <String>();
            var filterText = WebUtility.StringSplit(NodeText.Text.Trim());

            foreach (var ft in filterText)
            {
                if (String.IsNullOrEmpty(ft.Trim()))
                {
                    continue;
                }
                if (FilterList.SelectedItem.Value.Equals("1"))
                {
                    auxSets.Add(ft.Trim());
                }
                else
                {
                    texts.Add(ft.Trim());
                }
            }
            if (texts.Count == 0 && auxSets.Count == 0)
            {
                return(null);
            }

            var pauxSets    = new List <String>();
            var ptexts      = new List <String>();
            var pfilterText = WebUtility.StringSplit(PNodeText.Text.Trim());

            foreach (var ft in pfilterText)
            {
                if (String.IsNullOrEmpty(ft.Trim()))
                {
                    continue;
                }
                if (PFilterList.SelectedItem.Value.Equals("1"))
                {
                    pauxSets.Add(ft.Trim());
                }
                else
                {
                    ptexts.Add(ft.Trim());
                }
            }
            if (ptexts.Count == 0 && pauxSets.Count == 0)
            {
                return(null);
            }

            var devTypes = new Dictionary <Int32, String>();

            foreach (var dt in DevTypeMultiCombo.SelectedItems)
            {
                devTypes[Int32.Parse(dt.Value)] = dt.Text;
            }
            if (devTypes.Count == 0)
            {
                return(null);
            }

            var almNames = new List <String>();
            var almIds   = new Dictionary <String, String>();
            var almText  = WebUtility.StringSplit(AlarmNameText.Text.Trim());

            foreach (var at in almText)
            {
                if (String.IsNullOrEmpty(at.Trim()))
                {
                    continue;
                }
                if (AlmNameList.SelectedItem.Value.Equals("1"))
                {
                    almIds[at.Trim()] = null;
                }
                else
                {
                    almNames.Add(at.Trim());
                }
            }

            var palmNames = new List <String>();
            var palmIds   = new Dictionary <String, String>();
            var palmText  = WebUtility.StringSplit(PAlarmNameText.Text.Trim());

            foreach (var at in palmText)
            {
                if (String.IsNullOrEmpty(at.Trim()))
                {
                    continue;
                }
                if (PAlmNameList.SelectedItem.Value.Equals("1"))
                {
                    palmIds[at.Trim()] = null;
                }
                else
                {
                    palmNames.Add(at.Trim());
                }
            }

            var otherEntity = new BOther();
            var nodeEntity  = new BNode();
            var devices     = new List <DeviceInfo>();
            var nodes       = new List <NodeInfo>();
            var pnodes      = new List <NodeInfo>();

            foreach (var lsc in lscs)
            {
                devices.AddRange(otherEntity.GetDevices(lsc.LscID, lsc.Group.GroupID));
                nodes.AddRange(nodeEntity.GetNodes(lsc.LscID, EnmNodeType.Img, texts.ToArray(), auxSets.ToArray(), null));
                if (ptexts.Count > 0 || pauxSets.Count > 0)
                {
                    pnodes.AddRange(nodeEntity.GetNodes(lsc.LscID, EnmNodeType.Img, ptexts.ToArray(), pauxSets.ToArray(), null));
                }
            }

            devices = devices.FindAll(d => devTypes.ContainsKey(d.AlmDevTypeID));
            var devGroup = from dev in devices
                           group dev by new { dev.LscID } into g
                select new {
                LscID   = g.Key.LscID,
                Devices = g.ToList()
            };

            var lcWdv = from lsc in lscs
                        join dg in devGroup on new { lsc.LscID } equals new { dg.LscID } into lt
            from gs in lt.DefaultIfEmpty()
            select new {
                LscID   = lsc.LscID,
                LscName = lsc.LscName,
                Devices = gs == null ? new List <DeviceInfo>() : gs.Devices
            };

            var alarmEntity = new BAlarm();
            var alarms      = WebUtility.GetUserAlarms(userData).FindAll(alarm => lscs.Any(l => l.LscID == alarm.LscID) && alarm.StartTime >= fromTime && alarm.StartTime <= toTime);

            foreach (var lsc in lscs)
            {
                alarms.AddRange(alarmEntity.GetHisAlarms(lsc.LscID, lsc.LscName, userData.StandardProtocol, lsc.Group.GroupNodes, fromTime, toTime));
            }

            var ndWam = from alarm in alarms
                        join node in nodes on new { alarm.LscID, alarm.NodeID, alarm.NodeType } equals new { node.LscID, node.NodeID, node.NodeType }
            where (almNames.Count == 0 || almNames.Any(name => alarm.AlarmName.Contains(name))) && (almIds.Count == 0 || almIds.ContainsKey(alarm.AlarmID.ToString())) && string.IsNullOrEmpty(alarm.ProjName)
            select new {
                Node  = node,
                Alarm = alarm
            };

            var pdWam = from alarm in alarms
                        join node in pnodes on new { alarm.LscID, alarm.NodeID, alarm.NodeType } equals new { node.LscID, node.NodeID, node.NodeType }
            where (palmNames.Count == 0 || palmNames.Any(name => alarm.AlarmName.Contains(name))) && (palmIds.Count == 0 || palmIds.ContainsKey(alarm.AlarmID.ToString())) && string.IsNullOrEmpty(alarm.ProjName)
            select new {
                Node  = node,
                Alarm = alarm
            };

            var almGroup = from alarm in ndWam
                           group alarm by new { alarm.Node.LscID } into g
                select new {
                LscID  = g.Key.LscID,
                Alarms = g.Select(a => a.Alarm)
            };

            var plmGroup = from alarm in pdWam
                           group alarm by new { alarm.Node.LscID } into g
                select new {
                LscID  = g.Key.LscID,
                Alarms = g.Select(a => a.Alarm)
            };

            var result = (from ld in lcWdv
                          join ag in almGroup on new { ld.LscID } equals new { ag.LscID } into lt1
                          from la in lt1.DefaultIfEmpty()
                          join pg in plmGroup on new { ld.LscID } equals new { pg.LscID } into lt2
                          from lp in lt2.DefaultIfEmpty()
                          orderby ld.LscID
                          select new Report002Entity {
                LscID = ld.LscID,
                LscName = ld.LscName,
                BeginTime = fromTime,
                EndTime = toTime,
                Devices = ld.Devices,
                Alarms = la == null ? new List <AlarmInfo>() : la.Alarms.ToList(),
                PAlarms = lp == null ? new List <AlarmInfo>() : lp.Alarms.ToList()
            }).ToList();

            if (result.Count > 0)
            {
                result.Add(new Report002Entity {
                    LscID     = -100,
                    LscName   = "汇总(平均值)",
                    BeginTime = fromTime,
                    EndTime   = toTime,
                    Devices   = new List <DeviceInfo>(),
                    Alarms    = new List <AlarmInfo>(),
                    PAlarms   = 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);
        }
Example #7
0
        /// <summary>
        /// Add data to cache.
        /// </summary>
        private List <Report010Entity> AddDataToCache()
        {
            var userData = UserData;
            var cacheKey = WebUtility.GetCacheKeyName(userData, "kpi-report-010");

            HttpRuntime.Cache.Remove(cacheKey);

            var lscIds = new List <int>();

            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]);
                    lscIds.Add(lscId);
                }
            }
            else
            {
                lscIds.AddRange(userData.LscUsers.Select(l => l.LscID));
            }
            if (lscIds.Count == 0)
            {
                return(null);
            }

            var fromTime = DateTime.Parse(BeginFromDate.Text);
            var toTime   = DateTime.Parse(BeginToDate.Text);
            var devTypes = new Dictionary <Int32, String>();

            foreach (var dt in DevTypeMultiCombo.SelectedItems)
            {
                devTypes[Int32.Parse(dt.Value)] = dt.Text;
            }
            if (devTypes.Count == 0)
            {
                return(null);
            }

            var lscEntity   = new BLsc();
            var otherEntity = new BOther();
            var result      = new List <Report010Entity>();

            foreach (var id in lscIds)
            {
                var lsc = lscEntity.GetLsc(id);
                if (lsc == null)
                {
                    continue;
                }

                var bats    = otherEntity.GetBatStaticCount(lsc.LscID, fromTime, toTime, null, null, 1d / 24d, Int32.MaxValue);
                var devices = otherEntity.GetDevices(lsc.LscID).FindAll(d => devTypes.ContainsKey(d.AlmDevTypeID));
                var batDev  = from dev in devices
                              join bat in bats on new { dev.DevID } equals new { DevID = bat.Value }
                select dev;

                var parm = Report010Entity.GetLscParam(lsc.LscID, WebUtility.CreateLscConnectionString(lsc));
                result.Add(new Report010Entity {
                    LscID     = lsc.LscID,
                    LscName   = lsc.LscName,
                    ThisCount = batDev == null ? 0 : (fRadio.Checked ? batDev.GroupBy(d => d.StaID).Count() : batDev.GroupBy(d => d.Area3ID).Count()),
                    LastCount = parm != null ? parm.StaTNumber : 0
                });
            }

            if (result.Count > 0)
            {
                result.Add(new Report010Entity {
                    LscID     = -100,
                    LscName   = "汇总(平均值)",
                    ThisCount = (Int32)result.Average(r => r.ThisCount),
                    LastCount = (Int32)result.Average(r => r.LastCount)
                });
            }

            int cacheDuration = Int32.Parse(WebConfigurationManager.AppSettings["DefaultCacheDuration"]);

            HttpRuntime.Cache.Insert(cacheKey, result, null, Cache.NoAbsoluteExpiration, TimeSpan.FromSeconds(cacheDuration), CacheItemPriority.Default, null);
            return(result);
        }
Example #8
0
        /// <summary>
        /// Add data to cache.
        /// </summary>
        private List <Report122Entity> AddDataToCache()
        {
            var userData = UserData;
            var cacheKey = WebUtility.GetCacheKeyName(userData, "kpi-report-122");

            HttpRuntime.Cache.Remove(cacheKey);

            var lscUsers = 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)
                    {
                        lscUsers.Add(lscUser);
                    }
                }
            }
            else
            {
                lscUsers.AddRange(userData.LscUsers);
            }

            if (lscUsers.Count == 0)
            {
                return(null);
            }

            var fromTime = DateTime.Parse(BeginFromDate.Text);
            var toTime   = DateTime.Parse(BeginToDate.Text);
            var dates    = new List <string>();
            var temp     = fromTime;

            while (temp <= toTime)
            {
                dates.Add(WebUtility.GetDateString2(temp));
                temp = temp.AddDays(1);
            }

            var staTypes = new HashSet <int>();

            foreach (var dt in StaTypeMultiCombo.SelectedItems)
            {
                staTypes.Add(int.Parse(dt.Value));
            }
            if (staTypes.Count == 0)
            {
                return(null);
            }

            var alarmId = int.Parse(AlarmNameComboBox.SelectedItem.Value);

            var otherEntity = new BOther();
            var alarmEntity = new BAlarm();
            var source      = new List <Report122Entity>();

            foreach (var lu in lscUsers)
            {
                var stations = otherEntity.GetStations(lu.LscID, lu.Group.GroupID).FindAll(s => staTypes.Contains(s.StaTypeID));
                var alarms   = alarmEntity.GetHisAlarms(lu.LscID, lu.LscName, userData.StandardProtocol, lu.Group.GroupNodes, fromTime, toTime).FindAll(a => a.AlarmID == alarmId);
                var perdays  = alarms.GroupBy(a => WebUtility.GetDateString2(a.StartTime)).Select(g => new { Date = g.Key, StationKeys = new HashSet <string>(g.Select(a => a.StaName)) });

                foreach (var date in dates)
                {
                    var day = perdays.FirstOrDefault(p => p.Date.Equals(date));
                    source.Add(new Report122Entity {
                        LscID     = lu.LscID,
                        LscName   = lu.LscName,
                        Date      = date,
                        Gstations = day == null ? new List <StationInfo>() : stations.FindAll(s => day.StationKeys.Contains(s.StaName)),
                        Stations  = stations
                    });
                }
            }

            int cacheDuration = Int32.Parse(WebConfigurationManager.AppSettings["DefaultCacheDuration"]);

            HttpRuntime.Cache.Insert(cacheKey, source, null, Cache.NoAbsoluteExpiration, TimeSpan.FromSeconds(cacheDuration), CacheItemPriority.Default, null);
            return(source);
        }
Example #9
0
        /// <summary>
        /// Add data to cache.
        /// </summary>
        private List <Report120Entity> AddDataToCache()
        {
            var userData = UserData;
            var cacheKey = WebUtility.GetCacheKeyName(userData, "kpi-report-120");

            HttpRuntime.Cache.Remove(cacheKey);

            var lscUsers = 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)
                    {
                        lscUsers.Add(lscUser);
                    }
                }
            }
            else
            {
                lscUsers.AddRange(userData.LscUsers);
            }

            if (lscUsers.Count == 0)
            {
                return(null);
            }

            var fromTime = DateTime.Parse(BeginFromDate.Text);
            var toTime   = DateTime.Parse(BeginToDate.Text);

            var staTypes = new HashSet <int>();

            foreach (var dt in StaTypeMultiCombo.SelectedItems)
            {
                staTypes.Add(int.Parse(dt.Value));
            }
            if (staTypes.Count == 0)
            {
                return(null);
            }

            var devTypes = new HashSet <int>();

            foreach (var dt in DevTypeMultiCombo.SelectedItems)
            {
                devTypes.Add(int.Parse(dt.Value));
            }
            if (devTypes.Count == 0)
            {
                return(null);
            }

            var alarmId = int.Parse(AlarmNameComboBox.SelectedItem.Value);

            var otherEntity = new BOther();
            var alarmEntity = new BAlarm();
            var source      = new List <Report120Entity>();

            foreach (var lu in lscUsers)
            {
                var devices       = otherEntity.GetDevices(lu.LscID, lu.Group.GroupID).FindAll(d => staTypes.Contains(d.StaTypeID) && devTypes.Contains(d.DevTypeID));
                var devkeys       = new HashSet <string>(devices.Select(d => string.Format("{0}┊{1}", d.StaName, d.DevName)));
                var alarms        = alarmEntity.GetHisAlarms(lu.LscID, lu.LscName, userData.StandardProtocol, lu.Group.GroupNodes, fromTime, toTime).FindAll(a => a.AlarmID == alarmId && devkeys.Contains(string.Format("{0}┊{1}", a.StaName, a.DevName)));
                var perNodeAlarms = alarms.GroupBy(a => new { a.StaName, a.DevName, a.NodeName }).Select(g => {
                    var first = g.First();
                    return(new Report120Node {
                        LscID = first.LscID,
                        LscName = first.LscName,
                        Area1Name = first.Area1Name,
                        Area2Name = first.Area2Name,
                        Area3Name = first.Area3Name,
                        Area4Name = first.Area4Name,
                        StaName = g.Key.StaName,
                        DevName = g.Key.DevName,
                        NodeName = g.Key.NodeName,
                        First = g.Min(c => c.StartTime),
                        Last = g.Max(c => c.StartTime)
                    });
                });

                source.Add(new Report120Entity {
                    LscID   = lu.LscID,
                    LscName = lu.LscName,
                    Nodes   = perNodeAlarms.ToList(),
                    Devices = devices
                });
            }

            int cacheDuration = Int32.Parse(WebConfigurationManager.AppSettings["DefaultCacheDuration"]);

            HttpRuntime.Cache.Insert(cacheKey, source, null, Cache.NoAbsoluteExpiration, TimeSpan.FromSeconds(cacheDuration), CacheItemPriority.Default, null);
            return(source);
        }
Example #10
0
        /// <summary>
        /// Add data to cache.
        /// </summary>
        private List <Report117Entity> AddDataToCache()
        {
            var userData  = UserData;
            var cacheKey1 = WebUtility.GetCacheKeyName(userData, "kpi-report-117");
            var cacheKey2 = WebUtility.GetCacheKeyName(userData, "kpi-report-117-02");

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

            var lscIds = new List <int>();

            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]);
                    lscIds.Add(lscId);
                }
            }
            else
            {
                lscIds.AddRange(userData.LscUsers.Select(l => l.LscID));
            }
            if (lscIds.Count == 0)
            {
                return(null);
            }

            var fromTime = DateTime.Parse(BeginFromDate.Text);
            var toTime   = DateTime.Parse(BeginToDate.Text);

            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 devTypes = new Dictionary <Int32, String>();

            foreach (var dt in DevTypeMultiCombo.SelectedItems)
            {
                devTypes[Int32.Parse(dt.Value)] = dt.Text;
            }
            if (devTypes.Count == 0)
            {
                return(null);
            }

            var otherEntity = new BOther();
            var lscEntity   = new BLsc();
            var source1     = new List <Report117Entity>();
            var source2     = new Dictionary <String, List <StationInfo> >();

            foreach (var id in lscIds)
            {
                var lsc = lscEntity.GetLsc(id);
                if (lsc == null)
                {
                    continue;
                }

                var stations = new Dictionary <Int32, String>();
                var bats     = otherEntity.GetBatStaticCount(lsc.LscID, fromTime, toTime, null, null, 1d / 24d, Int32.MaxValue);
                if (bats != null && bats.Count > 0)
                {
                    var devices = otherEntity.GetDevices(lsc.LscID).FindAll(d => staTypes.ContainsKey(d.StaTypeID) && devTypes.ContainsKey(d.DevTypeID));
                    var temp    = from dev in devices
                                  join bat in bats on new { dev.LscID, dev.DevID } equals new { LscID = bat.ID, DevID = bat.Value }
                    select dev;

                    foreach (var t in temp)
                    {
                        stations[t.StaID] = t.StaName;
                    }
                }

                var stations1 = otherEntity.GetStations(lsc.LscID).FindAll(s => stations.ContainsKey(s.StaID));
                var stations2 = Report117Entity.GetStations(lsc.LscID, lsc.LscName, WebUtility.CreateLscConnectionString(lsc));

                var record = new Report117Entity {
                    LscID     = lsc.LscID,
                    LscName   = lsc.LscName,
                    ThisCount = stations1.Count,
                    LastCount = stations2.Count
                };

                source1.Add(record);
                source2[String.Format("{0}-ThisCount", lsc.LscID)] = stations1;
                source2[String.Format("{0}-LastCount", lsc.LscID)] = stations2;
            }

            if (source1.Count > 0)
            {
                source1.Add(new Report117Entity {
                    LscID     = -100,
                    LscName   = "汇总",
                    ThisCount = (Int32)source1.Sum(r => r.ThisCount),
                    LastCount = (Int32)source1.Sum(r => r.LastCount)
                });
            }

            int 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);
            return(source1);
        }
Example #11
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);
        }
Example #12
0
        /// <summary>
        /// Add data to cache.
        /// </summary>
        private List <Report013Entity> AddDataToCache()
        {
            var userData = UserData;
            var cacheKey = WebUtility.GetCacheKeyName(userData, "kpi-report-013");

            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(BeginDate.Text);
            var toTime   = DateTime.Parse(EndDate.Text);

            var texts      = new List <String>();
            var auxSets    = new List <String>();
            var filterText = WebUtility.StringSplit(NodeText.Text.Trim());

            foreach (var ft in filterText)
            {
                if (String.IsNullOrEmpty(ft.Trim()))
                {
                    continue;
                }
                if (FilterTypeList.SelectedItem.Value.Equals("1"))
                {
                    auxSets.Add(ft.Trim());
                }
                else
                {
                    texts.Add(ft.Trim());
                }
            }

            var nodeEntity  = new BNode();
            var otherEntity = new BOther();
            var source1     = new List <Report013Entity>();

            foreach (var lsc in lscs)
            {
                var bats = otherEntity.GetBatStatic(lsc.LscID, lsc.LscName, null, null, fromTime, null, null, toTime, 0, Int32.MaxValue);
                var fdev = from bat in bats
                           group bat by bat.DevID into g
                           select new {
                    DevID    = g.Key,
                    Interval = g.Max(t => t.LastTime) * 24 * 60
                };

                var rdev = from fv in fdev
                           where fv.Interval >= 15
                           select fv.DevID;

                if (rdev.Any())
                {
                    var nodes  = nodeEntity.GetNodes(lsc.LscID, EnmNodeType.Aic, texts.ToArray(), auxSets.ToArray(), null);
                    var values = nodeEntity.GetMaxHisAIV(lsc.LscID, fromTime, toTime);
                    var ndWavl = from node in nodes
                                 join val in values on node.NodeID equals val.NodeID into tp
                                 from nv in tp.DefaultIfEmpty()
                                 select new {
                        Node  = node,
                        Value = nv != null ? nv.Value : 0
                    };

                    var ndWre = from na in ndWavl
                                join id in rdev on na.Node.DevID equals id
                                select na;

                    var staWall = from nr in ndWre
                                  group nr by nr.Node.StaID into g
                                  select new {
                        StaID = g.Key,
                        Value = g.Min(v => v.Value)
                    };

                    var staWhg = from sw in staWall
                                 where sw.Value >= 47
                                 select sw;

                    source1.Add(new Report013Entity {
                        LscID        = lsc.LscID,
                        LscName      = lsc.LscName,
                        CorrectCount = staWhg.Count(),
                        AllCount     = staWall.Count()
                    });
                }
                else
                {
                    source1.Add(new Report013Entity {
                        LscID        = lsc.LscID,
                        LscName      = lsc.LscName,
                        CorrectCount = 0,
                        AllCount     = 0
                    });
                }
            }

            if (source1.Count > 0)
            {
                source1.Add(new Report013Entity {
                    LscID        = -100,
                    LscName      = "汇总(平均值)",
                    CorrectCount = (Int32)source1.Average(r => r.CorrectCount),
                    AllCount     = (Int32)source1.Average(r => r.AllCount)
                });
            }

            int cacheDuration = Int32.Parse(WebConfigurationManager.AppSettings["DefaultCacheDuration"]);

            HttpRuntime.Cache.Insert(cacheKey, source1, null, Cache.NoAbsoluteExpiration, TimeSpan.FromSeconds(cacheDuration), CacheItemPriority.Default, null);
            return(source1);
        }
Example #13
0
        /// <summary>
        /// Add Data To Cache
        /// </summary>
        private List <ProjectReportPageEntity> AddDataToCache()
        {
            var userData = UserData;
            var cacheKey = WebUtility.GetCacheKeyName(userData, "project-report-entities");

            HttpRuntime.Cache.Remove(cacheKey);

            if (LscsComboBox.SelectedItem.Value == null || LscsComboBox.SelectedItem.Value == String.Empty)
            {
                return(null);
            }
            var ids = WebUtility.ItemSplit(LscsComboBox.SelectedItem.Value);

            if (ids.Length != 2)
            {
                return(null);
            }
            var lsc = new BLsc().GetLsc(Int32.Parse(ids[0]));

            if (lsc == null)
            {
                WebUtility.ShowMessage(EnmErrType.Warning, "无法获取Lsc信息");
                return(null);
            }

            var beginTime = DateTime.Parse(BeginDate.Text);
            var endTime   = DateTime.Parse(EndDate.Text);
            var area2Id   = WebUtility.DefaultInt32;
            var area3Id   = WebUtility.DefaultInt32;

            if (Area2ComboBox.SelectedIndex > 0)
            {
                area2Id = Int32.Parse(Area2ComboBox.SelectedItem.Value);
            }
            if (Area3ComboBox.SelectedIndex > 0)
            {
                area3Id = Int32.Parse(Area3ComboBox.SelectedItem.Value);
            }

            var appointmentEntity = new BAppointment();
            var connectionString  = WebUtility.CreateLscConnectionString(lsc);

            var appointments1 = appointmentEntity.GetAppointments(lsc.LscID, lsc.LscName, connectionString, beginTime, endTime, 0, null);
            var appointments2 = appointmentEntity.GetHisAppointments(lsc.LscID, lsc.LscName, beginTime, endTime, 0, null);

            appointments1.AddRange(appointments2);

            var lscappointments = appointments1.FindAll(a => a.LscIncluded == lsc.LscID);
            var nonappointments = appointments1.FindAll(a => a.LscIncluded != lsc.LscID);

            var staSet = new List <IDValuePair <int, AppointmentInfo> >();

            foreach (var apt in nonappointments)
            {
                if (apt.StaIncluded != null && apt.StaIncluded.Trim() != String.Empty)
                {
                    var array = apt.StaIncluded.Split(';');
                    foreach (var id in array)
                    {
                        if (id.Trim() != String.Empty)
                        {
                            staSet.Add(new IDValuePair <int, AppointmentInfo>(Int32.Parse(id), apt));
                        }
                    }
                }
            }

            var devSet = new List <IDValuePair <int, AppointmentInfo> >();

            foreach (var apt in nonappointments)
            {
                if (apt.DevIncluded != null && apt.DevIncluded.Trim() != String.Empty)
                {
                    var array = apt.DevIncluded.Split(';');
                    foreach (var id in array)
                    {
                        if (id.Trim() != String.Empty)
                        {
                            devSet.Add(new IDValuePair <int, AppointmentInfo>(Int32.Parse(id), apt));
                        }
                    }
                }
            }

            var otherEntity = new BOther();
            var stations    = otherEntity.GetStations(lsc.LscID);
            var master1     = from ss in staSet
                              join sta in stations on ss.ID equals sta.StaID
                              select new IDValuePair <int, AppointmentInfo> {
                ID    = sta.Area3ID,
                Value = ss.Value
            };

            var devices = otherEntity.GetDevices(lsc.LscID);
            var master2 = from ds in devSet
                          join dev in devices on ds.ID equals dev.DevID
                          select new IDValuePair <int, AppointmentInfo> {
                ID    = dev.Area3ID,
                Value = ds.Value
            };

            var master = new Dictionary <String, IDValuePair <int, AppointmentInfo> >();

            foreach (var mt in master1)
            {
                master[String.Format("{0}-{1}", mt.ID, mt.Value.Id)] = mt;
            }
            foreach (var mt in master2)
            {
                master[String.Format("{0}-{1}", mt.ID, mt.Value.Id)] = mt;
            }

            var areas = otherEntity.GetAreas(lsc.LscID);

            if (area2Id != WebUtility.DefaultInt32)
            {
                areas = areas.FindAll(a => a.Area2ID == area2Id);
            }
            if (area3Id != WebUtility.DefaultInt32)
            {
                areas = areas.FindAll(a => a.Area3ID == area3Id);
            }

            foreach (var area in areas)
            {
                foreach (var apt in lscappointments)
                {
                    master[String.Format("{0}-{1}", area.Area3ID, apt.Id)] = new IDValuePair <int, AppointmentInfo>(area.Area3ID, apt);
                }
            }

            var a1 = from mt in master.Values
                     group mt by new { AreaId = mt.ID, mt.Value.ProjectId } into g
                select new {
                g.Key.AreaId,
                g.Key.ProjectId,
                Time = g.Sum(a => a.Value.EndTime.Subtract(a.Value.StartTime).TotalSeconds)
            };

            var projects = appointmentEntity.GetProjectItem(lsc.LscID, lsc.LscName, connectionString);
            var a2       = from a in a1
                           join p in projects on a.ProjectId equals p.ProjectId
                           select new {
                AreaId      = a.AreaId,
                Time        = a.Time,
                Project     = p,
                IsExProject = a.Time > p.EndTime.Subtract(p.BeginTime).TotalSeconds
            };

            var a3 = from a in a2
                     group a by new { a.AreaId } into g
                select new {
                g.Key.AreaId,
                Time       = g.Sum(p => p.Time),
                Projects   = g.Select(p => p.Project).ToList(),
                ExProjects = g.Where(p => p.IsExProject).Select(p => p.Project).ToList()
            };

            var a4 = from area in areas
                     join a in a3 on area.Area3ID equals a.AreaId into l
                     from aa in l.DefaultIfEmpty()
                     select new ProjectReportPageEntity {
                Area       = area,
                Time       = aa != null ? aa.Time : 0,
                Projects   = aa != null ? aa.Projects : new List <ProjectInfo>(),
                ExProjects = aa != null ? aa.ExProjects : new List <ProjectInfo>()
            };


            var result        = a4.ToList();
            var 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 DataTable AddDataToCache()
        {
            if (Session["alarm-standardization-standard-file"] == null)
            {
                return(null);
            }
            if (Session["alarm-standardization-resource-file"] == null)
            {
                return(null);
            }
            var standardFile = Session["alarm-standardization-standard-file"] as StandardFile;
            var resourceFile = Session["alarm-standardization-resource-file"] as List <ResourceFile>;

            var userData  = UserData;
            var cacheKey1 = WebUtility.GetCacheKeyName(userData, "alarm-standardization-source1");
            var cacheKey2 = WebUtility.GetCacheKeyName(userData, "alarm-standardization-source2");

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

            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 levels    = new Dictionary <Int32, String>();
            var len       = AlarmLevelMultiCombo.SelectedItems.Count;

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

            var standardRecords = from an in standardFile.AlarmNames
                                  join slt in standardFile.SubAlarmLogTypes on an.ParentId equals slt.Id
                                  join lt in standardFile.AlarmLogTypes on slt.ParentId equals lt.Id
                                  join dt in standardFile.AlarmDeviceTypes on lt.ParentId equals dt.Id
                                  select new {
                AlarmID           = an.Id,
                AlarmName         = an.Name,
                NMAlarmID         = an.Comment,
                AlarmSubLogTypeID = slt.Id,
                AlarmSubLogType   = slt.Name,
                AlarmLogTypeID    = lt.Id,
                AlarmLogType      = lt.Name,
                AlarmDeviceTypeID = dt.Id,
                AlarmDeviceType   = dt.Name
            };

            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> >();

            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 dr1 = source1.NewRow();
                    dr1[1] = lscUser.LscName;

                    var alarms = WebUtility.GetUserAlarms(userData).FindAll(alarm => alarm.LscID == lscUser.LscID && alarm.StartTime >= beginTime && alarm.StartTime <= endTime);
                    alarms.AddRange(new BAlarm().GetHisAlarms(lscUser.LscID, lscUser.LscName, userData.StandardProtocol, lscUser.Group.GroupNodes, beginTime, endTime));
                    alarms = alarms.FindAll(a => levels.ContainsKey((Int32)a.AlarmLevel));

                    var devices = new BOther().GetDevices(lscUser.LscID, lscUser.Group.GroupID);
                    var temp1   = from a in alarms
                                  join d in devices on WebUtility.GetDevID(a.NodeID) equals d.DevID
                                  select new {
                        Alarm  = a,
                        Device = d
                    };

                    var temp3 = from t1 in temp1
                                join sr in standardRecords on new { t1.Alarm.AlarmName, t1.Alarm.AlarmLogType, t1.Alarm.AlarmDeviceType, t1.Alarm.NMAlarmID } equals new { sr.AlarmName, sr.AlarmLogType, sr.AlarmDeviceType, sr.NMAlarmID }
                    select t1;

                    var temp4 = from t1 in temp1
                                join rf in resourceFile on new { t1.Device.DevName, t1.Device.DevTypeName, t1.Device.ProdName, t1.Device.StaName } equals new { rf.DevName, rf.DevTypeName, rf.ProdName, rf.StaName }
                    select t1;

                    dr1[2] = alarms.Count;
                    source2[String.Format("{0}-{1}", source1.Rows.Count, source1.Columns[2].ColumnName)] = alarms;

                    dr1[3] = String.Format("{0:P2}", alarms.Count > 0 ? (double)temp3.Count() / (double)alarms.Count : 1);
                    dr1[4] = String.Format("{0:P2}", alarms.Count > 0 ? (double)temp4.Count() / (double)alarms.Count : 1);
                    source1.Rows.Add(dr1);
                }
                #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 = WebUtility.GetUserAlarms(userData).FindAll(alarm => alarm.LscID == lscUser.LscID && alarm.StartTime >= beginTime && alarm.StartTime <= endTime);
                    alarms.AddRange(new BAlarm().GetHisAlarms(lscUser.LscID, lscUser.LscName, userData.StandardProtocol, lscUser.Group.GroupNodes, beginTime, endTime));
                    alarms = alarms.FindAll(a => levels.ContainsKey((Int32)a.AlarmLevel));

                    var devices           = new BOther().GetDevices(lscUser.LscID, lscUser.Group.GroupID);
                    var alarmsWithDevices = from a in alarms
                                            join d in devices on WebUtility.GetDevID(a.NodeID) equals d.DevID
                                            select new {
                        Alarm  = a,
                        Device = d
                    };

                    var alarmsWithDevices1 = from ad in alarmsWithDevices
                                             join sr in standardRecords on new { ad.Alarm.AlarmName, ad.Alarm.AlarmLogType, ad.Alarm.AlarmDeviceType, ad.Alarm.NMAlarmID } equals new { sr.AlarmName, sr.AlarmLogType, sr.AlarmDeviceType, sr.NMAlarmID }
                    select ad;

                    var alarmsWithDevices2 = from ad in alarmsWithDevices
                                             join rf in resourceFile on new { ad.Device.DevName, ad.Device.DevTypeName, ad.Device.ProdName, ad.Device.StaName } equals new { rf.DevName, rf.DevTypeName, rf.ProdName, rf.StaName }
                    select ad;

                    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 dr1 = source1.NewRow();
                        dr1[1] = area.LscName;
                        dr1[2] = area.Area2Name;

                        var temp1 = alarmsWithDevices.Where(a => a.Device.Area2ID == area.Area2ID);
                        var temp2 = alarmsWithDevices1.Where(a => a.Device.Area2ID == area.Area2ID);
                        var temp3 = alarmsWithDevices2.Where(a => a.Device.Area2ID == area.Area2ID);

                        var result = temp1.Select(a => a.Alarm).ToList();
                        dr1[3] = result.Count;
                        source2[String.Format("{0}-{1}", source1.Rows.Count, source1.Columns[3].ColumnName)] = result;

                        dr1[4] = String.Format("{0:P2}", result.Count > 0 ? (double)temp2.Count() / (double)result.Count : 1);
                        dr1[5] = String.Format("{0:P2}", result.Count > 0 ? (double)temp3.Count() / (double)result.Count : 1);
                        source1.Rows.Add(dr1);
                    }
                }
                #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 = WebUtility.GetUserAlarms(userData).FindAll(alarm => alarm.LscID == lscUser.LscID && alarm.StartTime >= beginTime && alarm.StartTime <= endTime);
                    alarms.AddRange(new BAlarm().GetHisAlarms(lscUser.LscID, lscUser.LscName, userData.StandardProtocol, lscUser.Group.GroupNodes, beginTime, endTime));
                    alarms = alarms.FindAll(a => levels.ContainsKey((Int32)a.AlarmLevel));

                    var devices           = new BOther().GetDevices(lscUser.LscID, lscUser.Group.GroupID);
                    var alarmsWithDevices = from a in alarms
                                            join d in devices on WebUtility.GetDevID(a.NodeID) equals d.DevID
                                            select new {
                        Alarm  = a,
                        Device = d
                    };

                    var alarmsWithDevices1 = from ad in alarmsWithDevices
                                             join sr in standardRecords on new { ad.Alarm.AlarmName, ad.Alarm.AlarmLogType, ad.Alarm.AlarmDeviceType, ad.Alarm.NMAlarmID } equals new { sr.AlarmName, sr.AlarmLogType, sr.AlarmDeviceType, sr.NMAlarmID }
                    select ad;

                    var alarmsWithDevices2 = from ad in alarmsWithDevices
                                             join rf in resourceFile on new { ad.Device.DevName, ad.Device.DevTypeName, ad.Device.ProdName, ad.Device.StaName } equals new { rf.DevName, rf.DevTypeName, rf.ProdName, rf.StaName }
                    select ad;

                    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 dr1 = source1.NewRow();
                        dr1[1] = area.LscName;
                        dr1[2] = area.Area2Name;
                        dr1[3] = area.Area3Name;

                        var temp1 = alarmsWithDevices.Where(a => a.Device.Area3ID == area.Area3ID);
                        var temp2 = alarmsWithDevices1.Where(a => a.Device.Area3ID == area.Area3ID);
                        var temp3 = alarmsWithDevices2.Where(a => a.Device.Area3ID == area.Area3ID);

                        var result = temp1.Select(a => a.Alarm).ToList();
                        dr1[4] = result.Count;
                        source2[String.Format("{0}-{1}", source1.Rows.Count, source1.Columns[4].ColumnName)] = result;

                        dr1[5] = String.Format("{0:P2}", result.Count > 0 ? (double)temp2.Count() / (double)result.Count : 1);
                        dr1[6] = String.Format("{0:P2}", result.Count > 0 ? (double)temp3.Count() / (double)result.Count : 1);
                        source1.Rows.Add(dr1);
                    }
                }
                #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 = WebUtility.GetUserAlarms(userData).FindAll(alarm => alarm.LscID == lscUser.LscID && alarm.StartTime >= beginTime && alarm.StartTime <= endTime);
                    alarms.AddRange(new BAlarm().GetHisAlarms(lscUser.LscID, lscUser.LscName, userData.StandardProtocol, lscUser.Group.GroupNodes, beginTime, endTime));
                    alarms = alarms.FindAll(a => levels.ContainsKey((Int32)a.AlarmLevel));

                    var devices           = new BOther().GetDevices(lscUser.LscID, lscUser.Group.GroupID);
                    var alarmsWithDevices = from a in alarms
                                            join d in devices on WebUtility.GetDevID(a.NodeID) equals d.DevID
                                            select new {
                        Alarm  = a,
                        Device = d
                    };

                    var alarmsWithDevices1 = from ad in alarmsWithDevices
                                             join sr in standardRecords on new { ad.Alarm.AlarmName, ad.Alarm.AlarmLogType, ad.Alarm.AlarmDeviceType, ad.Alarm.NMAlarmID } equals new { sr.AlarmName, sr.AlarmLogType, sr.AlarmDeviceType, sr.NMAlarmID }
                    select ad;

                    var alarmsWithDevices2 = from ad in alarmsWithDevices
                                             join rf in resourceFile on new { ad.Device.DevName, ad.Device.DevTypeName, ad.Device.ProdName, ad.Device.StaName } equals new { rf.DevName, rf.DevTypeName, rf.ProdName, rf.StaName }
                    select ad;

                    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 dr1 = source1.NewRow();
                        dr1[1] = sta.LscName;
                        dr1[2] = sta.Area2Name;
                        dr1[3] = sta.Area3Name;
                        dr1[4] = sta.StaName;

                        var temp1 = alarmsWithDevices.Where(a => a.Device.StaID == sta.StaID);
                        var temp2 = alarmsWithDevices1.Where(a => a.Device.StaID == sta.StaID);
                        var temp3 = alarmsWithDevices2.Where(a => a.Device.StaID == sta.StaID);

                        var result = temp1.Select(a => a.Alarm).ToList();
                        dr1[5] = result.Count;
                        source2[String.Format("{0}-{1}", source1.Rows.Count, source1.Columns[5].ColumnName)] = result;

                        dr1[6] = String.Format("{0:P2}", result.Count > 0 ? (double)temp2.Count() / (double)result.Count : 1);
                        dr1[7] = String.Format("{0:P2}", result.Count > 0 ? (double)temp3.Count() / (double)result.Count : 1);
                        source1.Rows.Add(dr1);
                    }
                }
                #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);
            return(source1);
        }
Example #15
0
        /// <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);
        }
Example #16
0
        /// <summary>
        /// Add data to cache.
        /// </summary>
        private List <Report101Entity> AddDataToCache()
        {
            var userData = UserData;
            var cacheKey = WebUtility.GetCacheKeyName(userData, "kpi-report-101");

            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 texts      = new List <String>();
            var auxSets    = new List <String>();
            var filterText = WebUtility.StringSplit(NodeText.Text.Trim());

            foreach (var ft in filterText)
            {
                if (String.IsNullOrEmpty(ft.Trim()))
                {
                    continue;
                }
                if (FilterTypeList.SelectedItem.Value.Equals("1"))
                {
                    auxSets.Add(ft.Trim());
                }
                else
                {
                    texts.Add(ft.Trim());
                }
            }

            var ctexts      = new List <String>();
            var cauxSets    = new List <String>();
            var cfilterText = WebUtility.StringSplit(CNodeText.Text.Trim());

            foreach (var ft in cfilterText)
            {
                if (String.IsNullOrEmpty(ft.Trim()))
                {
                    continue;
                }
                if (CFilterTypeList.SelectedItem.Value.Equals("1"))
                {
                    cauxSets.Add(ft.Trim());
                }
                else
                {
                    ctexts.Add(ft.Trim());
                }
            }

            var devTypes = new Dictionary <Int32, String>();

            foreach (var dt in DevTypeMultiCombo.SelectedItems)
            {
                devTypes[Int32.Parse(dt.Value)] = dt.Text;
            }
            if (devTypes.Count == 0)
            {
                return(null);
            }

            if (texts.Count == 0 && auxSets.Count == 0 && devTypes.Count > 5)
            {
                WebUtility.ShowMessage(EnmErrType.Warning, "数据量过多,请更换查询条件后重试!");
                return(null);
            }

            var otherEntity = new BOther();
            var nodeEntity  = new BNode();
            var stations    = new List <StationInfo>();
            var devices     = new List <DeviceInfo>();
            var nodes       = new List <NodeInfo>();
            var cnodes      = new List <NodeInfo>();

            foreach (var lsc in lscs)
            {
                stations.AddRange(otherEntity.GetStations(lsc.LscID, lsc.Group.GroupID).FindAll(s => s.BuildingID != WebUtility.DefaultInt32));
                devices.AddRange(otherEntity.GetDevices(lsc.LscID, lsc.Group.GroupID));
                nodes.AddRange(nodeEntity.GetNodes(lsc.LscID, EnmNodeType.Aic, texts.ToArray(), auxSets.ToArray(), devTypes.Keys.ToArray()));
                if (ctexts.Count > 0 || cauxSets.Count > 0)
                {
                    cnodes.AddRange(nodeEntity.GetNodes(lsc.LscID, EnmNodeType.Aic, ctexts.ToArray(), cauxSets.ToArray(), devTypes.Keys.ToArray()));
                }
            }

            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)
            {
                return(null);
            }

            devices = devices.FindAll(d => devTypes.ContainsKey(d.DevTypeID));
            var devGroup = from dev in devices
                           group dev by new { dev.LscID, dev.StaID } into g
                select new {
                LscID   = g.Key.LscID,
                StaID   = g.Key.StaID,
                Devices = g.ToList()
            };

            var ndGroup = from node in nodes
                          group node by new { node.LscID, node.StaID } into g
                select new {
                LscID = g.Key.LscID,
                StaID = g.Key.StaID,
                Nodes = g.ToList()
            };

            var cndGroup = from node in cnodes
                           group node by new { node.LscID, node.StaID } into g
                select new {
                LscID = g.Key.LscID,
                StaID = g.Key.StaID,
                Nodes = g.ToList()
            };

            var staWdn = from sta in stations
                         join dg in devGroup on new { sta.LscID, sta.StaID } equals new { dg.LscID, dg.StaID } into ltd
            from ds in ltd.DefaultIfEmpty()
            join ng in ndGroup on new { sta.LscID, sta.StaID } equals new { ng.LscID, ng.StaID } into ltn
            from ns in ltn.DefaultIfEmpty()
            join cg in cndGroup on new { sta.LscID, sta.StaID } equals new { cg.LscID, cg.StaID } into ltc
            from cs in ltc.DefaultIfEmpty()
            select new {
                Station = sta,
                Devices = ds == null ? new List <DeviceInfo>() : ds.Devices,
                Nodes   = ns == null ? new List <NodeInfo>() : ns.Nodes,
                CNodes  = cs == null ? new List <NodeInfo>() : cs.Nodes
            };

            var result = (from sta in staWdn
                          group sta by new { sta.Station.LscID, sta.Station.Area3ID, sta.Station.BuildingID } into g
                          orderby g.Key.LscID, g.Key.Area3ID, g.Key.BuildingID
                          select new Report101Entity {
                Station = g.First().Station,
                FH = g.Sum(t => t.Nodes.Sum(n => n.Value)),
                CDFH = g.Sum(t => t.CNodes.Sum(n => n.Value)),
                DesignCapacity = CapacityMenuItem.Checked ? Convert.ToSingle(CapacitySpinnerField.Number) : g.Sum(t => t.Devices.Sum(d => d.DevDesignCapacity == WebUtility.DefaultFloat ? 0 : d.DevDesignCapacity)),
                Devices = g.SelectMany(d => d.Devices).ToList(),
                Nodes = g.SelectMany(n => n.Nodes).ToList(),
                CNodes = g.SelectMany(n => n.CNodes).ToList()
            }).ToList();

            int cacheDuration = Int32.Parse(WebConfigurationManager.AppSettings["DefaultCacheDuration"]);

            HttpRuntime.Cache.Insert(cacheKey, result, null, Cache.NoAbsoluteExpiration, TimeSpan.FromSeconds(cacheDuration), CacheItemPriority.Default, null);
            return(result);
        }
Example #17
0
        /// <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);
        }
Example #18
0
        /// <summary>
        /// Add Events To Cache
        /// </summary>
        /// <returns>Operating Events</returns>
        private List <AcEventInfo> AddEventsToCache()
        {
            var userData = UserData;
            var cacheKey = WebUtility.GetCacheKeyName(userData, "netking-events");

            HttpRuntime.Cache.Remove(cacheKey);

            var lscIds = new List <int>();

            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]);
                    lscIds.Add(lscId);
                }
            }
            else
            {
                lscIds.AddRange(userData.LscUsers.Select(l => l.LscID));
            }
            if (lscIds.Count == 0)
            {
                return(null);
            }

            var types = new Dictionary <Int32, String>();

            foreach (var dt in EventTypeMultiCombo.SelectedItems)
            {
                types[Int32.Parse(dt.Value)] = dt.Text;
            }

            var ctype    = Convert.ToInt32(CountTypeComboBox.SelectedItem.Value);
            var fromTime = DateTime.Parse(FromDate.Text);
            var toTime   = DateTime.Parse(ToDate.Text);

            var lscEntity   = new BLsc();
            var otherEntity = new BOther();
            var result      = new List <AcEventInfo>();

            foreach (var id in lscIds)
            {
                var lsc = lscEntity.GetLsc(id);
                if (lsc == null)
                {
                    continue;
                }

                List <AcEventInfo> temp = null;
                switch (ctype)
                {
                case 0:
                    temp = otherEntity.GetPubAlertEvent(lsc.LscID, lsc.LscName, WebUtility.CreateLscConnectionString(lsc), fromTime, toTime);
                    break;

                case 1:
                    temp = otherEntity.GetPubGeneralEvent(lsc.LscID, lsc.LscName, WebUtility.CreateLscConnectionString(lsc), fromTime, toTime);
                    break;

                case 2:
                    temp = otherEntity.GetPubInvalidCardEvent(lsc.LscID, lsc.LscName, WebUtility.CreateLscConnectionString(lsc), fromTime, toTime);
                    break;

                case 3:
                    temp = otherEntity.GetPubValidCardEvent(lsc.LscID, lsc.LscName, WebUtility.CreateLscConnectionString(lsc), fromTime, toTime);
                    break;

                default:
                    break;
                }

                if (temp != null)
                {
                    if (types.Count > 0)
                    {
                        temp = temp.FindAll(t => types.ContainsKey(t.MessageID));
                    }

                    result.AddRange(temp);
                }
            }

            var cacheDuration = Int32.Parse(WebConfigurationManager.AppSettings["DefaultCacheDuration"]);

            HttpRuntime.Cache.Insert(cacheKey, result, null, Cache.NoAbsoluteExpiration, TimeSpan.FromSeconds(cacheDuration), CacheItemPriority.Default, null);
            return(result);
        }
Example #19
0
        /// <summary>
        /// Add Data To Cache
        /// </summary>
        private List <IDValuePair <BatStaticInfo, List <BatStaticInfo> > > AddDataToCache()
        {
            var userData = UserData;
            var cacheKey = WebUtility.GetCacheKeyName(userData, "bat-count-report");

            HttpRuntime.Cache.Remove(cacheKey);

            var lscUsers = 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)
                    {
                        lscUsers.Add(lscUser);
                    }
                }
            }
            else
            {
                lscUsers.AddRange(userData.LscUsers);
            }

            if (lscUsers.Count == 0)
            {
                return(null);
            }

            int?     area2Id       = null;
            int?     area3Id       = null;
            int?     staId         = null;
            int?     devId         = null;
            int?     devIndex      = null;
            DateTime?beginFromTime = null;
            DateTime?beginToTime   = null;
            DateTime?endFromTime   = null;
            DateTime?endToTime     = null;
            double   minInterval   = 0;
            double   maxInterval   = Int32.MaxValue;

            if (Area2ComboBox.SelectedIndex > 0)
            {
                area2Id = Int32.Parse(Area2ComboBox.SelectedItem.Value);
            }
            if (Area3ComboBox.SelectedIndex > 0)
            {
                area3Id = Int32.Parse(Area3ComboBox.SelectedItem.Value);
            }
            if (StaComboBox.SelectedIndex > 0)
            {
                staId = Int32.Parse(StaComboBox.SelectedItem.Value);
            }
            if (DevComboBox.SelectedIndex > 0)
            {
                devId = Int32.Parse(DevComboBox.SelectedItem.Value);
            }
            if (!DevIndexNumberField.IsEmpty)
            {
                devIndex = (Int32)DevIndexNumberField.Number;
            }
            if (!String.IsNullOrEmpty(BeginFromDate.Text.Trim()))
            {
                beginFromTime = DateTime.Parse(BeginFromDate.Text);
            }
            if (!String.IsNullOrEmpty(BeginToDate.Text.Trim()))
            {
                beginToTime = DateTime.Parse(BeginToDate.Text);
            }
            if (!String.IsNullOrEmpty(EndFromDate.Text.Trim()))
            {
                endFromTime = DateTime.Parse(EndFromDate.Text);
            }
            if (!String.IsNullOrEmpty(EndToDate.Text.Trim()))
            {
                endToTime = DateTime.Parse(EndToDate.Text);
            }
            if (FromMinNumberField.Number > 0)
            {
                minInterval = FromMinNumberField.Number / (24 * 60);
            }
            if (ToMinNumberField.Number > 0)
            {
                maxInterval = ToMinNumberField.Number / (24 * 60);
            }

            var otherEntity = new BOther();
            var records     = new List <BatStaticInfo>();

            foreach (var lu in lscUsers)
            {
                var temp = otherEntity.GetBatStatic(lu.LscID, lu.LscName, devId, devIndex, beginFromTime, beginToTime, endFromTime, endToTime, minInterval, maxInterval);
                if (temp != null && temp.Count > 0)
                {
                    var devices = otherEntity.GetDevices(lu.LscID, lu.Group.GroupID);
                    devices = devices.FindAll(d => {
                        return((area2Id == null || d.Area2ID == area2Id) &&
                               (area3Id == null || d.Area3ID == area3Id) &&
                               (staId == null || d.StaID == staId) &&
                               (devId == null || d.DevID == devId));
                    });

                    records.AddRange(
                        from tp in temp
                        join dev in devices on new { tp.LscID, tp.DevID } equals new { dev.LscID, dev.DevID }
                        select new BatStaticInfo {
                        LscID     = dev.LscID,
                        LscName   = dev.LscName,
                        Area1ID   = dev.Area1ID,
                        Area1Name = dev.Area1Name,
                        Area2ID   = dev.Area2ID,
                        Area2Name = dev.Area2Name,
                        Area3ID   = dev.Area3ID,
                        Area3Name = dev.Area3Name,
                        StaID     = dev.StaID,
                        StaName   = dev.StaName,
                        DevID     = dev.DevID,
                        DevName   = dev.DevName,
                        DevIndex  = tp.DevIndex,
                        StartTime = tp.StartTime,
                        EndTime   = tp.EndTime,
                        LastTime  = tp.LastTime
                    }
                        );
                }
            }

            var result = (from rec in records
                          group rec by new { rec.LscID, rec.DevID, rec.DevIndex } into tg
                          select new IDValuePair <BatStaticInfo, List <BatStaticInfo> > {
                ID = tg.FirstOrDefault(),
                Value = tg.ToList()
            }).ToList();

            int cacheDuration = Int32.Parse(WebConfigurationManager.AppSettings["DefaultCacheDuration"]);

            HttpRuntime.Cache.Insert(cacheKey, result, null, Cache.NoAbsoluteExpiration, TimeSpan.FromSeconds(cacheDuration), CacheItemPriority.Default, null);
            return(result);
        }
Example #20
0
        /// <summary>
        /// Add data to cache.
        /// </summary>
        private List <Report110Entity> AddDataToCache()
        {
            var userData  = UserData;
            var cacheKey1 = WebUtility.GetCacheKeyName(userData, "kpi-report-110");
            var cacheKey2 = WebUtility.GetCacheKeyName(userData, "kpi-report-110-02");

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

            var lscIds = new List <int>();

            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]);
                    lscIds.Add(lscId);
                }
            }
            else
            {
                lscIds.AddRange(userData.LscUsers.Select(l => l.LscID));
            }
            if (lscIds.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(BeginDate.Text);
            var toTime   = DateTime.Parse(EndDate.Text);

            var texts      = new List <String>();
            var auxSets    = new List <String>();
            var filterText = WebUtility.StringSplit(NodeText.Text.Trim());

            foreach (var ft in filterText)
            {
                if (String.IsNullOrEmpty(ft.Trim()))
                {
                    continue;
                }
                if (FilterTypeList.SelectedItem.Value.Equals("1"))
                {
                    auxSets.Add(ft.Trim());
                }
                else
                {
                    texts.Add(ft.Trim());
                }
            }

            var lscEntity  = new BLsc();
            var nodeEntity = new BNode();
            var source1    = new List <Report110Entity>();
            var source2    = new Dictionary <String, List <StationInfo> >();

            foreach (var id in lscIds)
            {
                var lsc = lscEntity.GetLsc(id);
                if (lsc == null)
                {
                    continue;
                }

                //var instance = new Dictionary<string, NodeInfo>();
                //var nodes = nodeEntity.GetNodes(lsc.LscID, EnmNodeType.Aic, texts.ToArray(), auxSets.ToArray(), null);
                //foreach (var node in nodes) {
                //    instance[String.Format("{0}-{1}", node.LscID, node.StaID)] = node;
                //}

                var stations = new BOther().GetStations(lsc.LscID).FindAll(s => staTypes.ContainsKey(s.StaTypeID));
                var values   = nodeEntity.GetMaxHisAIV(lsc.LscID, fromTime, toTime);
                //var temp = from n in instance.Values
                //           join s in stations on new { n.LscID, n.StaID } equals new { s.LscID,s.StaID}
                //           join v in values on new { n.LscID, n.NodeID } equals new { v.LscID, v.NodeID }
                //           select new {
                //               Station = s,
                //               Node = n,
                //               Value = v.Value
                //           };

                var temp = from s in stations
                           join v in values on new { s.LscID, s.StaID } equals new { v.LscID, StaID = v.NodeID }
                select new {
                    Station = s,
                    Value   = v.Value
                };

                var correct = temp.Where(n => n.Value >= 1);
                source2[String.Format("{0}-CorrectCount", source1.Count)] = correct.Any() ? correct.Select(n => n.Station).ToList() : new List <StationInfo>();
                source2[String.Format("{0}-AllCount", source1.Count)]     = temp.Any() ? temp.Select(n => n.Station).ToList() : new List <StationInfo>();

                source1.Add(new Report110Entity {
                    LscID        = lsc.LscID,
                    LscName      = lsc.LscName,
                    CorrectCount = correct.Count(),
                    AllCount     = temp.Count()
                });
            }

            int 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);
            return(source1);
        }
Example #21
0
        /// <summary>
        /// Add data to cache.
        /// </summary>
        private List <Report104Entity> AddDataToCache()
        {
            var userData = UserData;
            var cacheKey = WebUtility.GetCacheKeyName(userData, "kpi-report-104");

            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 texts      = new List <String>();
            var auxSets    = new List <String>();
            var filterText = WebUtility.StringSplit(NodeText.Text.Trim());

            foreach (var ft in filterText)
            {
                if (String.IsNullOrEmpty(ft.Trim()))
                {
                    continue;
                }
                if (FilterTypeList.SelectedItem.Value.Equals("1"))
                {
                    auxSets.Add(ft.Trim());
                }
                else
                {
                    texts.Add(ft.Trim());
                }
            }

            var devTypes = new Dictionary <Int32, String>();

            foreach (var dt in DevTypeMultiCombo.SelectedItems)
            {
                devTypes[Int32.Parse(dt.Value)] = dt.Text;
            }
            if (devTypes.Count == 0)
            {
                return(null);
            }

            var almNames = new List <String>();
            var almIds   = new Dictionary <String, String>();
            var almText  = WebUtility.StringSplit(AlarmNameText.Text.Trim());

            foreach (var at in almText)
            {
                if (String.IsNullOrEmpty(at.Trim()))
                {
                    continue;
                }
                if (AlmNameList.SelectedItem.Value.Equals("1"))
                {
                    almIds[at.Trim()] = null;
                }
                else
                {
                    almNames.Add(at.Trim());
                }
            }

            var otherEntity = new BOther();
            var nodeEntity  = new BNode();
            var stations    = new List <StationInfo>();
            var devices     = new List <DeviceInfo>();
            var nodes       = new List <NodeInfo>();

            foreach (var lsc in lscs)
            {
                stations.AddRange(otherEntity.GetStations(lsc.LscID, lsc.Group.GroupID).FindAll(s => s.BuildingID != WebUtility.DefaultInt32));
                devices.AddRange(otherEntity.GetDevices(lsc.LscID, lsc.Group.GroupID));
                nodes.AddRange(nodeEntity.GetNodes(lsc.LscID, EnmNodeType.Aic, texts.ToArray(), auxSets.ToArray(), devTypes.Keys.ToArray()));
            }

            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)
            {
                return(null);
            }

            devices = devices.FindAll(d => devTypes.ContainsKey(d.DevTypeID));
            var devGroup = from dev in devices
                           group dev by new { dev.LscID, dev.StaID } into g
                select new {
                LscID   = g.Key.LscID,
                StaID   = g.Key.StaID,
                Devices = g.ToList()
            };

            var staWdv = from sta in stations
                         join dg in devGroup on new { sta.LscID, sta.StaID } equals new { dg.LscID, dg.StaID } into lt
            from ds in lt.DefaultIfEmpty()
            select new {
                Station = sta,
                Devices = ds == null ? new List <DeviceInfo>() : ds.Devices
            };

            var alarmEntity = new BAlarm();
            var alarms      = WebUtility.GetUserAlarms(userData).FindAll(alarm => lscs.Any(l => l.LscID == alarm.LscID) && alarm.StartTime >= fromTime && alarm.StartTime <= toTime);

            foreach (var lsc in lscs)
            {
                alarms.AddRange(alarmEntity.GetHisAlarms(lsc.LscID, lsc.LscName, userData.StandardProtocol, lsc.Group.GroupNodes, fromTime, toTime));
            }

            var ndWam = from alarm in alarms
                        join node in nodes on new { alarm.LscID, alarm.NodeID, alarm.NodeType } equals new { node.LscID, node.NodeID, node.NodeType }
            where (almNames.Count == 0 || almNames.Any(name => alarm.AlarmName.Contains(name))) && (almIds.Count == 0 || almIds.ContainsKey(alarm.AlarmID.ToString()))
            select new {
                Node  = node,
                Alarm = alarm
            };

            var almGroup = from alarm in ndWam
                           group alarm by new { alarm.Node.LscID, alarm.Node.StaID } into g
                select new {
                LscID  = g.Key.LscID,
                StaID  = g.Key.StaID,
                Alarms = g.Select(a => a.Alarm)
            };

            var staWam = from sd in staWdv
                         join ga in almGroup on new { sd.Station.LscID, sd.Station.StaID } equals new { ga.LscID, ga.StaID } into lt
            from gs in lt.DefaultIfEmpty()
            select new {
                Station = sd.Station,
                Devices = sd.Devices,
                Alarms  = gs == null ? new List <AlarmInfo>() : gs.Alarms
            };

            var result = (from sa in staWam
                          group sa by new { sa.Station.LscID, sa.Station.Area3ID, sa.Station.BuildingID } into g
                          orderby g.Key.LscID, g.Key.Area3ID, g.Key.BuildingID
                          select new Report104Entity {
                Station = g.First().Station,
                BeginTime = fromTime,
                EndTime = toTime,
                Devices = g.SelectMany(s => s.Devices).ToList(),
                Alarms = g.SelectMany(a => a.Alarms).ToList()
            }).ToList();

            int cacheDuration = Int32.Parse(WebConfigurationManager.AppSettings["DefaultCacheDuration"]);

            HttpRuntime.Cache.Insert(cacheKey, result, null, Cache.NoAbsoluteExpiration, TimeSpan.FromSeconds(cacheDuration), CacheItemPriority.Default, null);
            return(result);
        }
Example #22
0
        /// <summary>
        /// Add data to cache.
        /// </summary>
        private List <Report116Entity> AddDataToCache()
        {
            var userData = UserData;
            var cacheKey = WebUtility.GetCacheKeyName(userData, "kpi-report-116");

            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 texts      = new List <String>();
            var auxSets    = new List <String>();
            var filterText = WebUtility.StringSplit(NodeText.Text.Trim());

            foreach (var ft in filterText)
            {
                if (String.IsNullOrEmpty(ft.Trim()))
                {
                    continue;
                }
                if (FilterTypeList.SelectedItem.Value.Equals("1"))
                {
                    auxSets.Add(ft.Trim());
                }
                else
                {
                    texts.Add(ft.Trim());
                }
            }

            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 devTypes = new Dictionary <Int32, String>();

            foreach (var dt in DevTypeMultiCombo.SelectedItems)
            {
                devTypes[Int32.Parse(dt.Value)] = dt.Text;
            }
            if (devTypes.Count == 0)
            {
                return(null);
            }

            var almNames = new List <String>();
            var almIds   = new Dictionary <String, String>();
            var almText  = WebUtility.StringSplit(AlarmNameText.Text.Trim());

            foreach (var at in almText)
            {
                if (String.IsNullOrEmpty(at.Trim()))
                {
                    continue;
                }
                if (AlmNameList.SelectedItem.Value.Equals("1"))
                {
                    almIds[at.Trim()] = null;
                }
                else
                {
                    almNames.Add(at.Trim());
                }
            }

            var otherEntity = new BOther();
            var nodeEntity  = new BNode();
            var alarmEntity = new BAlarm();
            var result      = new List <Report116Entity>();

            foreach (var lsc in lscs)
            {
                var devices = otherEntity.GetDevices(lsc.LscID).FindAll(d => staTypes.ContainsKey(d.StaTypeID) && devTypes.ContainsKey(d.DevTypeID));
                var nodes   = nodeEntity.GetNodes(lsc.LscID, EnmNodeType.Dic, texts.ToArray(), auxSets.ToArray(), devTypes.Keys.ToArray());
                if (nodes.Count == 0)
                {
                    result.Add(new Report116Entity {
                        LscID     = lsc.LscID,
                        LscName   = lsc.LscName,
                        BeginTime = fromTime,
                        EndTime   = toTime,
                        Alarms    = new List <AlarmInfo>(),
                        DevCnt    = devices.Count
                    });
                }
                else
                {
                    var alarms = WebUtility.GetUserAlarms(userData).FindAll(alarm => alarm.LscID == lsc.LscID && alarm.StartTime >= fromTime && alarm.StartTime <= toTime);
                    alarms.AddRange(alarmEntity.GetHisAlarms(lsc.LscID, lsc.LscName, userData.StandardProtocol, lsc.Group.GroupNodes, fromTime, toTime));

                    var ta = alarms.FindAll(alarm => {
                        return((almNames.Count == 0 || almNames.Any(name => alarm.AlarmName.Contains(name))) &&
                               (almIds.Count == 0 || almIds.ContainsKey(alarm.AlarmID.ToString())));
                    });

                    var temp = from alarm in ta
                               join node in nodes on new { alarm.LscID, alarm.NodeID } equals new { node.LscID, node.NodeID }
                    select alarm;

                    result.Add(new Report116Entity {
                        LscID     = lsc.LscID,
                        LscName   = lsc.LscName,
                        BeginTime = fromTime,
                        EndTime   = toTime,
                        Alarms    = temp.ToList(),
                        DevCnt    = devices.Count
                    });
                }
            }

            int cacheDuration = Int32.Parse(WebConfigurationManager.AppSettings["DefaultCacheDuration"]);

            HttpRuntime.Cache.Insert(cacheKey, result, null, Cache.NoAbsoluteExpiration, TimeSpan.FromSeconds(cacheDuration), CacheItemPriority.Default, null);
            return(result);
        }
Example #23
0
        /// <summary>
        /// Add data to cache.
        /// </summary>
        private List <Report006Entity> AddDataToCache()
        {
            var userData = UserData;
            var cacheKey = WebUtility.GetCacheKeyName(userData, "kpi-report-006");

            HttpRuntime.Cache.Remove(cacheKey);

            var lscIds = new List <int>();

            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]);
                    lscIds.Add(lscId);
                }
            }
            else
            {
                lscIds.AddRange(userData.LscUsers.Select(l => l.LscID));
            }
            if (lscIds.Count == 0)
            {
                return(null);
            }

            var lscEntity   = new BLsc();
            var otherEntity = new BOther();
            var result      = new List <Report006Entity>();

            foreach (var id in lscIds)
            {
                var lsc = lscEntity.GetLsc(id);
                if (lsc == null)
                {
                    continue;
                }

                var cnt = 0;
                if (fRadio.Checked)
                {
                    var stations = otherEntity.GetStations(lsc.LscID);
                    cnt = stations.Count;
                }
                else
                {
                    var areas = otherEntity.GetAreas(lsc.LscID);
                    cnt = areas.Count;
                }

                var parm = Report006Entity.GetLscParam(lsc.LscID, WebUtility.CreateLscConnectionString(lsc));
                result.Add(new Report006Entity {
                    LscID     = lsc.LscID,
                    LscName   = lsc.LscName,
                    ThisCount = cnt,
                    LastCount = parm != null && parm.StaTNumber != WebUtility.DefaultInt32 ? parm.StaTNumber : 0
                });
            }

            if (result.Count > 0)
            {
                result.Add(new Report006Entity {
                    LscID     = -100,
                    LscName   = "汇总(平均值)",
                    ThisCount = (Int32)result.Average(r => r.ThisCount),
                    LastCount = (Int32)result.Average(r => r.LastCount)
                });
            }

            int cacheDuration = Int32.Parse(WebConfigurationManager.AppSettings["DefaultCacheDuration"]);

            HttpRuntime.Cache.Insert(cacheKey, result, null, Cache.NoAbsoluteExpiration, TimeSpan.FromSeconds(cacheDuration), CacheItemPriority.Default, null);
            return(result);
        }
Example #24
0
        /// <summary>
        /// Add data to cache.
        /// </summary>
        private List <Report113Entity> AddDataToCache()
        {
            var userData  = UserData;
            var cacheKey1 = WebUtility.GetCacheKeyName(userData, "kpi-report-113");
            var cacheKey2 = WebUtility.GetCacheKeyName(userData, "kpi-report-113-02");

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

            var lscIds = new List <int>();

            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]);
                    lscIds.Add(lscId);
                }
            }
            else
            {
                lscIds.AddRange(userData.LscUsers.Select(l => l.LscID));
            }
            if (lscIds.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 devTypes = new Dictionary <Int32, String>();

            foreach (var dt in DevTypeMultiCombo.SelectedItems)
            {
                devTypes[Int32.Parse(dt.Value)] = dt.Text;
            }
            if (devTypes.Count == 0)
            {
                return(null);
            }

            var otherEntity = new BOther();
            var lscEntity   = new BLsc();
            var source1     = new List <Report113Entity>();
            var source2     = new Dictionary <String, List <DeviceInfo> >();

            var virtualData = WebConfigurationManager.AppSettings["Kpi-HeNan-Virtual-Enable"] != null && WebConfigurationManager.AppSettings["Kpi-HeNan-Virtual-Enable"].Equals("1");
            var lscParms    = new List <LscParamInfo>();

            if (virtualData)
            {
                lscParms.AddRange(otherEntity.GetLscParam());
            }

            foreach (var id in lscIds)
            {
                var lsc = lscEntity.GetLsc(id);
                if (lsc == null)
                {
                    continue;
                }

                var devices1 = otherEntity.GetDevices(lsc.LscID).FindAll(d => staTypes.ContainsKey(d.StaTypeID) && devTypes.ContainsKey(d.DevTypeID));
                var devices2 = Report113Entity.GetDevices(lsc.LscID, lsc.LscName, WebUtility.CreateLscConnectionString(lsc));

                var record = new Report113Entity {
                    LscID     = lsc.LscID,
                    LscName   = lsc.LscName,
                    ThisCount = devices1.Count,
                    LastCount = devices2.Count
                };

                if (virtualData)
                {
                    var parm = lscParms.Find(l => l.LscID == lsc.LscID);
                    if (parm != null && parm.ElecDevTNumber != WebUtility.DefaultInt32)
                    {
                        record.ThisCount = parm.ElecDevTNumber;
                    }
                }

                source1.Add(record);
                source2[String.Format("{0}-ThisCount", lsc.LscID)] = devices1;
                source2[String.Format("{0}-LastCount", lsc.LscID)] = devices2;
            }

            if (source1.Count > 0)
            {
                source1.Add(new Report113Entity {
                    LscID     = -100,
                    LscName   = "汇总",
                    ThisCount = (Int32)source1.Sum(r => r.ThisCount),
                    LastCount = (Int32)source1.Sum(r => r.LastCount)
                });
            }

            int 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);
            return(source1);
        }
Example #25
0
        /// <summary>
        /// Add data to cache.
        /// </summary>
        private List <Report004Entity> AddDataToCache()
        {
            var userData = UserData;
            var cacheKey = WebUtility.GetCacheKeyName(userData, "kpi-report-004");

            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 fromTime = DateTime.Parse(BeginFromDate.Text);
            var toTime   = DateTime.Parse(BeginToDate.Text);
            var roads    = Convert.ToInt32(EPRoadSpinnerField.Number);

            var auxSets    = new List <String>();
            var texts      = new List <String>();
            var filterText = WebUtility.StringSplit(NodeText.Text.Trim());

            foreach (var ft in filterText)
            {
                if (String.IsNullOrEmpty(ft.Trim()))
                {
                    continue;
                }
                if (FilterList.SelectedItem.Value.Equals("1"))
                {
                    auxSets.Add(ft.Trim());
                }
                else
                {
                    texts.Add(ft.Trim());
                }
            }
            if (texts.Count == 0 && auxSets.Count == 0)
            {
                return(null);
            }

            var almNames = new List <String>();
            var almIds   = new Dictionary <String, String>();
            var almText  = WebUtility.StringSplit(AlarmNameText.Text.Trim());

            foreach (var at in almText)
            {
                if (String.IsNullOrEmpty(at.Trim()))
                {
                    continue;
                }
                if (AlmNameList.SelectedItem.Value.Equals("1"))
                {
                    almIds[at.Trim()] = null;
                }
                else
                {
                    almNames.Add(at.Trim());
                }
            }

            var nodeEntity  = new BNode();
            var nodes       = new List <NodeInfo>();
            var otherEntity = new BOther();
            var stations    = new List <StationInfo>();

            foreach (var lsc in lscs)
            {
                nodes.AddRange(nodeEntity.GetNodes(lsc.LscID, EnmNodeType.Img, texts.ToArray(), auxSets.ToArray(), null));
                stations.AddRange(otherEntity.GetStations(lsc.LscID, lsc.Group.GroupID));
            }

            var alarmEntity = new BAlarm();
            var alarms      = WebUtility.GetUserAlarms(userData).FindAll(alarm => lscs.Any(l => l.LscID == alarm.LscID) && alarm.StartTime >= fromTime && alarm.StartTime <= toTime);

            foreach (var lsc in lscs)
            {
                alarms.AddRange(alarmEntity.GetHisAlarms(lsc.LscID, lsc.LscName, userData.StandardProtocol, lsc.Group.GroupNodes, fromTime, toTime));
            }

            var ndWam = from alarm in alarms
                        join node in nodes on new { alarm.LscID, alarm.NodeID, alarm.NodeType } equals new { node.LscID, node.NodeID, node.NodeType }
            where (almNames.Count == 0 || almNames.Any(name => alarm.AlarmName.Contains(name))) && (almIds.Count == 0 || almIds.ContainsKey(alarm.AlarmID.ToString())) && string.IsNullOrEmpty(alarm.ProjName)
            select new {
                Node  = node,
                Alarm = alarm
            };

            var almGroup = from alarm in ndWam
                           group alarm by new { alarm.Node.LscID, alarm.Node.StaID } into g
                select new {
                LscID  = g.Key.LscID,
                StaID  = g.Key.StaID,
                Alarms = g.Select(a => a.Alarm)
            };

            var result = (from sta in stations
                          join ag in almGroup on new { sta.LscID, sta.StaID } equals new { ag.LscID, ag.StaID } into lt
                          from la in lt.DefaultIfEmpty()
                          orderby sta.LscID, sta.StaID
                          select new Report004Entity {
                LscID = sta.LscID,
                LscName = sta.LscName,
                Area2ID = sta.Area2ID,
                Area2Name = sta.Area2Name,
                Area3ID = sta.Area3ID,
                Area3Name = sta.Area3Name,
                StaID = sta.StaID,
                StaName = sta.StaName,
                BeginTime = fromTime,
                EndTime = toTime,
                Roads = roads,
                Alarms = la == null ? new List <AlarmInfo>() : la.Alarms.ToList()
            }).ToList();

            if (result.Count > 0)
            {
                result.Add(new Report004Entity {
                    LscID     = -100,
                    LscName   = "汇总(平均值)",
                    Area2ID   = WebUtility.DefaultInt32,
                    Area2Name = WebUtility.DefaultString,
                    Area3ID   = WebUtility.DefaultInt32,
                    Area3Name = WebUtility.DefaultString,
                    StaID     = WebUtility.DefaultInt32,
                    StaName   = WebUtility.DefaultString,
                    BeginTime = fromTime,
                    EndTime   = toTime,
                    Roads     = roads,
                    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);
        }
Example #26
0
        /// <summary>
        /// Add data to cache.
        /// </summary>
        private List <Report007Entity> AddDataToCache()
        {
            var userData = UserData;
            var cacheKey = WebUtility.GetCacheKeyName(userData, "kpi-report-007");

            HttpRuntime.Cache.Remove(cacheKey);

            var lscIds = new List <int>();

            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]);
                    lscIds.Add(lscId);
                }
            }
            else
            {
                lscIds.AddRange(userData.LscUsers.Select(l => l.LscID));
            }
            if (lscIds.Count == 0)
            {
                return(null);
            }

            var devTypes = new Dictionary <Int32, String>();

            foreach (var dt in DevTypeMultiCombo.SelectedItems)
            {
                devTypes[Int32.Parse(dt.Value)] = dt.Text;
            }
            if (devTypes.Count == 0)
            {
                return(null);
            }

            var lscEntity   = new BLsc();
            var otherEntity = new BOther();
            var result      = new List <Report007Entity>();

            foreach (var id in lscIds)
            {
                var lsc = lscEntity.GetLsc(id);
                if (lsc == null)
                {
                    continue;
                }

                var devices = otherEntity.GetDevices(lsc.LscID).FindAll(d => devTypes.ContainsKey(d.AlmDevTypeID));
                var parm    = Report007Entity.GetLscParam(lsc.LscID, WebUtility.CreateLscConnectionString(lsc));
                result.Add(new Report007Entity {
                    LscID     = lsc.LscID,
                    LscName   = lsc.LscName,
                    ThisCount = devices.Count,
                    LastCount = parm != null && parm.ElecDevTNumber != WebUtility.DefaultInt32 ? parm.ElecDevTNumber : 0
                });
            }

            if (result.Count > 0)
            {
                result.Add(new Report007Entity {
                    LscID     = -100,
                    LscName   = "汇总(平均值)",
                    ThisCount = (Int32)result.Average(r => r.ThisCount),
                    LastCount = (Int32)result.Average(r => r.LastCount)
                });
            }

            int cacheDuration = Int32.Parse(WebConfigurationManager.AppSettings["DefaultCacheDuration"]);

            HttpRuntime.Cache.Insert(cacheKey, result, null, Cache.NoAbsoluteExpiration, TimeSpan.FromSeconds(cacheDuration), CacheItemPriority.Default, null);
            return(result);
        }
Example #27
0
        /// <summary>
        /// Add data to cache.
        /// </summary>
        private List <Report115Entity> AddDataToCache()
        {
            var userData  = UserData;
            var cacheKey1 = WebUtility.GetCacheKeyName(userData, "kpi-report-115");
            var cacheKey2 = WebUtility.GetCacheKeyName(userData, "kpi-report-115-02");

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

            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 auxSets    = new List <String>();
            var texts      = new List <String>();
            var filterText = WebUtility.StringSplit(NodeText.Text.Trim());

            foreach (var ft in filterText)
            {
                if (String.IsNullOrEmpty(ft.Trim()))
                {
                    continue;
                }
                if (FilterList.SelectedItem.Value.Equals("1"))
                {
                    auxSets.Add(ft.Trim());
                }
                else
                {
                    texts.Add(ft.Trim());
                }
            }
            if (texts.Count == 0 && auxSets.Count == 0)
            {
                return(null);
            }

            var almNames = new List <String>();
            var almIds   = new Dictionary <String, String>();
            var almText  = WebUtility.StringSplit(AlarmNameText.Text.Trim());

            foreach (var at in almText)
            {
                if (String.IsNullOrEmpty(at.Trim()))
                {
                    continue;
                }
                if (AlmNameList.SelectedItem.Value.Equals("1"))
                {
                    almIds[at.Trim()] = null;
                }
                else
                {
                    almNames.Add(at.Trim());
                }
            }

            var nodeEntity   = new BNode();
            var otherEntity  = new BOther();
            var alarmEntity  = new BAlarm();
            var source1      = new List <Report115Entity>();
            var source2      = new Dictionary <String, List <StationInfo> >();
            var activeAlarms = WebUtility.GetUserAlarms(userData).FindAll(alarm => lscs.Any(l => l.LscID == alarm.LscID) && alarm.StartTime >= fromTime && alarm.StartTime <= toTime);

            foreach (var lsc in lscs)
            {
                var alarms = activeAlarms.FindAll(a => a.LscID == lsc.LscID);
                alarms.AddRange(alarmEntity.GetHisAlarms(lsc.LscID, lsc.LscName, userData.StandardProtocol, lsc.Group.GroupNodes, fromTime, toTime));
                if (almNames.Count > 0)
                {
                    alarms = alarms.FindAll(a => almNames.Any(n => a.AlarmName.Contains(n)));
                }
                if (almIds.Count > 0)
                {
                    alarms = alarms.FindAll(a => almIds.ContainsKey(a.AlarmID.ToString()));
                }

                var stations = otherEntity.GetStations(lsc.LscID).FindAll(s => staTypes.ContainsKey(s.StaTypeID));
                var nodes    = nodeEntity.GetNodes(lsc.LscID, EnmNodeType.Aic, texts.ToArray(), auxSets.ToArray(), null);
                var gn       = from n in nodes
                               group n by n.StaID into g
                               select new {
                    StaID = g.Key,
                    Nodes = g.ToList()
                };

                var ns = from s in stations
                         join n in gn on s.StaID equals n.StaID
                         select new {
                    Station = s,
                    Nodes   = n.Nodes
                };

                var ndWam = from alarm in alarms
                            join node in nodes on new { alarm.NodeID, alarm.NodeType } equals new { node.NodeID, node.NodeType }
                select new {
                    Node  = node,
                    Alarm = alarm
                };

                var gndWam = from na in ndWam
                             group na by na.Node.StaID into g
                             select new {
                    StaID  = g.Key,
                    Alarms = g.Select(a => a.Alarm)
                };

                var sndWam = from s in ns
                             join gw in gndWam on s.Station.StaID equals gw.StaID
                             select new {
                    Station = s.Station,
                    Nodes   = s.Nodes,
                    Alarms  = gw.Alarms
                };

                source1.Add(new Report115Entity {
                    LscID     = lsc.LscID,
                    LscName   = lsc.LscName,
                    ThisCount = sndWam.Count(),
                    LastCount = ns.Count()
                });

                source2[String.Format("{0}-ThisCount", lsc.LscID)] = sndWam.Select(s => s.Station).ToList();
                source2[String.Format("{0}-LastCount", lsc.LscID)] = ns.Select(s => s.Station).ToList();
            }

            if (source1.Count > 0)
            {
                source1.Add(new Report115Entity {
                    LscID     = -100,
                    LscName   = "汇总",
                    ThisCount = (Int32)source1.Sum(r => r.ThisCount),
                    LastCount = (Int32)source1.Sum(r => r.LastCount)
                });
            }

            int 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);
            return(source1);
        }
Example #28
0
        /// <summary>
        /// Add Data To Cache
        /// </summary>
        private List <PicInfo> AddDataToCache()
        {
            try {
                var userData = UserData;
                var cacheKey = WebUtility.GetCacheKeyName(userData, "his-pictures");
                HttpRuntime.Cache.Remove(cacheKey);

                if (LscsComboBox.SelectedItem == null)
                {
                    return(null);
                }
                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);
                }

                var      reportEntity = new BReport();
                var      otherEntity  = new BOther();
                var      fromTime     = DateTime.Parse(FromDate.Text);
                var      toTime       = DateTime.Parse(ToDate.Text);
                string[] picModels    = null;
                if (PicTypeMultiCombo.SelectedItems.Count > 0)
                {
                    picModels = new string[PicTypeMultiCombo.SelectedItems.Count];
                    for (int i = 0; i < picModels.Length; i++)
                    {
                        picModels[i] = PicTypeMultiCombo.SelectedItems[i].Text;
                    }
                }

                var pics = reportEntity.GetHisPictures(lscUser.LscID, fromTime, toTime, picModels);
                if (pics.Count > 0)
                {
                    var rtus = otherEntity.GetRtus(lscUser.LscID, lscUser.Group.GroupID);
                    pics = (from pic in pics
                            join rtu in rtus on pic.RtuID equals rtu.RtuID
                            where (Area2ComboBox.SelectedIndex == 0 || rtu.Area2Name.Equals(Area2ComboBox.SelectedItem.Text)) &&
                            (Area3ComboBox.SelectedIndex == 0 || rtu.Area3Name.Equals(Area3ComboBox.SelectedItem.Text)) &&
                            (StaComboBox.SelectedIndex == 0 || rtu.StaName.Equals(StaComboBox.SelectedItem.Text)) &&
                            (DevComboBox.SelectedIndex == 0 || rtu.DevName.Equals(DevComboBox.SelectedItem.Text))
                            orderby pic.PicTime descending
                            select new PicInfo {
                        LscID = rtu.LscID,
                        LscName = rtu.LscName,
                        RtuID = pic.RtuID,
                        PicID = pic.PicID,
                        PicName = String.Format("{0}-{1}-{2}", rtu.StaName, rtu.StaMID, WebUtility.GetDateString(pic.PicTime)),
                        PicModel = pic.PicModel,
                        PicBytes = pic.PicBytes,
                        PicTime = pic.PicTime
                    }).ToList();
                }

                var cacheDuration = Int32.Parse(WebConfigurationManager.AppSettings["DefaultCacheDuration"]);
                HttpRuntime.Cache.Insert(cacheKey, pics, null, Cache.NoAbsoluteExpiration, TimeSpan.FromSeconds(cacheDuration), CacheItemPriority.Default, null);
                return(pics);
            } catch { throw; }
        }
Example #29
0
        /// <summary>
        /// Add Data To Cache
        /// </summary>
        private DataTable AddDataToCache()
        {
            try {
                var userData  = UserData;
                var cacheKey1 = WebUtility.GetCacheKeyName(userData, "station-count-source1");
                var cacheKey2 = WebUtility.GetCacheKeyName(userData, "station-count-source2");
                HttpRuntime.Cache.Remove(cacheKey1);
                HttpRuntime.Cache.Remove(cacheKey2);

                var types = StaTypeMultiCombo.SelectedItems;
                if (types.Count == 0)
                {
                    return(null);
                }

                if (String.IsNullOrEmpty(StaCountField.RawValue.ToString()))
                {
                    return(null);
                }
                var values = WebUtility.StringSplit(StaCountField.RawValue.ToString());

                var colcnt      = StaCntGridPanel.ColumnModel.Columns.Count;
                var countType   = CountTypeComboBox.SelectedItem.Value;
                var condition   = new List <GroupTreeInfo>();
                var otherEntity = new BOther();
                var source1     = CreateCustomizeTable(colcnt);
                var source2     = new Dictionary <String, List <StationInfo> >();
                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 stations = otherEntity.GetStations(lscUser.LscID, lscUser.Group.GroupID);
                        if (MIDEnabledMenuItem.Checked)
                        {
                            stations = stations.FindAll(s => s.MID != null && s.MID.Trim() != "");
                        }

                        var dr1 = source1.NewRow();
                        dr1[1] = lscUser.LscName;
                        var total = new List <StationInfo>();
                        for (int j = 0; j < types.Count; j++)
                        {
                            var stypeId = Int32.Parse(types[j].Value);
                            var filters = stations.FindAll(s => { return(s.StaTypeID == stypeId); });
                            dr1[2 + j] = filters.Count;
                            source2[String.Format("{0}-{1}", source1.Rows.Count, source1.Columns[2 + j].ColumnName)] = filters;
                            total.AddRange(filters);
                        }

                        //total column
                        dr1[source1.Columns.Count - 1] = total.Count;
                        source2[String.Format("{0}-{1}", source1.Rows.Count, source1.Columns[source1.Columns.Count - 1].ColumnName)] = total;
                        source1.Rows.Add(dr1);
                    }
                    #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 stations = otherEntity.GetStations(lscUser.LscID, lscUser.Group.GroupID);
                        if (MIDEnabledMenuItem.Checked)
                        {
                            stations = stations.FindAll(s => s.MID != null && s.MID.Trim() != "");
                        }

                        var areaSta = from d in stations
                                      group d by new { d.Area2ID } into g
                            select new {
                            Area2ID  = g.Key.Area2ID,
                            Stations = g
                        };

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

                        foreach (var node in nodes)
                        {
                            var dr1 = source1.NewRow();
                            dr1[1] = node.LscName;
                            dr1[2] = node.Area2Name;

                            var typeArea = areaSta.FirstOrDefault(t => t.Area2ID == node.Area2ID);
                            var total    = new List <StationInfo>();
                            for (int j = 0; j < types.Count; j++)
                            {
                                var stypeId = Int32.Parse(types[j].Value);
                                var filters = typeArea != null?typeArea.Stations.Where(s => s.StaTypeID == stypeId).ToList() : new List <StationInfo>();

                                dr1[3 + j] = filters.Count;
                                source2[String.Format("{0}-{1}", source1.Rows.Count, source1.Columns[3 + j].ColumnName)] = filters;
                                total.AddRange(filters);
                            }

                            //total column
                            dr1[source1.Columns.Count - 1] = total.Count;
                            source2[String.Format("{0}-{1}", source1.Rows.Count, source1.Columns[source1.Columns.Count - 1].ColumnName)] = total;
                            source1.Rows.Add(dr1);
                        }
                    }
                    #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 stations = otherEntity.GetStations(lscUser.LscID, lscUser.Group.GroupID);
                        if (MIDEnabledMenuItem.Checked)
                        {
                            stations = stations.FindAll(s => s.MID != null && s.MID.Trim() != "");
                        }

                        var areaSta = from d in stations
                                      group d by new { d.Area3ID } into g
                            select new {
                            Area3ID  = g.Key.Area3ID,
                            Stations = g
                        };

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

                        foreach (var node in nodes)
                        {
                            var dr1 = source1.NewRow();
                            dr1[1] = node.LscName;
                            dr1[2] = node.Area2Name;
                            dr1[3] = node.Area3Name;

                            var typeArea = areaSta.FirstOrDefault(t => t.Area3ID == node.Area3ID);
                            var total    = new List <StationInfo>();
                            for (int j = 0; j < types.Count; j++)
                            {
                                var stypeId = Int32.Parse(types[j].Value);
                                var filters = typeArea != null?typeArea.Stations.Where(s => s.StaTypeID == stypeId).ToList() : new List <StationInfo>();

                                dr1[4 + j] = filters.Count;
                                source2[String.Format("{0}-{1}", source1.Rows.Count, source1.Columns[4 + j].ColumnName)] = filters;
                                total.AddRange(filters);
                            }

                            //total column
                            dr1[source1.Columns.Count - 1] = total.Count;
                            source2[String.Format("{0}-{1}", source1.Rows.Count, source1.Columns[source1.Columns.Count - 1].ColumnName)] = total;
                            source1.Rows.Add(dr1);
                        }
                    }
                    #endregion
                }

                var totalStartIndex = colcnt - types.Count - 1;
                if (source1.Rows.Count > 0)
                {
                    var totalRow1 = source1.NewRow();
                    totalRow1[1] = "总计";
                    for (int i = totalStartIndex; i < source1.Columns.Count; i++)
                    {
                        var total = new List <StationInfo>();
                        for (int j = 0; j < source1.Rows.Count; j++)
                        {
                            var key = String.Format("{0}-{1}", j, source1.Columns[i].ColumnName);
                            if (source2.ContainsKey(key))
                            {
                                total.AddRange(source2[key]);
                            }
                        }
                        totalRow1[i] = total.Count;
                        source2[String.Format("{0}-{1}", source1.Rows.Count, source1.Columns[i].ColumnName)] = total;
                    }
                    source1.Rows.Add(totalRow1);
                }

                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);
                return(source1);
            } catch { throw; }
        }
Example #30
0
        /// <summary>
        /// Add data to cache.
        /// </summary>
        private List <Report011Entity> AddDataToCache()
        {
            var userData = UserData;
            var cacheKey = WebUtility.GetCacheKeyName(userData, "kpi-report-011");

            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;
            }

            var otherEntity = new BOther();
            var nodeEntity  = new BNode();
            var lscEntity   = new BLsc();
            var alarmEntity = new BAlarm();
            var result      = new List <Report011Entity>();

            foreach (var l in lscs)
            {
                var lsc = lscEntity.GetLsc(l.LscID);
                if (lsc == null)
                {
                    continue;
                }

                var stations = otherEntity.GetStations(lsc.LscID, l.Group.GroupID).FindAll(sta => staTypes.ContainsKey(sta.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, l.Group.GroupNodes, fromTime, toTime).FindAll(alarm => {
                    return(alarmNames.ContainsKey(alarm.AlarmID) && string.IsNullOrEmpty(alarm.ProjName));
                }));

                var nalm = from alarm in alarms
                           join sta in stations on alarm.StaName equals sta.StaName
                           select alarm;

                var parm   = Report011Entity.GetLscParam(lsc.LscID, WebUtility.CreateLscConnectionString(lsc));
                var record = new Report011Entity {
                    LscID     = lsc.LscID,
                    LscName   = lsc.LscName,
                    BeginTime = fromTime,
                    EndTime   = toTime,
                    Alarms    = nalm.Any() ? nalm.ToList() : new List <AlarmInfo>(),
                    StaCnt    = parm != null ? parm.StaMNumber : 0,
                };

                result.Add(record);
            }

            if (result.Count > 0)
            {
                result.Add(new Report011Entity {
                    LscID     = -100,
                    LscName   = "汇总(平均值)",
                    BeginTime = fromTime,
                    EndTime   = toTime,
                    Alarms    = new List <AlarmInfo>(),
                    StaCnt    = (Int32)result.Average(r => r.StaCnt)
                });
            }

            int cacheDuration = Int32.Parse(WebConfigurationManager.AppSettings["DefaultCacheDuration"]);

            HttpRuntime.Cache.Insert(cacheKey, result, null, Cache.NoAbsoluteExpiration, TimeSpan.FromSeconds(cacheDuration), CacheItemPriority.Default, null);
            return(result);
        }