Beispiel #1
0
        /// <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
                    }
                }
            }
        }