コード例 #1
0
        /// <summary>
        /// 根据选中时间和机型生成相应的饼图和飞机数据
        /// </summary>
        /// <param name="SelectedName">选中机型</param>
        /// <param name="time">选中时间</param>
        public void CreateFleetAgeCollection(string SelectedName, DateTime time)
        {
            //机龄的饼图分布集合
            List<FleetAgeComposition> AgeCompositionList = new List<FleetAgeComposition>();
            //机龄饼图的飞机数据分布字典
            AircraftByAgeDic = new Dictionary<string, List<Aircraft>>();
            //当前时间点的可计算机龄的飞机
            IEnumerable<Aircraft> MonthAircraft = this.ViewAircraft.Where(p => p.FactoryDate != null).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))
                        && o.FactoryDate <= time && !(o.ExportDate != null && o.ExportDate < time));

            if (SelectedName != "所有飞机" && MonthAircraft != null)
            {
                if (AgeSelectedIndex == 0)
                {
                    MonthAircraft = MonthAircraft.Where(o =>
                        o.AircraftBusinesses.FirstOrDefault(p => p.StartDate <= time && !(p.EndDate != null && p.EndDate < time)).AircraftType.AircraftCategory.Regional == SelectedName);
                }
                else if (AgeSelectedIndex == 1)
                {
                    MonthAircraft = MonthAircraft.Where(o =>
                        o.AircraftBusinesses.FirstOrDefault(p => p.StartDate <= time && !(p.EndDate != null && p.EndDate < time)).AircraftType.Name == SelectedName);
                }
                else if (AgeSelectedIndex == 2)
                {
                    MonthAircraft = MonthAircraft.Where(o =>
                        o.OperationHistories.FirstOrDefault(p => p.StartDate <= time && !(p.EndDate != null && p.EndDate < time)).Airlines.ShortName == SelectedName);
                }
            }

            var xmlconfig = this.ViewXmlConfig.FirstOrDefault(p => p.ConfigType == "机龄配置");

            XElement agecolor = null;
            XmlConfig colorconfig = this.ViewXmlConfig.FirstOrDefault(p => p.ConfigType == "颜色配置");
            if (colorconfig != null && colorconfig.XmlContent.Descendants("Type").Any(p => p.Attribute("TypeName").Value == "机龄"))
            {
                agecolor = colorconfig.XmlContent.Descendants("Type").FirstOrDefault(p => p.Attribute("TypeName").Value == "机龄");
            }
            if (xmlconfig != null && MonthAircraft != null && MonthAircraft.Count() > 0)
            {
                XElement xelement = xmlconfig.XmlContent;
                foreach (XElement item in xelement.Descendants("Item"))
                {
                    int StartYear = Convert.ToInt32(item.Attribute("Start").Value);
                    int EndYear = Convert.ToInt32(item.Attribute("End").Value);
                    //设置相应机龄范围的飞机数据,用于弹出窗体的数据显示
                    var AircraftByAge = MonthAircraft.Where(p =>
                        EndYear * 12 > (time.Year - Convert.ToDateTime(p.FactoryDate).Year) * 12 + (time.Month - Convert.ToDateTime(p.FactoryDate).Month)
                        && (time.Year - Convert.ToDateTime(p.FactoryDate).Year) * 12 + (time.Month - Convert.ToDateTime(p.FactoryDate).Month) >= StartYear * 12).ToList();
                    if (AircraftByAge != null && AircraftByAge.Count() > 0)
                    {
                        FleetAgeComposition AgeComposition = new FleetAgeComposition();
                        AgeComposition.AgeGroup = item.Value;
                        AgeComposition.GroupCount = AircraftByAge.Count();
                        AgeComposition.ToolTip = AgeComposition.GroupCount + " 架,占" + (AircraftByAge.Count() * 100 / MonthAircraft.Count()).ToString("##0") + "%";
                        if (agecolor != null)
                        {
                            AgeComposition.Color = agecolor.Descendants("Item")
                                .FirstOrDefault(p => p.Attribute("Name").Value == AgeComposition.AgeGroup).Attribute("Color").Value;
                        }
                        AgeCompositionList.Add(AgeComposition);
                        AircraftByAgeDic.Add(AgeComposition.AgeGroup, AircraftByAge);
                    }
                }
            }

            FleetAgeCollection = AgeCompositionList;
            if (MonthAircraft != null)
            {
                //飞机详细数据集合
                AircraftCollection = commonmethod.GetAircraftByTime(MonthAircraft.ToList(), time);
            }
        }
