Example #1
0
        /// <summary>
        ///     获取总数和净增数趋势图的数据源集合
        /// </summary>
        /// <returns></returns>
        private void CreatFleetAircraftTrendCollection()
        {
            var fleetAircraftTrendLineList = new List<FleetAircraftTrend>(); //折线图统计总数的集合
            var fleetAircraftTrendBarList = new List<FleetAircraftTrend>(); //柱状图统计净增的集合

            #region 飞机运力XML文件的读写

            var xmlConfig =
                XmlConfigs.FirstOrDefault(p => p.ConfigType.Equals("飞机运力", StringComparison.OrdinalIgnoreCase));
            var colordictionary = GetColorDictionary();
            if (xmlConfig != null)
            {
                var xelement = XElement.Parse(xmlConfig.XmlContent);
                if (xelement != null)
                {
                    //记录上一个时间点的总数,便于统计净增数据
                    var lastAircraftAmount = 0;

                    foreach (var datetime in xelement.Descendants("DateTime"))
                    {
                        var currentTime =
                            Convert.ToDateTime(datetime.Attribute("EndOfMonth").Value).ToString("yyyy/M");
                        if (SelectedIndex == 1) //按半年统计
                        {
                            if (Convert.ToDateTime(currentTime).Month != 6 &&
                                Convert.ToDateTime(currentTime).Month != 12)
                            {
                                continue;
                            }
                        }
                        else if (SelectedIndex == 2) //按年份统计
                        {
                            if (Convert.ToDateTime(currentTime).Month != 12)
                            {
                                continue;
                            }
                        }
                        var fleetAircraftTrenLine = new FleetAircraftTrend {DateTime = currentTime}; //折线图的总数对象
                        var fleetAircraftTrenBar = new FleetAircraftTrend {DateTime = currentTime}; //柱状图的净增数对象
                        foreach (var type in datetime.Descendants("Type"))
                        {
                            if (type.Attribute("TypeName").Value.Equals("飞机数", StringComparison.OrdinalIgnoreCase))
                            {
                                fleetAircraftTrenLine.AircraftAmount = Convert.ToInt32(type.Attribute("Amount").Value);
                                //飞机净增数
                                fleetAircraftTrenBar.AircraftAmount = fleetAircraftTrenLine.AircraftAmount -
                                                                      lastAircraftAmount;
                                fleetAircraftTrenLine.AircraftColor =
                                    fleetAircraftTrenBar.AircraftColor = colordictionary["飞机数"];
                            }
                        }

                        //将当前总数赋值做为下一次计算净增量。
                        lastAircraftAmount = fleetAircraftTrenLine.AircraftAmount;

                        //注:放于此为了正确统计净增量
                        //早于开始时间时执行下一个
                        if (Convert.ToDateTime(currentTime) < StartDate)
                        {
                            continue;
                        }
                        //晚于结束时间时跳出循环
                        if (Convert.ToDateTime(currentTime) > EndDate)
                        {
                            break;
                        }

                        //添加进相应的数据源集合
                        fleetAircraftTrendLineList.Add(fleetAircraftTrenLine);
                        fleetAircraftTrendBarList.Add(fleetAircraftTrenBar);
                    }

                    if (fleetAircraftTrendBarList.Any())
                    {
                        AircraftMaxValue = fleetAircraftTrendBarList.Max(p => p.AircraftAmount);
                        AircraftMinValue = fleetAircraftTrendBarList.Min(p => p.AircraftAmount);
                        if (AircraftMinValue >= 0)
                        {
                            AircraftMinValue = 0;
                            if (AircraftMaxValue == 0)
                            {
                                AircraftMaxValue = 10;
                            }
                        }
                        AircraftStep = Convert.ToInt32(AircraftMaxValue/2);
                    }
                }
            }

            #endregion

            FleetAircraftTrendLineCollection = fleetAircraftTrendLineList;
            FleetAircraftTrendBarCollection = fleetAircraftTrendBarList;

            SelectedTime = "所选时间";
            FleetAircraftCollection = null;
            AircraftCollection = null;
            Zoom = new Size(1, 1);
        }
