示例#1
0
        /// <summary>
        ///     趋势图的选择点事件数据源
        /// </summary>
        public void ChartSelectionBehaviorSelection(DateTime time)
        {
            var aircraft =
                Aircrafts.Where(
                    o => o.OperationHistories.Any(p => p.StartDate <= time && !(p.EndDate != null && p.EndDate < time))
                         &&
                         o.AircraftBusinesses.Any(p => p.StartDate <= time && !(p.EndDate != null && p.EndDate < time)));

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

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

            XElement regionalColor = 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)))
            {
                regionalColor = XElement.Parse(colorConfig.SettingContent)
                    .Descendants("Type")
                    .FirstOrDefault(p => p.Attribute("TypeName").Value.Equals("座级", StringComparison.OrdinalIgnoreCase));
            }
            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 aircraftRegionalList = new List<FleetAircraftTypeComposition>(); //座级饼图集合
                var aircraftTypeList = new List<FleetAircraftTypeComposition>(); //机型饼图集合

                var xelement = XElement.Parse(xmlConfig.ConfigContent)
                    .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 fleetAircraftTypeComposition = new FleetAircraftTypeComposition
                                {
                                    AircraftRegional = item.Attribute("Name").Value,
                                    AirNum = Convert.ToInt32(item.Value),
                                    AirTt = item.Value + " 架,占 " + item.Attribute("Percent").Value
                                };
                                if (regionalColor != null)
                                {
                                    var firstOrDefault = regionalColor.Descendants("Item")
                                        .FirstOrDefault(p =>
                                            p.Attribute("Name")
                                                .Value.Equals(fleetAircraftTypeComposition.AircraftRegional,
                                                    StringComparison.OrdinalIgnoreCase));
                                    if (firstOrDefault != null)
                                        fleetAircraftTypeComposition.Color = firstOrDefault.Attribute("Color").Value;
                                }
                                if (fleetAircraftTypeComposition.AirNum > 0)
                                {
                                    aircraftRegionalList.Add(fleetAircraftTypeComposition);
                                }
                            }
                        }
                        else if (type.Attribute("TypeName").Value.Equals("机型", StringComparison.OrdinalIgnoreCase))
                        {
                            foreach (var item in type.Descendants("Item"))
                            {
                                var fleetAircraftTypeComposition = new FleetAircraftTypeComposition
                                {
                                    AircraftRegional = item.Attribute("Name").Value,
                                    AirNum = Convert.ToInt32(item.Value),
                                    AirTt = item.Value + " 架,占 " + item.Attribute("Percent").Value
                                };
                                if (typeColor != null)
                                {
                                    var firstOrDefault = typeColor.Descendants("Item")
                                        .FirstOrDefault(p =>
                                            p.Attribute("Name")
                                                .Value.Equals(fleetAircraftTypeComposition.AircraftRegional,
                                                    StringComparison.OrdinalIgnoreCase));
                                    if (firstOrDefault != null)
                                        fleetAircraftTypeComposition.Color = firstOrDefault.Attribute("Color").Value;
                                }
                                if (fleetAircraftTypeComposition.AirNum > 0)
                                {
                                    aircraftTypeList.Add(fleetAircraftTypeComposition);
                                }
                            }
                        }
                    }
                }

                FleetAircraftRegionalCollection = aircraftRegionalList;
                FleetAircraftTypeCollection = aircraftTypeList;
            }

            #endregion

            //飞机详细数据
            AircraftCollection = Commonmethod.GetAircraftByTime(aircraft.ToList(), time);
        }
        /// <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)
            {
                FleetAircraftRegionalTrend fleetaircraftregionaltrend = SelectedPoint.DataItem as FleetAircraftRegionalTrend;
                if (SelectedTime != fleetaircraftregionaltrend.DateTime)
                {
                    //选中时间点
                    SelectedTime = fleetaircraftregionaltrend.DateTime;

                    DateTime time = Convert.ToDateTime(fleetaircraftregionaltrend.DateTime).AddMonths(1).AddDays(-1);
                    var aircraft = this.ViewAircraft.
                        Where(o => o.OperationHistories.Any(p => p.StartDate <= time && !(p.EndDate != null && p.EndDate < time))
                        && o.AircraftBusinesses.Any(p => p.StartDate <= time && !(p.EndDate != null && p.EndDate < time)));

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

                    XElement regionalcolor = null;
                    XmlConfig colorconfig = this.ViewXmlConfig.FirstOrDefault(p => p.ConfigType == "颜色配置");
                    if (colorconfig != null && colorconfig.XmlContent.Descendants("Type").Any(p => p.Attribute("TypeName").Value == "座级"))
                    {
                        regionalcolor = colorconfig.XmlContent.Descendants("Type").FirstOrDefault(p => p.Attribute("TypeName").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)
                    {
                        List<FleetAircraftTypeComposition> AircraftRegionalList = new List<FleetAircraftTypeComposition>();//座级饼图集合
                        List<FleetAircraftTypeComposition> AircraftTypeList = new List<FleetAircraftTypeComposition>();//机型饼图集合

                        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"))
                                    {
                                        FleetAircraftTypeComposition fleetaircrafttypecomposition = new FleetAircraftTypeComposition();
                                        fleetaircrafttypecomposition.AircraftRegional = item.Attribute("Name").Value;
                                        fleetaircrafttypecomposition.AirNum = Convert.ToInt32(item.Value);
                                        fleetaircrafttypecomposition.AirTt = item.Value + " 架,占 " + item.Attribute("Percent").Value;
                                        if (regionalcolor != null)
                                        {
                                            fleetaircrafttypecomposition.Color = regionalcolor.Descendants("Item")
                                                .FirstOrDefault(p => p.Attribute("Name").Value == fleetaircrafttypecomposition.AircraftRegional).Attribute("Color").Value;
                                        }
                                        if (fleetaircrafttypecomposition.AirNum > 0)
                                        {
                                            AircraftRegionalList.Add(fleetaircrafttypecomposition);
                                        }
                                    }
                                }
                                else if (type.Attribute("TypeName").Value == "机型")
                                {
                                    foreach (XElement item in type.Descendants("Item"))
                                    {
                                        FleetAircraftTypeComposition fleetaircrafttypecomposition = new FleetAircraftTypeComposition();
                                        fleetaircrafttypecomposition.AircraftRegional = item.Attribute("Name").Value;
                                        fleetaircrafttypecomposition.AirNum = Convert.ToInt32(item.Value);
                                        fleetaircrafttypecomposition.AirTt = item.Value + " 架,占 " + item.Attribute("Percent").Value;
                                        if (typecolor != null)
                                        {
                                            fleetaircrafttypecomposition.Color = typecolor.Descendants("Item")
                                                .FirstOrDefault(p => p.Attribute("Name").Value == fleetaircrafttypecomposition.AircraftRegional).Attribute("Color").Value;
                                        }
                                        if (fleetaircrafttypecomposition.AirNum > 0)
                                        {
                                            AircraftTypeList.Add(fleetaircrafttypecomposition);
                                        }
                                    }
                                }
                            }
                        }

                        FleetAircraftRegionalCollection = AircraftRegionalList;
                        FleetAircraftTypeCollection = AircraftTypeList;
                    }
                    #endregion

                    //飞机详细数据
                    AircraftCollection = commonmethod.GetAircraftByTime(aircraft.ToList(), time);
                }
            }
        }