/// <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"); }
/// <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"); }
/// <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"); }