/// <summary>
        /// 获取年平均在册飞机数趋势图的数据源集合
        /// </summary>
        /// <returns></returns>
        private void CreatFleetRegisteredTrendYearCollection()
        {
            List<FleetRegisteredTrend> fleetregisteredtrendmonthlist = new List<FleetRegisteredTrend>();//月平均在册的机型飞机数集合

            #region 飞机运力XML文件的读写
            var xmlconfig = this.ViewXmlConfig.FirstOrDefault(p => p.ConfigType == "在册分析");

            string aircraftcolor = string.Empty;
            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 == "运力变化")
                    .Descendants("Item").FirstOrDefault(p => p.Attribute("Name").Value == "飞机数").Attribute("Color").Value;
            }

            XElement typecolor = null;
            if (colorconfig != null && colorconfig.XmlContent.Descendants("Type").Any(p => p.Attribute("TypeName").Value == "机型"))
            {
                typecolor = 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");

                        XElement typexelement = datetime.Descendants("Type").FirstOrDefault(p => p.Attribute("TypeName").Value == "机型");
                        if (typexelement != null)
                        {
                            //平均在册总飞机数的柱状数据
                            FleetRegisteredTrend amounttrendmnth = new FleetRegisteredTrend();//月平均在册的总飞机数对象
                            amounttrendmnth.DateTime = CurrentTime;
                            amounttrendmnth.RegisteredCount = Convert.ToDouble(typexelement.Attribute("Amount").Value);
                            amounttrendmnth.AircraftType = "所有机型";
                            if (!string.IsNullOrEmpty(aircraftcolor))
                            {
                                amounttrendmnth.Color = aircraftcolor;
                            }
                            fleetregisteredtrendmonthlist.Add(amounttrendmnth);

                            foreach (XElement item in typexelement.Descendants("Item"))
                            {
                                FleetRegisteredTrend fleetregisteredtrenmonth = new FleetRegisteredTrend();//月平均在册的机型飞机数对象
                                fleetregisteredtrenmonth.DateTime = CurrentTime;
                                fleetregisteredtrenmonth.AircraftType = item.Attribute("Name").Value;
                                fleetregisteredtrenmonth.RegisteredCount = Convert.ToDouble(item.Value);
                                if (typecolor != null)
                                {
                                    fleetregisteredtrenmonth.Color = typecolor.Descendants("Item")
                                        .FirstOrDefault(p => p.Attribute("Name").Value == fleetregisteredtrenmonth.AircraftType).Attribute("Color").Value;
                                }
                                fleetregisteredtrendmonthlist.Add(fleetregisteredtrenmonth);
                            }
                        }
                    }
                }
            }
            #endregion

            List<FleetRegisteredTrend> fleetregisteredtrendyearlist = new List<FleetRegisteredTrend>();//年平均在册的机型飞机数集合
            List<FleetRegisteredTrend> AllFleetRegisteredtrendYeatList = new List<FleetRegisteredTrend>();
            if (fleetregisteredtrendmonthlist != null)
            {
                //获取按机型分类的年平均在册飞机数的集合
                fleetregisteredtrendmonthlist.GroupBy(p => p.AircraftType).ToList().ForEach(p =>
                    fleetregisteredtrendyearlist.AddRange(p.GroupBy(pp => Convert.ToDateTime(pp.DateTime).Year).Select(o => new FleetRegisteredTrend
                       {
                           DateTime = o.Key.ToString(),
                           AircraftType = p.Key,
                           RegisteredCount = Math.Round(o.Sum(a => a.RegisteredCount * Convert.ToDateTime(a.DateTime).AddMonths(1).AddDays(-1).Day) / (new DateTime(o.Key + 1, 1, 1) - new DateTime(o.Key, 1, 1)).TotalDays, 4),
                           Color = p.FirstOrDefault().Color
                       })
                    )
                );
            }

            FleetRegisteredTrendYearCollection = fleetregisteredtrendyearlist;
            AllFleetRegisteredtrendYeatList.AddRange(FleetRegisteredTrendYearCollection);

            //创建RadGridView
            Dictionary<string, string> columnsList2 = new Dictionary<string, string>();
            columnsList2.Add("DateTime", "年份");
            columnsList2.Add("AircraftType", "机型");
            columnsList2.Add("RegisteredCount", "年平均在册飞机数");
            YearExportRadgridview = ImageAndGridOperation.CreatDataGridView(columnsList2, AllFleetRegisteredtrendYeatList, "FleetTrendPnrYear");
        }
