Exemple #1
0
        /// <summary>
        ///     获取座级趋势图的数据源集合
        /// </summary>
        /// <returns></returns>
        private void CreateFleetAircraftTypeTrendCollection()
        {
            var regionalCollection = new List<FleetAircraftRegionalTrend>();
            var amountCollection = new List<FleetAircraftRegionalTrend>();

            #region 座级机型XML文件的读写

            var xmlConfig =
                XmlConfigs.FirstOrDefault(p => p.ConfigType.Equals("座级机型", StringComparison.OrdinalIgnoreCase));

            XElement aircraftColor = null;
            var colorConfig =
                XmlSettings.FirstOrDefault(p => p.SettingType.Equals("颜色配置", StringComparison.OrdinalIgnoreCase));
            if (colorConfig != null &&
                XElement.Parse(colorConfig.SettingContent)
                    .Descendants("Type")
                    .Any(p => p.Attribute("TypeName").Value.Equals("运力变化", StringComparison.OrdinalIgnoreCase)))
            {
                aircraftColor =
                    XElement.Parse(colorConfig.SettingContent)
                        .Descendants("Type")
                        .FirstOrDefault(
                            p => p.Attribute("TypeName").Value.Equals("运力变化", StringComparison.OrdinalIgnoreCase));
            }

            if (aircraftColor != null)
            {
                var firstOrDefault =
                    aircraftColor.Descendants("Item")
                        .FirstOrDefault(p => p.Attribute("Name").Value.Equals("飞机数", StringComparison.OrdinalIgnoreCase));
                if (firstOrDefault != null)
                    AircraftColor = firstOrDefault.Attribute("Color").Value;
            }

            XElement regionalColor = null;
            if (colorConfig != null &&
                XElement.Parse(colorConfig.SettingContent)
                    .Descendants("Type")
                    .Any(p => p.Attribute("TypeName").Value.Equals("座级", StringComparison.OrdinalIgnoreCase)))
            {
                regionalColor =
                    XElement.Parse(colorConfig.SettingContent)
                        .Descendants("Type")
                        .FirstOrDefault(
                            p => p.Attribute("TypeName").Value.Equals("座级", StringComparison.OrdinalIgnoreCase));
            }
            if (xmlConfig != null)
            {
                var xelement = XElement.Parse(xmlConfig.ConfigContent);
                if (xelement != null)
                {
                    foreach (var dateTime in xelement.Descendants("DateTime"))
                    {
                        var currentTime =
                            Convert.ToDateTime(dateTime.Attribute("EndOfMonth").Value).ToString("yyyy/M");

                        //早于开始时间时执行下一个
                        if (Convert.ToDateTime(currentTime) < StartDate)
                        {
                            continue;
                        }
                        //晚于结束时间时跳出循环
                        if (Convert.ToDateTime(currentTime) > EndDate)
                        {
                            break;
                        }

                        if (SelectedIndex == 1) //按半年统计
                        {
                            if (Convert.ToDateTime(currentTime).Month != 6 &&
                                Convert.ToDateTime(currentTime).Month != 12)
                            {
                                continue;
                            }
                        }
                        else if (SelectedIndex == 2) //按年份统计
                        {
                            if (Convert.ToDateTime(currentTime).Month != 12)
                            {
                                continue;
                            }
                        }

                        foreach (var type in dateTime.Descendants("Type"))
                        {
                            if (type.Attribute("TypeName").Value.Equals("座级", StringComparison.OrdinalIgnoreCase))
                            {
                                var currentAmount = type.Attribute("Amount").Value;

                                //飞机总数柱状集合
                                var aircraftAmount = new FleetAircraftRegionalTrend
                                {
                                    DateTime = currentTime,
                                    Amount = Convert.ToInt32(currentAmount),
                                    Color = AircraftColor
                                };
                                amountCollection.Add(aircraftAmount);

                                foreach (var item in type.Descendants("Item"))
                                {
                                    //座级折线集合
                                    var fleetAircraftRegionalTrend = new FleetAircraftRegionalTrend
                                    {
                                        AircraftRegional = item.Attribute("Name").Value,
                                        DateTime = currentTime,
                                        AirNum = Convert.ToInt32(item.Value),
                                        Amount = Convert.ToInt32(currentAmount)
                                    };
                                    if (regionalColor != null)
                                    {
                                        var firstOrDefault =
                                            regionalColor.Descendants("Item")
                                                .FirstOrDefault(
                                                    p =>
                                                        p.Attribute("Name")
                                                            .Value.Equals(fleetAircraftRegionalTrend.AircraftRegional,
                                                                StringComparison.OrdinalIgnoreCase));
                                        if (firstOrDefault != null)
                                            fleetAircraftRegionalTrend.Color = firstOrDefault.Attribute("Color").Value;
                                    }
                                    regionalCollection.Add(fleetAircraftRegionalTrend);
                                }
                            }
                        }
                    }
                }
            }

            #endregion

            FleetAircraftTypeTrendCollection = regionalCollection;
            AircraftAmountCollection = amountCollection;

            //对界面数据集合进行重新初始化
            SelectedTime = "所选时间";
            FleetAircraftRegionalCollection = null;
            FleetAircraftTypeCollection = null;
            AircraftCollection = null;
            ZoomInit();
        }
        /// <summary>
        /// 获取座级趋势图的数据源集合
        /// </summary>
        /// <returns></returns>
        private void CreateFleetAircraftTypeTrendCollection()
        {
            List<FleetAircraftRegionalTrend> RegionalCollection = new List<FleetAircraftRegionalTrend>();
            List<FleetAircraftRegionalTrend> AmountCollection = new List<FleetAircraftRegionalTrend>();

            #region 座级机型XML文件的读写
            var xmlconfig = this.ViewXmlConfig.FirstOrDefault(p => p.ConfigType == "座级机型");

            XElement aircraftcolor = null;
            XmlConfig colorconfig = this.ViewXmlConfig.FirstOrDefault(p => p.ConfigType == "颜色配置");
            if (colorconfig != null && colorconfig.XmlContent.Descendants("Type").Any(p => p.Attribute("TypeName").Value == "运力变化"))
            {
                aircraftcolor = colorconfig.XmlContent.Descendants("Type").FirstOrDefault(p => p.Attribute("TypeName").Value == "运力变化");
            }

            if (aircraftcolor != null)
            {
                this.AircraftColor = aircraftcolor.Descendants("Item").FirstOrDefault(p => p.Attribute("Name").Value == "飞机数").Attribute("Color").Value;
            }
            else
            {
                this.AircraftColor = commonmethod.GetRandomColor();
            }

            XElement regionalcolor = null;
            if (colorconfig != null && colorconfig.XmlContent.Descendants("Type").Any(p => p.Attribute("TypeName").Value == "座级"))
            {
                regionalcolor = colorconfig.XmlContent.Descendants("Type").FirstOrDefault(p => p.Attribute("TypeName").Value == "座级");
            }

            if (xmlconfig != null)
            {
                XElement xelement = xmlconfig.XmlContent;
                if (xelement != null)
                {
                    foreach (XElement datetime in xelement.Descendants("DateTime"))
                    {
                        string CurrentTime = Convert.ToDateTime(datetime.Attribute("EndOfMonth").Value).ToString("yyyy/M");

                        //早于开始时间时执行下一个
                        if (Convert.ToDateTime(CurrentTime) < StartDate)
                        {
                            continue;
                        }
                        //晚于结束时间时跳出循环
                        if (Convert.ToDateTime(CurrentTime) > EndDate)
                        {
                            break;
                        }

                        if (SelectedIndex == 1)//按半年统计
                        {
                            if (Convert.ToDateTime(CurrentTime).Month != 6 && Convert.ToDateTime(CurrentTime).Month != 12)
                            {
                                continue;
                            }
                        }
                        else if (SelectedIndex == 2)//按年份统计
                        {
                            if (Convert.ToDateTime(CurrentTime).Month != 12)
                            {
                                continue;
                            }
                        }

                        foreach (XElement type in datetime.Descendants("Type"))
                        {
                            if (type.Attribute("TypeName").Value == "座级")
                            {
                                string CurrentAmount = type.Attribute("Amount").Value;

                                //飞机总数柱状集合
                                FleetAircraftRegionalTrend aircraftamount = new FleetAircraftRegionalTrend();
                                aircraftamount.DateTime = CurrentTime;
                                aircraftamount.Amount = Convert.ToInt32(CurrentAmount);
                                aircraftamount.Color = this.AircraftColor;
                                AmountCollection.Add(aircraftamount);

                                foreach (XElement item in type.Descendants("Item"))
                                {
                                    //座级折线集合
                                    FleetAircraftRegionalTrend fleetaircraftregionaltrend = new FleetAircraftRegionalTrend();
                                    fleetaircraftregionaltrend.AircraftRegional = item.Attribute("Name").Value;
                                    fleetaircraftregionaltrend.DateTime = CurrentTime;
                                    fleetaircraftregionaltrend.AirNum = Convert.ToInt32(item.Value);
                                    fleetaircraftregionaltrend.Amount = Convert.ToInt32(CurrentAmount);
                                    if (regionalcolor != null)
                                    {
                                        fleetaircraftregionaltrend.Color = regionalcolor.Descendants("Item")
                                            .FirstOrDefault(p => p.Attribute("Name").Value == fleetaircraftregionaltrend.AircraftRegional).Attribute("Color").Value;
                                    }
                                    RegionalCollection.Add(fleetaircraftregionaltrend);
                                }
                            }
                        }
                    }
                }
            }
            #endregion

            SelectedTime = "所选时间";
            FleetAircraftRegionalCollection = null;
            FleetAircraftTypeCollection = null;
            AircraftCollection = null;
            this.Zoom = new Size(1, 1);

            if (RegionalCollection.Count() > 0 && AmountCollection.Count() > 0)
            {
                FleetAircraftTypeTrendCollection = RegionalCollection;
                AircraftAmountCollection = AmountCollection;
            }
        }