protected virtual void AddForecastToDataSet(LandingGearStatusDataSet destinationDataSet) { double avgUtilizationCycles = _forecast != null ? _forecast.ForecastDatas[0].AverageUtilization.Cycles : 0; double avgUtilizationHours = _forecast != null ? _forecast.ForecastDatas[0].AverageUtilization.Hours : 0; string avgUtilizationType = _forecast != null ? _forecast.ForecastDatas[0].AverageUtilization.SelectedInterval.ToString() : ""; int forecastCycles = _forecast != null ? _forecast.ForecastDatas[0].ForecastLifelength.Cycles != null ? (int)_forecast.ForecastDatas[0].ForecastLifelength.Cycles : 0 : 0; int forecastHours = _forecast != null ? _forecast.ForecastDatas[0].ForecastLifelength.Hours != null ? (int)_forecast.ForecastDatas[0].ForecastLifelength.Hours : 0 : 0; int forecastDays = _forecast != null ? _forecast.ForecastDatas[0].ForecastLifelength.Days != null ? (int)_forecast.ForecastDatas[0].ForecastLifelength.Days : 0 : 0; string forecastDate = _forecast != null ? _forecast.ForecastDatas[0].ForecastDate.ToString(new GlobalTermsProvider()["DateFormat"].ToString()) : ""; destinationDataSet.ForecastTable.AddForecastTableRow(avgUtilizationCycles, avgUtilizationHours, avgUtilizationType, forecastCycles, forecastHours, forecastDays, forecastDate); }
/// <summary> /// Построить источник данных (DataSet) для вывода в отчет /// </summary> /// <returns></returns> public virtual LandingGearStatusDataSet GenerateDataSet() { LandingGearStatusDataSet dataset = new LandingGearStatusDataSet(); AddAircraftToDataset(dataset); AddBaseDetailToDataset(dataset); AddDirectivesToDataSet(dataset); AddAdditionalDataToDataSet(dataset); AddForecastToDataSet(dataset); return(dataset); }
/// <summary> /// Добавление директив в таблицу данных /// </summary> /// <param name="dataset">Таблица, в которую добавляются данные</param> protected virtual void AddDirectivesToDataSet(LandingGearStatusDataSet dataset) { /* List<String> colors = new List<string>(); * for (int i = 0; i < HighlightCollection.Instance.Count; i++ ) * { * colors.Add(HighlightCollection.Instance[i].Color.R.ToString()+" "+ * HighlightCollection.Instance[i].Color.G.ToString()+" "+ * HighlightCollection.Instance[i].Color.B.ToString()); * } * MessageBox.Show(string.Join("\r\n",colors.ToArray()));*/ foreach (Component t in _reportedItems) { AddDirectiveToDataset(t, dataset); } }
/// <summary> /// Добавляется элемент в таблицу данных /// </summary> /// <param name="destinationDataSet">Таблица, в которую добавляется элемент</param> private void AddAircraftToDataset(LandingGearStatusDataSet destinationDataSet) { if (_reportedAircraft == null) { return; } var reportAircraftLifeLenght = GlobalObjects.CasEnvironment.Calculator.GetCurrentFlightLifelength(_reportedAircraft); var manufactureDate = _reportedAircraft.ManufactureDate.ToString(new GlobalTermsProvider()["DateFormat"].ToString()); var serialNumber = _reportedAircraft.SerialNumber; var model = _reportedAircraft.Model.ShortName; var registrationNumber = _reportedAircraft.RegistrationNumber; int averageUtilizationHours; int averageUtilizationCycles; string averageUtilizationType; if (_forecast == null) { var aircraftFrame = GlobalObjects.ComponentCore.GetBaseComponentById(_reportedAircraft.AircraftFrameId); var averageUtilization = GlobalObjects.AverageUtilizationCore.GetAverageUtillization(aircraftFrame); averageUtilizationHours = (int)averageUtilization.Hours; averageUtilizationCycles = (int)averageUtilization.Cycles; averageUtilizationType = averageUtilization.SelectedInterval == UtilizationInterval.Dayly ? "Day" : "Month"; } else { averageUtilizationHours = (int)_forecast.ForecastDatas[0].AverageUtilization.Hours; averageUtilizationCycles = (int)_forecast.ForecastDatas[0].AverageUtilization.Cycles; averageUtilizationType = _forecast.ForecastDatas[0].AverageUtilization.SelectedInterval == UtilizationInterval.Dayly ? "Day" : "Month"; } var lineNumber = _reportedAircraft.LineNumber; var variableNumber = _reportedAircraft.VariableNumber; destinationDataSet.AircraftDataTable.AddAircraftDataTableRow(serialNumber, manufactureDate, reportAircraftLifeLenght.ToHoursMinutesFormat(""), reportAircraftLifeLenght.Cycles != null && reportAircraftLifeLenght.Cycles != 0 ? reportAircraftLifeLenght.Cycles.ToString() : "", registrationNumber, model, lineNumber, variableNumber, averageUtilizationHours, averageUtilizationCycles, averageUtilizationType); }
/// <summary> /// Добавление дополнительной информации /// </summary> /// <param name="destinationDateSet"></param> private void AddAdditionalDataToDataSet(LandingGearStatusDataSet destinationDateSet) { var reportFooter = new GlobalTermsProvider()["ReportFooter"].ToString(); var reportFooterPrepared = new GlobalTermsProvider()["ReportFooterPrepared"].ToString(); var reportFooterLink = new GlobalTermsProvider()["ProductWebsite"].ToString(); var averageUtilizationHours = 0; int averageUtilizationCycles = 0; string averageUtilizationType = ""; var parentAircraft = GlobalObjects.AircraftsCore.GetAircraftById(_reportedBaseComponent.ParentAircraftId); if (_reportedBaseComponent != null) { if (_forecast == null) { var aircraftFrame = GlobalObjects.ComponentCore.GetBaseComponentById(parentAircraft.AircraftFrameId); var averageUtilization = GlobalObjects.AverageUtilizationCore.GetAverageUtillization(aircraftFrame); //TODO:(Evgenii Babak) убрать повторяющийся код при использовании AverageUtilization averageUtilizationHours = (int)averageUtilization.Hours; averageUtilizationCycles = (int)averageUtilization.Cycles; averageUtilizationType = averageUtilization.SelectedInterval == UtilizationInterval.Dayly ? "Day" : "Month"; } else { //TODO:(Evgenii Babak) убрать повторяющийся код при использовании AverageUtilization averageUtilizationHours = (int)_forecast.ForecastDatas[0].AverageUtilization.Hours; averageUtilizationCycles = (int)_forecast.ForecastDatas[0].AverageUtilization.Cycles; averageUtilizationType = _forecast.ForecastDatas[0].AverageUtilization.SelectedInterval == UtilizationInterval.Dayly ? "Day" : "Month"; } } destinationDateSet.AdditionalDataTAble.AddAdditionalDataTAbleRow(_reportTitle, OperatorLogotype, _filterSelection, DateAsOf, reportFooter, reportFooterPrepared, reportFooterLink, averageUtilizationCycles, averageUtilizationHours, averageUtilizationType); }
/// <summary> /// Добавляется элемент в таблицу данных /// </summary> /// <param name="reportedComponentобавлямая директива</param> /// <param name="destinationDataSet">Таблица, в которую добавляется элемент</param> private void AddDirectiveToDataset(Component reportedComponent, LandingGearStatusDataSet destinationDataSet) { Lifelength total = GlobalObjects.CasEnvironment.Calculator.GetCurrentFlightLifelength(reportedComponent); string domTtsnTcsn = SmartCore.Auxiliary.Convert.GetDateFormat(reportedComponent.ManufactureDate, "/"); if (domTtsnTcsn != "") { domTtsnTcsn += "\n"; } domTtsnTcsn += total.ToHoursMinutesAndCyclesStrings("FH", "FC"); string position = reportedComponent.Position; string pos = ""; string dwgItem = ""; string pattern = @"\d+"; Regex r = new Regex(pattern); Match m = r.Match(position); if (m.Success) { pos = position.Substring(0, m.Index); dwgItem = position.Substring(m.Index); } ComponentRecordType workType = ComponentRecordType.Unknown; ComponentDirective overhaul = reportedComponent.ComponentDirectives.FirstOrDefault(dd => dd.DirectiveType == ComponentRecordType.Overhaul); Lifelength interval = Lifelength.Null; Lifelength used = Lifelength.Null; Lifelength remain = Lifelength.Null; string lastPerformanceDateString = ""; string lastPerformanceHours = ""; string lastPerformanceCycles = ""; if (overhaul != null) { if (overhaul.LastPerformance != null) { DirectiveRecord lastPerformance = overhaul.LastPerformance; interval = overhaul.Threshold.RepeatInterval; lastPerformanceDateString = SmartCore.Auxiliary.Convert.GetDateFormat(lastPerformance.RecordDate, "/"); lastPerformanceHours = lastPerformance.OnLifelength.ToHoursMinutesFormat("FH"); lastPerformanceCycles = lastPerformance.OnLifelength.Cycles != null && lastPerformance.OnLifelength.Cycles != 0 ? lastPerformance.OnLifelength.Cycles.ToString() : ""; used = total - lastPerformance.OnLifelength; used.Resemble(interval); } else { interval = overhaul.Threshold.FirstPerformanceSinceNew; used = new Lifelength(total); used.Resemble(interval); } workType = overhaul.DirectiveType; remain = new Lifelength(overhaul.Remains); } destinationDataSet.ItemsTable.AddItemsTableRow( dwgItem, reportedComponent.ATAChapter.ToString(), reportedComponent.PartNumber, reportedComponent.SerialNumber, pos, reportedComponent.Description, reportedComponent.MaintenanceControlProcess.ToString(), SmartCore.Auxiliary.Convert.GetDateFormat(reportedComponent.TransferRecords.GetLast().TransferDate, "/"), reportedComponent.LifeLimit.ToHoursMinutesAndCyclesStrings("FH", "FC"), total.ToHoursMinutesAndCyclesStrings("FH", "FC"), reportedComponent.Remains.ToHoursMinutesAndCyclesStrings("FH", "FC"), workType.ToString(), interval.ToHoursMinutesAndCyclesStrings("FH", "FC"), lastPerformanceDateString, lastPerformanceHours, lastPerformanceCycles, used.Days != null ? used.Days.ToString() : "", used.Hours != null ? used.Hours.ToString() : "", used.Cycles != null ? used.Cycles.ToString(): "", used.ToHoursMinutesAndCyclesStrings("FH", "FC"), "", "", "", remain.ToHoursMinutesAndCyclesStrings("FH", "FC"), reportedComponent.Condition.ToString(), reportedComponent.ManHours, reportedComponent.Cost, reportedComponent.Kits.ToString(), "", reportedComponent.Remarks, reportedComponent.Status.ToString(), domTtsnTcsn); }
/// <summary> /// Добавляется элемент в таблицу данных /// </summary> /// <param name="destinationDataSet">Таблица, в которую добавляется элемент</param> private void AddBaseDetailToDataset(LandingGearStatusDataSet destinationDataSet) { if (_reportedBaseComponent == null) { return; } var reportAircraftLifeLenght = GlobalObjects.CasEnvironment.Calculator.GetCurrentFlightLifelength(_reportedBaseComponent); var manufactureDate = _reportedBaseComponent.ManufactureDate.ToString(new GlobalTermsProvider()["DateFormat"].ToString()); var deliveryDate = _reportedBaseComponent.DeliveryDate.ToString(new GlobalTermsProvider()["DateFormat"].ToString()); var status = _reportedBaseComponent.Serviceable ? "Serviceable" : "Unserviceable"; var sinceNewCycles = reportAircraftLifeLenght.Cycles != null ? (int)reportAircraftLifeLenght.Cycles : 0; var sinceNewDays = reportAircraftLifeLenght.Days != null?reportAircraftLifeLenght.Days.ToString() : ""; var lifeLimit = _reportedBaseComponent.LifeLimit; var lifeLimitHours = lifeLimit.Hours != null?lifeLimit.Hours.ToString() : ""; var lifeLimitCycles = lifeLimit.Cycles != null?lifeLimit.Cycles.ToString() : ""; var lifeLimitDays = lifeLimit.Days != null?lifeLimit.Days.ToString() : ""; var remain = new Lifelength(lifeLimit); remain.Substract(reportAircraftLifeLenght); var remainHours = remain.Hours != null?remain.Hours.ToString() : ""; var remainCycles = remain.Cycles != null?remain.Cycles.ToString() : ""; var remainDays = remain.Days != null?remain.Days.ToString() : ""; var lastTransferRecord = _reportedBaseComponent.TransferRecords.GetLast(); var installationDate = lastTransferRecord.TransferDate; var onInstall = lastTransferRecord.OnLifelength; var onInstallDate = installationDate.ToString(new GlobalTermsProvider()["DateFormat"].ToString()); var onInstallHours = onInstall.Hours != null?onInstall.Hours.ToString() : ""; var onInstallCycles = onInstall.Cycles != null?onInstall.Cycles.ToString() : ""; var onInstallDays = onInstall.Days != null?onInstall.Days.ToString() : ""; var sinceInstall = new Lifelength(reportAircraftLifeLenght); sinceInstall.Substract(onInstall); var sinceInstallHours = sinceInstall.Hours != null?sinceInstall.Hours.ToString() : ""; var sinceInstallCycles = sinceInstall.Cycles != null?sinceInstall.Cycles.ToString() : ""; var sinceInstallDays = sinceInstall.Days != null?sinceInstall.Days.ToString() : ""; var warranty = _reportedBaseComponent.Warranty; var warrantyRemain = new Lifelength(warranty); warrantyRemain.Substract(reportAircraftLifeLenght); warrantyRemain.Resemble(warranty); var warrantyHours = warranty.Hours != null?warranty.Hours.ToString() : ""; var warrantyCycles = warranty.Cycles != null?warranty.Cycles.ToString() : ""; var warrantyDays = warranty.Days != null?warranty.Days.ToString() : ""; var warrantyRemainHours = warrantyRemain.Hours != null?warrantyRemain.Hours.ToString() : ""; var warrantyRemainCycles = warrantyRemain.Cycles != null?warrantyRemain.Cycles.ToString() : ""; var warrantyRemainDays = warrantyRemain.Days != null?warrantyRemain.Days.ToString() : ""; var parentAircaft = GlobalObjects.AircraftsCore.GetAircraftById(_reportedBaseComponent.ParentAircraftId); var aircraftFrame = GlobalObjects.ComponentCore.GetBaseComponentById(parentAircaft.AircraftFrameId); var aircraftOnInstall = GlobalObjects.CasEnvironment.Calculator.GetFlightLifelengthOnEndOfDay(aircraftFrame, installationDate); var aircraftOnInstallHours = aircraftOnInstall.Hours != null?aircraftOnInstall.Hours.ToString() : ""; var aircraftOnInstallCycles = aircraftOnInstall.Cycles != null?aircraftOnInstall.Cycles.ToString() : ""; var aircraftOnInstallDays = aircraftOnInstall.Days != null?aircraftOnInstall.Days.ToString() : ""; var sinceOverhaul = Lifelength.Null; var lastOverhaulDate = DateTime.MinValue; var lastOverhaulDateString = ""; #region поиск последнего ремонта и расчет времени, прошедшего с него //поиск директив деталей var directives = GlobalObjects.ComponentCore.GetComponentDirectives(_reportedBaseComponent, true); //поиск директивы ремонта var overhauls = directives.Where(d => d.DirectiveType == ComponentRecordType.Overhaul).ToList(); //поиск последнего ремонта ComponentDirective lastOverhaul = null; foreach (ComponentDirective d in overhauls) { if (d.LastPerformance == null || d.LastPerformance.RecordDate <= lastOverhaulDate) { continue; } lastOverhaulDate = d.LastPerformance.RecordDate; lastOverhaul = d; } if (lastOverhaul != null) { sinceOverhaul.Add(reportAircraftLifeLenght); sinceOverhaul.Substract(lastOverhaul.LastPerformance.OnLifelength); lastOverhaulDateString = lastOverhaul.LastPerformance.RecordDate.ToString(new GlobalTermsProvider()["DateFormat"].ToString()); } #endregion destinationDataSet.BaseDetailTable.AddBaseDetailTableRow(_reportedBaseComponent.ATAChapter.ToString(), _reportedBaseComponent.AvionicsInventory.ToString(), _reportedBaseComponent.PartNumber, _reportedBaseComponent.SerialNumber, _reportedBaseComponent.Model != null ? _reportedBaseComponent.Model.ToString() : "", _reportedBaseComponent.BaseComponentType.ToString(), _reportedBaseComponent.GetParentAircraftRegNumber(), lastTransferRecord.Position, _reportedBaseComponent.Manufacturer, manufactureDate, deliveryDate, _reportedBaseComponent.MPDItem, _reportedBaseComponent.Suppliers != null ? _reportedBaseComponent.Suppliers.ToString() : "", status, _reportedBaseComponent.Cost, _reportedBaseComponent.CostOverhaul, _reportedBaseComponent.CostServiceable, lifeLimitHours, lifeLimitCycles, lifeLimitDays, reportAircraftLifeLenght.ToHoursMinutesFormat(""), sinceNewCycles, sinceNewDays, reportAircraftLifeLenght.ToStrings(), remainCycles, remainHours, remainDays, onInstallDate, onInstallHours, onInstallCycles, onInstallDays, sinceInstallHours, sinceInstallCycles, sinceInstallDays, warrantyHours, warrantyCycles, warrantyDays, warrantyRemainHours, warrantyRemainCycles, warrantyRemainDays, aircraftOnInstallHours, aircraftOnInstallCycles, aircraftOnInstallDays, lastOverhaulDateString, sinceOverhaul.Hours ?? 0, sinceOverhaul.Cycles ?? 0, sinceOverhaul.ToStrings()); }