示例#2
0
        /// <summary>
        ///     获取年平均在册飞机数趋势图的数据源集合
        /// </summary>
        /// <returns></returns>
        private void CreatFleetRegisteredTrendYearCollection()
        {
            var fleetRegisteredTrendMonthList = new List<FleetRegisteredTrend>(); //月平均在册的机型飞机数集合

            #region 飞机运力XML文件的读写

            var xmlConfig =
                XmlConfigs.FirstOrDefault(p => p.ConfigType.Equals("在册分析", StringComparison.OrdinalIgnoreCase));

            var aircraftColor = string.Empty;
            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)))
            {
                var firstOrDefault =
                    XElement.Parse(colorConfig.SettingContent)
                        .Descendants("Type")
                        .FirstOrDefault(
                            p => p.Attribute("TypeName").Value.Equals("运力变化", StringComparison.OrdinalIgnoreCase));
                if (firstOrDefault != null)
                {
                    var orDefault =
                        firstOrDefault.Descendants("Item")
                            .FirstOrDefault(
                                p => p.Attribute("Name").Value.Equals("飞机数", StringComparison.OrdinalIgnoreCase));
                    if (orDefault != null)
                        aircraftColor = orDefault.Attribute("Color").Value;
                }
            }

            XElement typeColor = null;
            if (colorConfig != null &&
                XElement.Parse(colorConfig.SettingContent)
                    .Descendants("Type")
                    .Any(p => p.Attribute("TypeName").Value.Equals("机型", StringComparison.OrdinalIgnoreCase)))
            {
                typeColor =
                    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");

                        var typeElement =
                            datetime.Descendants("Type")
                                .FirstOrDefault(
                                    p => p.Attribute("TypeName").Value.Equals("机型", StringComparison.OrdinalIgnoreCase));
                        if (typeElement != null)
                        {
                            //平均在册总飞机数的柱状数据
                            var amountTrendMonth = new FleetRegisteredTrend
                            {
                                DateTime = currentTime,
                                RegisteredCount = Convert.ToDouble(typeElement.Attribute("Amount").Value),
                                AircraftType = "所有机型"
                            }; //月平均在册的总飞机数对象
                            if (!string.IsNullOrEmpty(aircraftColor))
                            {
                                amountTrendMonth.Color = aircraftColor;
                            }
                            fleetRegisteredTrendMonthList.Add(amountTrendMonth);

                            foreach (var item in typeElement.Descendants("Item"))
                            {
                                var fleetRegisteredTrendMonth = new FleetRegisteredTrend
                                {
                                    DateTime = currentTime,
                                    AircraftType = item.Attribute("Name").Value,
                                    RegisteredCount = Convert.ToDouble(item.Value)
                                }; //月平均在册的机型飞机数对象
                                if (typeColor != null)
                                {
                                    var firstOrDefault =
                                        typeColor.Descendants("Item")
                                            .FirstOrDefault(
                                                p =>
                                                    p.Attribute("Name")
                                                        .Value.Equals(fleetRegisteredTrendMonth.AircraftType,
                                                            StringComparison.OrdinalIgnoreCase));
                                    if (firstOrDefault !=
                                        null)
                                        fleetRegisteredTrendMonth.Color = firstOrDefault.Attribute("Color").Value;
                                }
                                fleetRegisteredTrendMonthList.Add(fleetRegisteredTrendMonth);
                            }
                        }
                    }
                }
            }

            #endregion

            var fleetRegisteredTrendYearList = new List<FleetRegisteredTrend>(); //年平均在册的机型飞机数集合
            var allFleetRegisteredTrendYeatList = new List<FleetRegisteredTrend>();
            if (fleetRegisteredTrendMonthList.Any())
            {
                //获取按机型分类的年平均在册飞机数的集合
                //原有的linq语句转为普通语句--ToList方法少了ForEach方法
                var fleetRegisteredTrendMonth = fleetRegisteredTrendMonthList.GroupBy(p => p.AircraftType).ToList();
                foreach (var variableMonth in fleetRegisteredTrendMonth)
                {
                    var vaiableYear = variableMonth.GroupBy(pp => Convert.ToDateTime(pp.DateTime).Year).ToList();
                    foreach (var variableYear in vaiableYear)
                    {
                        var fleetRegisterYear = new FleetRegisteredTrend();
                        var registeredTrend = variableYear.FirstOrDefault();
                        if (registeredTrend != null)
                            fleetRegisterYear.DateTime = registeredTrend.DateTime;
                        var firstOrDefault = variableMonth.FirstOrDefault();
                        if (firstOrDefault != null)
                            fleetRegisterYear.AircraftType = firstOrDefault.AircraftType;
                        fleetRegisterYear.RegisteredCount =
                            Math.Round(
                                variableYear.Sum(
                                    a => a.RegisteredCount*Convert.ToDateTime(a.DateTime).AddMonths(1).AddDays(-1).Day)/
                                (new DateTime(variableYear.Key + 1, 1, 1) - new DateTime(variableYear.Key, 1, 1))
                                    .TotalDays, 4);
                        var fleetRegisteredTrend = variableMonth.FirstOrDefault();
                        if (fleetRegisteredTrend != null)
                            fleetRegisterYear.Color = fleetRegisteredTrend.Color;
                        fleetRegisteredTrendYearList.Add(fleetRegisterYear);
                    }
                }

                fleetRegisteredTrendMonthList.GroupBy(p => p.AircraftType).ToList().ForEach(p =>
                    fleetRegisteredTrendYearList.AddRange(
                        p.GroupBy(pp => Convert.ToDateTime(pp.DateTime).Year).Select(o =>
                        {
                            var orDefault = p.FirstOrDefault();
                            return orDefault != null
                                ? new FleetRegisteredTrend
                                {
                                    DateTime = o.Key.ToString(CultureInfo.InvariantCulture),
                                    AircraftType = p.Key,
                                    RegisteredCount =
                                        Math.Round(
                                            o.Sum(
                                                a =>
                                                    a.RegisteredCount*
                                                    Convert.ToDateTime(a.DateTime).AddMonths(1).AddDays(-1).Day)/
                                            (new DateTime(o.Key + 1, 1, 1) - new DateTime(o.Key, 1, 1)).TotalDays, 4),
                                    Color = orDefault.Color
                                }
                                : null;
                        }))
                    );
            }

            FleetRegisteredTrendYearCollection = fleetRegisteredTrendYearList;
            allFleetRegisteredTrendYeatList.AddRange(FleetRegisteredTrendYearCollection);

            //创建RadGridView
            var columnsList2 = new Dictionary<string, string>
            {
                {"DateTime", "年份"},
                {"AircraftType", "机型"},
                {"RegisteredCount", "年平均在册飞机数"}
            };
            CreateDataGridView(columnsList2, allFleetRegisteredTrendYeatList, "FleetTrendPnrYear");
        }
        /// <summary>
        /// 获取月平均在册飞机数趋势图的数据源集合
        /// </summary>
        /// <returns></returns>
        private void CreatFleetRegisteredTrendMonthCollection()
        {
            List<FleetRegisteredTrend> fleetregisteredtrendmonthlist = new List<FleetRegisteredTrend>();//月在册的机型飞机数集合
            List<FleetRegisteredTrend> AllFleetRegisteredTrendMonthCollection = new List<FleetRegisteredTrend>();

            #region 飞机运力XML文件的读写
            var xmlconfig = this.ViewXmlConfig.FirstOrDefault(p => p.ConfigType == "在册分析");

            string aircraftcolor = string.Empty;
            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 == "运力变化")
                    .Descendants("Item").FirstOrDefault(p => p.Attribute("Name").Value == "飞机数").Attribute("Color").Value;
            }

            XElement typecolor = null;
            if (colorconfig != null && colorconfig.XmlContent.Descendants("Type").Any(p => p.Attribute("TypeName").Value == "机型"))
            {
                typecolor = 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;
                        }

                        XElement typexelement = datetime.Descendants("Type").FirstOrDefault(p => p.Attribute("TypeName").Value == "机型");
                        if (typexelement != null)
                        {
                            //平均在册总飞机数的柱状数据
                            FleetRegisteredTrend amounttrendmnth = new FleetRegisteredTrend();//月平均在册的总飞机数对象
                            amounttrendmnth.DateTime = CurrentTime;
                            amounttrendmnth.RegisteredCount = Convert.ToDouble(typexelement.Attribute("Amount").Value);
                            amounttrendmnth.AircraftType = "所有机型";
                            if (!string.IsNullOrEmpty(aircraftcolor))
                            {
                                amounttrendmnth.Color = aircraftcolor;
                            }
                            fleetregisteredtrendmonthlist.Add(amounttrendmnth);

                            foreach (XElement item in typexelement.Descendants("Item"))
                            {
                                FleetRegisteredTrend fleetregisteredtrenmonth = new FleetRegisteredTrend();//月平均在册的机型飞机数对象
                                fleetregisteredtrenmonth.DateTime = CurrentTime;
                                fleetregisteredtrenmonth.AircraftType = item.Attribute("Name").Value;
                                fleetregisteredtrenmonth.RegisteredCount = Convert.ToDouble(item.Value);
                                if (typecolor != null)
                                {
                                    fleetregisteredtrenmonth.Color = typecolor.Descendants("Item")
                                        .FirstOrDefault(p => p.Attribute("Name").Value == fleetregisteredtrenmonth.AircraftType).Attribute("Color").Value;
                                }
                                fleetregisteredtrendmonthlist.Add(fleetregisteredtrenmonth);
                            }
                        }
                    }
                }
            }
            #endregion

            FleetRegisteredTrendMonthCollection = fleetregisteredtrendmonthlist;
            AllFleetRegisteredTrendMonthCollection.AddRange(FleetRegisteredTrendMonthCollection);
            //创建RadGridView
            Dictionary<string, string> columnsList = new Dictionary<string, string>();
            columnsList.Add("DateTime", "时间点");
            columnsList.Add("AircraftType", "机型");
            columnsList.Add("RegisteredCount", "月平均在册飞机数");
            MonthExportRadgridview = ImageAndGridOperation.CreatDataGridView(columnsList, AllFleetRegisteredTrendMonthCollection, "FleetTrendPnrMonth");
        }