Example #2
0
        /// <summary>
        ///     获取总数和净增数趋势图的数据源集合
        /// </summary>
        /// <returns></returns>
        public void CreatFleetAircraftTrendCollection()
        {
            var fleetAircraftTrendLineList = new List<FleetAircraftTrend>(); //折线图统计总数的集合
            var fleetAircraftTrendBarList = new List<FleetAircraftTrend>(); //柱状图统计净增的集合

            #region 客机运力XML解析

            var xmlConfig =
                XmlConfigs.FirstOrDefault(config => config.ConfigType.Equals("客机运力", StringComparison.OrdinalIgnoreCase));
            var colorDictionary = GetColorDictionary();
            if (xmlConfig != null)
            {
                var xelement = XElement.Parse(xmlConfig.ConfigContent);
                if (xelement != null)
                {
                    //记录上一个时间点的总数,便于统计净增数据
                    var lastAircraftAmount = 0;
                    var lastSeatAmount = 0;
                    var lastLoadAmount = 0;

                    foreach (var datetime in xelement.Descendants("DateTime"))
                    {
                        var currentTime =
                            Convert.ToDateTime(datetime.Attribute("EndOfMonth").Value).ToString("yyyy/M");

                        if (SelectedIndex == 1) //按半年统计
                        {
                            if (Convert.ToDateTime(currentTime).Month != 6 &&
                                Convert.ToDateTime(currentTime).Month != 12)
                            {
                                continue;
                            }
                        }
                        else if (SelectedIndex == 2) //按年份统计
                        {
                            if (Convert.ToDateTime(currentTime).Month != 12)
                            {
                                continue;
                            }
                        }
                        var fleetAircraftTrendLine = new FleetAircraftTrend {DateTime = currentTime}; //折线图的总数对象
                        var fleetAircraftTrendBar = new FleetAircraftTrend {DateTime = currentTime}; //柱状图的净增数对象
                        foreach (var type in datetime.Descendants("Type"))
                        {
                            switch (type.Attribute("TypeName").Value)
                            {
                                case "飞机数":
                                    fleetAircraftTrendLine.AircraftAmount =
                                        Convert.ToInt32(type.Attribute("Amount").Value);
                                    fleetAircraftTrendBar.AircraftAmount = fleetAircraftTrendLine.AircraftAmount -
                                                                           lastAircraftAmount; //飞机净增数
                                    fleetAircraftTrendLine.AircraftColor =
                                        fleetAircraftTrendBar.AircraftColor = colorDictionary["飞机数"];
                                    break;
                                case "座位数":
                                    fleetAircraftTrendLine.SeatAmount = Convert.ToInt32(type.Attribute("Amount").Value);
                                    fleetAircraftTrendBar.SeatAmount = fleetAircraftTrendLine.SeatAmount -
                                                                       lastSeatAmount; //座位净增数
                                    fleetAircraftTrendLine.SeatColor =
                                        fleetAircraftTrendBar.SeatColor = colorDictionary["座位数"];
                                    break;
                                case "商载量":
                                    fleetAircraftTrendLine.LoadAmount = Convert.ToInt32(type.Attribute("Amount").Value);
                                    fleetAircraftTrendBar.LoadAmount = fleetAircraftTrendLine.LoadAmount -
                                                                       lastLoadAmount; //商载净增数
                                    fleetAircraftTrendLine.LoadColor =
                                        fleetAircraftTrendBar.LoadColor = colorDictionary["商载量"];
                                    break;
                            }
                        }

                        //将当前总数赋值做为下一次计算净增量。
                        lastAircraftAmount = fleetAircraftTrendLine.AircraftAmount;
                        lastSeatAmount = fleetAircraftTrendLine.SeatAmount;
                        lastLoadAmount = fleetAircraftTrendLine.LoadAmount;

                        //注:放于此为了正确统计净增量
                        //早于开始时间时执行下一个
                        if (Convert.ToDateTime(currentTime) < StartDate)
                        {
                            continue;
                        }
                        //晚于结束时间时跳出循环
                        if (Convert.ToDateTime(currentTime) > EndDate)
                        {
                            break;
                        }

                        //添加进相应的数据源集合
                        fleetAircraftTrendLineList.Add(fleetAircraftTrendLine);
                        fleetAircraftTrendBarList.Add(fleetAircraftTrendBar);
                    }

                    if (fleetAircraftTrendBarList.Count > 0)
                    {
                        AircraftMaxValue = fleetAircraftTrendBarList.Max(p => p.AircraftAmount);
                        AircraftMinValue = fleetAircraftTrendBarList.Min(p => p.AircraftAmount);
                        if (AircraftMinValue >= 0)
                        {
                            AircraftMinValue = 0;
                            // ReSharper disable once CompareOfFloatsByEqualityOperator
                            if (AircraftMaxValue == 0)
                            {
                                AircraftMaxValue = 5;
                            }
                        }
                        AircraftStep = Convert.ToInt32(AircraftMaxValue/2);

                        SeatMaxValue = fleetAircraftTrendBarList.Max(p => p.SeatAmount);
                        SeatMinValue = fleetAircraftTrendBarList.Min(p => p.SeatAmount);
                        if (SeatMinValue >= 0)
                        {
                            SeatMinValue = 0;
                            // ReSharper disable once CompareOfFloatsByEqualityOperator
                            if (SeatMaxValue == 0.0)
                            {
                                SeatMaxValue = 410;
                            }
                        }
                        SeatStep = Convert.ToInt32(SeatMaxValue/2);

                        LoadMaxValue = fleetAircraftTrendBarList.Max(p => p.LoadAmount);
                        LoadMinValue = fleetAircraftTrendBarList.Min(p => p.LoadAmount);
                        if (LoadMinValue >= 0)
                        {
                            LoadMinValue = 0;
                            // ReSharper disable once CompareOfFloatsByEqualityOperator
                            if (LoadMaxValue == 0)
                            {
                                LoadMaxValue = 70;
                            }
                        }
                        LoadStep = Convert.ToInt32(LoadMaxValue/2);
                    }
                }
            }

            #endregion

            FleetAircraftTrendLineCollection = fleetAircraftTrendLineList;
            FleetAircraftTrendBarCollection = fleetAircraftTrendBarList;

            SelectedTime = "所选时间";
            FleetAircraftCollection = null;
            FleetSeatCollection = null;
            FleetLoadCollection = null;
            AircraftCollection = null;
            Zoom = new Size(1, 1);
        }
        /// <summary>
        /// 获取总数和净增数趋势图的数据源集合
        /// </summary>
        /// <returns></returns>
        private void CreatFleetAircraftTrendCollection()
        {
            List<FleetAircraftTrend> fleetaircrafttrendlinelist = new List<FleetAircraftTrend>();//折线图统计总数的集合
            List<FleetAircraftTrend> fleetaircrafttrendbarlist = new List<FleetAircraftTrend>();//柱状图统计净增的集合

            #region 客机运力XML文件的读写
            var xmlconfig = this.ViewXmlConfig.FirstOrDefault(p => p.ConfigType == "客机运力");
            Dictionary<string, string> colordictionary = GetColorDictionary();
            if (xmlconfig != null)
            {
                XElement xelement = xmlconfig.XmlContent;
                if (xelement != null)
                {
                    //记录上一个时间点的总数,便于统计净增数据
                    int LastAircraftAmount = 0;
                    int LastSeatAmount = 0;
                    int LastLoadAmount = 0;

                    foreach (XElement datetime in xelement.Descendants("DateTime"))
                    {
                        string CurrentTime = Convert.ToDateTime(datetime.Attribute("EndOfMonth").Value).ToString("yyyy/M");

                        if (SelectedIndex == 1)//按半年统计
                        {
                            if (Convert.ToDateTime(CurrentTime).Month != 6 && Convert.ToDateTime(CurrentTime).Month != 12)
                            {
                                continue;
                            }
                        }
                        else if (SelectedIndex == 2)//按年份统计
                        {
                            if (Convert.ToDateTime(CurrentTime).Month != 12)
                            {
                                continue;
                            }
                        }

                        FleetAircraftTrend fleetaircrafttrenline = new FleetAircraftTrend();//折线图的总数对象
                        fleetaircrafttrenline.DateTime = CurrentTime;
                        FleetAircraftTrend fleetaircrafttrenbar = new FleetAircraftTrend();//柱状图的净增数对象
                        fleetaircrafttrenbar.DateTime = CurrentTime;
                        foreach (XElement type in datetime.Descendants("Type"))
                        {
                            if (type.Attribute("TypeName").Value == "飞机数")
                            {
                                fleetaircrafttrenline.AircraftAmount = Convert.ToInt32(type.Attribute("Amount").Value);
                                //飞机净增数
                                fleetaircrafttrenbar.AircraftAmount = fleetaircrafttrenline.AircraftAmount - LastAircraftAmount;

                                fleetaircrafttrenline.AircraftColor = fleetaircrafttrenbar.AircraftColor = colordictionary["飞机数"];
                            }
                            else if (type.Attribute("TypeName").Value == "座位数")
                            {
                                fleetaircrafttrenline.SeatAmount = Convert.ToInt32(type.Attribute("Amount").Value);
                                //座位净增数
                                fleetaircrafttrenbar.SeatAmount = fleetaircrafttrenline.SeatAmount - LastSeatAmount;

                                fleetaircrafttrenline.SeatColor = fleetaircrafttrenbar.SeatColor = colordictionary["座位数"];
                            }
                            else if (type.Attribute("TypeName").Value == "商载量")
                            {
                                fleetaircrafttrenline.LoadAmount = Convert.ToInt32(type.Attribute("Amount").Value);
                                //商载净增数
                                fleetaircrafttrenbar.LoadAmount = fleetaircrafttrenline.LoadAmount - LastLoadAmount;

                                fleetaircrafttrenline.LoadColor = fleetaircrafttrenbar.LoadColor = colordictionary["商载量"];
                            }
                        }

                        //将当前总数赋值做为下一次计算净增量。
                        LastAircraftAmount = fleetaircrafttrenline.AircraftAmount;
                        LastSeatAmount = fleetaircrafttrenline.SeatAmount;
                        LastLoadAmount = fleetaircrafttrenline.LoadAmount;

                        //注:放于此为了正确统计净增量
                        //早于开始时间时执行下一个
                        if (Convert.ToDateTime(CurrentTime) < StartDate)
                        {
                            continue;
                        }
                        //晚于结束时间时跳出循环
                        if (Convert.ToDateTime(CurrentTime) > EndDate)
                        {
                            break;
                        }

                        //添加进相应的数据源集合
                        fleetaircrafttrendlinelist.Add(fleetaircrafttrenline);
                        fleetaircrafttrendbarlist.Add(fleetaircrafttrenbar);
                    }
                    if (fleetaircrafttrendbarlist.Count() > 0)
                    {
                        AircraftMaxValue = fleetaircrafttrendbarlist.Max(p => p.AircraftAmount);
                        SeatMaxValue = fleetaircrafttrendbarlist.Max(p => p.SeatAmount);
                        LoadMaxValue = fleetaircrafttrendbarlist.Max(p => p.LoadAmount);
                        double aircraft = AircraftMaxValue == 0 ? 0 : fleetaircrafttrendbarlist.Min(p => p.AircraftAmount) / AircraftMaxValue;
                        double seat = SeatMaxValue == 0 ? 0 : fleetaircrafttrendbarlist.Min(p => p.SeatAmount) / SeatMaxValue;
                        double load = LoadMaxValue == 0 ? 0 : fleetaircrafttrendbarlist.Min(p => p.LoadAmount) / LoadMaxValue;
                        double minrate = aircraft < seat ? (aircraft < load ? aircraft : load) : (seat < load ? seat : load);
                        if (minrate >= 0)
                        {
                            AircraftMinValue = 0;
                            SeatMinValue = 0;
                            LoadMinValue = 0;
                            if (AircraftMaxValue == 0)
                            {
                                AircraftMaxValue = 10;
                            }
                            if (SeatMaxValue == 0)
                            {
                                SeatMaxValue = 10;
                            }
                            if (LoadMaxValue == 0)
                            {
                                LoadMaxValue = 10;
                            }
                        }
                        else
                        {
                            AircraftMinValue = AircraftMaxValue * minrate;
                            SeatMinValue = SeatMaxValue * minrate;
                            LoadMinValue = LoadMaxValue * minrate;
                        }

                        AircraftStep = Convert.ToInt32(AircraftMaxValue / 2);
                        SeatStep = Convert.ToInt32(SeatMaxValue / 2);
                        LoadStep = Convert.ToInt32(LoadMaxValue / 2);
                    }
                }
            }
            #endregion

            SelectedTime = "所选时间";
            FleetAircraftCollection = null;
            FleetSeatCollection = null;
            FleetLoadCollection = null;
            this.Zoom = new Size(1, 1);

            FleetAircraftTrendLineCollection = fleetaircrafttrendlinelist;
            FleetAircraftTrendBarCollection = fleetaircrafttrendbarlist;
        }
        /// <summary>
        /// 获取总数和净增数趋势图的数据源集合
        /// </summary>
        /// <returns></returns>
        private void CreatFleetAircraftTrendCollection()
        {
            try
            {
                List<FleetAircraftTrend> fleetaircrafttrendlinelist = new List<FleetAircraftTrend>();//折线图统计总数的集合
                List<FleetAircraftTrend> fleetaircrafttrendbarlist = new List<FleetAircraftTrend>();//柱状图统计净增的集合

                #region 飞机运力XML文件的读写
                var xmlconfig = this.ViewXmlConfig.FirstOrDefault(p => p.ConfigType == "飞机运力");
                Dictionary<string, string> colordictionary = GetColorDictionary();
                if (xmlconfig != null)
                {
                    XElement xelement = xmlconfig.XmlContent;
                    if (xelement != null)
                    {
                        //记录上一个时间点的总数,便于统计净增数据
                        int LastAircraftAmount = 0;

                        foreach (XElement datetime in xelement.Descendants("DateTime"))
                        {
                            string CurrentTime = Convert.ToDateTime(datetime.Attribute("EndOfMonth").Value).ToString("yyyy/M");

                            if (SelectedIndex == 1)//按半年统计
                            {
                                if (Convert.ToDateTime(CurrentTime).Month != 6 && Convert.ToDateTime(CurrentTime).Month != 12)
                                {
                                    continue;
                                }
                            }
                            else if (SelectedIndex == 2)//按年份统计
                            {
                                if (Convert.ToDateTime(CurrentTime).Month != 12)
                                {
                                    continue;
                                }
                            }

                            FleetAircraftTrend fleetaircrafttrenline = new FleetAircraftTrend();//折线图的总数对象
                            fleetaircrafttrenline.DateTime = CurrentTime;
                            FleetAircraftTrend fleetaircrafttrenbar = new FleetAircraftTrend();//柱状图的净增数对象
                            fleetaircrafttrenbar.DateTime = CurrentTime;

                            XElement typexelement = datetime.Descendants("Type").FirstOrDefault(p => p.Attribute("TypeName").Value == "飞机数");
                            if (typexelement != null)
                            {
                                fleetaircrafttrenline.AircraftAmount = Convert.ToInt32(typexelement.Attribute("Amount").Value);
                                //飞机净增数
                                fleetaircrafttrenbar.AircraftAmount = fleetaircrafttrenline.AircraftAmount - LastAircraftAmount;

                                fleetaircrafttrenline.AircraftColor = fleetaircrafttrenbar.AircraftColor = colordictionary["飞机数"];
                            }

                            //将当前总数赋值做为下一次计算净增量。
                            LastAircraftAmount = fleetaircrafttrenline.AircraftAmount;

                            //注:放于此为了正确统计净增量
                            //早于开始时间时执行下一个
                            if (Convert.ToDateTime(CurrentTime) < StartDate)
                            {
                                continue;
                            }
                            //晚于结束时间时跳出循环
                            if (Convert.ToDateTime(CurrentTime) > EndDate)
                            {
                                break;
                            }

                            //添加进相应的数据源集合
                            fleetaircrafttrendlinelist.Add(fleetaircrafttrenline);
                            fleetaircrafttrendbarlist.Add(fleetaircrafttrenbar);
                        }
                        if (fleetaircrafttrendbarlist.Count() > 0)
                        {
                            AircraftMaxValue = fleetaircrafttrendbarlist.Max(p => p.AircraftAmount);
                            AircraftMinValue = fleetaircrafttrendbarlist.Min(p => p.AircraftAmount);
                            if (AircraftMinValue >= 0)
                            {
                                AircraftMinValue = 0;
                                if (AircraftMaxValue == 0)
                                {
                                    AircraftMaxValue = 10;
                                }
                            }
                            AircraftStep = Convert.ToInt32(AircraftMaxValue / 2);
                        }
                    }
                }
                #endregion

                SelectedTime = "所选时间";
                FleetAircraftCollection = null;
                AircraftCollection = null;
                this.Zoom = new Size(1, 1);

                FleetAircraftTrendLineCollection = fleetaircrafttrendlinelist;
                FleetAircraftTrendBarCollection = fleetaircrafttrendbarlist;
            }
            catch (Exception)
            {
            }
        }