private void AddComplianceItem(MaintenanceCheckRecord forCheckRecord) { CompliancePDFItem pdFitem = new CompliancePDFItem(forCheckRecord); flowLayoutPanelContainer.Controls.Add(pdFitem); pdFitem.AutoSize = true; pdFitem.AutoSizeMode = AutoSizeMode.GrowAndShrink; }
///<summary> ///</summary> public CompliancePDFItem(MaintenanceCheckRecord maintenanceCheckRecord) : this() { if (maintenanceCheckRecord == null) { throw new ArgumentNullException("maintenanceCheckRecord", "must be not null"); } _maintenanceCheckRecord = maintenanceCheckRecord; _currentCheck = maintenanceCheckRecord.ParentCheck; UpdateInformation(); }
private void AddListViewItem(AbstractPerformanceRecord apr, WorkPackage workPackage, MaintenanceCheckRecord mcr) { DirectiveRecord directiveRecord = (DirectiveRecord)apr; MaintenanceDirective parentDirective = (MaintenanceDirective)directiveRecord.Parent; string[] subs = new[] { parentDirective.WorkType.ToString(), UsefulMethods.NormalizeDate(directiveRecord.RecordDate), directiveRecord.OnLifelength != null ? directiveRecord.OnLifelength.ToString() : "", "", "", directiveRecord.Remarks, }; ListViewItem newItem = new ListViewItem(subs) { Group = listViewCompliance.Groups[1], Tag = directiveRecord }; if (workPackage != null) { //запись о выполнении блокируется найденым пакетом apr.DirectivePackage = workPackage; newItem.BackColor = Color.FromArgb(Highlight.Grey.Color); newItem.ToolTipText = "Perform of the task:" + parentDirective.WorkType + "\nadded by Work Package:" + "\n" + directiveRecord.DirectivePackage.Title + "\nTo remove a performance of task, you need to exclude task from this work package," + "\nor delete the work package "; } else if (directiveRecord.MaintenanceCheckRecordId > 0 && mcr != null && mcr.ParentCheck != null) { MaintenanceCheck mc = mcr.ParentCheck; directiveRecord.MaintenanceCheck = mc; newItem.BackColor = Color.FromArgb(Highlight.Grey.Color); newItem.ToolTipText = "Perform of the task:" + parentDirective.WorkType + "\nadded by Maintenance Check:" + "\n" + mc.Name + "\nTo remove a performance of task, you need to delete performance of maintenance check"; } listViewCompliance.Items.Add(newItem); }
/// <summary> /// ????????? ??????????? ?????? Operation Time /// </summary> /// <param name="aircraft">??</param> /// <param name="items"></param> /// <param name="aircraftBaseDetails"></param> /// <param name="lastCCheckRecord"></param> /// <param name="workPackages"></param> /// <param name="from"></param> /// <param name="to"></param> public OperationTimeReportBuilder(Aircraft aircraft, List <MaintenanceCheckRecordGroup> items, IEnumerable <BaseComponent> aircraftBaseDetails, MaintenanceCheckRecord lastCCheckRecord, IEnumerable <WorkPackage> workPackages, DateTime from, DateTime to) { _currentAircraft = aircraft; _records = items; _aircraftBaseDetails = aircraftBaseDetails; _lastCheckRecord = lastCCheckRecord; _workPackages = workPackages; _from = from; _to = to; }
/// <summary> /// Создается построитель отчета Operation Time /// </summary> /// <param name="aircraft">ВС</param> /// <param name="minCCheck"></param> /// <param name="aircraftBaseDetails"></param> /// <param name="lastACheckRecord"></param> /// <param name="lastCCheckRecord"></param> /// <param name="workPackages"></param> /// <param name="countDCheckPerformances"></param> public AircraftTechnicalConditionReportBuilder(Aircraft aircraft, MaintenanceCheck minCCheck, IEnumerable <BaseComponent> aircraftBaseDetails, MaintenanceCheckRecord lastACheckRecord, MaintenanceCheckRecord lastCCheckRecord, IEnumerable <WorkPackage> workPackages, int countDCheckPerformances) { _reportedAircraft = aircraft; _minCCheck = minCCheck; _aircraftBaseDetails = aircraftBaseDetails; _lastACheckRecord = lastACheckRecord; _lastCСheckRecord = lastCCheckRecord; _workPackages = workPackages; _countDCheckPerformances = countDCheckPerformances; }
private void ComboBoxCheckRecordSelectedIndexChanged(object sender, EventArgs e) { if (comboBoxCheckRecord.SelectedItem as MaintenanceCheckRecordGroup == null) { return; } MaintenanceCheckRecordGroup maintenanceCheckRecordGroup = comboBoxCheckRecord.SelectedItem as MaintenanceCheckRecordGroup; MaintenanceCheckRecord maintenanceCheckRecord = maintenanceCheckRecordGroup.GetMinIntervalCheckRecord(); if (maintenanceCheckRecord == null) { return; } lifelengthViewer_LastCompliance.Lifelength = new Lifelength(maintenanceCheckRecord.OnLifelength); }
/// <summary> /// Возвращает имя последней группы выполнения группы /// </summary> /// <returns>Имя последней группы выполнения группы</returns> public string GetComplianceGroupName() { MaintenanceCheck maxCheck = GetMaxIntervalCheck(); if (maxCheck == null) { return(""); } MaintenanceCheckRecord mcr = maxCheck.PerformanceRecords.FirstOrDefault(r => r.NumGroup == GroupComplianceNum); if (mcr == null || string.IsNullOrEmpty(mcr.ComplianceCheckName)) { return(maxCheck.Name); } return(mcr.ComplianceCheckName); }
/// <summary> /// Данные работы обновляются по введенным значениям /// </summary> private bool SaveData() { MaintenanceCheckRecordGroup mcrg = (MaintenanceCheckRecordGroup)comboBoxCheckRecord.SelectedItem; MaintenanceCheckRecord mcr = mcrg.GetMinIntervalCheckRecord(); if (mcr != null) { _currentMaintenanceProgramChangeRecord.CalculatedPerformanceSource = mcr.CalculatedPerformanceSource.IsNullOrZero() ? new Lifelength(mcr.ParentCheck.Interval * mcr.PerformanceNum) : new Lifelength(mcr.CalculatedPerformanceSource); _currentMaintenanceProgramChangeRecord.PerformanceNum = mcr.PerformanceNum; _currentMaintenanceProgramChangeRecord.RecordDate = mcr.RecordDate; _currentMaintenanceProgramChangeRecord.MaintenanceCheckRecordId = mcr.ItemId; } _currentMaintenanceProgramChangeRecord.Remarks = textBox_Remarks.Text; _currentMaintenanceProgramChangeRecord.OnLifelength = lifelengthViewer_LastCompliance.Lifelength; if (comboBoxMSG.SelectedItem is MSG) { _currentMaintenanceProgramChangeRecord.MSG = (MSG)comboBoxMSG.SelectedItem; } else { _currentMaintenanceProgramChangeRecord.MSG = MSG.MSG2; } try { GlobalObjects.MaintenanceCore.RegisterMaintenanceProgramChangeRecord(_currentAircraft, _currentMaintenanceProgramChangeRecord); } catch (Exception ex) { Program.Provider.Logger.Log("Error while saving maintenance program change record", ex); return(false); } return(true); }
/// <summary> /// Удаляет запись о выполнении директивы /// </summary> /// <param name="record"></param> public void Delete(MaintenanceCheckRecord record) { record.IsDeleted = true; _newKeeper.Save(record); // нужно обнулить математический аппарат объекта, которому принадлежит запись о выполнении // а также удалить выполнение директивы из коллекции выполнений директивы if (record.ParentCheck != null && record.ParentCheck.PerformanceRecords != null) { record.ParentCheck.PerformanceRecords.Remove(record); } var ddr = _casEnvironment.NewLoader.GetObjectListAll <DirectiveRecordDTO, DirectiveRecord>(new Filter("MaintenanceCheckRecordId", record.ItemId)); if (ddr.Count <= 0) { return; } foreach (var directiveRecord in ddr) { _newKeeper.Delete(directiveRecord, true, false); } }
private void UpdateInformation() { if (_contextMenuStrip == null) { InitToolStripMenuItems(); } listViewCompliance.Items.Clear(); if (CheckItems == null) { return; } var lastRecords = new List <MaintenanceCheckRecord>(); var nextPerformances = new List <NextPerformance>(); //Поиск и заполнение просроченных директив и записей о перемещении //Объекты для в которые будет извлекаться информация //из записеи о перемещении string[] subs; ListViewItem newItem; var aircraftFrame = GlobalObjects.ComponentCore.GetBaseComponentById(_currentAircraft.AircraftFrameId); //прогнозируемый ресурс var forecastData = new ForecastData(DateTime.Now, aircraftFrame.AverageUtilization, GlobalObjects.CasEnvironment.Calculator.GetCurrentFlightLifelength(_currentAircraft)); //GlobalObjects.CasEnvironment.Calculator.GetNextPerformanceGroup(CheckItems, _currentAircraft.Schedule, forecastData); foreach (MaintenanceCheck check in CheckItems) { if (check.Grouping) { foreach (MaintenanceNextPerformance mnp in check.GetPergormanceGroupWhereCheckIsSenior()) { //Добавляются все выполнения, дата которых меньше нынешней //плюс еще одно выполнение дата которого выше нынешней nextPerformances.Add(mnp); if (mnp.PerformanceDate != null && mnp.PerformanceDate > DateTime.Now) { break; } } } else { foreach (NextPerformance mnp in check.NextPerformances) { //Добавляются все выполнения, дата которых меньше нынешней //плюс еще одно выполнение дата которого выше нынешней nextPerformances.Add(mnp); if (mnp.PerformanceDate != null && mnp.PerformanceDate > DateTime.Now) { break; } } } lastRecords.AddRange(check.PerformanceRecords.ToArray()); foreach (MaintenanceDirective mpd in check.BindMpds) { GlobalObjects.PerformanceCalculator.GetNextPerformance(mpd, forecastData); } } //////////////////////////////////////////// //загрузка рабочих пакетов для определения //перекрытых ими выполнений задач if (_openPubWorkPackages == null) { _openPubWorkPackages = new CommonCollection <WorkPackage>(); } _openPubWorkPackages.Clear(); _openPubWorkPackages.AddRange(GlobalObjects.WorkPackageCore.GetWorkPackagesLite(_currentAircraft, WorkPackageStatus.Opened)); _openPubWorkPackages.AddRange(GlobalObjects.WorkPackageCore.GetWorkPackagesLite(_currentAircraft, WorkPackageStatus.Published)); var allWorkPackagesIncludedTask = new CommonCollection <WorkPackage>(); var openPubWorkPackages = new CommonCollection <WorkPackage>(); var closedWorkPackages = new CommonCollection <WorkPackage>(); allWorkPackagesIncludedTask.AddRange(GlobalObjects.WorkPackageCore.GetWorkPackagesLite(_currentAircraft, WorkPackageStatus.All, CheckItems.Select(m => (IDirective)m).ToList())); #region Добавление в список просроченных выполнений //и сравнение их с открытыми и опубликованными рабочими пакетами openPubWorkPackages.AddRange(allWorkPackagesIncludedTask.Where(wp => wp.Status == WorkPackageStatus.Opened || wp.Status == WorkPackageStatus.Published)); //сбор всех записей рабочих пакетов для удобства фильтрации List <WorkPackageRecord> openPubWPRecords = new List <WorkPackageRecord>(); foreach (WorkPackage openWorkPackage in openPubWorkPackages) { openPubWPRecords.AddRange(openWorkPackage.WorkPakageRecords); } //LINQ запрос для сортировки записей по дате List <NextPerformance> sortNextRecords = (from record in nextPerformances orderby record.GetPerformanceDateOrDefault() descending select record).ToList(); for (int i = 0; i < sortNextRecords.Count; i++) { //поиск записи в рабочих пакетах по данному чеку //чей номер группы выполнения (по записи) совпадает с расчитанным MaintenanceCheck check = (MaintenanceCheck)sortNextRecords[i].Parent; //if (check.Name == "5C") //{ //} //номер выполнения int parentCountPerf; if (check.LastPerformance != null) { parentCountPerf = check.LastPerformance.NumGroup <= 0 ? 1 : check.LastPerformance.NumGroup; } else { parentCountPerf = 0; } if (check.Grouping) { MaintenanceNextPerformance mnp = sortNextRecords[i] as MaintenanceNextPerformance; if (mnp != null) { parentCountPerf = mnp.PerformanceGroupNum; } else { parentCountPerf += check.NextPerformances.IndexOf(sortNextRecords[i]); parentCountPerf += 1; } } else { parentCountPerf += check.NextPerformances.IndexOf(sortNextRecords[i]); parentCountPerf += 1; } WorkPackageRecord wpr = openPubWPRecords.Where(r => r.PerformanceNumFromStart == parentCountPerf && r.WorkPackageItemType == check.SmartCoreObjectType.ItemId && r.DirectiveId == check.ItemId).FirstOrDefault(); if (wpr != null) { WorkPackage wp = openPubWorkPackages.GetItemById(wpr.WorkPakageId); //запись о выполнении блокируется найденым пакетом sortNextRecords[i].BlockedByPackage = wp; //последующие записи о выполнении так же должны быть заблокированы for (int j = i - 1; j >= 0; j--) { //блокировать нужно все рабочие записи, или до первой записи, //заблокированной другим рабочим пакетом if (sortNextRecords[j].BlockedByPackage != null && sortNextRecords[j].Parent == check || sortNextRecords[j].Condition != ConditionState.Overdue) { break; } if (sortNextRecords[j].Parent == check) { sortNextRecords[j].BlockedByPackage = wp; listViewCompliance.Items[j].BackColor = Color.FromArgb(Highlight.GrayLight.Color); } } } string type = check.Schedule ? " (Schedule) " : " (Store) "; string resource = check.Resource.ToString(); string grouping = check.Grouping ? " (Group)" : ""; string stringNumGr = (sortNextRecords[i] is MaintenanceNextPerformance ? ((MaintenanceNextPerformance)sortNextRecords[i]).PerformanceGroupNum.ToString() : "N/A") + type + resource + grouping; subs = new[] { stringNumGr, sortNextRecords[i].Title, sortNextRecords[i].PerformanceDate != null ? UsefulMethods.NormalizeDate((DateTime)sortNextRecords[i].PerformanceDate) : "N/A", sortNextRecords[i].PerformanceSource.ToString(), "", }; newItem = new ListViewItem(subs) { Group = listViewCompliance.Groups["next"], Tag = sortNextRecords[i], BackColor = UsefulMethods.GetColor(sortNextRecords[i]) }; listViewCompliance.Items.Add(newItem); } #endregion #region Добавление в список записей о произведенных выполнениях //и сравнение их с закрытыми рабочими пакетами closedWorkPackages.AddRange(allWorkPackagesIncludedTask.Where(wp => wp.Status == WorkPackageStatus.Closed)); //сбор всех записей рабочих пакетов для удобства фильтрации List <WorkPackageRecord> closedWPRecords = new List <WorkPackageRecord>(); foreach (WorkPackage closedWorkPackage in closedWorkPackages) { closedWPRecords.AddRange(closedWorkPackage.WorkPakageRecords); } List <MaintenanceCheckRecordGroup> maintenanceCheckRecordGroups = new List <MaintenanceCheckRecordGroup>(); foreach (MaintenanceCheckRecord record in lastRecords) { //Поиск коллекции групп, в которую входят группы с нужными критериями //по плану, группировка и основному ресурсу if (record.ParentCheck.Grouping) { MaintenanceCheckRecordGroup recordGroup = maintenanceCheckRecordGroups .FirstOrDefault(g => g.Schedule == record.ParentCheck.Schedule && g.Grouping == record.ParentCheck.Grouping && g.Resource == record.ParentCheck.Resource && g.GroupComplianceNum == record.NumGroup); if (recordGroup != null) { //Коллекция найдена //Поиск в ней группы чеков с нужным типом recordGroup.Records.Add(record); } else { //Коллекции с нужными критериями нет //Созадние и добавление recordGroup = new MaintenanceCheckRecordGroup(record.ParentCheck.Schedule, record.ParentCheck.Grouping, record.ParentCheck.Resource, record.NumGroup); recordGroup.Records.Add(record); maintenanceCheckRecordGroups.Add(recordGroup); } } else { MaintenanceCheckRecordGroup recordGroup = new MaintenanceCheckRecordGroup(record.ParentCheck.Schedule, record.ParentCheck.Grouping, record.ParentCheck.Resource); recordGroup.Records.Add(record); maintenanceCheckRecordGroups.Add(recordGroup); } } List <object> tempRecords = new List <object>(); tempRecords.AddRange(maintenanceCheckRecordGroups.ToArray()); tempRecords.AddRange(_currentAircraft.MaintenanceProgramChangeRecords.ToArray()); List <object> sortLastRecords = tempRecords.OrderByDescending(tr => (tr is MaintenanceCheckRecordGroup ? ((MaintenanceCheckRecordGroup)tr).LastGroupComplianceDate : tr is AbstractRecord ? ((AbstractRecord)tr).RecordDate : DateTimeExtend.GetCASMinDateTime())) .ToList(); foreach (object t in sortLastRecords) { if (t is MaintenanceCheckRecordGroup) { MaintenanceCheckRecordGroup mcrg = (MaintenanceCheckRecordGroup)t; MaintenanceCheckRecord directiveRecord = mcrg.Records.First(); MaintenanceCheck parentDirective = (MaintenanceCheck)directiveRecord.Parent; newItem = GetListViewItem(mcrg); WorkPackage workPackage = closedWorkPackages.Where(wp => wp.ItemId == directiveRecord.DirectivePackageId).FirstOrDefault(); if (workPackage != null) { //запись о выполнении блокируется найденым пакетом directiveRecord.DirectivePackage = workPackage; newItem.BackColor = Color.FromArgb(Highlight.Grey.Color); newItem.ToolTipText = "Perform of the task:" + parentDirective.Name + "\nadded by Work Package:" + "\n" + directiveRecord.DirectivePackage.Title + "\nTo remove a performance of task, you need to exclude task from this work package," + "\nor delete the work package "; } listViewCompliance.Items.Add(newItem); } else if (t is MaintenanceProgramChangeRecord) { MaintenanceProgramChangeRecord mpcr = (MaintenanceProgramChangeRecord)t; subs = new[] { "N/A", "Changet to " + mpcr.MSG, UsefulMethods.NormalizeDate(mpcr.RecordDate), mpcr.OnLifelength.ToString(), "", }; newItem = new ListViewItem(subs) { Group = listViewCompliance.Groups["last"], Tag = mpcr, BackColor = Color.FromArgb(Highlight.GrayLight.Color) }; listViewCompliance.Items.Add(newItem); } } #endregion if (_toolStripMenuItemsWorkPackages != null) { foreach (ToolStripMenuItem item in _toolStripMenuItemsWorkPackages.DropDownItems) { item.Click -= AddToWorkPackageItemClick; } _toolStripMenuItemsWorkPackages.DropDownItems.Clear(); foreach (WorkPackage workPackage in _openPubWorkPackages) { ToolStripMenuItem item = new ToolStripMenuItem(workPackage.Title); item.Click += AddToWorkPackageItemClick; item.Tag = workPackage; _toolStripMenuItemsWorkPackages.DropDownItems.Add(item); } } ButtonAdd.Enabled = false; }
/// <summary> /// Данные работы обновляются по введенным значениям /// </summary> private void SaveData() { foreach (WorkPackageClosingDataGridViewRow row in dataGridViewItems.Rows.OfType <WorkPackageClosingDataGridViewRow>()) { if ((bool)row.Cells[ColumnClosed.Index].Value == false) { continue; } try { DateTime performDate = (DateTime)row.Cells[ColumnDate.Index].Value; if (row.ClosingItem is Procedure) { Procedure dir = (Procedure)row.ClosingItem; DirectiveRecord directiveRecord = (DirectiveRecord)row.Record; if (directiveRecord.ItemId <= 0) { directiveRecord.Completed = true; directiveRecord.RecordType = DirectiveRecordType.Perfromed; directiveRecord.RecordTypeId = DirectiveRecordType.Perfromed.ItemId; directiveRecord.Remarks = "Audit " + _currentAudit.Title + " Close " + dir.ProcedureType.CommonName + " Procedure"; } directiveRecord.RecordDate = performDate; Lifelength performanceSource; directiveRecord.OnLifelength = Lifelength.TryParse((string)row.Cells[ColumnHours.Index].Value, (string)row.Cells[ColumnCycles.Index].Value, (string)row.Cells[ColumnDays.Index].Value, out performanceSource) ? performanceSource : Lifelength.Zero; GlobalObjects.PerformanceCore.RegisterPerformance(dir, directiveRecord, _currentAudit); } } catch (Exception ex) { Program.Provider.Logger.Log("Error while saving performance for directive", ex); } } //_closingItems.All(item => item.SaveData()); IEnumerable <MaintenanceCheck> closedChecks = dataGridViewItems.Rows.OfType <WorkPackageClosingDataGridViewRow>() .Where(ci => ci.ClosingItem is MaintenanceCheck) .Select(ci => ci.ClosingItem as MaintenanceCheck); foreach (MaintenanceCheck mc in closedChecks) { MaintenanceCheckRecord mcRecord = mc.PerformanceRecords.FirstOrDefault(pr => pr.DirectivePackageId == _currentAudit.ItemId); if (mcRecord == null) { continue; } IEnumerable <DirectiveRecord> bindedMpdsRecords = dataGridViewItems.Rows.OfType <WorkPackageClosingDataGridViewRow>() .Where(ci => ci.ClosingItem is MaintenanceDirective) .Select(ci => ci.ClosingItem as MaintenanceDirective) .Where(mpd => mpd.MaintenanceCheck != null && mpd.MaintenanceCheck.ItemId == mc.ItemId && mpd.PerformanceRecords.FirstOrDefault(pr => pr.DirectivePackageId == _currentAudit.ItemId) != null) .Select(mpd => mpd.PerformanceRecords.FirstOrDefault(pr => pr.DirectivePackageId == _currentAudit.ItemId)); foreach (DirectiveRecord mpdsRecord in bindedMpdsRecords) { mpdsRecord.MaintenanceCheckRecordId = mcRecord.ItemId; GlobalObjects.NewKeeper.Save(mpdsRecord, false); } } }
/// <summary> /// Добавление директив в таблицу данных /// </summary> /// <param name="dataset">Таблица, в которую добавляются данные</param> protected virtual void AddDirectivesToDataSet(MaintenancePlanDataSet dataset) { //группировка по родительскому самолету IEnumerable <IGrouping <Aircraft, BaseEntityObject> > groupByAircraft = _reportedDirectives.GroupBy(GlobalObjects.AircraftsCore.GetParentAircraft) .OrderBy(g => g.Key.ToString() + " " + g.Key.Model.ToString()); foreach (IGrouping <Aircraft, BaseEntityObject> byAircraft in groupByAircraft) { IEnumerable <IGrouping <DateTime, BaseEntityObject> > groupedItems = byAircraft.GroupBy(GetDate) .OrderBy(g => g.Key); //сбор всех китов ВС в одну коллекцию List <AbstractAccessory> aircraftKits = byAircraft.Select(ba => ba) .Select(GetParent) .Where(i => i is IKitRequired) .SelectMany(i => ((IKitRequired)i).Kits) .Cast <AbstractAccessory>() .ToList(); foreach (IGrouping <DateTime, BaseEntityObject> groupedItem in groupedItems) { //Группировка элементов по датам выполнения DateTime dateTime = groupedItem.Key.Date; //Формирование первой части названия группы, состоящей из даты выполнения string temp = ""; string kitString = ""; double manHours = 0; //Собрание всех выполнений на данную дату в одну коллекцию IEnumerable <BaseEntityObject> performances = groupedItem.Select(lvi => lvi).ToArray(); //Собрание всех КИТов на данную дату в одну коллекцию IEnumerable <AccessoryRequired> kits = performances.Select(GetParent) .Where(i => i is IKitRequired) .SelectMany(i => ((IKitRequired)i).Kits); IEnumerable <IGrouping <string, AccessoryRequired> > groupByType = kits.GroupBy(GetAccessoryTypeString); foreach (IGrouping <string, AccessoryRequired> grouping in groupByType) { if (!string.IsNullOrEmpty(kitString)) { kitString += Environment.NewLine; } kitString += grouping.Key + Environment.NewLine; kitString = grouping.Select(g => g) .Distinct(new AccessoryRequired()) .Aggregate(kitString, (current, kit) => current + (kit.ToString() + "; ")); } //Добавление в название присутствующих на данную дату чеков программы обслуживания IEnumerable <BaseEntityObject> maintenanceCheckPerformances = performances.Where(np => GetParent(np) is MaintenanceCheck); foreach (BaseEntityObject mcp in maintenanceCheckPerformances) { if (mcp is MaintenanceNextPerformance) { MaintenanceNextPerformance mnp = mcp as MaintenanceNextPerformance; temp += mnp.PerformanceGroup.GetGroupName(); if (byAircraft.Key != null && byAircraft.Key.MSG < MSG.MSG3) { temp += "( " + mnp.PerformanceGroup.ToStringCheckNames() + ")"; } } else if (mcp is NextPerformance) { NextPerformance np = mcp as NextPerformance; temp += ((MaintenanceCheck)np.Parent).Name; } else if (mcp is MaintenanceCheckRecord) { MaintenanceCheckRecord mcr = mcp as MaintenanceCheckRecord; temp += string.IsNullOrEmpty(mcr.ComplianceCheckName) ? mcr.ParentCheck.Name : mcr.ComplianceCheckName; } else if (mcp is MaintenanceCheck) { MaintenanceCheck mc = (MaintenanceCheck)mcp; if (mc.Grouping) { MaintenanceNextPerformance mnp = mc.GetNextPergormanceGroupWhereCheckIsSenior(); if (mnp != null) { temp += mnp.PerformanceGroup.GetGroupName(); } else { temp += mc.Name; } } else { temp += mc.Name; } } temp += " "; } IEnumerable <IBaseEntityObject> allDirectives = performances.Select(GetParent).ToArray(); //Добавление в название присутствующих на данную дату директив летной годности IEnumerable <Directive> directivesPerformances = allDirectives.OfType <Directive>().ToArray(); if (directivesPerformances.Any()) { IEnumerable <IGrouping <DirectiveType, Directive> > groupByDirectiveType = directivesPerformances.GroupBy(d => d.DirectiveType); foreach (IGrouping <DirectiveType, Directive> grouping in groupByDirectiveType) { if (!string.IsNullOrEmpty(temp)) { temp += Environment.NewLine; } temp += grouping.Key.ShortName + " " + Environment.NewLine; foreach (Directive ad in grouping) { temp += ad.Title + " § " + ad.Paragraph + " " + ad.WorkType; temp += "; "; } } manHours += directivesPerformances.Sum(dp => dp.ManHours); } //Добавление в название присутствующих на данную дату компонентов или задач по ним IEnumerable <IBaseEntityObject> componentPerformances = allDirectives.Where(np => np is Component || np is ComponentDirective).ToArray(); if (componentPerformances.Any()) { if (!string.IsNullOrEmpty(temp)) { temp += Environment.NewLine; } temp += "Component" + Environment.NewLine; foreach (IBaseEntityObject componentPerformance in componentPerformances) { Component d; if (componentPerformance is ComponentDirective) { ComponentDirective dd = (ComponentDirective)componentPerformance; d = ((ComponentDirective)componentPerformance).ParentComponent; if (d != null) { temp += "P/N:" + d.PartNumber + " S/N:" + d.SerialNumber + " " + dd.DirectiveType; } else { temp += dd.DirectiveType; } manHours += dd.ManHours; if (dd.DirectiveType == ComponentRecordType.Remove || dd.DirectiveType == ComponentRecordType.Discard || dd.DirectiveType == ComponentRecordType.Overhaul) { //типом работ является удаление или уничтожение компонента //Добавление в коллекцию Китов ВС данного компонента, //т.к. его необходимо будет приобрести aircraftKits.Add(d); } } else { d = componentPerformance as Component; if (d != null) { temp += "P/N:" + d.PartNumber + " S/N:" + d.SerialNumber + " Discard"; manHours += d.ManHours; //Добавление в коллекцию Китов ВС данного компонента, //т.к. его необходимо будет приобрести aircraftKits.Add(d); } } temp += "; "; } } //Добавление в название присутствующих на данную дату MPD //Вывод только тех MPD что не привязаны к чекам IEnumerable <MaintenanceDirective> mpdPerformances = allDirectives.OfType <MaintenanceDirective>().ToArray(); if (mpdPerformances.Any()) { if (!string.IsNullOrEmpty(temp)) { temp += Environment.NewLine; } temp += "MPD " + Environment.NewLine; foreach (MaintenanceDirective mpd in mpdPerformances) { temp += mpd.TaskNumberCheck + " " + mpd.WorkType.ShortName + "; "; manHours += mpd.ManHours; } } dataset.ItemsTable.AddItemsTableRow("", "", temp, dateTime, manHours, 0, kitString, byAircraft.Key != null ? byAircraft.Key + " " + byAircraft.Key.Model : "Unk"); } IEnumerable <IGrouping <Product, AbstractAccessory> > products = aircraftKits.GroupBy(ak => ak.Product ?? new Product { GoodsClass = ak.GoodsClass, Standart = ak.Standart, PartNumber = ak.ParentString, Description = ak.Description } ); foreach (IGrouping <Product, AbstractAccessory> product in products) { string type = GetAccessoryTypeString(product.First()); double quantity = 0; double totalProductCost = 0; if (product.Key.GoodsClass.IsNodeOrSubNodeOf(GoodsClass.Tools) || product.Key.GoodsClass.IsNodeOrSubNodeOf(GoodsClass.ControlTestEquipment)) { quantity = product.Max(p => p.Quantity); totalProductCost = 0; } else if (product.Key.GoodsClass.IsNodeOrSubNodeOf(GoodsClass.ComponentsAndParts)) { foreach (AbstractAccessory accessoryRequired in product) { int qty = accessoryRequired.Quantity < 1 ? 1 : (int)accessoryRequired.Quantity; quantity += qty; totalProductCost += (qty * accessoryRequired.CostNew); } } else { foreach (AbstractAccessory accessoryRequired in product) { quantity += accessoryRequired.Quantity; totalProductCost += (accessoryRequired.Quantity * accessoryRequired.CostNew); } } dataset.KitsTable.AddKitsTableRow(product.Key.ToString(), quantity, totalProductCost, byAircraft.Key != null ? byAircraft.Key + " " + byAircraft.Key.Model : "Unk", type); } } }
/// <summary> /// Добавление директив в таблицу данных /// </summary> /// <param name="destinationDataSet">Таблица, в которую добавляются данные</param> protected virtual void AddDirectivesToDataSet(MaintenanceHistoryDataSet destinationDataSet) { if (_reportedAircraft == null) { return; } var compliance = from item in _reportedDirectives group item by item.NumGroup into compl orderby compl.First().RecordDate descending select compl; foreach (IGrouping <int, MaintenanceCheckRecord> grouping in compliance) { MaintenanceCheckRecord reportedDirective = grouping.First(); string name = grouping.Aggregate("", (current, g) => current + (g.ParentCheck.Name + " ")); Lifelength reportAircraftLifeLenght = GlobalObjects.CasEnvironment.Calculator.GetCurrentFlightLifelength(_reportedBaseComponent); Lifelength used = new Lifelength(reportAircraftLifeLenght); string lastComplianceDate = "", lastComplianceHours = "", lastComplianceCycles = "", lastComplianceDays = ""; string remarks, references = ""; remarks = reportedDirective.Remarks; lastComplianceDate = reportedDirective.RecordDate.ToString(new GlobalTermsProvider()["DateFormat"].ToString()); lastComplianceCycles = reportedDirective.OnLifelength.Cycles != null ? reportedDirective.OnLifelength.Cycles.ToString() : ""; lastComplianceHours = reportedDirective.OnLifelength.Hours != null ? reportedDirective.OnLifelength.Hours.ToString() : ""; lastComplianceDays = reportedDirective.OnLifelength.Days != null ? reportedDirective.OnLifelength.Days.ToString() : ""; var unusedDays = reportedDirective.Unused?.Days.ToString() ?? ""; var unusedHours = reportedDirective.Unused?.Hours.ToString() ?? ""; var unusedCycles = reportedDirective.Unused?.Cycles.ToString() ?? ""; var overusedDays = reportedDirective.Overused?.Days.ToString() ?? ""; var overusedHours = reportedDirective.Overused?.Hours.ToString() ?? ""; var overusedCycles = reportedDirective.Overused?.Cycles.ToString() ?? ""; used.Substract(reportedDirective.OnLifelength); destinationDataSet.ItemsTable.AddItemsTableRow(lastComplianceDate, reportedDirective.NumGroup, reportedDirective.ParentCheck.Schedule ? "SCHEDULE" : "UNSCHEDULE", name, lastComplianceDays, lastComplianceHours, lastComplianceCycles, unusedDays, unusedHours, unusedCycles, overusedDays, overusedHours, overusedCycles, remarks, references); } }
/// <summary> /// Контрол редактирует данные о закрытии привязанной директивы программы обслуживания /// </summary> public BindedMpdItemControl(MaintenanceDirective mpd, MaintenanceCheckRecord maintenanceCheckRecord) : this() { _maintenanceCheckRecord = maintenanceCheckRecord; AttachedObject = mpd; }
private void HeaderControlButtonPrintDisplayerRequested(object sender, Interfaces.ReferenceEventArgs e) { if (sender == _itemPrintReportGeneralData) { AircraftGeneralDataReportBuilder builder = new AircraftGeneralDataReportBuilder(); string caption = CurrentAircraft.RegistrationNumber + "." + "General data report"; builder.ReportedAircraft = CurrentAircraft; builder.LifelengthAircraftSinceNew = GlobalObjects.CasEnvironment.Calculator.GetCurrentFlightLifelength(CurrentAircraft); e.DisplayerText = caption; e.TypeOfReflection = ReflectionTypes.DisplayInNew; e.RequestedEntity = new ReportScreen(builder); GlobalObjects.AuditRepository.WriteReportAsync(GlobalObjects.CasEnvironment.IdentityUser, "AircraftSummaryScreen (Aircraft General Data)"); } else if (sender == _itemPrintReportTechnicalCondition) { var maintenanceChecks = GlobalObjects.CasEnvironment.NewLoader.GetObjectListAll <MaintenanceCheckDTO, MaintenanceCheck> (new List <Filter> { new Filter("ParentAircraft", CurrentAircraft.ItemId), new Filter("Schedule", true) }, true); var workPackages = GlobalObjects.WorkPackageCore.GetWorkPackagesLite(CurrentAircraft, WorkPackageStatus.Closed, maintenanceChecks.Select(m => (IDirective)m).ToList()); MaintenanceCheck minCCheck = maintenanceChecks.Where(mc => mc.CheckType.ShortName == "C" && mc.Schedule && mc.Grouping && mc.Resource == LifelengthSubResource.Hours) .OrderBy(mc => mc.Interval.GetSubresource(LifelengthSubResource.Hours)) .FirstOrDefault(); MaintenanceCheckRecord lastCCheckRecord = maintenanceChecks.Where(mc => mc.CheckType.ShortName == "C" && mc.Schedule && mc.Grouping && mc.Resource == LifelengthSubResource.Hours) .SelectMany(mc => mc.PerformanceRecords) .Where(pr => pr.RecordDate.Date <= DateTime.Now) .OrderByDescending(pr => pr.RecordDate) .FirstOrDefault(); MaintenanceCheckRecord lastACheckRecord = maintenanceChecks.Where(mc => mc.CheckType.ShortName == "A" && mc.Schedule && mc.Grouping && mc.Resource == LifelengthSubResource.Hours) .SelectMany(mc => mc.PerformanceRecords) .Where(pr => pr.RecordDate.Date <= DateTime.Now) .OrderByDescending(pr => pr.RecordDate) .FirstOrDefault(); if (lastACheckRecord.NumGroup == lastCCheckRecord.NumGroup) { lastACheckRecord = null; } List <MaintenanceCheckRecord> dCheckRecords = maintenanceChecks.Where(mc => mc.CheckType.ShortName == "D") .SelectMany(mc => mc.PerformanceRecords) .ToList(); List <MaintenanceCheckRecordGroup> maintenanceCheckRecordGroups = new List <MaintenanceCheckRecordGroup>(); foreach (MaintenanceCheckRecord record in dCheckRecords) { //Поиск коллекции групп, в которую входят группы с нужными критериями //по плану, группировка и основному ресурсу if (record.ParentCheck.Grouping) { MaintenanceCheckRecordGroup recordGroup = maintenanceCheckRecordGroups .FirstOrDefault(g => g.Schedule == record.ParentCheck.Schedule && g.Grouping == record.ParentCheck.Grouping && g.Resource == record.ParentCheck.Resource && g.GroupComplianceNum == record.NumGroup); if (recordGroup != null) { //Коллекция найдена //Поиск в ней группы чеков с нужным типом recordGroup.Records.Add(record); } else { //Коллекции с нужными критериями нет //Созадние и добавление recordGroup = new MaintenanceCheckRecordGroup(record.ParentCheck.Schedule, record.ParentCheck.Grouping, record.ParentCheck.Resource, record.NumGroup); recordGroup.Records.Add(record); maintenanceCheckRecordGroups.Add(recordGroup); } } else { MaintenanceCheckRecordGroup recordGroup = new MaintenanceCheckRecordGroup(record.ParentCheck.Schedule, record.ParentCheck.Grouping, record.ParentCheck.Resource); recordGroup.Records.Add(record); maintenanceCheckRecordGroups.Add(recordGroup); } } AircraftTechnicalConditionReportBuilder reportBuilder = new AircraftTechnicalConditionReportBuilder(CurrentAircraft, minCCheck, GlobalObjects.ComponentCore.GetAicraftBaseComponents(CurrentAircraft.ItemId), lastACheckRecord, lastCCheckRecord, workPackages, maintenanceCheckRecordGroups.Count); e.TypeOfReflection = ReflectionTypes.DisplayInNew; e.DisplayerText = CurrentAircraft.RegistrationNumber + " Operation Time Report"; e.RequestedEntity = new ReportScreen(reportBuilder); GlobalObjects.AuditRepository.WriteReportAsync(GlobalObjects.CasEnvironment.IdentityUser, "AircraftSummaryScreen (Technical Condition)"); } else { e.Cancel = true; } }
private ListViewItem GetListViewItem(MaintenanceCheckRecordGroup grouping) { string name = "N/A"; string type = "N/A"; string resource = "N/A"; string group = "N/A"; string num = "N/A"; string recordDate = "N/A"; string performanceSource = "N/A"; string remarksString = "N/A"; Color backColor = Color.White; if (grouping.Records.Count > 0) { grouping.Sort(); MaintenanceCheckRecord mcr = grouping.LastOrDefault(); MaintenanceCheck mc = grouping.GetMaxIntervalCheck(); type = mc.Schedule ? " (Schedule) " : " (Store) "; resource = mc.Resource.ToString(); group = mc.Grouping ? " (Group)" : ""; backColor = mc.Schedule ? Color.White : Color.Gainsboro; if (mcr != null) { num = mc.Grouping ? mcr.NumGroup.ToString() : "N/A"; name = _currentAircraft != null && _currentAircraft.MaintenanceProgramCheckNaming ? (!string.IsNullOrEmpty(grouping.First().ComplianceCheckName) ? mcr.ComplianceCheckName : mc.Name) : mc.Name; recordDate = UsefulMethods.NormalizeDate(mcr.RecordDate); performanceSource = mcr.OnLifelength.ToRepeatIntervalsFormat(); remarksString = mcr.Remarks; if (mc.Grouping) { MaintenanceProgramChangeRecord mpcr = mc.ParentAircraft != null ? mc.ParentAircraft.MaintenanceProgramChangeRecords. GetLastKnownRecord(Convert.ToDateTime(mcr.RecordDate)) : null; if (mpcr == null || mpcr.MSG < MSG.MSG3) { var complianceItems = from compliance in grouping orderby compliance.OnLifelength.Hours descending select compliance; name += " (" + complianceItems.Aggregate("", (current, compliance) => current + (compliance.ParentCheck.Name + " ")) + ")"; } } } } ListViewItem listViewItem = new ListViewItem(num + type + resource + group) { Tag = grouping.ToList(), Group = listViewCompliance.Groups["last"], BackColor = backColor }; listViewItem.SubItems.Add(name); listViewItem.SubItems.Add(recordDate); listViewItem.SubItems.Add(performanceSource); listViewItem.SubItems.Add(remarksString); return(listViewItem); }
/// <summary> /// Выполняет работу с записями о выполнении задачи /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected override void BackgroundWorkerDoWork(object sender, DoWorkEventArgs e) { backgroundWorker.ReportProgress(50); Invoke(new Action(() => listViewCompliance.Items.Clear())); if (_currentDirective == null) { e.Cancel = true; return; } List <AbstractPerformanceRecord> lastRecords = new List <AbstractPerformanceRecord>(); List <NextPerformance> nextPerformances = new List <NextPerformance>(); if (_openPubAudits == null) { _openPubAudits = new CommonCollection <Audit>(); } _openPubAudits.Clear(); //_openPubAudits.AddRange(GlobalObjects.CasEnvironment.Loader.GetWorkPackages(_currentDirective.ParentBaseDetail.ParentAircraft, WorkPackageStatus.Opened, true)); //_openPubAudits.AddRange(GlobalObjects.CasEnvironment.Loader.GetWorkPackages(_currentDirective.ParentBaseDetail.ParentAircraft, WorkPackageStatus.Published, true)); _openPubAudits.AddRange(GlobalObjects.AuditCore.GetAuditsLite(_currentDirective.ParentOperator, WorkPackageStatus.Opened)); _openPubAudits.AddRange(GlobalObjects.AuditCore.GetAuditsLite(_currentDirective.ParentOperator, WorkPackageStatus.Published)); CommonCollection <Audit> allWorkPackagesIncludedTask = new CommonCollection <Audit>(); CommonCollection <Audit> openPubWorkPackages = new CommonCollection <Audit>(); CommonCollection <Audit> closedWorkPackages = new CommonCollection <Audit>(); //Поиск и заполнение просроченных директив и записей о перемещении //Объекты для в которые будет извлекаться информация //из записеи о перемещении //прогнозируемый ресурс ForecastData forecastData = null; Aircraft parentAircraft = null; if (_currentDirective.ParentOperator != null) { ////если известна родительская деталь данной директивы, ////то ее текущая наработка и средняя утилизация ////используются в качестве ресурсов прогноза ////для расчета всех просроченных выполнений //forecastData = new ForecastData(DateTime.Now, // _currentDirective.ParentBaseDetail.AverageUtilization, // GlobalObjects.CasEnvironment.Calculator.GetLifelength(_currentDirective.ParentBaseDetail)); //parentAircraft = _currentDirective.ParentBaseDetail.ParentAircraft; } //расчет след. выполнений директивы. //если известен ресурс прогноза, то будут расчитаны все просрочнные выполнения //если неизвестне, то только первое GlobalObjects.PerformanceCalculator.GetNextPerformance(_currentDirective, forecastData); nextPerformances.AddRange(_currentDirective.NextPerformances); lastRecords.AddRange(_currentDirective.PerformanceRecords.ToArray()); //////////////////////////////////////////// //загрузка рабочих пакетов для определения //перекрытых ими выполнений задач //_openPubWorkPackages.AddRange(GlobalObjects.CasEnvironment.Loader.GetWorkPackages(parentAircraft, WorkPackageStatus.Opened, true)); //_openPubWorkPackages.AddRange(GlobalObjects.CasEnvironment.Loader.GetWorkPackages(parentAircraft, WorkPackageStatus.Published, true)); CommonCollection <Procedure> includedTasks = new CommonCollection <Procedure>(new[] { _currentDirective }); allWorkPackagesIncludedTask.AddRange(GlobalObjects.AuditCore.GetAuditsLite(_currentDirective.ParentOperator, WorkPackageStatus.All, includedTasks)); includedTasks.Clear(); #region Добавление в список просроченных выполнений //и сравнение их с открытыми и опубликованными рабочими пакетами openPubWorkPackages.AddRange(allWorkPackagesIncludedTask.Where(wp => wp.Status == WorkPackageStatus.Opened || wp.Status == WorkPackageStatus.Published)); //сбор всех записей рабочих пакетов для удобства фильтрации List <AuditRecord> openPubWpRecords = openPubWorkPackages.SelectMany(wp => wp.AuditRecords).ToList(); //LINQ запрос для сортировки записей по дате List <NextPerformance> sortNextRecords = (from record in nextPerformances orderby GetDate(record) descending select record).ToList(); for (int i = 0; i < sortNextRecords.Count; i++) { if (backgroundWorker.CancellationPending) { allWorkPackagesIncludedTask.Clear(); openPubWorkPackages.Clear(); closedWorkPackages.Clear(); e.Cancel = true; return; } //поиск записи в рабочих пакетах по данному чеку //чей номер группы выполнения (по записи) совпадает с расчитанным Procedure directive = (Procedure)sortNextRecords[i].Parent; //номер выполнения int parentCountPerf; if (directive.LastPerformance != null) { parentCountPerf = directive.LastPerformance.PerformanceNum <= 0 ? 1 : directive.LastPerformance.PerformanceNum; } else { parentCountPerf = 0; } parentCountPerf += directive.NextPerformances.IndexOf(sortNextRecords[i]); parentCountPerf += 1; AuditRecord wpr = openPubWpRecords.FirstOrDefault(r => r.PerformanceNumFromStart == parentCountPerf && r.AuditItemTypeId == directive.SmartCoreObjectType.ItemId && r.DirectiveId == directive.ItemId); if (wpr != null) { Audit wp = openPubWorkPackages.GetItemById(wpr.AuditId); //запись о выполнении блокируется найденым пакетом sortNextRecords[i].BlockedByPackage = wp; //последующие записи о выполнении так же должны быть заблокированы for (int j = i - 1; j >= 0; j--) { //блокировать нужно все рабочие записи, или до первой записи, //заблокированной другим рабочим пакетом if (sortNextRecords[j].BlockedByPackage != null || sortNextRecords[j].Condition != ConditionState.Overdue) { break; } if (sortNextRecords[j].Parent == directive) { sortNextRecords[j].BlockedByPackage = wp; Invoke(new Action <int, Color>(SetItemColor), new object[] { j, Color.FromArgb(Highlight.GrayLight.Color) }); } } } Invoke(new Action <NextPerformance>(AddListViewItem), sortNextRecords[i]); } #endregion #region Добавление в список записей о произведенных выполнениях //и сравнение их с закрытыми рабочими пакетами closedWorkPackages.AddRange(allWorkPackagesIncludedTask.Where(wp => wp.Status == WorkPackageStatus.Closed)); //LINQ запрос для сортировки записей по дате List <AbstractPerformanceRecord> sortLastRecords = (from record in lastRecords orderby record.RecordDate descending select record).ToList(); //////////////////////////////////////////// for (int i = 0; i < sortLastRecords.Count(); i++) { if (backgroundWorker.CancellationPending) { allWorkPackagesIncludedTask.Clear(); openPubWorkPackages.Clear(); closedWorkPackages.Clear(); e.Cancel = true; return; } DirectiveRecord directiveRecord = (DirectiveRecord)sortLastRecords[i]; Audit workPackage = closedWorkPackages.FirstOrDefault(wp => wp.ItemId == directiveRecord.DirectivePackageId); if (workPackage != null) { Invoke(new Action <AbstractPerformanceRecord, Audit, MaintenanceCheckRecord>(AddListViewItem), new object[] { sortLastRecords[i], workPackage, null }); } else if (directiveRecord.MaintenanceCheckRecordId > 0) { MaintenanceCheckRecord mcr = GlobalObjects.CasEnvironment.NewLoader.GetObject <DirectiveRecordDTO, MaintenanceCheckRecord>(new Filter("ItemId", directiveRecord.MaintenanceCheckRecordId)); if (mcr != null) { mcr.ParentCheck = GlobalObjects.CasEnvironment.NewLoader.GetObjectById <MaintenanceCheckDTO, MaintenanceCheck>(mcr.ParentId); } Invoke(new Action <AbstractPerformanceRecord, Audit, MaintenanceCheckRecord>(AddListViewItem), new object[] { sortLastRecords[i], workPackage, mcr }); } else { Invoke(new Action <AbstractPerformanceRecord, Audit>(AddListViewItem), new object[] { sortLastRecords[i], workPackage }); } } #endregion allWorkPackagesIncludedTask.Clear(); openPubWorkPackages.Clear(); closedWorkPackages.Clear(); backgroundWorker.ReportProgress(100); }
private ListViewItem GetListViewItem(MaintenanceCheck check) { ListViewItem listViewItem = new ListViewItem { Tag = check, Text = check.Name }; if (check.Grouping) { MaintenanceNextPerformance np = check.NextPerformances.FirstOrDefault() as MaintenanceNextPerformance; MaintenanceProgramChangeRecord mpcr = np != null && np.PerformanceDate != null ? _currentAircraft.MaintenanceProgramChangeRecords. GetLastKnownRecord(Convert.ToDateTime(np.PerformanceDate)) : null; if (mpcr != null && mpcr.MSG >= MSG.MSG3) { string lastPerformanceDate = "N/A"; string lastPerformanceSource = "N/A"; string lastPerformaceGroup = "N/A"; string lastCheckName = "N/A"; string nextPerformanceDate = "N/A"; string nextPerformanceSource = "N/A"; string nextPerformaceGroup = "N/A"; string nextCheckName = "N/A"; string remains = "N/A"; MaintenanceNextPerformance mnp = check.GetNextPergormanceGroupWhereCheckIsSenior(); if (mnp != null) { nextPerformanceDate = UsefulMethods.NormalizeDate(Convert.ToDateTime(mnp.PerformanceDate)); nextPerformanceSource = mnp.PerformanceSource.ToString(); nextPerformaceGroup = mnp.PerformanceGroupNum + "/" + mnp.PerformanceNum; nextCheckName = mnp.PerformanceGroup.GetGroupName(); remains = mnp.Remains.ToString(); } if (check.LastPerformance != null) { MaintenanceCheckRecord mcr = _checkItems.GetLastCheckRecordWhereCheckIsSenior(check); if (mcr != null) { lastPerformanceDate = UsefulMethods.NormalizeDate(mcr.RecordDate); lastPerformanceSource = mcr.OnLifelength.ToString(); lastPerformaceGroup = mcr.NumGroup + "/" + mcr.PerformanceNum; lastCheckName = _currentAircraft != null && _currentAircraft.MaintenanceProgramCheckNaming ? (!string.IsNullOrEmpty(mcr.ComplianceCheckName) ? mcr.ComplianceCheckName : check.Name) : check.Name; } } listViewItem.SubItems.Add(lastPerformanceDate); listViewItem.SubItems.Add(lastPerformanceSource); listViewItem.SubItems.Add(lastPerformaceGroup); listViewItem.SubItems.Add(lastCheckName); listViewItem.SubItems.Add(nextPerformanceDate); listViewItem.SubItems.Add(nextPerformanceSource); listViewItem.SubItems.Add(nextPerformaceGroup); listViewItem.SubItems.Add(nextCheckName); listViewItem.SubItems.Add(remains); } else { if (check.LastPerformance == null) { listViewItem.SubItems.Add("N/A"); listViewItem.SubItems.Add("N/A"); listViewItem.SubItems.Add("N/A"); listViewItem.SubItems.Add("N/A"); listViewItem.SubItems.Add(np != null && np.PerformanceDate != null ? UsefulMethods.NormalizeDate((DateTime)np.PerformanceDate) : "N/A"); listViewItem.SubItems.Add(np != null ? np.PerformanceSource.ToString() : "N/A"); listViewItem.SubItems.Add(np != null ? np.PerformanceGroupNum + "/" + np.PerformanceNum : "N/A"); listViewItem.SubItems.Add(np != null ? np.PerformanceGroup.GetGroupName() : "N/A"); listViewItem.SubItems.Add(np != null ? np.Remains.ToString() : "N/A"); } else { string lastCheckName = _currentAircraft != null && _currentAircraft.MaintenanceProgramCheckNaming ? (!string.IsNullOrEmpty(check.LastPerformance.ComplianceCheckName) ? check.LastPerformance.ComplianceCheckName : check.Name) : check.Name; listViewItem.SubItems.Add(UsefulMethods.NormalizeDate(check.LastPerformance.RecordDate)); listViewItem.SubItems.Add(check.LastPerformance.OnLifelength.ToString()); listViewItem.SubItems.Add(check.LastPerformance.NumGroup + "/" + check.LastPerformance.PerformanceNum); listViewItem.SubItems.Add(lastCheckName); listViewItem.SubItems.Add(np != null && np.PerformanceDate != null ? UsefulMethods.NormalizeDate((DateTime)np.PerformanceDate) : "N/A"); listViewItem.SubItems.Add(np != null ? np.PerformanceSource.ToString() : "N/A"); listViewItem.SubItems.Add(np != null ? np.PerformanceGroupNum + "/" + np.PerformanceNum : "N/A"); listViewItem.SubItems.Add(np != null ? np.PerformanceGroup.GetGroupName() : "N/A"); listViewItem.SubItems.Add(np != null ? np.Remains.ToString() : "N/A"); } } if (np != null && np.Condition == ConditionState.Overdue) { listViewItem.BackColor = Color.FromArgb(255, 170, 170); } else if (np != null && np.Condition == ConditionState.Notify) { listViewItem.BackColor = Color.FromArgb(255, 255, 170); } else if (np == null || np.Condition == ConditionState.NotEstimated) { listViewItem.BackColor = Color.FromArgb(170, 170, 255); } } else { NextPerformance np = check.NextPerformances.FirstOrDefault(); if (check.LastPerformance == null) { listViewItem.SubItems.Add("N/A"); listViewItem.SubItems.Add("N/A"); listViewItem.SubItems.Add("N/A"); listViewItem.SubItems.Add("N/A"); listViewItem.SubItems.Add(np != null && np.PerformanceDate != null ? UsefulMethods.NormalizeDate((DateTime)np.PerformanceDate) : "N/A"); listViewItem.SubItems.Add(np != null ? np.PerformanceSource.ToString() : "N/A"); listViewItem.SubItems.Add("N/A"); listViewItem.SubItems.Add("N/A"); listViewItem.SubItems.Add(np != null ? np.Remains.ToString() : "N/A"); } else { listViewItem.SubItems.Add(UsefulMethods.NormalizeDate(check.LastPerformance.RecordDate)); listViewItem.SubItems.Add(check.LastPerformance.OnLifelength.ToString()); listViewItem.SubItems.Add(check.LastPerformance.NumGroup.ToString()); listViewItem.SubItems.Add("N/A"); listViewItem.SubItems.Add(np != null && np.PerformanceDate != null ? UsefulMethods.NormalizeDate((DateTime)np.PerformanceDate) : "N/A"); listViewItem.SubItems.Add(np != null ? np.PerformanceSource.ToString() : "N/A"); listViewItem.SubItems.Add("N/A"); listViewItem.SubItems.Add("N/A"); listViewItem.SubItems.Add(np != null ? np.Remains.ToString() : "N/A"); } if (np != null && np.Condition == ConditionState.Overdue) { listViewItem.BackColor = Color.FromArgb(255, 170, 170); } else if (np != null && np.Condition == ConditionState.Notify) { listViewItem.BackColor = Color.FromArgb(255, 255, 170); } else if (np == null || np.Condition == ConditionState.NotEstimated) { listViewItem.BackColor = Color.FromArgb(170, 170, 255); } } listViewItem.Group = GetGroup(check); return(listViewItem); }
private void BackgroundWorkerRunWorkerLoadCompleted(object sender, RunWorkerCompletedEventArgs e) { dataGridViewItems.Rows.Clear(); if (_workPackage == null) { return; } #region Чеки программы обслуживания и директивы программы обслуживания List <MaintenanceDirective> checkDirectives = new List <MaintenanceDirective>(); foreach (MaintenanceCheck maintenanceCheck in _workPackage.MaintenanceChecks) { DataGridViewRow row; DataGridViewCell discCell; DataGridViewCell taskCardCell; DataGridViewCell compntCell; if (_workPackage.Aircraft.MSG >= MSG.MSG3) { MaintenanceCheckRecord mcr = maintenanceCheck.PerformanceRecords.FirstOrDefault(pr => pr.DirectivePackageId == _workPackage.ItemId); if (mcr != null) { row = new DataGridViewRow { Tag = maintenanceCheck }; discCell = new DataGridViewTextBoxCell { Value = string.IsNullOrEmpty(mcr.ComplianceCheckName) ? maintenanceCheck.Name : mcr.ComplianceCheckName }; taskCardCell = new DataGridViewTextBoxCell { Value = "" }; compntCell = new DataGridViewCheckBoxCell { Value = maintenanceCheck.PrintInWorkPackage }; } else { if (maintenanceCheck.Grouping) { MaintenanceNextPerformance mnp = maintenanceCheck.GetNextPergormanceGroupWhereCheckIsSenior(); if (mnp != null) { row = new DataGridViewRow { Tag = maintenanceCheck }; discCell = new DataGridViewTextBoxCell { Value = mnp.PerformanceGroup.GetGroupName() }; taskCardCell = new DataGridViewTextBoxCell { Value = "" }; compntCell = new DataGridViewCheckBoxCell { Value = maintenanceCheck.PrintInWorkPackage }; } else { continue; } } else { row = new DataGridViewRow { Tag = maintenanceCheck }; discCell = new DataGridViewTextBoxCell { Value = maintenanceCheck.Name }; taskCardCell = new DataGridViewTextBoxCell { Value = "" }; compntCell = new DataGridViewCheckBoxCell { Value = maintenanceCheck.PrintInWorkPackage }; } } } else { row = new DataGridViewRow { Tag = maintenanceCheck }; discCell = new DataGridViewTextBoxCell { Value = maintenanceCheck.Name }; taskCardCell = new DataGridViewTextBoxCell { Value = "" }; compntCell = new DataGridViewCheckBoxCell { Value = maintenanceCheck.PrintInWorkPackage }; } row.Cells.AddRange(new[] { discCell, taskCardCell, compntCell }); discCell.ReadOnly = true; taskCardCell.ReadOnly = true; dataGridViewItems.Rows.Add(row); List <MaintenanceDirective> checkMpds = (from record in _workPackage.MaintenanceCheckBindTaskRecords where record.TaskType == SmartCoreType.MaintenanceDirective && record.CheckId == maintenanceCheck.ItemId select record.Task as MaintenanceDirective) .OrderBy(cm => cm.TaskNumberCheck) .ToList(); checkMpds.AddRange(maintenanceCheck.BindMpds .Where(bmpd => _workPackage.WorkPakageRecords .FirstOrDefault(r => r.WorkPackageItemType == SmartCoreType.MaintenanceDirective.ItemId && r.DirectiveId == bmpd.ItemId) != null)); checkDirectives.AddRange(checkMpds); foreach (MaintenanceDirective checkMpd in checkMpds) { //TODO:(Evgenii Babak) избавиться от кода if (checkMpd.ItemRelations.Count == 0) { checkMpd.ItemRelations .AddRange(_workPackage.ComponentDirectives.Where(bdd => bdd.ItemRelations.IsAllRelationWith(checkMpd)).SelectMany(bdd => bdd.ItemRelations)); } DataGridViewRow checkMpdRow = new DataGridViewRow { Tag = checkMpd }; DataGridViewCell checkMpdDiscCell; DataGridViewCell checkMpdTaskCardCell; DataGridViewCell checkMpdCompntCell; string checkMpdTaskCardCellValue; Color checkMpdTaskCardCellBackColor = Color.White; if (string.IsNullOrEmpty(checkMpd.TaskCardNumber) && checkMpd.TaskCardNumberFile == null) { checkMpdTaskCardCellValue = "Not set Task Card file."; checkMpdTaskCardCellBackColor = Color.Red; } else if (!string.IsNullOrEmpty(checkMpd.TaskCardNumber) && checkMpd.TaskCardNumberFile == null) { checkMpdTaskCardCellValue = $"Not set Task Card file. (Task Card No {checkMpd.TaskCardNumber}.)"; checkMpdTaskCardCellBackColor = Color.Red; } else if (string.IsNullOrEmpty(checkMpd.TaskCardNumber) && checkMpd.TaskCardNumberFile != null) { checkMpdTaskCardCellValue = $"Not set Task Card name. (File name {checkMpd.TaskCardNumberFile.FileName}.)"; checkMpdTaskCardCellBackColor = Color.Red; } else { checkMpdTaskCardCellValue = checkMpd.TaskCardNumber; } if (checkMpd.ItemRelations.Count > 0) { checkMpdDiscCell = new DataGridViewTextBoxCell { Value = $"{maintenanceCheck.Name}--{checkMpd.TaskNumberCheck} for {checkMpd.ItemRelations.Count} components" }; checkMpdTaskCardCell = new DataGridViewTextBoxCell { Value = checkMpdTaskCardCellValue, Style = { BackColor = checkMpdTaskCardCellBackColor }, }; checkMpdCompntCell = new DataGridViewCheckBoxCell { Value = checkMpd.PrintInWorkPackage }; checkMpdRow.Cells.AddRange(new[] { checkMpdDiscCell, checkMpdTaskCardCell, checkMpdCompntCell }); checkMpdDiscCell.ReadOnly = true; checkMpdTaskCardCell.ReadOnly = true; } else { checkMpdDiscCell = new DataGridViewTextBoxCell { Value = maintenanceCheck.Name + "--" + checkMpd.TaskNumberCheck }; checkMpdTaskCardCell = new DataGridViewTextBoxCell { Value = checkMpdTaskCardCellValue, Style = { BackColor = checkMpdTaskCardCellBackColor }, }; checkMpdCompntCell = new DataGridViewCheckBoxCell { Value = checkMpd.PrintInWorkPackage }; checkMpdRow.Cells.AddRange(new[] { checkMpdDiscCell, checkMpdTaskCardCell, checkMpdCompntCell }); checkMpdDiscCell.ReadOnly = true; checkMpdTaskCardCell.ReadOnly = true; } dataGridViewItems.Rows.Add(checkMpdRow); } } List <MaintenanceDirective> nonCheckMpds = _workPackage.MaintenanceDirectives.Where(md => checkDirectives.FirstOrDefault(dd => dd.ItemId == md.ItemId) == null) .OrderBy(md => md.TaskNumberCheck) .ToList(); foreach (MaintenanceDirective item in nonCheckMpds) { string taskCardCellValue; Color taskCardCellBackColor = Color.White; if (string.IsNullOrEmpty(item.TaskCardNumber) && item.TaskCardNumberFile == null) { taskCardCellValue = "Not set Task Card file."; taskCardCellBackColor = Color.Red; } else if (!string.IsNullOrEmpty(item.TaskCardNumber) && item.TaskCardNumberFile == null) { taskCardCellValue = $"Not set Task Card file. (Task Card No {item.TaskCardNumber}.)"; taskCardCellBackColor = Color.Red; } else if (string.IsNullOrEmpty(item.TaskCardNumber) && item.TaskCardNumberFile != null) { taskCardCellValue = $"Not set Task Card name. (File name {item.TaskCardNumberFile.FileName}.)"; taskCardCellBackColor = Color.Red; } else { taskCardCellValue = item.TaskCardNumber; } DataGridViewRow row = new DataGridViewRow { Tag = item }; DataGridViewCell discCell = new DataGridViewTextBoxCell { Value = item.TaskNumberCheck }; DataGridViewCell taskCardCell = new DataGridViewTextBoxCell { Value = taskCardCellValue, Style = { BackColor = taskCardCellBackColor }, }; DataGridViewCell compntCell = new DataGridViewCheckBoxCell { Value = item.PrintInWorkPackage }; row.Cells.AddRange(new[] { discCell, taskCardCell, compntCell }); discCell.ReadOnly = true; taskCardCell.ReadOnly = true; dataGridViewItems.Rows.Add(row); } #endregion #region Директивы летной годности foreach (Directive item in _workPackage.AdStatus) { string taskCardCellValue; Color taskCardCellBackColor = Color.White; if (string.IsNullOrEmpty(item.EngineeringOrders) && item.EngineeringOrderFile == null) { taskCardCellValue = "Not set Engineering Order file."; taskCardCellBackColor = Color.Red; } else if (!string.IsNullOrEmpty(item.EngineeringOrders) && item.EngineeringOrderFile == null) { taskCardCellValue = $"Not set Engineering Order File. (Engineering Order No {item.EngineeringOrders}.)"; taskCardCellBackColor = Color.Red; } else if (string.IsNullOrEmpty(item.EngineeringOrders) && item.EngineeringOrderFile != null) { taskCardCellValue = $"Not set Engineering Order name. (File name {item.EngineeringOrderFile.FileName}.)"; taskCardCellBackColor = Color.Red; } else { taskCardCellValue = item.EngineeringOrders; } DataGridViewRow row = new DataGridViewRow { Tag = item }; DataGridViewCell discCell = new DataGridViewTextBoxCell(); DataGridViewCell taskCardCell = new DataGridViewTextBoxCell { Value = taskCardCellValue, Style = { BackColor = taskCardCellBackColor }, }; DataGridViewCell compntCell = new DataGridViewCheckBoxCell { Value = item.PrintInWorkPackage }; discCell.Value = "(AD)" + item.Title + " " + item.WorkType + " §:" + item.Paragraph; row.Cells.AddRange(new[] { discCell, taskCardCell, compntCell }); discCell.ReadOnly = true; taskCardCell.ReadOnly = true; dataGridViewItems.Rows.Add(row); } #endregion #region SB foreach (Directive item in _workPackage.SbStatus) { string taskCardCellValue; Color taskCardCellBackColor = Color.White; if (string.IsNullOrEmpty(item.EngineeringOrders) && item.EngineeringOrderFile == null) { taskCardCellValue = "Not set Engineering Order file."; taskCardCellBackColor = Color.Red; } else if (!string.IsNullOrEmpty(item.EngineeringOrders) && item.EngineeringOrderFile == null) { taskCardCellValue = $"Not set Engineering Order File. (Engineering Order No {item.EngineeringOrders}.)"; taskCardCellBackColor = Color.Red; } else if (string.IsNullOrEmpty(item.EngineeringOrders) && item.EngineeringOrderFile != null) { taskCardCellValue = $"Not set Engineering Order name. (File name {item.EngineeringOrderFile.FileName}.)"; taskCardCellBackColor = Color.Red; } else { taskCardCellValue = item.EngineeringOrders; } DataGridViewRow row = new DataGridViewRow { Tag = item }; DataGridViewCell discCell = new DataGridViewTextBoxCell(); DataGridViewCell taskCardCell = new DataGridViewTextBoxCell { Value = taskCardCellValue, Style = { BackColor = taskCardCellBackColor }, }; DataGridViewCell compntCell = new DataGridViewCheckBoxCell { Value = item.PrintInWorkPackage }; discCell.Value = "(SB)" + item.Title + " " + item.WorkType + " §:" + item.Paragraph; row.Cells.AddRange(new[] { discCell, taskCardCell, compntCell }); discCell.ReadOnly = true; taskCardCell.ReadOnly = true; dataGridViewItems.Rows.Add(row); } #endregion #region EO foreach (Directive item in _workPackage.EoStatus) { string taskCardCellValue; Color taskCardCellBackColor = Color.White; if (string.IsNullOrEmpty(item.EngineeringOrders) && item.EngineeringOrderFile == null) { taskCardCellValue = "Not set Engineering Order file."; taskCardCellBackColor = Color.Red; } else if (!string.IsNullOrEmpty(item.EngineeringOrders) && item.EngineeringOrderFile == null) { taskCardCellValue = $"Not set Engineering Order File. (Engineering Order No {item.EngineeringOrders}.)"; taskCardCellBackColor = Color.Red; } else if (string.IsNullOrEmpty(item.EngineeringOrders) && item.EngineeringOrderFile != null) { taskCardCellValue = $"Not set Engineering Order name. (File name {item.EngineeringOrderFile.FileName}.)"; taskCardCellBackColor = Color.Red; } else { taskCardCellValue = item.EngineeringOrders; } DataGridViewRow row = new DataGridViewRow { Tag = item }; DataGridViewCell discCell = new DataGridViewTextBoxCell(); DataGridViewCell taskCardCell = new DataGridViewTextBoxCell { Value = taskCardCellValue, Style = { BackColor = taskCardCellBackColor }, }; DataGridViewCell compntCell = new DataGridViewCheckBoxCell { Value = item.PrintInWorkPackage }; discCell.Value = "(EO)" + item.Title + " " + item.WorkType + " §:" + item.Paragraph; row.Cells.AddRange(new[] { discCell, taskCardCell, compntCell }); discCell.ReadOnly = true; taskCardCell.ReadOnly = true; dataGridViewItems.Rows.Add(row); } #endregion #region Повреждения foreach (Directive item in _workPackage.Damages) { string taskCardCellValue; Color taskCardCellBackColor = Color.White; if (string.IsNullOrEmpty(item.EngineeringOrders) && item.EngineeringOrderFile == null) { taskCardCellValue = "Not set Engineering Order file."; taskCardCellBackColor = Color.Red; } else if (!string.IsNullOrEmpty(item.EngineeringOrders) && item.EngineeringOrderFile == null) { taskCardCellValue = $"Not set Engineering Order File. (Engineering Order No {item.EngineeringOrders}.)"; taskCardCellBackColor = Color.Red; } else if (string.IsNullOrEmpty(item.EngineeringOrders) && item.EngineeringOrderFile != null) { taskCardCellValue = $"Not set Engineering Order name. (File name {item.EngineeringOrderFile.FileName}.)"; taskCardCellBackColor = Color.Red; } else { taskCardCellValue = item.EngineeringOrders; } DataGridViewRow row = new DataGridViewRow { Tag = item }; DataGridViewCell discCell = new DataGridViewTextBoxCell(); DataGridViewCell taskCardCell = new DataGridViewTextBoxCell { Value = taskCardCellValue, Style = { BackColor = taskCardCellBackColor }, }; DataGridViewCell compntCell = new DataGridViewCheckBoxCell { Value = item.PrintInWorkPackage }; discCell.Value = "(DRI)" + item.Title + " " + item.WorkType + " §:" + item.Paragraph; row.Cells.AddRange(new[] { discCell, taskCardCell, compntCell }); discCell.ReadOnly = true; taskCardCell.ReadOnly = true; dataGridViewItems.Rows.Add(row); } #endregion #region OutOfPhaseItems foreach (Directive item in _workPackage.OutOfPhaseItems) { string taskCardCellValue; Color taskCardCellBackColor = Color.White; if (string.IsNullOrEmpty(item.EngineeringOrders) && item.EngineeringOrderFile == null) { taskCardCellValue = "Not set Engineering Order file."; taskCardCellBackColor = Color.Red; } else if (!string.IsNullOrEmpty(item.EngineeringOrders) && item.EngineeringOrderFile == null) { taskCardCellValue = $"Not set Engineering Order File. (Engineering Order No {item.EngineeringOrders}.)"; taskCardCellBackColor = Color.Red; } else if (string.IsNullOrEmpty(item.EngineeringOrders) && item.EngineeringOrderFile != null) { taskCardCellValue = $"Not set Engineering Order name. (File name {item.EngineeringOrderFile.FileName}.)"; taskCardCellBackColor = Color.Red; } else { taskCardCellValue = item.EngineeringOrders; } DataGridViewRow row = new DataGridViewRow { Tag = item }; DataGridViewCell discCell = new DataGridViewTextBoxCell(); DataGridViewCell taskCardCell = new DataGridViewTextBoxCell { Value = taskCardCellValue, Style = { BackColor = taskCardCellBackColor }, }; DataGridViewCell compntCell = new DataGridViewCheckBoxCell { Value = item.PrintInWorkPackage }; discCell.Value = "(OP)" + item.Title + " " + item.WorkType + " §:" + item.Paragraph; row.Cells.AddRange(new[] { discCell, taskCardCell, compntCell }); discCell.ReadOnly = true; taskCardCell.ReadOnly = true; dataGridViewItems.Rows.Add(row); } #endregion #region Отложенные дефекты foreach (Directive item in _workPackage.DefferedItems) { string taskCardCellValue; Color taskCardCellBackColor = Color.White; if (string.IsNullOrEmpty(item.EngineeringOrders) && item.EngineeringOrderFile == null) { taskCardCellValue = "Not set Engineering Order file."; taskCardCellBackColor = Color.Red; } else if (!string.IsNullOrEmpty(item.EngineeringOrders) && item.EngineeringOrderFile == null) { taskCardCellValue = $"Not set Engineering Order File. (Engineering Order No {item.EngineeringOrders}.)"; taskCardCellBackColor = Color.Red; } else if (string.IsNullOrEmpty(item.EngineeringOrders) && item.EngineeringOrderFile != null) { taskCardCellValue = $"Not set Engineering Order name. (File name {item.EngineeringOrderFile.FileName}.)"; taskCardCellBackColor = Color.Red; } else { taskCardCellValue = item.EngineeringOrders; } DataGridViewRow row = new DataGridViewRow { Tag = item }; DataGridViewCell discCell = new DataGridViewTextBoxCell(); DataGridViewCell taskCardCell = new DataGridViewTextBoxCell { Value = taskCardCellValue, Style = { BackColor = taskCardCellBackColor }, }; DataGridViewCell compntCell = new DataGridViewCheckBoxCell { Value = item.PrintInWorkPackage }; discCell.Value = "(DI)" + item.Title + " " + item.WorkType + " §:" + item.Paragraph; row.Cells.AddRange(new[] { discCell, taskCardCell, compntCell }); discCell.ReadOnly = true; taskCardCell.ReadOnly = true; dataGridViewItems.Rows.Add(row); } #endregion #region Компоненты и задачи по компонентам var componentDirectives = _workPackage.ComponentDirectives.ToList(); foreach (var item in _workPackage.Components) { List <ComponentDirective> dds = componentDirectives.Where(dd => dd.ParentComponent != null && dd.ParentComponent.ItemId == item.ItemId).ToList(); foreach (var componentDirective in dds) { componentDirectives.Remove(componentDirective); } DataGridViewRow row = new DataGridViewRow { Tag = item }; DataGridViewCell discCell = new DataGridViewTextBoxCell(); DataGridViewCell taskCardCell = new DataGridViewTextBoxCell(); DataGridViewCell compntCell = new DataGridViewCheckBoxCell { Value = item.PrintInWorkPackage }; discCell.Value = "CCO:" + item.Description + " " + item.PartNumber + " " + item.SerialNumber; row.Cells.AddRange(new[] { discCell, taskCardCell, compntCell }); discCell.ReadOnly = true; taskCardCell.ReadOnly = true; dataGridViewItems.Rows.Add(row); } foreach (ComponentDirective item in componentDirectives) { Component d = item.ParentComponent; DataGridViewRow row = new DataGridViewRow { Tag = item }; DataGridViewCell discCell = new DataGridViewTextBoxCell(); DataGridViewCell taskCardCell = new DataGridViewTextBoxCell(); DataGridViewCell compntCell = new DataGridViewCheckBoxCell { Value = item.PrintInWorkPackage }; discCell.Value = "CCO:" + item.DirectiveType + " for " + d.Description + " " + d.PartNumber + " " + d.SerialNumber; row.Cells.AddRange(new[] { discCell, taskCardCell, compntCell }); discCell.ReadOnly = true; taskCardCell.ReadOnly = true; dataGridViewItems.Rows.Add(row); } #endregion #region Нерутинные задачи foreach (NonRoutineJob item in _workPackage.NonRoutines) { DataGridViewRow row = new DataGridViewRow { Tag = item }; DataGridViewCell discCell = new DataGridViewTextBoxCell { Value = "(Non-Routine)" + item.Title }; DataGridViewCell taskCardCell = new DataGridViewTextBoxCell(); DataGridViewCell compntCell = new DataGridViewCheckBoxCell { Value = item.PrintInWorkPackage }; row.Cells.AddRange(new[] { discCell, taskCardCell, compntCell }); discCell.ReadOnly = true; taskCardCell.ReadOnly = true; dataGridViewItems.Rows.Add(row); } #endregion }
/// <summary> /// ??????????? ??????? ? ??????? ?????? /// </summary> /// <param name="grouping">?????????? ?????????</param> /// <param name="destinationDataSet">???????, ? ??????? ??????????? ???????</param> private void AddItemDataset(MaintenanceCheckRecordGroup grouping, OperationTimeDataSet destinationDataSet) { if (grouping == null) { return; } string checkName = ""; string performanceSourceHours = ""; string performanceSourceCycles = ""; string station = ""; string checkStartEndString = ""; if (grouping.Records.Count > 0) { grouping.Sort(); MaintenanceCheckRecord mcr = grouping.LastOrDefault(); MaintenanceCheck mc = grouping.GetMaxIntervalCheck(); if (mcr != null) { checkName = _currentAircraft != null && _currentAircraft.MaintenanceProgramCheckNaming ? (!string.IsNullOrEmpty(grouping.First().ComplianceCheckName) ? mcr.ComplianceCheckName : mc.Name) : mc.Name; performanceSourceHours = mcr.OnLifelength.ToHoursMinutesFormat(""); performanceSourceCycles = mcr.OnLifelength.Cycles != null?mcr.OnLifelength.Cycles.ToString() : ""; if (mcr.DirectivePackage == null) { mcr.DirectivePackage = _workPackages != null ? _workPackages.FirstOrDefault(wp => wp.ItemId == mcr.DirectivePackageId) : null; } if (mcr.DirectivePackage != null) { if (mcr.DirectivePackage.Status == WorkPackageStatus.Published) { checkStartEndString = mcr.DirectivePackage.PublishingDate.ToString(new GlobalTermsProvider()["DateFormat"].ToString()); checkStartEndString += " - Present day"; } if (mcr.DirectivePackage.Status == WorkPackageStatus.Closed) { checkStartEndString = mcr.DirectivePackage.PublishingDate.ToString(new GlobalTermsProvider()["DateFormat"].ToString()); checkStartEndString += " - " + mcr.DirectivePackage.ClosingDate.ToString(new GlobalTermsProvider()["DateFormat"].ToString()); } station = mcr.DirectivePackage.Station; } else { checkStartEndString = mcr.RecordDate.ToString(new GlobalTermsProvider()["DateFormat"].ToString()); station = "--"; } } } var sinceLastCCheckHours = "--"; var sinceLastCCheckCycles = "--"; //TODO:???????????? ?????? //if(_lastC?heckRecord != null && // _aircraftBaseDetails != null && // _aircraftBaseDetails.FirstOrDefault(bd => bd.BaseComponentType == BaseComponentType.Frame) != null) //{ // BaseComponent frame = _aircraftBaseDetails.First(bd => bd.BaseComponentType == BaseComponentType.Frame); // Lifelength current = GlobalObjects.CasEnvironment.Calculator.GetFlightLifelengthOnEndOfDay(frame, grouping.LastOrDefault() != null ? grouping.Last().RecordDate : DateTime.Today); // Lifelength sinceLast = current - _lastC?heckRecord.OnLifelength; // sinceLastCCheckHours = sinceLast.TotalMinutes != null ? sinceLast.ToHoursMinutesFormat("") : ""; // sinceLastCCheckCycles = sinceLast.Cycles != null ? sinceLast.Cycles.ToString() : ""; //} destinationDataSet.MaintenanceTable.AddMaintenanceTableRow(checkName, checkStartEndString, station, performanceSourceHours, performanceSourceCycles, sinceLastCCheckHours, sinceLastCCheckCycles); }
///<summary> ///</summary> public void Save() { foreach (CompliancePDFItem pdFitem in flowLayoutPanelContainer.Controls) { pdFitem.ApplyChanges(); MaintenanceCheckRecord lastPerformance; if (_isEdit == false) { lastPerformance = new MaintenanceCheckRecord { ParentCheck = pdFitem.Check }; if (pdFitem.Check.Grouping) { MaintenanceNextPerformance mnp = _performances.FirstOrDefault(p => p.Parent != null && p.Parent.ItemId == pdFitem.Check.ItemId); lastPerformance.PerformanceNum = mnp != null ? mnp.PerformanceNum : _numGroup; } else { lastPerformance.PerformanceNum = _numGroup; } lastPerformance.NumGroup = _numGroup; lastPerformance.CalculatedPerformanceSource = lastPerformance.ParentCheck.Interval * lastPerformance.PerformanceNum; } else { lastPerformance = pdFitem.Record; } lastPerformance.AttachedFile = pdFitem.AttachedFile; lastPerformance.ComplianceCheckName = textBoxCheckName.Text.Trim(); lastPerformance.RecordDate = dateTimePicker1.Value; lastPerformance.OnLifelength = lifelengthViewer_LastCompliance.Lifelength; lastPerformance.IsControlPoint = checkBoxControlPoint.Checked; lastPerformance.Remarks = textBox_Remarks.Text.Trim(); try { GlobalObjects.PerformanceCore.RegisterPerformance(pdFitem.Check, lastPerformance); IEnumerable <DirectiveRecord> bindedDirectivesRecord = pdFitem.BindDirectivesRecords; foreach (DirectiveRecord record in bindedDirectivesRecord) { if (record.ItemId > 0 && record.IsDeleted) { GlobalObjects.PerformanceCore.Delete(record); } else { record.MaintenanceCheckRecordId = lastPerformance.ItemId; record.OnLifelength = GlobalObjects.CasEnvironment.Calculator.GetFlightLifelengthOnStartOfDay(_currentAircraft, record.RecordDate); record.Remarks = string.IsNullOrEmpty(lastPerformance.Remarks) ? "This performance added by " + pdFitem.Check.Name + " on " + UsefulMethods.NormalizeDate(lastPerformance.RecordDate) : lastPerformance.Remarks; GlobalObjects.CasEnvironment.Manipulator.Save(record, false); } } } catch (Exception ex) { Program.Provider.Logger.Log("Error while save performance for maintenance check", ex); break; } } }
private void AddAircraftFlightInformation(ATLBDataSet dataSet, AircraftFlight aircraftFlight) { var aircraft = GlobalObjects.AircraftsCore.GetAircraftById(_currentATLB.ParentAircraftId); var currentOperator = GlobalObjects.CasEnvironment.Operators.First(o => o.ItemId == aircraft.OperatorId); var operatorLogotype = currentOperator.LogoTypeWhite; var operatorAddress = currentOperator.Address; var revision = _termsProvider["Revision"].ToString(); var caaRequirements = _termsProvider["CAARequirements"].ToString(); var pageNumber = (_currentPageNumber++).ToString().PadLeft(5, '0');//todo проверить var reportFooterPrepared = new GlobalTermsProvider()["ReportFooterPrepared"].ToString(); var reportFooterLink = new GlobalTermsProvider()["ReportFooterLink"].ToString(); var specialistCaptain = aircraftFlight.GetSpecialistBySpecializationId(1); var specialistCopilot = aircraftFlight.GetSpecialistBySpecializationId(2); var specialistGroundEngineerAP = aircraftFlight.GetSpecialistBySpecializationId(3); var specialistGroundEngineerAVI = aircraftFlight.GetSpecialistBySpecializationId(4); var specialistLoadMaster = aircraftFlight.GetSpecialistBySpecializationId(5); var specialistQualityControl = aircraftFlight.GetSpecialistBySpecializationId(6); var captain = specialistCaptain == null ? "" : specialistCaptain.FirstName; var captainId = specialistCaptain == null ? "" : specialistCaptain.IdNo; var copilot = specialistCopilot == null ? "" : specialistCopilot.FirstName; var copilotId = specialistCopilot == null ? "" : specialistCopilot.IdNo; var groundEngineerAP = specialistGroundEngineerAP == null ? "" : specialistGroundEngineerAP.FirstName; var groundEngineerApid = specialistGroundEngineerAP == null ? "" : specialistGroundEngineerAP.IdNo; var groundEngineerAVI = specialistGroundEngineerAVI == null ? "" : specialistGroundEngineerAVI.FirstName; var groundEngineerAviid = specialistGroundEngineerAVI == null ? "" : specialistGroundEngineerAVI.IdNo; var loadMaster = specialistLoadMaster == null ? "" : specialistLoadMaster.FirstName; var loadMasterId = specialistLoadMaster == null ? "" : specialistLoadMaster.IdNo; var qualityControl = specialistQualityControl == null ? "" : specialistQualityControl.FirstName; var qualityControlId = specialistQualityControl == null ? "" : specialistQualityControl.IdNo; var aircraftFlightNo = aircraftFlight.FlightNumber.ToString(); var aircraftFlightDate = aircraftFlight.FlightDate.ToString(_termsProvider["DateFormat"].ToString()); var stationFrom = aircraftFlight.StationFromId.ShortName; var stationTo = aircraftFlight.StationToId.ShortName; var airborneTimeOut = aircraftFlight.TimespanOutTime.ToString(); // UsefulMethods.TimeToString(aircraftFlight.OutTime); var airborneTimeIn = aircraftFlight.TimespanInTime.ToString(); //UsefulMethods.TimeToString(aircraftFlight.InTime)); var airborneTimeBlock = aircraftFlight.BlockTime.ToString(); var airborneTimeTakeOff = aircraftFlight.TimespanTakeOffTime.ToString(); //UsefulMethods.TimeToString(aircraftFlight.TakeOffTime)); var airborneTimeLDG = aircraftFlight.TimespanLDGTime.ToString(); //UsefulMethods.TimeToString(aircraftFlight.LDGTime)); var airborneTimeFlight = aircraftFlight.FlightTime.ToString(); //UsefulMethods.TimeToString(aircraftFlight.FlightTime); var accumulatedTime = ""; //todo var totalFlightTime = ""; //aircraft.//todo var accumulatedLanding = ""; //todo var totalFlightLanding = ""; //todo var aircraftModel = aircraft.Model.ToString(); var aircraftRegistrationNumber = aircraft.RegistrationNumber; var aCheckLastExecutionD = ""; var aCheckLastExecutionH = ""; var aCheckNextDueD = ""; var aCheckNextDueH = ""; // MaintenanceLimitation aCheckLimitation;// = GetCheck(Cas3MaintenanceTypeItem.Instance.ACheck);//GetCheck(MaintenanceCheckTypesCollection.Instance.ACheck); //if (aCheckLimitation != null) //{ // Main // MaintenancePerformance aCheckLastPerformance = aCheckLimitation.LastPerformance as MaintenancePerformance; // if (aCheckLastPerformance != null) // { // aCheckLastExecutionD = aCheckLastPerformance.RecordDate.ToString(termsProvider["DateFormat"].ToString()); // aCheckLastExecutionH = Math.Round(aCheckLastPerformance.Lifelength.Hours.TotalHours).ToString(); // } // aCheckNextDueD = aircraft.ManufactureDate.AddTicks(aCheckLimitation.Next.Calendar.Ticks).ToString(termsProvider["DateFormat"].ToString()); // aCheckNextDueH = Math.Round(aCheckLimitation.Next.Hours.TotalHours).ToString(); //} var aCheckLimitation = GetCheck(1 /*ACheck*/); if (aCheckLimitation != null) { MaintenanceCheckRecord aCheckLastPerformance = GetLastPerformanceForCheckType(1); if (aCheckLastPerformance != null) { aCheckLastExecutionD = aCheckLastPerformance.RecordDate.ToString(_termsProvider["DateFormat"].ToString()); // aCheckLastExecutionH = Math.Round(aCheckLastPerformance.Lifelength.Hours.TotalHours).ToString(); } //aCheckNextDueD = aircraft.ManufactureDate.AddTicks(aCheckLimitation.Next.Calendar.Ticks).ToString(termsProvider["DateFormat"].ToString()); //aCheckNextDueH = Math.Round(aCheckLimitation.Next.Hours.TotalHours).ToString(); } var bCheckLastExecutionD = ""; var bCheckLastExecutionH = ""; var bCheckNextDueD = ""; var bCheckNextDueH = ""; var bCheckLimitation = GetCheck(2 /*BCheck*/); if (bCheckLimitation != null) { MaintenanceCheckRecord bCheckLastPerformance = GetLastPerformanceForCheckType(2); if (bCheckLastPerformance != null) { bCheckLastExecutionD = bCheckLastPerformance.RecordDate.ToString(_termsProvider["DateFormat"].ToString()); // bCheckLastExecutionH = Math.Round(bCheckLastPerformance.Lifelength.Hours.TotalHours).ToString(); } //bCheckNextDueD = aircraft.ManufactureDate.AddTicks(bCheckLimitation.Next.Calendar.Ticks).ToString(termsProvider["DateFormat"].ToString()); //bCheckNextDueH = Math.Round(bCheckLimitation.Next.Hours.TotalHours).ToString(); } var cCheckLastExecutionD = ""; var cCheckLastExecutionH = ""; var cCheckNextDueD = ""; var cCheckNextDueH = ""; var cCheckLimitation = GetCheck(3 /*CCheck*/); if (cCheckLimitation != null) { MaintenanceCheckRecord cCheckLastPerformance = GetLastPerformanceForCheckType(3); if (cCheckLastPerformance != null) { cCheckLastExecutionD = cCheckLastPerformance.RecordDate.ToString(_termsProvider["DateFormat"].ToString()); // cCheckLastExecutionH = Math.Round(cCheckLastPerformance.Lifelength.Hours.TotalHours).ToString(); } //cCheckNextDueD = aircraft.ManufactureDate.AddTicks(cCheckLimitation.Next.Calendar.Ticks).ToString(termsProvider["DateFormat"].ToString()); //cCheckNextDueH = Math.Round(cCheckLimitation.Next.Hours.TotalHours).ToString(); } var discrepancy1 = ""; var discrepancy2 = ""; var discrepancy3 = ""; var discrepancy4 = ""; var filledBy1 = ""; var filledBy2 = ""; var filledBy3 = ""; var filledBy4 = ""; var addNo1 = ""; var addNo2 = ""; var addNo3 = ""; var addNo4 = ""; var openClosePage1 = ""; var openClosePage2 = ""; var openClosePage3 = ""; var openClosePage4 = ""; var caDescription1 = ""; var caDescription2 = ""; var caDescription3 = ""; var caDescription4 = ""; var pnOn1 = ""; var pnOn2 = ""; var pnOn3 = ""; var pnOn4 = ""; var snOn1 = ""; var snOn2 = ""; var snOn3 = ""; var snOn4 = ""; var pnOff1 = ""; var pnOff2 = ""; var pnOff3 = ""; var pnOff4 = ""; var snOff1 = ""; var snOff2 = ""; var snOff3 = ""; var snOff4 = ""; var sta1 = ""; var sta2 = ""; var sta3 = ""; var sta4 = ""; var autorizationNo1 = ""; var autorizationNo2 = ""; var autorizationNo3 = ""; var autorizationNo4 = ""; var date1 = ""; var date2 = ""; var date3 = ""; var date4 = ""; if (aircraftFlight.Discrepancies.Count > 0) { FillDiscrepancyInformation(aircraftFlight.Discrepancies[0], out discrepancy1, out filledBy1, out addNo1, out openClosePage1, out caDescription1, out pnOn1, out snOn1, out pnOff1, out snOff1, out sta1, out autorizationNo1, out date1); } if (aircraftFlight.Discrepancies.Count > 1) { FillDiscrepancyInformation(aircraftFlight.Discrepancies[1], out discrepancy2, out filledBy2, out addNo2, out openClosePage2, out caDescription2, out pnOn2, out snOn2, out pnOff2, out snOff2, out sta2, out autorizationNo2, out date2); } if (aircraftFlight.Discrepancies.Count > 2) { FillDiscrepancyInformation(aircraftFlight.Discrepancies[2], out discrepancy3, out filledBy3, out addNo3, out openClosePage3, out caDescription3, out pnOn3, out snOn3, out pnOff3, out snOff3, out sta3, out autorizationNo3, out date3); } if (aircraftFlight.Discrepancies.Count > 3) { FillDiscrepancyInformation(aircraftFlight.Discrepancies[3], out discrepancy4, out filledBy4, out addNo4, out openClosePage4, out caDescription4, out pnOn4, out snOn4, out pnOff4, out snOff4, out sta4, out autorizationNo4, out date4); } var tank1Name = ""; var tank1RemainKg = ""; var tank1OnBoardKg = ""; var tank1CorrectionKg = ""; var tank2Name = ""; var tank2RemainKg = ""; var tank2OnBoardKg = ""; var tank2CorrectionKg = ""; var tank3Name = ""; var tank3RemainKg = ""; var tank3OnBoardKg = ""; var tank3CorrectionKg = ""; var totalName = aircraftFlight.FuelTankCollection.TotalFuel.Tank; var totalRemainKg = aircraftFlight.FuelTankCollection.TotalFuel.Remaining.ToString(); //aircraftFlight.FuelTankCollection.TotalFuel.Remaining.ToString(); var totalOnBoardKg = aircraftFlight.FuelTankCollection.TotalFuel.OnBoard.ToString(); //aircraftFlight.FuelTankCollection.TotalFuel.OnBoard.ToString(); var totalCorrectionKg = aircraftFlight.FuelTankCollection.TotalFuel.Correction.ToString(); //aircraftFlight.FuelTankCollection.TotalFuel.Correction.ToString(); var calculateUpliftKg = ""; var actualUpliftLit = ""; var discrepancy = ""; var density = ""; if (aircraftFlight.FuelTankCollection.Count > 0) { tank1Name = aircraftFlight.FuelTankCollection[0].Tank; tank1RemainKg = aircraftFlight.FuelTankCollection[0].Remaining.ToString(); tank1OnBoardKg = aircraftFlight.FuelTankCollection[0].OnBoard.ToString(); tank1CorrectionKg = aircraftFlight.FuelTankCollection[0].Correction.ToString(); calculateUpliftKg = aircraftFlight.FuelTankCollection[0].CalculateUplift.ToString(); actualUpliftLit = aircraftFlight.FuelTankCollection[0].ActualUpliftLit.ToString(); discrepancy = aircraftFlight.FuelTankCollection[0].Discrepancy.ToString(); density = aircraftFlight.FuelTankCollection[0].Density.ToString(); } if (aircraftFlight.FuelTankCollection.Count > 1) { tank2Name = aircraftFlight.FuelTankCollection[1].Tank; tank2RemainKg = aircraftFlight.FuelTankCollection[1].Remaining.ToString(); tank2OnBoardKg = aircraftFlight.FuelTankCollection[1].OnBoard.ToString(); tank2CorrectionKg = aircraftFlight.FuelTankCollection[1].Correction.ToString(); } if (aircraftFlight.FuelTankCollection.Count > 2) { tank3Name = aircraftFlight.FuelTankCollection[2].Tank; tank3RemainKg = aircraftFlight.FuelTankCollection[2].Remaining.ToString(); tank3OnBoardKg = aircraftFlight.FuelTankCollection[2].OnBoard.ToString(); tank3CorrectionKg = aircraftFlight.FuelTankCollection[2].Correction.ToString(); } var added = aircraftFlight.FluidsCondition.HydraulicFluidAdded.ToString(); var onBoard = aircraftFlight.FluidsCondition.HydraulicFluidOnBoard.ToString(); var groundDeIce = aircraftFlight.FluidsCondition.GroundDeIce ? "X" : ""; var start = aircraftFlight.FluidsCondition.AntiIcingStartTime.ToString(); var end = aircraftFlight.FluidsCondition.AntiIcingEndTime.ToString(); //UsefulMethods.TimeToString(aircraftFlight.FluidsCondition.AntiIcingEndTime); var fluidType = aircraftFlight.FluidsCondition.AntiIcingFluidType; var aeaCode = aircraftFlight.FluidsCondition.AEACode; var landingGear1 = ""; var landingGear1TirePressure1 = ""; var landingGear1TirePressure2 = ""; var landingGear2 = ""; var landingGear2TirePressure1 = ""; var landingGear2TirePressure2 = ""; var landingGear3 = ""; var landingGear3TirePressure1 = ""; var landingGear3TirePressure2 = ""; if (aircraftFlight.LandingGearConditions.Count > 0) { // landingGear1 = "";//UsefulMethods.GetLandingGearPositionName(aircraftFlight.LandingGearConditions[0].LandingGear); landingGear1 = aircraftFlight.LandingGearConditions[0].LandingGear.ToString(); landingGear1TirePressure1 = aircraftFlight.LandingGearConditions[0].TirePressure1.ToString(); landingGear1TirePressure2 = aircraftFlight.LandingGearConditions[0].TirePressure2.ToString(); } if (aircraftFlight.LandingGearConditions.Count > 1) { // landingGear2 = ""; //UsefulMethods.GetLandingGearPositionName(aircraftFlight.LandingGearConditions[1].LandingGear); landingGear2 = aircraftFlight.LandingGearConditions[1].LandingGear.ToString(); landingGear2TirePressure1 = aircraftFlight.LandingGearConditions[1].TirePressure1.ToString(); landingGear2TirePressure2 = aircraftFlight.LandingGearConditions[1].TirePressure2.ToString(); } if (aircraftFlight.LandingGearConditions.Count > 2) { // landingGear3 = ""; //UsefulMethods.GetLandingGearPositionName(aircraftFlight.LandingGearConditions[2].LandingGear); landingGear3 = aircraftFlight.LandingGearConditions[2].LandingGear.ToString(); landingGear3TirePressure1 = aircraftFlight.LandingGearConditions[2].TirePressure1.ToString(); landingGear3TirePressure2 = aircraftFlight.LandingGearConditions[2].TirePressure2.ToString(); } var oilCSD1Name = ""; var oilCsd1Add = ""; var oilCsd1OnBoard = ""; var oilCSD2Name = ""; var oilCsd2Add = ""; var oilCsd2OnBoard = ""; var oilEng1Name = ""; var oilEng1Add = ""; var oilEng1OnBoard = ""; var oilEng2Name = ""; var oilEng2Add = ""; var oilEng2OnBoard = ""; var oilAPUName = ""; var oilAPUAdd = ""; var oilAPUOnBoard = ""; if (aircraftFlight.OilConditionCollection.Count > 0) { //oilCSD1Name = aircraftFlight.OilConditionCollection[0].DetailId; oilCsd1Add = aircraftFlight.OilConditionCollection[0].OilAdded.ToString(); oilCsd1OnBoard = aircraftFlight.OilConditionCollection[0].OnBoard.ToString(); } if (aircraftFlight.OilConditionCollection.Count > 1) { //oilCSD2Name = aircraftFlight.OilConditionCollection[1].DetailId; oilCsd2Add = aircraftFlight.OilConditionCollection[1].OilAdded.ToString(); oilCsd2OnBoard = aircraftFlight.OilConditionCollection[1].OnBoard.ToString(); } if (aircraftFlight.OilConditionCollection.Count > 2) { //oilEng1Name = aircraftFlight.OilConditionCollection[2].DetailId; oilEng1Add = aircraftFlight.OilConditionCollection[2].OilAdded.ToString(); oilEng1OnBoard = aircraftFlight.OilConditionCollection[2].OnBoard.ToString(); } if (aircraftFlight.OilConditionCollection.Count > 3) { //oilEng2Name = aircraftFlight.OilConditionCollection[3].DetailId; oilEng2Add = aircraftFlight.OilConditionCollection[3].OilAdded.ToString(); oilEng2OnBoard = aircraftFlight.OilConditionCollection[3].OnBoard.ToString(); } if (aircraftFlight.OilConditionCollection.Count > 4) { //oilAPUName = aircraftFlight.OilConditionCollection[4].DetailId; oilAPUAdd = aircraftFlight.OilConditionCollection[4].OilAdded.ToString(); oilAPUOnBoard = aircraftFlight.OilConditionCollection[4].OnBoard.ToString(); } var pressAlt = aircraftFlight.EnginesGeneralConditions.PressALT; var gmt = UsefulMethods.TimeToString(aircraftFlight.EnginesGeneralConditions.TimeGMT); var grossWeight = aircraftFlight.EnginesGeneralConditions.GrossWeight.ToString(); var ias = aircraftFlight.EnginesGeneralConditions.IAS.ToString(); var mach = aircraftFlight.EnginesGeneralConditions.Mach.ToString(); var tat = aircraftFlight.EnginesGeneralConditions.TAT.ToString(); var oat = aircraftFlight.EnginesGeneralConditions.OAT.ToString(); var releaseToServiceCheckPerformed = ""; var releaseToServiceDate = ""; var releaseToServiceAuth = ""; if (aircraftFlight.CertificateOfReleaseToService != null) { releaseToServiceCheckPerformed = aircraftFlight.CertificateOfReleaseToService.CheckPerformed; releaseToServiceDate = aircraftFlight.CertificateOfReleaseToService.RecordDate.ToString(_termsProvider["DateFormat"].ToString()); if (aircraftFlight.CertificateOfReleaseToService.AuthorizationB1 != null) { releaseToServiceAuth = aircraftFlight.CertificateOfReleaseToService.AuthorizationB1.ToString(); } if (aircraftFlight.CertificateOfReleaseToService.AuthorizationB2 != null) { releaseToServiceAuth = aircraftFlight.CertificateOfReleaseToService.AuthorizationB2.ToString(); } } var engine1 = ""; var engine2 = ""; var epr1 = ""; var epr2 = ""; var n11 = ""; var n12 = ""; var egt1 = ""; var egt2 = ""; var n21 = ""; var n22 = ""; var oilTemperature1 = ""; var oilTemperature2 = ""; var oilPressure1 = ""; var oilPressure2 = ""; var fuelFlow1 = ""; var fuelFlow2 = ""; var fuelBnKg1 = ""; var fuelBnKg2 = ""; if (aircraftFlight.EngineConditionCollection.Count > 0) { engine1 = "Engine " + aircraftFlight.EngineConditionCollection[0].Engine.PositionNumber; epr1 = aircraftFlight.EngineConditionCollection[0].ERP.ToString(); n11 = aircraftFlight.EngineConditionCollection[0].N1.ToString(); egt1 = aircraftFlight.EngineConditionCollection[0].EGT.ToString(); n21 = aircraftFlight.EngineConditionCollection[0].N2.ToString(); oilTemperature1 = aircraftFlight.EngineConditionCollection[0].OilTemperature.ToString(); oilPressure1 = aircraftFlight.EngineConditionCollection[0].OilPressure.ToString(); fuelFlow1 = aircraftFlight.EngineConditionCollection[0].FuelFlow.ToString(); fuelBnKg1 = aircraftFlight.EngineConditionCollection[0].FuelBurn.ToString(); } if (aircraftFlight.EngineConditionCollection.Count > 1) { engine2 = "Engine " + aircraftFlight.EngineConditionCollection[1].Engine.PositionNumber; epr2 = aircraftFlight.EngineConditionCollection[1].ERP.ToString(); n12 = aircraftFlight.EngineConditionCollection[1].N1.ToString(); egt2 = aircraftFlight.EngineConditionCollection[1].EGT.ToString(); n22 = aircraftFlight.EngineConditionCollection[1].N2.ToString(); oilTemperature2 = aircraftFlight.EngineConditionCollection[1].OilTemperature.ToString(); oilPressure2 = aircraftFlight.EngineConditionCollection[1].OilPressure.ToString(); fuelFlow2 = aircraftFlight.EngineConditionCollection[1].FuelFlow.ToString(); fuelBnKg2 = aircraftFlight.EngineConditionCollection[1].FuelBurn.ToString(); } dataSet.AircraftFlightTable.AddAircraftFlightTableRow(operatorLogotype, operatorAddress, revision, caaRequirements, pageNumber, reportFooterPrepared, reportFooterLink, captain, captainId, copilot, copilotId, groundEngineerAP, groundEngineerApid, groundEngineerAVI, groundEngineerAviid, loadMaster, loadMasterId, qualityControl, qualityControlId, aircraftFlightNo, aircraftFlightDate, stationFrom, stationTo, airborneTimeOut, airborneTimeIn, airborneTimeBlock, airborneTimeTakeOff, airborneTimeLDG, airborneTimeFlight, accumulatedTime, totalFlightTime, accumulatedLanding, totalFlightLanding, aircraftModel, aircraftRegistrationNumber, aCheckLastExecutionD, aCheckLastExecutionH, aCheckNextDueD, aCheckNextDueH, bCheckLastExecutionD, bCheckLastExecutionH, bCheckNextDueD, bCheckNextDueH, cCheckLastExecutionD, cCheckLastExecutionH, cCheckNextDueD, cCheckNextDueH, discrepancy1, discrepancy2, discrepancy3, discrepancy4, filledBy1, filledBy2, filledBy3, filledBy4, addNo1, addNo2, addNo3, addNo4, openClosePage1, openClosePage2, openClosePage3, openClosePage4, caDescription1, caDescription2, caDescription3, caDescription4, pnOn1, pnOn2, pnOn3, pnOn4, snOn1, snOn2, snOn3, snOn4, pnOff1, pnOff2, pnOff3, pnOff4, snOff1, snOff2, snOff3, snOff4, sta1, sta2, sta3, sta4, autorizationNo1, autorizationNo2, autorizationNo3, autorizationNo4, date1, date2, date3, date4, tank1Name, tank1RemainKg, tank1OnBoardKg, tank1CorrectionKg, tank2Name, tank2RemainKg, tank2OnBoardKg, tank2CorrectionKg, tank3Name, tank3RemainKg, tank3OnBoardKg, tank3CorrectionKg, totalName, totalRemainKg, totalOnBoardKg, totalCorrectionKg, calculateUpliftKg, actualUpliftLit, discrepancy, density, added, onBoard, groundDeIce, start, end, fluidType, aeaCode, landingGear1, landingGear1TirePressure1, landingGear1TirePressure2, landingGear2, landingGear2TirePressure1, landingGear2TirePressure2, landingGear3, landingGear3TirePressure1, landingGear3TirePressure2, oilCSD1Name, oilCsd1Add, oilCsd1OnBoard, oilCSD2Name, oilCsd2Add, oilCsd2OnBoard, oilEng1Name, oilEng1Add, oilEng1OnBoard, oilEng2Name, oilEng2Add, oilEng2OnBoard, oilAPUName, oilAPUAdd, oilAPUOnBoard, pressAlt, gmt, grossWeight, ias, mach, tat, oat, releaseToServiceCheckPerformed, releaseToServiceDate, releaseToServiceAuth, engine1, engine2, epr1, epr2, n11, n12, egt1, egt2, n21, n22, oilTemperature1, oilTemperature2, oilPressure1, oilPressure2, fuelFlow1, fuelFlow2, fuelBnKg1, fuelBnKg2, _ATASpec); if (aircraftFlight.Discrepancies.Count > 4) { AddAdditionalAircraftFlightTableRow(dataSet, aircraftFlight, 4); } }