示例#4
0
        /// <summary>
        ///     获取月平均在册飞机数趋势图的数据源集合
        /// </summary>
        /// <returns></returns>
        private void CreatFleetRegisteredTrendMonthCollection()
        {
            var fleetRegisteredTrendMonthList = new List<FleetRegisteredTrend>(); //月在册的机型飞机数集合
            var allFleetRegisteredTrendMonthCollection = new List<FleetRegisteredTrend>();

            #region 飞机运力XML文件的读写

            var xmlConfig =
                XmlConfigs.FirstOrDefault(p => p.ConfigType.Equals("在册分析", StringComparison.OrdinalIgnoreCase));

            var aircraftColor = string.Empty;
            var colorConfig =
                XmlSettings.FirstOrDefault(p => p.SettingType.Equals("颜色配置", StringComparison.OrdinalIgnoreCase));
            if (colorConfig != null && XElement.Parse(colorConfig.SettingContent).Descendants("Type").Any(p =>
            {
                var xAttributeTypeName = p.Attribute("TypeName");
                return xAttributeTypeName != null &&
                       xAttributeTypeName.Value.Equals("运力变化", StringComparison.OrdinalIgnoreCase);
            }))
            {
                var firstOrDefault =
                    XElement.Parse(colorConfig.SettingContent)
                        .Descendants("Type")
                        .FirstOrDefault(
                            p => p.Attribute("TypeName").Value.Equals("运力变化", StringComparison.OrdinalIgnoreCase));
                if (firstOrDefault != null)
                {
                    var orDefault = firstOrDefault.Descendants("Item").FirstOrDefault(p =>
                    {
                        var xAttributeName = p.Attribute("Name");
                        return xAttributeName != null &&
                               xAttributeName.Value.Equals("飞机数", StringComparison.OrdinalIgnoreCase);
                    });
                    if (orDefault != null)
                        aircraftColor = orDefault.Attribute("Color").Value;
                }
            }

            XElement typeColor = null;
            if (colorConfig != null &&
                XElement.Parse(colorConfig.SettingContent)
                    .Descendants("Type")
                    .Any(p => p.Attribute("TypeName").Value.Equals("机型", StringComparison.OrdinalIgnoreCase)))
            {
                typeColor =
                    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;
                        }
                        var typeElement =
                            datetime.Descendants("Type")
                                .FirstOrDefault(
                                    p => p.Attribute("TypeName").Value.Equals("机型", StringComparison.OrdinalIgnoreCase));
                        if (typeElement != null)
                        {
                            //平均在册总飞机数的柱状数据
                            var amountTrendMonth = new FleetRegisteredTrend
                            {
                                DateTime = currentTime,
                                RegisteredCount = Convert.ToDouble(typeElement.Attribute("Amount").Value),
                                AircraftType = "所有机型"
                            }; //月平均在册的总飞机数对象
                            if (!string.IsNullOrEmpty(aircraftColor))
                            {
                                amountTrendMonth.Color = aircraftColor;
                            }
                            fleetRegisteredTrendMonthList.Add(amountTrendMonth);

                            foreach (var item in typeElement.Descendants("Item"))
                            {
                                var fleetRegisteredTrenMonth = new FleetRegisteredTrend
                                {
                                    DateTime = currentTime,
                                    AircraftType = item.Attribute("Name").Value,
                                    RegisteredCount = Convert.ToDouble(item.Value)
                                }; //月平均在册的机型飞机数对象
                                if (typeColor != null)
                                {
                                    var firstOrDefault =
                                        typeColor.Descendants("Item")
                                            .FirstOrDefault(
                                                p =>
                                                    p.Attribute("Name")
                                                        .Value.Equals(fleetRegisteredTrenMonth.AircraftType,
                                                            StringComparison.OrdinalIgnoreCase));
                                    if (firstOrDefault !=
                                        null)
                                        fleetRegisteredTrenMonth.Color = firstOrDefault.Attribute("Color").Value;
                                }
                                fleetRegisteredTrendMonthList.Add(fleetRegisteredTrenMonth);
                            }
                        }
                    }
                }
            }

            #endregion

            FleetRegisteredTrendMonthCollection = fleetRegisteredTrendMonthList;
            allFleetRegisteredTrendMonthCollection.AddRange(FleetRegisteredTrendMonthCollection);
            //创建RadGridView
            var columnsList = new Dictionary<string, string>
            {
                {"DateTime", "时间点"},
                {"AircraftType", "机型"},
                {"RegisteredCount", "月平均在册飞机数"}
            };
            CreateDataGridView(columnsList, allFleetRegisteredTrendMonthCollection, "FleetTrendPnrMonth");
        }