/// <summary> /// 趋势图的选择点事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public void ChartSelectionBehaviorSelectionChanged(object sender, ChartSelectionChangedEventArgs e) { CurrentAirlines = _service.CurrentAirlines(); var chartSelectionBehavior = sender as ChartSelectionBehavior; if (chartSelectionBehavior != null) { var selectedPoint = chartSelectionBehavior.Chart.SelectedPoints.FirstOrDefault( p => { var categoricalSeries = p.Presenter as CategoricalSeries; return categoricalSeries != null && categoricalSeries.Visibility == Visibility.Visible; }); if (selectedPoint != null) { var fleetAircraftTrend = selectedPoint.DataItem as FleetAircraftTrend; if (fleetAircraftTrend != null && SelectedTime != fleetAircraftTrend.DateTime) { //选中时间点 SelectedTime = fleetAircraftTrend.DateTime; var time = Convert.ToDateTime(fleetAircraftTrend.DateTime).AddMonths(1).AddDays(-1); var aircraftListRoot = Aircrafts.Where( o => o.OperationHistories.Any( a => (a.AirlinesName.Equals(CurrentAirlines.CnName, StringComparison.OrdinalIgnoreCase)) && a.StartDate <= time && !(a.EndDate != null && a.EndDate < time)) && o.AircraftBusinesses.Any( a => a.StartDate <= time && !(a.EndDate != null && a.EndDate < time))).ToList(); AircraftCollection = _commonMethod.GetAircraftByTime(aircraftListRoot, time); #region 飞机运力XML文件的读写 var xmlConfig = XmlConfigs.FirstOrDefault( p => p.ConfigType.Equals("飞机运力", StringComparison.OrdinalIgnoreCase)); XElement airlineColor = null; var colorConfig = XmlConfigs.FirstOrDefault( p => p.ConfigType.Equals("颜色配置", StringComparison.OrdinalIgnoreCase)); if (colorConfig != null && XElement.Parse(colorConfig.XmlContent) .Descendants("Type") .Any(p => p.Attribute("TypeName").Value.Equals("航空公司", StringComparison.OrdinalIgnoreCase))) { var firstOrDefault = XmlConfigs.FirstOrDefault( p => p.ConfigType.Equals("颜色配置", StringComparison.OrdinalIgnoreCase)); if (firstOrDefault != null) airlineColor = XElement.Parse(firstOrDefault.XmlContent) .Descendants("Type") .FirstOrDefault( p => p.Attribute("TypeName") .Value.Equals("航空公司", StringComparison.OrdinalIgnoreCase)); } if (xmlConfig != null) { var aircraftList = new List<FleetAircraft>(); //飞机数饼图集合 var xelement = XElement.Parse(xmlConfig.XmlContent) .Descendants("DateTime") .FirstOrDefault(p => Convert.ToDateTime(p.Attribute("EndOfMonth").Value) == time); if (xelement != null) { foreach (var type in xelement.Descendants("Type")) { if (type.Attribute("TypeName") .Value.Equals("飞机数", StringComparison.OrdinalIgnoreCase)) { foreach (var item in type.Descendants("Item")) { var fleetAircraft = new FleetAircraft { Aircraft = item.Attribute("Name").Value, Amount = Convert.ToDecimal(item.Value), ToolTip = item.Value + " 架,占 " + item.Attribute("Percent").Value }; if (airlineColor != null) { var firstOrDefault = airlineColor.Descendants("Item") .FirstOrDefault(p => p.Attribute("Name") .Value.Equals(fleetAircraft.Aircraft, StringComparison.OrdinalIgnoreCase)); if (firstOrDefault != null) fleetAircraft.Color = firstOrDefault.Attribute("Color").Value; } if (fleetAircraft.Amount > 0) { aircraftList.Add(fleetAircraft); } } } } } FleetAircraftCollection = aircraftList; } #endregion } } } }
/// <summary> /// 趋势图的选择点事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public void ChartSelectionBehavior_SelectionChanged(object sender, Telerik.Windows.Controls.ChartView.ChartSelectionChangedEventArgs e) { Telerik.Charting.DataPoint SelectedPoint = (sender as Telerik.Windows.Controls.ChartView.ChartSelectionBehavior).Chart.SelectedPoints.FirstOrDefault(p => (p.Presenter as CategoricalSeries).Visibility == Visibility.Visible); if (SelectedPoint != null) { FleetAircraftTrend fleetaircrafttrend = SelectedPoint.DataItem as FleetAircraftTrend; if (SelectedTime != fleetaircrafttrend.DateTime) { //选中时间点 SelectedTime = fleetaircrafttrend.DateTime; DateTime time = Convert.ToDateTime(fleetaircrafttrend.DateTime).AddMonths(1).AddDays(-1); var aircraftlist = this.ViewAircraft .Where(o => o.OperationHistories.Any(a => (a.Airlines.ShortName == this._service.CurrentAirlines.ShortName || a.Airlines.SubType == 2) && a.StartDate <= time && !(a.EndDate != null && a.EndDate < time)) && o.AircraftBusinesses.Any(a => a.StartDate <= time && !(a.EndDate != null && a.EndDate < time))) .Where(o => o.AircraftBusinesses.FirstOrDefault(a => a.StartDate <= time && !(a.EndDate != null && a.EndDate < time)) .AircraftType.AircraftCategory.Category == "货机").ToList(); AircraftCollection = commonmethod.GetAircraftByTime(aircraftlist, time); #region 货机运力XML文件的读写 var xmlconfig = this.ViewXmlConfig.FirstOrDefault(p => p.ConfigType == "货机运力"); XElement airlinecolor = null; XmlConfig colorconfig = this.ViewXmlConfig.FirstOrDefault(p => p.ConfigType == "颜色配置"); if (colorconfig != null && colorconfig.XmlContent.Descendants("Type").Any(p => p.Attribute("TypeName").Value == "航空公司")) { airlinecolor = this.ViewXmlConfig.FirstOrDefault(p => p.ConfigType == "颜色配置").XmlContent.Descendants("Type").FirstOrDefault(p => p.Attribute("TypeName").Value == "航空公司"); } if (xmlconfig != null) { List<FleetAircraft> AircraftList = new List<FleetAircraft>();//飞机数饼图集合 List<FleetAircraft> LoadList = new List<FleetAircraft>();//商载量饼图集合 XElement xelement = xmlconfig.XmlContent.Descendants("DateTime").FirstOrDefault(p => Convert.ToDateTime(p.Attribute("EndOfMonth").Value) == time); if (xelement != null) { foreach (XElement type in xelement.Descendants("Type")) { if (type.Attribute("TypeName").Value == "飞机数") { foreach (XElement item in type.Descendants("Item")) { FleetAircraft fleetaircraft = new FleetAircraft(); fleetaircraft.Aircraft = item.Attribute("Name").Value; fleetaircraft.Amount = Convert.ToDecimal(item.Value); fleetaircraft.ToolTip = item.Value + " 架,占 " + item.Attribute("Percent").Value; if (airlinecolor != null) { fleetaircraft.Color = airlinecolor.Descendants("Item") .FirstOrDefault(p => p.Attribute("Name").Value == fleetaircraft.Aircraft).Attribute("Color").Value; } if (fleetaircraft.Amount > 0) { AircraftList.Add(fleetaircraft); } } } else if (type.Attribute("TypeName").Value == "商载量") { foreach (XElement item in type.Descendants("Item")) { FleetAircraft fleetaircraft = new FleetAircraft(); fleetaircraft.Aircraft = item.Attribute("Name").Value; fleetaircraft.Amount = Convert.ToDecimal(item.Value); fleetaircraft.ToolTip = item.Value + " 吨,占 " + item.Attribute("Percent").Value; if (airlinecolor != null) { fleetaircraft.Color = airlinecolor.Descendants("Item") .FirstOrDefault(p => p.Attribute("Name").Value == fleetaircraft.Aircraft).Attribute("Color").Value; } if (fleetaircraft.Amount > 0) { LoadList.Add(fleetaircraft); } } } } } FleetAircraftCollection = AircraftList; FleetLoadCollection = LoadList; } #endregion } } }
/// <summary> /// 趋势图的选择点事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public void ChartSelectionBehavior_SelectionChanged(object sender, Telerik.Windows.Controls.ChartView.ChartSelectionChangedEventArgs e) { Telerik.Charting.DataPoint SelectedPoint = (sender as Telerik.Windows.Controls.ChartView.ChartSelectionBehavior).Chart.SelectedPoints.FirstOrDefault(p => (p.Presenter as CategoricalSeries).Visibility == Visibility.Visible); if (SelectedPoint != null) { FleetAircraftTrend fleetaircrafttrend = SelectedPoint.DataItem as FleetAircraftTrend; if (SelectedTime != fleetaircrafttrend.DateTime) { //选中时间点 SelectedTime = fleetaircrafttrend.DateTime; DateTime time = Convert.ToDateTime(fleetaircrafttrend.DateTime).AddMonths(1).AddDays(-1); #region 客机运力XML文件的读写 var xmlconfig = this.ViewXmlConfig.FirstOrDefault(p => p.ConfigType == "客机运力"); XElement airlinecolor = null; XmlConfig colorconfig = this.ViewXmlConfig.FirstOrDefault(p => p.ConfigType == "颜色配置"); if (colorconfig != null && colorconfig.XmlContent.Descendants("Type").Any(p => p.Attribute("TypeName").Value == "航空公司")) { airlinecolor = this.ViewXmlConfig.FirstOrDefault(p => p.ConfigType == "颜色配置").XmlContent.Descendants("Type").FirstOrDefault(p => p.Attribute("TypeName").Value == "航空公司"); } if (xmlconfig != null) { List<FleetAircraft> AircraftList = new List<FleetAircraft>();//飞机数饼图集合 List<FleetAircraft> SeatList = new List<FleetAircraft>();//座位数饼图集合 List<FleetAircraft> LoadList = new List<FleetAircraft>();//商载量饼图集合 XElement xelement = xmlconfig.XmlContent.Descendants("DateTime").FirstOrDefault(p => Convert.ToDateTime(p.Attribute("EndOfMonth").Value) == time); if (xelement != null) { foreach (XElement type in xelement.Descendants("Type")) { if (type.Attribute("TypeName").Value == "飞机数") { foreach (XElement item in type.Descendants("Item")) { FleetAircraft fleetaircraft = new FleetAircraft(); fleetaircraft.Aircraft = item.Attribute("Name").Value; fleetaircraft.Amount = Convert.ToDecimal(item.Value); fleetaircraft.ToolTip = item.Value + " 架,占 " + item.Attribute("Percent").Value; if (airlinecolor != null) { fleetaircraft.Color = airlinecolor.Descendants("Item") .FirstOrDefault(p => p.Attribute("Name").Value == fleetaircraft.Aircraft).Attribute("Color").Value; } if (fleetaircraft.Amount > 0) { AircraftList.Add(fleetaircraft); } } } else if (type.Attribute("TypeName").Value == "座位数") { foreach (XElement item in type.Descendants("Item")) { FleetAircraft fleetaircraft = new FleetAircraft(); fleetaircraft.Aircraft = item.Attribute("Name").Value; fleetaircraft.Amount = Convert.ToDecimal(item.Value); fleetaircraft.ToolTip = item.Value + " 座,占 " + item.Attribute("Percent").Value; if (airlinecolor != null) { fleetaircraft.Color = airlinecolor.Descendants("Item") .FirstOrDefault(p => p.Attribute("Name").Value == fleetaircraft.Aircraft).Attribute("Color").Value; } if (fleetaircraft.Amount > 0) { SeatList.Add(fleetaircraft); } } } else if (type.Attribute("TypeName").Value == "商载量") { foreach (XElement item in type.Descendants("Item")) { FleetAircraft fleetaircraft = new FleetAircraft(); fleetaircraft.Aircraft = item.Attribute("Name").Value; fleetaircraft.Amount = Convert.ToDecimal(item.Value); fleetaircraft.ToolTip = item.Value + " 吨,占 " + item.Attribute("Percent").Value; if (airlinecolor != null) { fleetaircraft.Color = airlinecolor.Descendants("Item") .FirstOrDefault(p => p.Attribute("Name").Value == fleetaircraft.Aircraft).Attribute("Color").Value; } if (fleetaircraft.Amount > 0) { LoadList.Add(fleetaircraft); } } } } } FleetAircraftCollection = AircraftList; FleetSeatCollection = SeatList; FleetLoadCollection = LoadList; } #endregion } } }
/// <summary> /// 趋势图的选择点事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public void ChartSelectionBehaviorSelectionChanged(object sender, ChartSelectionChangedEventArgs e) { CurrentAirlines = _service.CurrentAirlines(); var chartSelectionBehavior = sender as ChartSelectionBehavior; if (chartSelectionBehavior != null) { var selectedPoint = chartSelectionBehavior.Chart.SelectedPoints.FirstOrDefault(point => { var categoricalSeries = point.Presenter as CategoricalSeries; return categoricalSeries != null && categoricalSeries.Visibility == Visibility.Visible; }); if (selectedPoint != null) { var fleetAircraftTrend = selectedPoint.DataItem as FleetAircraftTrend; if (fleetAircraftTrend != null && SelectedTime != fleetAircraftTrend.DateTime) { #region 根据选中时间点过滤飞机数据 SelectedTime = fleetAircraftTrend.DateTime; var time = Convert.ToDateTime(fleetAircraftTrend.DateTime).AddMonths(1).AddDays(-1); var aircraftlist = Aircrafts.Where( aircraft => aircraft.OperationHistories.Any( operation => (operation.AirlinesName.Equals(CurrentAirlines.CnName, StringComparison.OrdinalIgnoreCase)) && operation.StartDate <= time && !(operation.EndDate != null && operation.EndDate < time)) && aircraft.AircraftBusinesses.Any( aircraftBusiness => aircraftBusiness.StartDate <= time && !(aircraftBusiness.EndDate != null && aircraftBusiness.EndDate < time))) .Where(aircraft => { var aircraftBusinessDataObject = aircraft.AircraftBusinesses.FirstOrDefault( aircraftBusiness => aircraftBusiness.StartDate <= time && !(aircraftBusiness.EndDate != null && aircraftBusiness.EndDate < time)); return aircraftBusinessDataObject != null && aircraftBusinessDataObject.Category.Equals("客机", StringComparison.OrdinalIgnoreCase); }).ToList(); AircraftCollection = _commonMethod.GetAircraftByTime(aircraftlist, time); #endregion #region 客机运力XML解析 var xmlConfig = XmlConfigs.FirstOrDefault( config => config.ConfigType.Equals("客机运力", StringComparison.OrdinalIgnoreCase)); XElement airlineColor = null; var colorConfig = XmlSettings.FirstOrDefault( config => config.SettingType.Equals("颜色配置", StringComparison.OrdinalIgnoreCase)); if (colorConfig != null && XElement.Parse(colorConfig.SettingContent) .Descendants("Type") .Any( type => type.Attribute("TypeName") .Value.Equals("航空公司", StringComparison.OrdinalIgnoreCase))) { var xmlSettingDataObject = XmlSettings.FirstOrDefault( config => config.SettingType.Equals("颜色配置", StringComparison.OrdinalIgnoreCase)); if (xmlSettingDataObject != null) airlineColor = XElement.Parse(xmlSettingDataObject.SettingContent) .Descendants("Type").FirstOrDefault( type => type.Attribute("TypeName") .Value.Equals("航空公司", StringComparison.OrdinalIgnoreCase)); } if (xmlConfig != null) { var aircraftList = new List<FleetAircraft>(); //飞机数饼图集合 var seatList = new List<FleetAircraft>(); //座位数饼图集合 var loadList = new List<FleetAircraft>(); //商载量饼图集合 var xelement = XElement.Parse(xmlConfig.ConfigContent) .Descendants("DateTime") .FirstOrDefault( dateTime => Convert.ToDateTime(dateTime.Attribute("EndOfMonth").Value) == time); if (xelement != null) { foreach (var type in xelement.Descendants("Type")) { if (type.Attribute("TypeName") .Value.Equals("飞机数", StringComparison.OrdinalIgnoreCase)) { foreach (var item in type.Descendants("Item")) { var fleetAircraft = new FleetAircraft { Aircraft = item.Attribute("Name").Value, Amount = Convert.ToDecimal(item.Value), ToolTip = item.Value + " 架,占 " + item.Attribute("Percent").Value }; if (airlineColor != null) { var firstOrDefault = airlineColor.Descendants("Item") .FirstOrDefault( aircraftItem => aircraftItem.Attribute("Name") .Value.Equals(fleetAircraft.Aircraft, StringComparison.OrdinalIgnoreCase)); if (firstOrDefault != null) fleetAircraft.Color = firstOrDefault.Attribute("Color").Value; } if (fleetAircraft.Amount > 0) { aircraftList.Add(fleetAircraft); } } } else if (type.Attribute("TypeName") .Value.Equals("座位数", StringComparison.OrdinalIgnoreCase)) { foreach (var item in type.Descendants("Item")) { var fleetAircraft = new FleetAircraft { Aircraft = item.Attribute("Name").Value, Amount = Convert.ToDecimal(item.Value), ToolTip = item.Value + " 座,占 " + item.Attribute("Percent").Value }; if (airlineColor != null) { var firstOrDefault = airlineColor.Descendants("Item").FirstOrDefault(aircraftItem => aircraftItem.Attribute("Name") .Value.Equals(fleetAircraft.Aircraft, StringComparison.OrdinalIgnoreCase)); if (firstOrDefault != null) fleetAircraft.Color = firstOrDefault.Attribute("Color").Value; } if (fleetAircraft.Amount > 0) { seatList.Add(fleetAircraft); } } } else if (type.Attribute("TypeName") .Value.Equals("商载量", StringComparison.OrdinalIgnoreCase)) { foreach (var item in type.Descendants("Item")) { var fleetAircraft = new FleetAircraft { Aircraft = item.Attribute("Name").Value, Amount = Convert.ToDecimal(item.Value), ToolTip = item.Value + " 吨,占 " + item.Attribute("Percent").Value }; if (airlineColor != null) { var firstOrDefault = airlineColor.Descendants("Item") .FirstOrDefault(aircraftItem => aircraftItem.Attribute("Name") .Value.Equals(fleetAircraft.Aircraft, StringComparison.OrdinalIgnoreCase)); if (firstOrDefault != null) fleetAircraft.Color = firstOrDefault.Attribute("Color").Value; } if (fleetAircraft.Amount > 0) { loadList.Add(fleetAircraft); } } } } } FleetAircraftCollection = aircraftList; FleetSeatCollection = seatList; FleetLoadCollection = loadList; } #endregion } } } }