コード例 #2
0
ファイル: FleetAgeVm.cs プロジェクト: unicloud/FRP
        /// <summary>
        ///     根据选中时间和机型生成相应的饼图和飞机数据
        /// </summary>
        /// <param name="aircraftType">选中机型</param>
        /// <param name="time">选中时间</param>
        public void CreateFleetAgeCollection(string aircraftType, DateTime time)
        {
            //机龄的饼图分布集合
            var ageCompositionList = new List<FleetAgeComposition>();
            //机龄饼图的飞机数据分布字典
            aircraftByAgeDic = new Dictionary<string, List<AircraftDTO>>();

            IEnumerable<AircraftDTO> aircraft = null;
            if (aircraftType.Equals("所有机型", StringComparison.OrdinalIgnoreCase))
            {
                aircraft = Aircrafts.Where(p => p.FactoryDate != null)
                    .Where(
                        o =>
                            o.AircraftBusinesses.Any(
                                p => p.StartDate <= time && !(p.EndDate != null && p.EndDate < time)) &&
                            o.FactoryDate <= time && !(o.ExportDate != null && o.ExportDate < time));
            }

            var xmlConfig =
                XmlConfigs.FirstOrDefault(p => p.ConfigType.Equals("机龄配置", StringComparison.OrdinalIgnoreCase));

            XElement ageColor = 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)))
            {
                ageColor = XElement.Parse(colorConfig.SettingContent)
                    .Descendants("Type")
                    .FirstOrDefault(p => p.Attribute("TypeName").Value.Equals("机龄", StringComparison.OrdinalIgnoreCase));
            }
            if (xmlConfig != null && aircraft != null)
            {
                var aircraftDtos = aircraft as AircraftDTO[] ?? aircraft.ToArray();

                var xelement = XElement.Parse(xmlConfig.ConfigContent);
                foreach (var item in xelement.Descendants("Item"))
                {
                    var startYear = Convert.ToInt32(item.Attribute("Start").Value);
                    var endYear = Convert.ToInt32(item.Attribute("End").Value);
                    //设置相应机龄范围的飞机数据,用于弹出窗体的数据显示
                    var aircraftByAge = aircraftDtos.Where(p => endYear*12 >
                                                                (time.Year - Convert.ToDateTime(p.FactoryDate).Year)*12 +
                                                                (time.Month - Convert.ToDateTime(p.FactoryDate).Month)
                                                                &&
                                                                (time.Year - Convert.ToDateTime(p.FactoryDate).Year)*12 +
                                                                (time.Month - Convert.ToDateTime(p.FactoryDate).Month) >=
                                                                startYear*12).ToList();
                    if (aircraftByAge != null && aircraftByAge.Any())
                    {
                        var ageComposition = new FleetAgeComposition
                        {
                            AgeGroup = item.Value,
                            GroupCount = aircraftByAge.Count()
                        };
                        ageComposition.ToolTip = ageComposition.GroupCount + " 架,占" +
                                                 (aircraftByAge.Count()*100/aircraftDtos.Count()).ToString("##0") + "%";
                        if (ageColor != null)
                        {
                            var firstOrDefault = ageColor.Descendants("Item")
                                .FirstOrDefault(p => p.Attribute("Name")
                                    .Value.Equals(ageComposition.AgeGroup, StringComparison.OrdinalIgnoreCase));
                            if (firstOrDefault != null)
                                ageComposition.Color = firstOrDefault.Attribute("Color").Value;
                        }
                        ageCompositionList.Add(ageComposition);
                        aircraftByAgeDic.Add(ageComposition.AgeGroup, aircraftByAge);
                    }
                }
                FleetAgeCollection = ageCompositionList;
                //飞机详细数据集合
                AircraftCollection = CommonMethod.GetAircraftByTime(aircraftDtos.ToList(), time);
            }
        }