/// <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); }
/// <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) { } }