Esempio n. 1
0
        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;
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        protected override void AnimatedThreadWorkerDoWork(object sender, DoWorkEventArgs e)
        {
            _itemsArray.Clear();
            _relatedWorkPackages.Clear();

            AnimatedThreadWorker.ReportProgress(0, "load Audit");

            //GlobalObjects.CasEnvironment.Loader.LoadWorkPackageItems(_currentWorkPackage);
            GlobalObjects.AuditCore.GetAuditItemsWithCalculate(_currentDirective);
            if (_currentDirective.MaxClosingDate < _currentDirective.MinClosingDate)
            {
                _currentDirective.CanClose = false;
            }
            CommonCollection <BaseEntityObject> wpItems = new CommonCollection <BaseEntityObject>();

            foreach (AuditRecord record in _currentDirective.AuditRecords)
            {
                wpItems.Add((BaseEntityObject)record.Task);
            }

            if (AnimatedThreadWorker.CancellationPending)
            {
                e.Cancel = true;
                return;
            }

            double currentProc     = 20;
            int    countDirectives = wpItems.Count;

            if (countDirectives == 0)
            {
                countDirectives = 1;
            }
            double delay = (100 - currentProc) / countDirectives;

            if (_currentDirective.Status != WorkPackageStatus.Closed)
            {
                AnimatedThreadWorker.ReportProgress(10, "load related Audit");

                foreach (AuditRecord record in _currentDirective.AuditRecords)
                {
                    AnimatedThreadWorker.ReportProgress((int)(currentProc += delay), "calculation of directives");

                    if (record.Task.SmartCoreObjectType == SmartCoreType.MaintenanceCheck)
                    {
                        MaintenanceCheck           mc  = (MaintenanceCheck)record.Task;
                        MaintenanceNextPerformance mnp =
                            mc.GetPergormanceGroupWhereCheckIsSeniorByGroupNum(record.PerformanceNumFromStart);
                        if (mnp != null)
                        {
                            _itemsArray.Add(mnp);
                        }
                    }
                    else if (record.Task.SmartCoreObjectType == SmartCoreType.NonRoutineJob)
                    {
                        _itemsArray.Add((BaseEntityObject)record.Task);
                    }
                    else if (record.Task.SmartCoreObjectType == SmartCoreType.Component)
                    {
                        if (record.Task.NextPerformances.Count > 0)
                        {
                            _itemsArray.Add(record.Task.NextPerformances[0]);
                        }
                        else
                        {
                            _itemsArray.Add((BaseEntityObject)record.Task);
                        }
                    }
                    else
                    {
                        if (record.Task.NextPerformances.Count > 0)
                        {
                            _itemsArray.Add(record.Task.NextPerformances[0]);
                        }
                        else
                        {
                            _itemsArray.Add((BaseEntityObject)record.Task);
                        }
                    }
                }
            }
            else
            {
                //При закоытом Рабочем пакете, в список попадают записи о выполении
                //сделанные в рамках данного рабочего пакета
                AnimatedThreadWorker.ReportProgress(10, "load related Audits");
                _relatedWorkPackages.AddRange(GlobalObjects.AuditCore.GetAudits(CurrentOperator,
                                                                                WorkPackageStatus.Closed,
                                                                                true,
                                                                                wpItems));
                //сбор всех записей рабочих пакетов для удобства фильтрации
                AbstractPerformanceRecord apr;
                foreach (AuditRecord record in _currentDirective.AuditRecords)
                {
                    AnimatedThreadWorker.ReportProgress((int)(currentProc += delay), "check records");

                    apr = record.Task.PerformanceRecords
                          .Cast <AbstractPerformanceRecord>()
                          .FirstOrDefault(pr => pr.DirectivePackageId == _currentDirective.ItemId);
                    if (apr != null)
                    {
                        _itemsArray.Add(apr);
                    }
                    else
                    {
                        if (record.Task.NextPerformances.Count > 0)
                        {
                            _itemsArray.Add(record.Task.NextPerformances[0]);
                        }
                        else
                        {
                            _itemsArray.Add((BaseEntityObject)record.Task);
                        }
                    }
                }
            }

            AnimatedThreadWorker.ReportProgress(100, "calculation over");
        }
Esempio n. 4
0
        //protected override void SetItemColor(ListViewItem listViewItem, BaseEntityObject item)
        //{
        //    if (item is NextPerformance)
        //    {
        //        NextPerformance nextPerformance = item as NextPerformance;
        //        if(_currentDirective.Status != WorkPackageStatus.Closed)
        //        {
        //            if (nextPerformance.BlockedByPackage != null)
        //            {
        //                listViewItem.ToolTipText = "This performance blocked by work package:" +
        //                   nextPerformance.BlockedByPackage.Title;
        //                listViewItem.BackColor = Color.FromArgb(Highlight.Grey.Color);
        //            }
        //            else if (nextPerformance.Condition == ConditionState.Notify)
        //                listViewItem.BackColor = Color.FromArgb(Highlight.Yellow.Color);
        //            else if (nextPerformance.Condition == ConditionState.Overdue)
        //                listViewItem.BackColor = Color.FromArgb(Highlight.Red.Color);
        //        }
        //        else
        //        {
        //            //Если это следующее выполнение, но рабочий пакет при этом закрыт
        //            //значит, выполнение для данной задачи в рамках данного рабочего пакета
        //            //не было введено

        //            //пометка этого выполнения краным цветом
        //            listViewItem.BackColor = Color.FromArgb(Highlight.Red.Color);
        //            //подсказка о том, что выполнение не было введено
        //            listViewItem.ToolTipText = "Performance for this directive within this work package is not entered.";
        //            if (nextPerformance.BlockedByPackage != null)
        //            {
        //                //дополнитльная подсказака, если предшествующее выполнение
        //                //имеется в другом открытом рабочем пакете
        //                listViewItem.ToolTipText += "\nThis performance blocked by work package:" +
        //                   nextPerformance.BlockedByPackage.Title +
        //                   "\nFirst, enter the performance of this directive as part of this work package ";
        //            }
        //        }

        //        if (nextPerformance.Parent.IsDeleted)
        //        {
        //            //запись так же может быть удаленной

        //            //шрифт серым цветом
        //            listViewItem.ForeColor = Color.Gray;
        //            if (listViewItem.ToolTipText.Trim() != "")
        //                listViewItem.ToolTipText += "\n";
        //            listViewItem.ToolTipText += string.Format("This {0} is deleted",nextPerformance.Parent.SmartCoreObjectType);
        //        }
        //    }
        //    else if (item is AbstractPerformanceRecord)
        //    {
        //        AbstractPerformanceRecord apr = (AbstractPerformanceRecord) item;
        //        if (apr.Parent.IsDeleted)
        //        {
        //            //запись так же может быть удаленной

        //            //шрифт серым цветом
        //            listViewItem.ForeColor = Color.Gray;
        //            if (listViewItem.ToolTipText.Trim() != "")
        //                listViewItem.ToolTipText += "\n";
        //            listViewItem.ToolTipText += string.Format("This {0} is deleted", apr.Parent.SmartCoreObjectType);
        //        }
        //    }
        //    else
        //    {
        //        if(!(item is NonRoutineJob))
        //        {
        //            //Если это не следующее выполнение, не запись о выполнении, и не рутинная работа
        //            //значит, выполнение для данной задачи расчитать нельзя

        //            //пометка этого выполнения синим цветом
        //            listViewItem.BackColor = Color.FromArgb(Highlight.Blue.Color);
        //            //подсказка о том, что выполнение не возможео расчитать
        //            listViewItem.ToolTipText = "Performance for this directive can not be calculated";
        //        }

        //        if (item.IsDeleted)
        //        {
        //            //запись так же может быть удаленной

        //            //шрифт серым цветом
        //            listViewItem.ForeColor = Color.Gray;
        //            if (listViewItem.ToolTipText.Trim() != "")
        //                listViewItem.ToolTipText += "\n";
        //            listViewItem.ToolTipText += string.Format("This {0} is deleted", item.SmartCoreObjectType);
        //        }
        //    }
        //}
        #endregion

        #region protected override ListViewItem.ListViewSubItem[] GetListViewSubItems(BaseSmartCoreObject item)

        protected override List <CustomCell> GetListViewSubItems(BaseEntityObject item)
        {
            var temp     = ListViewGroupHelper.GetGroupString(item);
            var subItems = new List <CustomCell>()
            {
                CreateRow(temp, temp)
            };
            var author = GlobalObjects.CasEnvironment.GetCorrector(item);

            //if(item.ItemId == 41043)
            //{

            //}
            if (item is NextPerformance)
            {
                NextPerformance np = (NextPerformance)item;

                double manHours = np.Parent is IEngineeringDirective ? ((IEngineeringDirective)np.Parent).ManHours : 0;
                double cost     = np.Parent is IEngineeringDirective ? ((IEngineeringDirective)np.Parent).Cost : 0;

                subItems.Add(CreateRow(np.ATAChapter.ToString(), np.ATAChapter));
                subItems.Add(CreateRow(np.Title, np.Title));
                subItems.Add(CreateRow(np.Description, np.Description));
                subItems.Add(CreateRow(np.KitsToString, np.Kits.Count));
                subItems.Add(CreateRow(np.PerformanceSource.ToString(), np.PerformanceSource));
                subItems.Add(CreateRow(np.Parent.Threshold.RepeatInterval.ToString(), np.Parent.Threshold.RepeatInterval));
                subItems.Add(CreateRow(np.Remains.ToString(), np.Remains));
                subItems.Add(CreateRow(np.WorkType, Tag = np.WorkType));
                subItems.Add(CreateRow(np.PerformanceDate == null ? "N/A" : SmartCore.Auxiliary.Convert.GetDateFormat((DateTime)np.PerformanceDate), np.PerformanceDate));
                subItems.Add(CreateRow(manHours.ToString(), manHours));
                subItems.Add(CreateRow(cost.ToString(), cost));
                subItems.Add(CreateRow(author, author));
            }
            else if (item is AbstractPerformanceRecord)
            {
                //DirectiveRecord directiveRecord = (DirectiveRecord)item;
                AbstractPerformanceRecord apr = (AbstractPerformanceRecord)item;
                Lifelength remains            = Lifelength.Null;
                double     manHours           = apr.Parent is IEngineeringDirective ? ((IEngineeringDirective)apr.Parent).ManHours : 0;
                double     cost = apr.Parent is IEngineeringDirective ? ((IEngineeringDirective)apr.Parent).Cost : 0;

                subItems.Add(CreateRow(apr.ATAChapter.ToString(), apr.ATAChapter));
                subItems.Add(CreateRow(apr.Title, apr.Title));
                subItems.Add(CreateRow(apr.Description, apr.Description));
                subItems.Add(CreateRow(apr.KitsToString, apr.Kits.Count));
                subItems.Add(CreateRow(apr.OnLifelength.ToString(), apr.OnLifelength));
                subItems.Add(CreateRow(apr.Parent.Threshold.RepeatInterval.ToString(), apr.Parent.Threshold.RepeatInterval));
                subItems.Add(CreateRow(remains.ToString(), remains));
                subItems.Add(CreateRow(apr.WorkType, apr.WorkType));
                subItems.Add(CreateRow(SmartCore.Auxiliary.Convert.GetDateFormat(apr.RecordDate), apr.RecordDate));
                subItems.Add(CreateRow(manHours.ToString(), manHours));
                subItems.Add(CreateRow(cost.ToString(), cost));
                subItems.Add(CreateRow(author, author));
            }
            else if (item is Directive)
            {
                Directive directive = (Directive)item;

                AtaChapter ata = directive.ATAChapter;
                subItems.Add(CreateRow(ata.ToString(), ata));
                subItems.Add(CreateRow(directive.Title, directive.Title));
                subItems.Add(CreateRow(directive.Description, directive.Description));

                #region Определение текста для колонки "КИТы"
                subItems.Add(CreateRow(directive.Kits.Count > 0 ? directive.Kits.Count + " kits" : "", directive.Kits.Count));
                #endregion

                #region Определение текста для колонки "Первое выполнение"

                var subItem = new CustomCell();
                if (directive.Threshold.FirstPerformanceSinceNew != null && !directive.Threshold.FirstPerformanceSinceNew.IsNullOrZero())
                {
                    subItem.Text = "s/n: " + directive.Threshold.FirstPerformanceSinceNew;
                    subItem.Tag  = directive.Threshold.FirstPerformanceSinceNew;
                }
                if (directive.Threshold.FirstPerformanceSinceEffectiveDate != null &&
                    !directive.Threshold.FirstPerformanceSinceEffectiveDate.IsNullOrZero())
                {
                    if (subItem.Text != "")
                    {
                        subItem.Text += " or ";
                    }
                    else
                    {
                        subItem.Text = "";
                        subItem.Tag  = directive.Threshold.FirstPerformanceSinceEffectiveDate;
                    }
                    subItem.Text += "s/e.d: " + directive.Threshold.FirstPerformanceSinceEffectiveDate;
                }

                subItems.Add(subItem);
                #endregion

                #region Определение текста для колонки "повторяющийся интервал"

                subItem = new CustomCell();
                if (!directive.Threshold.RepeatInterval.IsNullOrZero())
                {
                    subItem.Text = directive.Threshold.RepeatInterval.ToString();
                    subItem.Tag  = directive.Threshold.RepeatInterval;
                }
                else
                {
                    subItem.Text = "";
                    subItem.Tag  = Lifelength.Null;
                }
                subItems.Add(subItem);
                #endregion

                #region Определение текста для колонки "Остаток/Просрочено на сегодня"
                subItems.Add(CreateRow(directive.Remains.ToString(), directive.Remains));
                #endregion

                #region Определение текста для колонки "Тип работ"

                subItems.Add(CreateRow(directive.WorkType.ToString(), directive.WorkType));
                #endregion

                #region Определение текста для колонки "Следующее выполнение"
                subItems.Add(CreateRow(directive.NextPerformanceDate == null ? "N/A" : SmartCore.Auxiliary.Convert.GetDateFormat((DateTime)directive.NextPerformanceDate), directive.NextPerformanceDate));
                #endregion

                #region Определение текста для колонки "Человек/Часы"

                subItems.Add(CreateRow(directive.ManHours.ToString(), directive.ManHours));
                #endregion

                #region Определение текста для колонки "Стоимость"

                subItems.Add(CreateRow(directive.Cost.ToString(), directive.Cost));
                #endregion
                subItems.Add(CreateRow(author, author));
            }
            else if (item is BaseComponent)
            {
                BaseComponent bd  = (BaseComponent)item;
                AtaChapter    ata = bd.ATAChapter;

                subItems.Add(CreateRow(ata.ToString(), ata));
                subItems.Add(CreateRow(bd.PartNumber, bd.PartNumber));
                subItems.Add(CreateRow(bd.Description, bd.Description));
                subItems.Add(CreateRow(bd.Kits.Count > 0 ? bd.Kits.Count + " kits" : "", bd.Kits.Count));
                subItems.Add(CreateRow(bd.LifeLimit.ToString(), bd.LifeLimit));
                subItems.Add(CreateRow("", Lifelength.Null));
                subItems.Add(CreateRow(bd.Remains.ToString(), bd.Remains));
                subItems.Add(CreateRow(ComponentRecordType.Remove.ToString(), ComponentRecordType.Remove));
                subItems.Add(CreateRow(bd.NextPerformanceDate == null ? "N/A" : SmartCore.Auxiliary.Convert.GetDateFormat((DateTime)bd.NextPerformanceDate), bd.NextPerformanceDate));
                subItems.Add(CreateRow(bd.ManHours.ToString(), bd.ManHours));
                subItems.Add(CreateRow(bd.Cost.ToString(), bd.Cost));
                subItems.Add(CreateRow(author, author));
            }
            else if (item is Component)
            {
                Component  d   = (Component)item;
                AtaChapter ata = d.ATAChapter;

                subItems.Add(CreateRow(ata.ToString(), ata));
                subItems.Add(CreateRow(d.PartNumber, d.PartNumber));
                subItems.Add(CreateRow(d.Description, d.Description));
                subItems.Add(CreateRow(d.Kits.Count > 0 ? d.Kits.Count + " kits" : "", d.Kits.Count));
                subItems.Add(CreateRow(d.LifeLimit != null ? d.LifeLimit.ToString() : "", d.LifeLimit));
                subItems.Add(CreateRow("", Lifelength.Null));
                subItems.Add(CreateRow(d.Remains != null ? d.Remains.ToString() : "", d.Remains));
                subItems.Add(CreateRow(ComponentRecordType.Remove.ToString(), ComponentRecordType.Remove));
                subItems.Add(CreateRow(d.NextPerformanceDate == null ? "N/A" : SmartCore.Auxiliary.Convert.GetDateFormat((DateTime)d.NextPerformanceDate), d.NextPerformanceDate));
                subItems.Add(CreateRow(d.ManHours.ToString(), d.ManHours));
                subItems.Add(CreateRow(d.Cost.ToString(), d.Cost));
                subItems.Add(CreateRow(author, Tag = author));
            }
            else if (item is ComponentDirective)
            {
                ComponentDirective dd  = (ComponentDirective)item;
                AtaChapter         ata = dd.ParentComponent.ATAChapter;

                subItems.Add(CreateRow(ata != null ? ata.ToString() : "", ata));
                subItems.Add(CreateRow("", ""));
                subItems.Add(CreateRow(dd.Remarks, dd.Remarks));
                subItems.Add(CreateRow(dd.Kits.Count > 0 ? dd.Kits.Count + " kits" : "", dd.Kits.Count));
                #region Определение текста для колонки "Первое выполнение"

                var subItem = new CustomCell();
                if (dd.Threshold.FirstPerformanceSinceNew != null && !dd.Threshold.FirstPerformanceSinceNew.IsNullOrZero())
                {
                    subItem.Text = "s/n: " + dd.Threshold.FirstPerformanceSinceNew;
                    subItem.Tag  = dd.Threshold.FirstPerformanceSinceNew;
                }
                subItems.Add(subItem);
                #endregion
                #region Определение текста для колонки "повторяющийся интервал"

                subItem = new CustomCell();
                if (!dd.Threshold.RepeatInterval.IsNullOrZero())
                {
                    subItem.Text = dd.Threshold.RepeatInterval.ToString();
                    subItem.Tag  = dd.Threshold.RepeatInterval;
                }
                else
                {
                    subItem.Text = "";
                    subItem.Tag  = Lifelength.Null;
                }
                subItems.Add(subItem);
                #endregion
                subItems.Add(CreateRow(dd.Remains.ToString(), dd.Remains));
                subItems.Add(CreateRow(dd.DirectiveType.ToString(), dd.DirectiveType));
                subItems.Add(CreateRow(dd.NextPerformanceDate == null ? "N/A" : SmartCore.Auxiliary.Convert.GetDateFormat((DateTime)dd.NextPerformanceDate), dd.NextPerformanceDate));
                subItems.Add(CreateRow(dd.ManHours.ToString(), dd.ManHours));
                subItems.Add(CreateRow(dd.Cost.ToString(), dd.Cost));
                subItems.Add(CreateRow(author, author));
            }
            else if (item is MaintenanceCheck)
            {
                MaintenanceCheck mc = (MaintenanceCheck)item;
                subItems.Add(CreateRow("", null));
                subItems.Add(CreateRow("", ""));
                subItems.Add(CreateRow(mc.Name + (mc.Schedule ? " Shedule" : " Unshedule"), mc.Name));
                subItems.Add(CreateRow(mc.Kits.Count > 0 ? mc.Kits.Count + " kits" : "", mc.Kits.Count));
                subItems.Add(CreateRow(mc.Interval.ToString(), mc.Interval));
                subItems.Add(CreateRow("", Lifelength.Null));
                subItems.Add(CreateRow(mc.Remains.ToString(), mc.Remains));
                subItems.Add(CreateRow("", ""));
                subItems.Add(CreateRow(mc.NextPerformanceDate == null ? "N/A" : SmartCore.Auxiliary.Convert.GetDateFormat((DateTime)mc.NextPerformanceDate), mc.NextPerformanceDate));
                subItems.Add(CreateRow(mc.ManHours.ToString(), mc.ManHours));
                subItems.Add(CreateRow(mc.Cost.ToString(), mc.Cost));
                subItems.Add(CreateRow(author, author));
            }
            else if (item is MaintenanceDirective)
            {
                MaintenanceDirective md  = (MaintenanceDirective)item;
                AtaChapter           ata = md.ATAChapter;

                subItems.Add(CreateRow(ata != null ? ata.ToString() : "", ata));
                subItems.Add(CreateRow(md.ToString(), md.ToString()));
                subItems.Add(CreateRow(md.Description, md.Description));
                subItems.Add(CreateRow(md.Kits.Count > 0 ? md.Kits.Count + " kits" : "", md.Kits.Count));
                #region Определение текста для колонки "Первое выполнение"

                var subItem = new CustomCell();
                if (md.Threshold.FirstPerformanceSinceNew != null && !md.Threshold.FirstPerformanceSinceNew.IsNullOrZero())
                {
                    subItem.Text = "s/n: " + md.Threshold.FirstPerformanceSinceNew;
                    subItem.Tag  = md.Threshold.FirstPerformanceSinceNew;
                }
                if (md.Threshold.FirstPerformanceSinceEffectiveDate != null &&
                    !md.Threshold.FirstPerformanceSinceEffectiveDate.IsNullOrZero())
                {
                    if (subItem.Text != "")
                    {
                        subItem.Text += " or ";
                    }
                    else
                    {
                        subItem.Text = "";
                        subItem.Tag  = md.Threshold.FirstPerformanceSinceEffectiveDate;
                    }
                    subItem.Text += "s/e.d: " + md.Threshold.FirstPerformanceSinceEffectiveDate;
                }

                subItems.Add(subItem);
                #endregion
                #region Определение текста для колонки "повторяющийся интервал"

                subItem = new CustomCell();
                if (!md.Threshold.RepeatInterval.IsNullOrZero())
                {
                    subItem.Text = md.Threshold.RepeatInterval.ToString();
                    subItem.Tag  = md.Threshold.RepeatInterval;
                }
                else
                {
                    subItem.Text = "";
                    subItem.Tag  = Lifelength.Null;
                }
                subItems.Add(subItem);
                #endregion
                subItems.Add(CreateRow(md.Remains.ToString(), md.Remains));
                subItems.Add(CreateRow(md.WorkType.ToString(), md.WorkType));
                subItems.Add(CreateRow(md.NextPerformanceDate == null ? "N/A" : SmartCore.Auxiliary.Convert.GetDateFormat((DateTime)md.NextPerformanceDate), md.NextPerformanceDate));
                subItems.Add(CreateRow(md.ManHours.ToString(), md.ManHours));
                subItems.Add(CreateRow(md.Cost.ToString(), md.Cost));
                subItems.Add(CreateRow(author, author));
            }
            else if (item is Procedure)
            {
                Procedure md = (Procedure)item;

                subItems.Add(CreateRow("", ""));
                subItems.Add(CreateRow(md.ToString(), md.ToString()));
                subItems.Add(CreateRow(md.Description, md.Description));
                subItems.Add(CreateRow(md.Kits.Count > 0 ? md.Kits.Count + " kits" : "", md.Kits.Count));

                #region Определение текста для колонки "Первое выполнение"

                var subItem = new CustomCell();
                if (md.Threshold.FirstPerformanceSinceNew != null && !md.Threshold.FirstPerformanceSinceNew.IsNullOrZero())
                {
                    subItem.Text = "s/n: " + md.Threshold.FirstPerformanceSinceNew;
                    subItem.Tag  = md.Threshold.FirstPerformanceSinceNew;
                }
                if (md.Threshold.FirstPerformanceSinceEffectiveDate != null &&
                    !md.Threshold.FirstPerformanceSinceEffectiveDate.IsNullOrZero())
                {
                    if (subItem.Text != "")
                    {
                        subItem.Text += " or ";
                    }
                    else
                    {
                        subItem.Text = "";
                        subItem.Tag  = md.Threshold.FirstPerformanceSinceEffectiveDate;
                    }
                    subItem.Text += "s/e.d: " + md.Threshold.FirstPerformanceSinceEffectiveDate;
                }

                subItems.Add(subItem);
                #endregion

                #region Определение текста для колонки "повторяющийся интервал"

                subItem = new CustomCell();
                if (!md.Threshold.RepeatInterval.IsNullOrZero())
                {
                    subItem.Text = md.Threshold.RepeatInterval.ToString();
                    subItem.Tag  = md.Threshold.RepeatInterval;
                }
                else
                {
                    subItem.Text = "";
                    subItem.Tag  = Lifelength.Null;
                }
                subItems.Add(subItem);
                #endregion

                subItems.Add(CreateRow(md.Remains.ToString(), md.Remains));
                subItems.Add(CreateRow(md.ProcedureType.ToString(), md.ProcedureType));
                subItems.Add(CreateRow(md.NextPerformanceDate == null ? "N/A" : SmartCore.Auxiliary.Convert.GetDateFormat((DateTime)md.NextPerformanceDate), md.NextPerformanceDate));
                subItems.Add(CreateRow(md.ManHours.ToString(), md.ManHours));
                subItems.Add(CreateRow(md.Cost.ToString(), md.Cost));
                subItems.Add(CreateRow(author, author));
            }
            else if (item is NonRoutineJob)
            {
                NonRoutineJob job = (NonRoutineJob)item;
                AtaChapter    ata = job.ATAChapter;
                subItems.Add(CreateRow(ata != null ? ata.ToString() : "", ata));
                subItems.Add(CreateRow(job.Title, job.Title));
                subItems.Add(CreateRow(job.Description, job.Description));
                subItems.Add(CreateRow(job.Kits.Count > 0 ? job.Kits.Count + " kits" : "", job.Kits.Count));
                subItems.Add(CreateRow("", Lifelength.Null));
                subItems.Add(CreateRow("", Lifelength.Null));
                subItems.Add(CreateRow("", Lifelength.Null));
                subItems.Add(CreateRow("", ""));
                subItems.Add(CreateRow("", DateTimeExtend.GetCASMinDateTime()));
                subItems.Add(CreateRow(job.ManHours.ToString(), job.ManHours));
                subItems.Add(CreateRow(job.Cost.ToString(), job.Cost));
                subItems.Add(CreateRow(author, author));
            }
            else
            {
                throw new ArgumentOutOfRangeException($"1135: Takes an argument has no known type {item.GetType()}");
            }

            return(subItems);
        }
Esempio n. 5
0
        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;
            }
        }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
        /// <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);
        }
Esempio n. 8
0
        protected override ListViewItem.ListViewSubItem[] GetListViewSubItems(NextPerformance item)
        {
            List <ListViewItem.ListViewSubItem> subItems = new List <ListViewItem.ListViewSubItem>();
            Color tcnColor = itemsListView.ForeColor;
            int   index;

            if (item is MaintenanceNextPerformance)
            {
                MaintenanceCheck mc = item.Parent as MaintenanceCheck;
                if (mc != null && mc.GetPergormanceGroupWhereCheckIsSenior().FirstOrDefault() != null)
                {
                    index = mc.GetPergormanceGroupWhereCheckIsSenior().First() == item
                                                ? 0
                                                : item.Parent.NextPerformances.IndexOf(item);
                }
                else
                {
                    index = item.Parent.NextPerformances.IndexOf(item);
                }
            }
            else
            {
                index = item.Parent.NextPerformances.IndexOf(item);
            }
            string timesString = index == 0 ? item.Parent.TimesToString : "#" + (index + 1);
            int    times       = index == 0 ? item.Parent.Times : index + 1;
            double manHours    = item.Parent is IEngineeringDirective ? ((IEngineeringDirective)item.Parent).ManHours : 0;
            double cost        = item.Parent is IEngineeringDirective ? ((IEngineeringDirective)item.Parent).Cost : 0;
            var    author      = GlobalObjects.CasEnvironment.GetCorrector(item);
            var    title       = item.Title;

            if (item.Parent is Directive)
            {
                var directive = item.Parent as Directive;

                if (directive.DirectiveType == DirectiveType.SB)
                {
                    title = directive.ServiceBulletinNo;
                }
                else if (directive.DirectiveType == DirectiveType.EngineeringOrders)
                {
                    title = directive.EngineeringOrders;
                }
            }

            if (item.Parent is MaintenanceDirective)
            {
                var d = item.Parent as MaintenanceDirective;
                if (d.TaskCardNumberFile == null)
                {
                    tcnColor = Color.MediumVioletRed;
                }
            }


            subItems.Add(new ListViewItem.ListViewSubItem {
                Text = item.ATAChapter?.ToString(), Tag = item.ATAChapter
            });
            subItems.Add(new ListViewItem.ListViewSubItem {
                ForeColor = tcnColor, Text = title, Tag = title
            });
            subItems.Add(new ListViewItem.ListViewSubItem {
                Text = item.Description, Tag = item.Description
            });
            subItems.Add(new ListViewItem.ListViewSubItem {
                Text = timesString, Tag = times
            });
            subItems.Add(new ListViewItem.ListViewSubItem {
                Text = item.WorkType, Tag = item.WorkType
            });
            subItems.Add(new ListViewItem.ListViewSubItem {
                Text = item.MaintenanceCheck != null ? item.MaintenanceCheck.ToString() : "", Tag = item.MaintenanceCheck
            });
            subItems.Add(new ListViewItem.ListViewSubItem {
                Text = item.PerformanceDate == null ? "N/A" : SmartCore.Auxiliary.Convert.GetDateFormat((DateTime)item.PerformanceDate), Tag = item.PerformanceDate
            });
            subItems.Add(new ListViewItem.ListViewSubItem {
                Text = item.PerformanceSource?.ToString(), Tag = item.PerformanceSource
            });
            if (item.Parent is MaintenanceDirective)
            {
                var d = item.Parent as MaintenanceDirective;
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = d.PhaseRepeat?.ToString(), Tag = d.PhaseRepeat
                });
            }
            else
            {
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = item.Parent.Threshold.RepeatInterval.ToString(), Tag = item.Parent.Threshold.RepeatInterval
                });
            }

            subItems.Add(new ListViewItem.ListViewSubItem {
                Text = item.Remains.ToString(), Tag = item.Remains
            });
            subItems.Add(new ListViewItem.ListViewSubItem {
                Text = item.Parent.LastPerformance?.ToString(), Tag = item.Parent.LastPerformance
            });
            subItems.Add(new ListViewItem.ListViewSubItem {
                Text = item.KitsToString, Tag = item.Kits?.Count
            });
            subItems.Add(new ListViewItem.ListViewSubItem {
                Text = manHours.ToString(), Tag = manHours
            });
            subItems.Add(new ListViewItem.ListViewSubItem {
                Text = cost.ToString(), Tag = cost
            });
            subItems.Add(new ListViewItem.ListViewSubItem {
                Text = "", Tag = ""
            });
            subItems.Add(new ListViewItem.ListViewSubItem {
                Text = "", Tag = ""
            });
            subItems.Add(new ListViewItem.ListViewSubItem {
                Text = item.BeforeForecastResourceRemain != null ? item.BeforeForecastResourceRemain?.ToString() : "", Tag = item.BeforeForecastResourceRemain
            });
            subItems.Add(new ListViewItem.ListViewSubItem {
                Text = item.Parent?.ForecastLifelength?.ToString(), Tag = item.Parent?.ForecastLifelength
            });
            subItems.Add(new ListViewItem.ListViewSubItem {
                Text = item.Parent.AfterForecastResourceRemain != null ? item.Parent.AfterForecastResourceRemain?.ToString() : "", Tag = item.Parent.AfterForecastResourceRemain
            });
            subItems.Add(new ListViewItem.ListViewSubItem {
                Text = author, Tag = author
            });

            return(subItems.ToArray());
        }
Esempio n. 9
0
        protected override ListViewItem.ListViewSubItem[] GetListViewSubItems(BaseEntityObject item)
        {
            List <ListViewItem.ListViewSubItem> subItems = new List <ListViewItem.ListViewSubItem>();

            //if(item.ItemId == 41043)
            //{

            //}
            if (item is NextPerformance)
            {
                NextPerformance np = (NextPerformance)item;

                double manHours = np.Parent is IEngineeringDirective ? ((IEngineeringDirective)np.Parent).ManHours : 0;
                double cost     = np.Parent is IEngineeringDirective ? ((IEngineeringDirective)np.Parent).Cost : 0;

                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = np.ATAChapter.ToString(), Tag = np.ATAChapter
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = np.Title, Tag = np.Title
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = np.Description, Tag = np.Description
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = np.Type, Tag = np.Type
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = np.KitsToString, Tag = np.Kits.Count
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = np.PerformanceSource.ToString(), Tag = np.PerformanceSource
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = np.Parent.Threshold.RepeatInterval.ToString(), Tag = np.Parent.Threshold.RepeatInterval
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = np.Remains.ToString(), Tag = np.Remains
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = np.WorkType, Tag = np.WorkType
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = np.PerformanceDate == null ? "N/A" : SmartCore.Auxiliary.Convert.GetDateFormat((DateTime)np.PerformanceDate), Tag = np.PerformanceDate
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = manHours.ToString(), Tag = manHours
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = cost.ToString(), Tag = cost
                });
            }
            else if (item is AbstractPerformanceRecord)
            {
                AbstractPerformanceRecord apr = (AbstractPerformanceRecord)item;
                Lifelength remains            = Lifelength.Null;

                double manHours = apr.Parent is IEngineeringDirective ? ((IEngineeringDirective)apr.Parent).ManHours : 0;
                double cost     = apr.Parent is IEngineeringDirective ? ((IEngineeringDirective)apr.Parent).Cost : 0;

                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = apr.ATAChapter.ToString(), Tag = apr.ATAChapter
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = apr.Title, Tag = apr.Title
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = apr.Description, Tag = apr.Description
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = "", Tag = ""
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = apr.KitsToString, Tag = apr.Kits.Count
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = apr.OnLifelength.ToString(), Tag = apr.OnLifelength
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = apr.Parent.Threshold.RepeatInterval.ToString(), Tag = apr.Parent.Threshold.RepeatInterval
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = remains.ToString(), Tag = remains
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = apr.WorkType, Tag = apr.WorkType
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = SmartCore.Auxiliary.Convert.GetDateFormat(apr.RecordDate), Tag = apr.RecordDate
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = manHours.ToString(), Tag = manHours
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = cost.ToString(), Tag = cost
                });
            }
            else if (item is Directive)
            {
                Directive     directive = (Directive)item;
                AtaChapter    ata       = directive.ATAChapter;
                DirectiveType pdType    = directive.DirectiveType;
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = ata.ToString(), Tag = ata
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = directive.Title, Tag = directive.Title
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = directive.Description, Tag = directive.Description
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = pdType.ShortName, Tag = pdType.ShortName
                });

                #region Определение текста для колонки "КИТы"
                subItems.Add(new ListViewItem.ListViewSubItem
                {
                    Text = directive.Kits.Count > 0 ? directive.Kits.Count + " kits" : "",
                    Tag  = directive.Kits.Count
                });
                #endregion

                #region Определение текста для колонки "Первое выполнение"

                ListViewItem.ListViewSubItem subItem = new ListViewItem.ListViewSubItem();
                if (directive.Threshold.FirstPerformanceSinceNew != null && !directive.Threshold.FirstPerformanceSinceNew.IsNullOrZero())
                {
                    subItem.Text = "s/n: " + directive.Threshold.FirstPerformanceSinceNew;
                    subItem.Tag  = directive.Threshold.FirstPerformanceSinceNew;
                }
                if (directive.Threshold.FirstPerformanceSinceEffectiveDate != null &&
                    !directive.Threshold.FirstPerformanceSinceEffectiveDate.IsNullOrZero())
                {
                    if (subItem.Text != "")
                    {
                        subItem.Text += " or ";
                    }
                    else
                    {
                        subItem.Text = "";
                        subItem.Tag  = directive.Threshold.FirstPerformanceSinceEffectiveDate;
                    }
                    subItem.Text += "s/e.d: " + directive.Threshold.FirstPerformanceSinceEffectiveDate;
                }

                subItems.Add(subItem);
                #endregion

                #region Определение текста для колонки "повторяющийся интервал"

                subItem = new ListViewItem.ListViewSubItem();
                if (!directive.Threshold.RepeatInterval.IsNullOrZero())
                {
                    subItem.Text = directive.Threshold.RepeatInterval.ToString();
                    subItem.Tag  = directive.Threshold.RepeatInterval;
                }
                else
                {
                    subItem.Text = "";
                    subItem.Tag  = Lifelength.Null;
                }
                subItems.Add(subItem);
                #endregion

                #region Определение текста для колонки "Остаток/Просрочено на сегодня"
                subItems.Add(new ListViewItem.ListViewSubItem
                {
                    Text = directive.Remains.ToString(),
                    Tag  = directive.Remains
                });
                #endregion

                #region Определение текста для колонки "Тип работ"

                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = directive.WorkType.ToString(), Tag = directive.WorkType
                });
                #endregion

                #region Определение текста для колонки "Следующее выполнение"
                subItems.Add(new ListViewItem.ListViewSubItem
                {
                    Text = directive.NextPerformanceDate == null ? "N/A" : SmartCore.Auxiliary.Convert.GetDateFormat((DateTime)directive.NextPerformanceDate),
                    Tag  = directive.NextPerformanceDate
                });
                #endregion

                #region Определение текста для колонки "Человек/Часы"

                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = directive.ManHours.ToString(), Tag = directive.ManHours
                });
                #endregion

                #region Определение текста для колонки "Стоимость"

                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = directive.Cost.ToString(), Tag = directive.Cost
                });
                #endregion
            }
            else if (item is BaseComponent)
            {
                BaseComponent bd  = (BaseComponent)item;
                AtaChapter    ata = bd.ATAChapter;

                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = ata.ToString(), Tag = ata
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = bd.PartNumber, Tag = bd.PartNumber
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = bd.Description, Tag = bd.Description
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = bd.MaintenanceControlProcess.ShortName, Tag = bd.MaintenanceControlProcess.ShortName
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = bd.Kits.Count > 0 ? bd.Kits.Count + " kits" : "", Tag = bd.Kits.Count
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = bd.LifeLimit.ToString(), Tag = bd.LifeLimit
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = "", Tag = Lifelength.Null
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = bd.Remains.ToString(), Tag = bd.Remains
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = ComponentRecordType.Remove.ToString(), Tag = ComponentRecordType.Remove
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = bd.NextPerformanceDate == null ? "N/A" : SmartCore.Auxiliary.Convert.GetDateFormat((DateTime)bd.NextPerformanceDate), Tag = bd.NextPerformanceDate
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = bd.ManHours.ToString(), Tag = bd.ManHours
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = bd.Cost.ToString(), Tag = bd.Cost
                });
            }
            else if (item is Component)
            {
                Component  d   = (Component)item;
                AtaChapter ata = d.ATAChapter;

                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = ata.ToString(), Tag = ata
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = d.PartNumber, Tag = d.PartNumber
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = d.Description, Tag = d.Description
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = d.MaintenanceControlProcess.ShortName, Tag = d.MaintenanceControlProcess.ShortName
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = d.Kits.Count > 0 ? d.Kits.Count + " kits" : "", Tag = d.Kits.Count
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = d.LifeLimit != null ? d.LifeLimit.ToString() : "", Tag = d.LifeLimit
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = "", Tag = Lifelength.Null
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = d.Remains != null ? d.Remains.ToString() : "", Tag = d.Remains
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = ComponentRecordType.Remove.ToString(), Tag = ComponentRecordType.Remove
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = d.NextPerformanceDate == null ? "N/A" : SmartCore.Auxiliary.Convert.GetDateFormat((DateTime)d.NextPerformanceDate), Tag = d.NextPerformanceDate
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = d.ManHours.ToString(), Tag = d.ManHours
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = d.Cost.ToString(), Tag = d.Cost
                });
            }
            else if (item is ComponentDirective)
            {
                ComponentDirective dd  = (ComponentDirective)item;
                AtaChapter         ata = dd.ParentComponent.ATAChapter;

                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = ata != null ? ata.ToString() : "", Tag = ata
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = "", Tag = ""
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = dd.Remarks, Tag = dd.Remarks
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = "", Tag = ""
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = dd.Kits.Count > 0 ? dd.Kits.Count + " kits" : "", Tag = dd.Kits.Count
                });
                #region Определение текста для колонки "Первое выполнение"

                ListViewItem.ListViewSubItem subItem = new ListViewItem.ListViewSubItem();
                if (dd.Threshold.FirstPerformanceSinceNew != null && !dd.Threshold.FirstPerformanceSinceNew.IsNullOrZero())
                {
                    subItem.Text = "s/n: " + dd.Threshold.FirstPerformanceSinceNew;
                    subItem.Tag  = dd.Threshold.FirstPerformanceSinceNew;
                }
                subItems.Add(subItem);
                #endregion
                #region Определение текста для колонки "повторяющийся интервал"

                subItem = new ListViewItem.ListViewSubItem();
                if (!dd.Threshold.RepeatInterval.IsNullOrZero())
                {
                    subItem.Text = dd.Threshold.RepeatInterval.ToString();
                    subItem.Tag  = dd.Threshold.RepeatInterval;
                }
                else
                {
                    subItem.Text = "";
                    subItem.Tag  = Lifelength.Null;
                }
                subItems.Add(subItem);
                #endregion
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = dd.Remains.ToString(), Tag = dd.Remains
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = dd.DirectiveType.ToString(), Tag = dd.DirectiveType
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = dd.NextPerformanceDate == null ? "N/A" : SmartCore.Auxiliary.Convert.GetDateFormat((DateTime)dd.NextPerformanceDate), Tag = dd.NextPerformanceDate
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = dd.ManHours.ToString(), Tag = dd.ManHours
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = dd.Cost.ToString(), Tag = dd.Cost
                });
            }
            else if (item is MaintenanceCheck)
            {
                MaintenanceCheck mc = (MaintenanceCheck)item;
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = "", Tag = null
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = "", Tag = ""
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = mc.Name + (mc.Schedule ? " Shedule" : " Unshedule"), Tag = mc.Name
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = mc.Name, Tag = mc.Name
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = mc.Kits.Count > 0 ? mc.Kits.Count + " kits" : "", Tag = mc.Kits.Count
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = mc.Interval.ToString(), Tag = mc.Interval
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = "", Tag = Lifelength.Null
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = mc.Remains.ToString(), Tag = mc.Remains
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = "", Tag = ""
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = mc.NextPerformanceDate == null ? "N/A" : SmartCore.Auxiliary.Convert.GetDateFormat((DateTime)mc.NextPerformanceDate), Tag = mc.NextPerformanceDate
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = mc.ManHours.ToString(), Tag = mc.ManHours
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = mc.Cost.ToString(), Tag = mc.Cost
                });
            }
            else if (item is MaintenanceDirective)
            {
                MaintenanceDirective md  = (MaintenanceDirective)item;
                AtaChapter           ata = md.ATAChapter;
                string type = md.MaintenanceCheck != null ? md.MaintenanceCheck.Name : "MPD";

                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = ata != null ? ata.ToString() : "", Tag = ata
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = md.TaskNumberCheck, Tag = md.TaskNumberCheck
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = md.Description, Tag = md.Description,
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = type, Tag = type,
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = md.Kits.Count > 0 ? md.Kits.Count + " kits" : "", Tag = md.Kits.Count
                });
                #region Определение текста для колонки "Первое выполнение"

                ListViewItem.ListViewSubItem subItem = new ListViewItem.ListViewSubItem();
                if (md.Threshold.FirstPerformanceSinceNew != null && !md.Threshold.FirstPerformanceSinceNew.IsNullOrZero())
                {
                    subItem.Text = "s/n: " + md.Threshold.FirstPerformanceSinceNew;
                    subItem.Tag  = md.Threshold.FirstPerformanceSinceNew;
                }
                if (md.Threshold.FirstPerformanceSinceEffectiveDate != null &&
                    !md.Threshold.FirstPerformanceSinceEffectiveDate.IsNullOrZero())
                {
                    if (subItem.Text != "")
                    {
                        subItem.Text += " or ";
                    }
                    else
                    {
                        subItem.Text = "";
                        subItem.Tag  = md.Threshold.FirstPerformanceSinceEffectiveDate;
                    }
                    subItem.Text += "s/e.d: " + md.Threshold.FirstPerformanceSinceEffectiveDate;
                }

                subItems.Add(subItem);
                #endregion
                #region Определение текста для колонки "повторяющийся интервал"

                subItem = new ListViewItem.ListViewSubItem();
                if (!md.Threshold.RepeatInterval.IsNullOrZero())
                {
                    subItem.Text = md.Threshold.RepeatInterval.ToString();
                    subItem.Tag  = md.Threshold.RepeatInterval;
                }
                else
                {
                    subItem.Text = "";
                    subItem.Tag  = Lifelength.Null;
                }
                subItems.Add(subItem);
                #endregion
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = md.Remains.ToString(), Tag = md.Remains
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = md.MaintenanceCheck?.ToString(), Tag = md.MaintenanceCheck
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = md.WorkType.ToString(), Tag = md.WorkType
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = md.NextPerformanceDate == null ? "N/A" : SmartCore.Auxiliary.Convert.GetDateFormat((DateTime)md.NextPerformanceDate), Tag = md.NextPerformanceDate
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = md.ManHours.ToString(), Tag = md.ManHours
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = md.Cost.ToString(), Tag = md.Cost
                });
            }
            else if (item is NonRoutineJob)
            {
                NonRoutineJob job = (NonRoutineJob)item;
                AtaChapter    ata = job.ATAChapter;
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = ata != null ? ata.ToString() : "", Tag = ata
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = "", Tag = ""
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = job.Description, Tag = job.Description
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = "NRC", Tag = "NRC"
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = job.Kits.Count > 0 ? job.Kits.Count + " kits" : "", Tag = job.Kits.Count
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = "", Tag = Lifelength.Null
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = "", Tag = Lifelength.Null
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = "", Tag = Lifelength.Null
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = "", Tag = ""
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = "", Tag = DateTimeExtend.GetCASMinDateTime()
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = job.ManHours.ToString(), Tag = job.ManHours
                });
                subItems.Add(new ListViewItem.ListViewSubItem {
                    Text = job.Cost.ToString(), Tag = job.Cost
                });
            }
            else
            {
                throw new ArgumentOutOfRangeException($"1135: Takes an argument has no known type {item.GetType()}");
            }

            return(subItems.ToArray());
        }
Esempio n. 10
0
        /// <summary>
        /// This sample adds a consecutive number in the middle of each page.
        /// It shows how you can add graphics to an imported page.
        /// </summary>
        private void ConcatenatePdfDocuments()
        {
            List <MaintenanceCheck>     selectedChecks = new List <MaintenanceCheck>(_workPackage.MaintenanceChecks);
            List <MaintenanceDirective> selectedMpds   = new List <MaintenanceDirective>(_workPackage.MaintenanceDirectives);

            selectedMpds.AddRange((from record in _workPackage.MaintenanceCheckBindTaskRecords
                                   where record.TaskType == SmartCoreType.MaintenanceDirective
                                   select record.Task as MaintenanceDirective));
            selectedMpds = selectedMpds.Distinct().OrderBy(cm => cm.TaskNumberCheck).ToList();
            List <Directive> selectedADs = new List <Directive>(_workPackage.AdStatus);

            selectedADs.AddRange(_workPackage.SbStatus);
            selectedADs.AddRange(_workPackage.EoStatus);
            List <Directive>          selectedDamages             = new List <Directive>(_workPackage.Damages);
            List <Directive>          selectedOofs                = new List <Directive>(_workPackage.OutOfPhaseItems);
            List <Directive>          selectedDeffereds           = new List <Directive>(_workPackage.DefferedItems);
            List <ComponentDirective> selectedComponentDirectives = new List <ComponentDirective>(_workPackage.ComponentDirectives);
            List <Component>          selectedComponents          = new List <Component>(_workPackage.Components);
            List <NonRoutineJob>      selectedNrjs                = new List <NonRoutineJob>(_workPackage.NonRoutines);

            _animatedThreadWorker.ReportProgress(10, "Sample of Maintenance checks and MPD");

            #region Выборка Чеков и директив программы обслуживания

            foreach (DataGridViewRow row in dataGridViewItems.Rows)
            {
                if (!(row.Tag is MaintenanceCheck))
                {
                    continue;
                }
                if (row.Cells.Count < 3 || !(row.Cells[2] is DataGridViewCheckBoxCell))
                {
                    continue;
                }
                MaintenanceCheck         check     = row.Tag as MaintenanceCheck;
                DataGridViewCheckBoxCell printCell = (DataGridViewCheckBoxCell)row.Cells[2];
                if (!(bool)printCell.Value)
                {
                    //Если чек не выбран для распечатки,
                    //то из результирующей коллекции для распечатки нужно исключить как сам чек,
                    //так и его элементы
                    selectedChecks.Remove(check);

                    if (check.Grouping)
                    {
                        MaintenanceNextPerformance mnp = check.GetNextPergormanceGroupWhereCheckIsSenior();
                        if (mnp != null && mnp.PerformanceGroup != null && mnp.PerformanceGroup.Checks.Count > 0 &&
                            _workPackage.Aircraft != null && _workPackage.Aircraft.MSG == MSG.MSG3)
                        {
                            foreach (MaintenanceCheck mc in mnp.PerformanceGroup.Checks)
                            {
                                List <MaintenanceDirective> checkMpds =
                                    (from record in _workPackage.MaintenanceCheckBindTaskRecords
                                     where record.TaskType == SmartCoreType.MaintenanceDirective && record.CheckId == mc.ItemId
                                     select record.Task as MaintenanceDirective)
                                    .OrderBy(cm => cm.TaskNumberCheck)
                                    .ToList();

                                checkMpds.AddRange(mc.BindMpds);
                                foreach (MaintenanceDirective checkMpd in checkMpds)
                                {
                                    selectedMpds.Remove(checkMpd);
                                }
                            }
                        }
                        else
                        {
                            List <MaintenanceDirective> checkMpds =
                                (from record in _workPackage.MaintenanceCheckBindTaskRecords
                                 where record.TaskType == SmartCoreType.MaintenanceDirective && record.CheckId == check.ItemId
                                 select record.Task as MaintenanceDirective)
                                .OrderBy(cm => cm.TaskNumberCheck)
                                .ToList();

                            checkMpds.AddRange(check.BindMpds);
                            foreach (MaintenanceDirective checkMpd in checkMpds)
                            {
                                selectedMpds.Remove(checkMpd);
                            }
                        }
                    }
                    else
                    {
                        List <MaintenanceDirective> checkMpds =
                            (from record in _workPackage.MaintenanceCheckBindTaskRecords
                             where record.TaskType == SmartCoreType.MaintenanceDirective && record.CheckId == check.ItemId
                             select record.Task as MaintenanceDirective)
                            .OrderBy(cm => cm.TaskNumberCheck)
                            .ToList();

                        checkMpds.AddRange(check.BindMpds);
                        foreach (MaintenanceDirective checkMpd in checkMpds)
                        {
                            selectedMpds.Remove(checkMpd);
                        }
                    }
                }
            }

            foreach (DataGridViewRow row in dataGridViewItems.Rows)
            {
                if (!(row.Tag is MaintenanceDirective))
                {
                    continue;
                }
                if (row.Cells.Count < 3 || !(row.Cells[2] is DataGridViewCheckBoxCell))
                {
                    continue;
                }
                MaintenanceDirective     mpd       = row.Tag as MaintenanceDirective;
                DataGridViewCheckBoxCell printCell = (DataGridViewCheckBoxCell)row.Cells[2];
                if (!(bool)printCell.Value)
                {
                    //Если директива программы обслуживания не выбрана для распечатки,
                    //то ее нужно исключить из результирующей коллекции для распечатки
                    MaintenanceDirective directive = selectedMpds.FirstOrDefault(sm => sm.ItemId == mpd.ItemId);
                    if (directive != null)
                    {
                        selectedMpds.Remove(directive);
                    }
                }
                else
                {
                    if (row.Cells.Count < 4 || !(row.Cells[3] is DataGridViewComboBoxCell))
                    {
                        continue;
                    }
                    //Если директива программы обслуживания имеет связные с ней задачи по
                    //компонентам и Выбрана для распечатки,
                    //то нужно определить, сколько копий директивы надо включить в распечатку
                    //1. По одной на каждую связную задачу по компоненту
                    //2. Одну на все связные задачи по компонентам
                    MaintenanceDirective directive = selectedMpds.FirstOrDefault(sm => sm.ItemId == mpd.ItemId);
                    if (directive != null)
                    {
                        DataGridViewComboBoxCell countCell = (DataGridViewComboBoxCell)row.Cells[3];
                        if (countCell.EditedFormattedValue.ToString() == _comboBoxItemOneToOne)
                        {
                            directive.CountForPrint = directive.ItemRelations.Count;
                        }
                        else if (countCell.EditedFormattedValue.ToString() == _comboBoxItemOneForAll)
                        {
                            directive.CountForPrint = 1;
                        }
                    }
                }
            }

            #endregion

            _animatedThreadWorker.ReportProgress(15, "Sample of AD");

            #region Выборка Директив летной годности

            foreach (DataGridViewRow row in dataGridViewItems.Rows)
            {
                if (!(row.Tag is Directive))
                {
                    continue;
                }
                if (row.Cells.Count < 3 || !(row.Cells[2] is DataGridViewCheckBoxCell))
                {
                    continue;
                }
                Directive directive = row.Tag as Directive;
                DataGridViewCheckBoxCell printCell = (DataGridViewCheckBoxCell)row.Cells[2];
                if (!(bool)printCell.Value)
                {
                    if (directive.DirectiveType == DirectiveType.AirworthenessDirectives &&
                        selectedADs.FirstOrDefault(sm => sm.ItemId == directive.ItemId) != null)
                    {
                        selectedADs.Remove(directive);
                    }
                    if (directive.DirectiveType == DirectiveType.DamagesRequiring &&
                        selectedDamages.FirstOrDefault(sm => sm.ItemId == directive.ItemId) != null)
                    {
                        selectedDamages.Remove(directive);
                    }
                    if (directive.DirectiveType == DirectiveType.DeferredItems &&
                        selectedDeffereds.FirstOrDefault(sm => sm.ItemId == directive.ItemId) != null)
                    {
                        selectedDeffereds.Remove(directive);
                    }
                    if (directive.DirectiveType == DirectiveType.OutOfPhase &&
                        selectedOofs.FirstOrDefault(sm => sm.ItemId == directive.ItemId) != null)
                    {
                        selectedOofs.Remove(directive);
                    }
                    if (directive.DirectiveType == DirectiveType.SB &&
                        selectedOofs.FirstOrDefault(sm => sm.ItemId == directive.ItemId) != null)
                    {
                        selectedOofs.Remove(directive);
                    }
                    if (directive.DirectiveType == DirectiveType.EngineeringOrders &&
                        selectedOofs.FirstOrDefault(sm => sm.ItemId == directive.ItemId) != null)
                    {
                        selectedOofs.Remove(directive);
                    }
                }
            }
            #endregion

            _animatedThreadWorker.ReportProgress(20, "Sample of Component directives");

            #region Выборка Задач по компонентам

            foreach (DataGridViewRow row in dataGridViewItems.Rows)
            {
                if (!(row.Tag is ComponentDirective))
                {
                    continue;
                }
                if (row.Cells.Count < 3 || !(row.Cells[2] is DataGridViewCheckBoxCell))
                {
                    continue;
                }
                ComponentDirective       directive = row.Tag as ComponentDirective;
                DataGridViewCheckBoxCell printCell = (DataGridViewCheckBoxCell)row.Cells[2];
                if (!(bool)printCell.Value && selectedComponentDirectives.FirstOrDefault(sm => sm.ItemId == directive.ItemId) != null)
                {
                    selectedComponentDirectives.Remove(directive);
                }
            }
            #endregion

            _animatedThreadWorker.ReportProgress(25, "Sample of Components");

            #region Выборка компонентов

            foreach (DataGridViewRow row in dataGridViewItems.Rows)
            {
                if (!(row.Tag is Component))
                {
                    continue;
                }
                if (row.Cells.Count < 3 || !(row.Cells[2] is DataGridViewCheckBoxCell))
                {
                    continue;
                }
                Component directive = row.Tag as Component;
                DataGridViewCheckBoxCell printCell = (DataGridViewCheckBoxCell)row.Cells[2];
                if (!(bool)printCell.Value && selectedComponents.FirstOrDefault(sm => sm.ItemId == directive.ItemId) != null)
                {
                    selectedComponents.Remove(directive);
                }
            }
            #endregion

            _animatedThreadWorker.ReportProgress(30, "Sample of Non-routine jobs");

            #region Выборка нерутинных работ

            foreach (DataGridViewRow row in dataGridViewItems.Rows)
            {
                if (!(row.Tag is NonRoutineJob))
                {
                    continue;
                }
                if (row.Cells.Count < 3 || !(row.Cells[2] is DataGridViewCheckBoxCell))
                {
                    continue;
                }
                NonRoutineJob            directive = row.Tag as NonRoutineJob;
                DataGridViewCheckBoxCell printCell = (DataGridViewCheckBoxCell)row.Cells[2];
                if (!(bool)printCell.Value && selectedNrjs.FirstOrDefault(sm => sm.ItemId == directive.ItemId) != null)
                {
                    selectedNrjs.Remove(directive);
                }
            }
            #endregion

            _selectedItems.Clear();
            _selectedItems.AddRange(selectedChecks.ToArray());
            _selectedItems.AddRange(selectedMpds.ToArray());
            _selectedItems.AddRange(selectedADs.ToArray());
            _selectedItems.AddRange(selectedDamages.ToArray());
            _selectedItems.AddRange(selectedOofs.ToArray());
            _selectedItems.AddRange(selectedDeffereds.ToArray());
            _selectedItems.AddRange(selectedComponentDirectives.ToArray());
            _selectedItems.AddRange(selectedComponents.ToArray());
            _selectedItems.AddRange(selectedNrjs.ToArray());
        }
Esempio n. 11
0
        private void ButtonCreateWorkPakageClick(object sender, EventArgs e)
        {
            if (_directivesViewer.SelectedItems.Count <= 0)
            {
                return;
            }

            if (MessageBox.Show("Create and save a Work Package?", "", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                List <NextPerformance> wpItems = _directivesViewer.SelectedItems.ToList();
                List <NextPerformance> bindedDirectivesPerformances = new List <NextPerformance>();
                foreach (NextPerformance wpItem in wpItems)
                {
                    if (wpItem is MaintenanceNextPerformance)
                    {
                        MaintenanceNextPerformance mnp = wpItem as MaintenanceNextPerformance;
                        if (mnp.PerformanceGroup.Checks.Count > 0)
                        {
                            foreach (MaintenanceCheck mc in mnp.PerformanceGroup.Checks)
                            {
                                foreach (MaintenanceDirective mpd in _currentForecast.MaintenanceDirectives
                                         .Where(mpd => mpd.MaintenanceCheck != null &&
                                                mpd.MaintenanceCheck.ItemId == mc.ItemId))
                                {
                                    NextPerformance performance =
                                        mpd.NextPerformances.FirstOrDefault(p => p.PerformanceDate != null &&
                                                                            p.PerformanceDate.Value.Date == wpItem.PerformanceDate.Value.Date) ??
                                        mpd.NextPerformances.LastOrDefault(p => p.PerformanceDate != null &&
                                                                           p.PerformanceDate < wpItem.PerformanceDate) ??
                                        mpd.NextPerformances.FirstOrDefault(p => p.PerformanceDate != null &&
                                                                            p.PerformanceDate > wpItem.PerformanceDate);

                                    if (performance == null)
                                    {
                                        continue;
                                    }
                                    if (wpItems.Count(wpi => wpi.Parent != null && wpi.Parent == mpd) == 0)
                                    {
                                        bindedDirectivesPerformances.Add(performance);
                                    }
                                }
                            }
                        }
                        else if (wpItem.Parent is MaintenanceCheck)
                        {
                            MaintenanceCheck mc = wpItem.Parent as MaintenanceCheck;
                            foreach (MaintenanceDirective mpd in _currentForecast.MaintenanceDirectives
                                     .Where(mpd => mpd.MaintenanceCheck != null &&
                                            mpd.MaintenanceCheck.ItemId == mc.ItemId))
                            {
                                NextPerformance performance =
                                    mpd.NextPerformances.FirstOrDefault(p => p.PerformanceDate != null &&
                                                                        p.PerformanceDate.Value.Date == wpItem.PerformanceDate.Value.Date) ??
                                    mpd.NextPerformances.LastOrDefault(p => p.PerformanceDate != null &&
                                                                       p.PerformanceDate < wpItem.PerformanceDate) ??
                                    mpd.NextPerformances.FirstOrDefault(p => p.PerformanceDate != null &&
                                                                        p.PerformanceDate > wpItem.PerformanceDate);

                                if (performance == null)
                                {
                                    continue;
                                }
                                if (wpItems.Count(wpi => wpi.Parent != null && wpi.Parent == mpd) == 0)
                                {
                                    bindedDirectivesPerformances.Add(performance);
                                }
                            }
                        }
                    }
                    else if (wpItem.Parent is MaintenanceCheck)
                    {
                        MaintenanceCheck mc = wpItem.Parent as MaintenanceCheck;
                        foreach (MaintenanceDirective mpd in _currentForecast.MaintenanceDirectives
                                 .Where(mpd => mpd.MaintenanceCheck != null &&
                                        mpd.MaintenanceCheck.ItemId == mc.ItemId))
                        {
                            NextPerformance performance =
                                mpd.NextPerformances.FirstOrDefault(p => p.PerformanceDate != null &&
                                                                    p.PerformanceDate.Value.Date == wpItem.PerformanceDate.Value.Date) ??
                                mpd.NextPerformances.LastOrDefault(p => p.PerformanceDate != null &&
                                                                   p.PerformanceDate < wpItem.PerformanceDate) ??
                                mpd.NextPerformances.FirstOrDefault(p => p.PerformanceDate != null &&
                                                                    p.PerformanceDate > wpItem.PerformanceDate);

                            if (performance == null)
                            {
                                continue;
                            }
                            if (wpItems.Count(wpi => wpi.Parent != null && wpi.Parent == mpd) == 0)
                            {
                                bindedDirectivesPerformances.Add(performance);
                            }
                        }
                    }
                }
                wpItems.AddRange(bindedDirectivesPerformances);

                try
                {
                    string      message;
                    WorkPackage wp =
                        GlobalObjects.WorkPackageCore.AddWorkPakage(wpItems, _currentAircraft, out message);
                    if (wp == null)
                    {
                        MessageBox.Show(message, (string)new GlobalTermsProvider()["SystemName"],
                                        MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return;
                    }
                    //Добавление нового рабочего пакета в коллекцию открытых рабочих пакетов
                    _openPubWorkPackages.Add(wp);
                    //Создание пункта в меню открытых рабочих пакетов
                    var item = new RadMenuItem($"{wp.Title} {wp.Number}");
                    item.Click += AddToWorkPackageItemClick;
                    item.Tag    = wp;
                    _toolStripMenuItemsWorkPackages.Items.Add(item);

                    foreach (NextPerformance nextPerformance in wpItems)
                    {
                        nextPerformance.BlockedByPackage = wp;
                        _directivesViewer.UpdateItemColor();
                    }
                    ReferenceEventArgs refArgs = new ReferenceEventArgs();
                    refArgs.TypeOfReflection = ReflectionTypes.DisplayInNew;
                    refArgs.DisplayerText    = CurrentAircraft != null ? CurrentAircraft.RegistrationNumber + "." + wp.Title : wp.Title;
                    refArgs.RequestedEntity  = new WorkPackageScreen(wp);
                    InvokeDisplayerRequested(refArgs);
                }
                catch (Exception ex)
                {
                    Program.Provider.Logger.Log("error while create Work Package", ex);
                }
            }
        }
Esempio n. 12
0
        private void GenerateRows()
        {
            listViewProgramChecks.Items.Clear();
            if (_grouping)
            {
                MaintenanceCheckCollection mcc = new MaintenanceCheckCollection(_maintenanceCheckItems);
                MaintenanceCheck           mc  = mcc.GetMinStepCheck(_maintenanceCheckItems[0].Schedule);
                if (mc == null)
                {
                    return;
                }
                MSG msg = mc.ParentAircraft != null && mc.ParentAircraft.MaintenanceProgramChangeRecords.Count > 0
                                  ? mc.ParentAircraft.MaintenanceProgramChangeRecords.GetLast().MSG
                                  : MSG.MSG2;
                if (msg < MSG.MSG3)
                {
                    MaintenanceCheckComplianceGroup mccg =
                        mcc.GetLastComplianceCheckGroup(mc.Schedule, mc.ParentAircraftId,
                                                        mc.Grouping, mc.Resource);

                    int lastPerformanceGroupNum = mccg != null
                        ? mccg.LastComplianceGroupNum
                        : 0;
                    int countMinStepInMinCheck = Convert.ToInt32(mc.Interval.GetSubresource(mc.Resource)) / _minCheckResource;
                    foreach (MaintenanceCheck t in _maintenanceCheckItems)
                    {
                        ListViewItem listViewItem = new ListViewItem {
                            Text = t.Name
                        };

                        listViewItem.SubItems.Add(t.Interval.ToRepeatIntervalsFormat());
                        listViewItem.SubItems.Add(t.Cost.ToString());
                        listViewItem.SubItems.Add(t.ManHours.ToString());

                        for (int j = 1; j <= _countColumns; j++)
                        {
                            MaintenanceNextPerformance mnp =
                                t.GetPergormanceGroupByGroupNum(lastPerformanceGroupNum + j * countMinStepInMinCheck);
                            listViewItem.SubItems.Add(mnp != null ? "X" : "");
                        }
                        listViewProgramChecks.Items.Add(listViewItem);
                    }
                }
                else
                {
                    MaintenanceCheckComplianceGroup mccg =
                        mcc.GetLastComplianceCheckGroup(mc.Schedule, mc.ParentAircraftId,
                                                        mc.Grouping, mc.Resource);

                    int lastPerformanceGroupNum = mccg != null
                        ? mccg.LastComplianceGroupNum
                        : 0;
                    int countMinStepInMinCheck = Convert.ToInt32(mc.Interval.GetSubresource(mc.Resource)) / _minCheckResource;
                    foreach (MaintenanceCheck t in _maintenanceCheckItems)
                    {
                        ListViewItem listViewItem = new ListViewItem {
                            Text = t.Name
                        };

                        listViewItem.SubItems.Add(t.Interval.ToRepeatIntervalsFormat());
                        listViewItem.SubItems.Add(t.Cost.ToString());
                        listViewItem.SubItems.Add(t.ManHours.ToString());

                        for (int j = 1; j <= _countColumns; j++)
                        {
                            MaintenanceNextPerformance mnp =
                                t.GetPergormanceGroupWhereCheckIsSeniorByGroupNum(lastPerformanceGroupNum + j * countMinStepInMinCheck);
                            listViewItem.SubItems.Add(mnp != null ? "X" : "");
                        }
                        listViewProgramChecks.Items.Add(listViewItem);
                    }
                }
                mcc.Clear();
            }
            else
            {
                foreach (MaintenanceCheck t in _maintenanceCheckItems)
                {
                    ListViewItem listViewItem = new ListViewItem {
                        Text = t.Name
                    };

                    listViewItem.SubItems.Add(t.Interval.ToRepeatIntervalsFormat());
                    listViewItem.SubItems.Add(t.Cost.ToString());
                    listViewItem.SubItems.Add(t.ManHours.ToString());

                    Lifelength lastPerformance = t.LastPerformance != null
                        ? new Lifelength(t.LastPerformance.OnLifelength)
                        : Lifelength.Null;
                    int?last = lastPerformance.GetSubresource(_subResource);

                    listViewItem.SubItems.Add(last != null ? lastPerformance.ToString(_subResource, true) : "");

                    if (t.Schedule == _schedule)
                    {
                        Lifelength nextPerformance = lastPerformance + t.Interval;
                        int?       next            = nextPerformance.GetSubresource(_subResource);
                        listViewItem.SubItems.Add(next != null ? nextPerformance.ToString(_subResource, true) : "");
                    }
                    else
                    {
                        listViewItem.SubItems.Add("N/A");
                    }
                    listViewProgramChecks.Items.Add(listViewItem);
                }
            }
        }
Esempio n. 13
0
        /// <summary>
        /// Выставляет колонки в списке чеков текущей программы обслуживания
        /// </summary>
        private void SetHeaders()
        {
            _min = Convert.ToInt32(_maintenanceCheckItems[0].Interval.GetSubresource(_subResource));

            foreach (MaintenanceCheck liminationItem in _maintenanceCheckItems)
            {
                _min = Math.Min(Convert.ToInt32(liminationItem.Interval.GetSubresource(_subResource)), _min);
                _max = Math.Max(Convert.ToInt32(liminationItem.Interval.GetSubresource(_subResource)), _max);
            }

            ColumnHeader column = new ColumnHeader {
                Text = "Name", TextAlign = HorizontalAlignment.Right, Width = 50
            };

            listViewProgramChecks.Columns.Add(column);
            column = new ColumnHeader {
                Text = "Interval", TextAlign = HorizontalAlignment.Left, Width = 130
            };
            listViewProgramChecks.Columns.Add(column);
            column = new ColumnHeader {
                Text = "Cost", TextAlign = HorizontalAlignment.Left, Width = 50
            };
            listViewProgramChecks.Columns.Add(column);
            column = new ColumnHeader {
                Text = "ManHours", TextAlign = HorizontalAlignment.Left, Width = 64
            };
            listViewProgramChecks.Columns.Add(column);

            if (_grouping)
            {
                //Определение кол-ва колонок списка
                if (_upperCheckTypeMinResource == -1)
                {
                    //Если это самая вышестоящий тип чеков
                    //то делится максимальный на минимальный интервал
                    _countColumns = _max / _min;
                }
                else
                {
                    //Если это самая НЕ вышестоящий тип чеков
                    //то делится минимальный ресурс вышестоящего типа на минимальный интервал
                    _countColumns = _upperCheckTypeMinResource / _min;
                }
                MaintenanceCheckCollection mcc = new MaintenanceCheckCollection(_maintenanceCheckItems);
                MaintenanceCheck           mc  = mcc.GetMinStepCheck(_maintenanceCheckItems[0].Schedule);
                if (mc == null)
                {
                    return;
                }
                MSG msg = mc.ParentAircraft != null && mc.ParentAircraft.MaintenanceProgramChangeRecords.Count > 0
                                  ? mc.ParentAircraft.MaintenanceProgramChangeRecords.GetLast().MSG
                                  : MSG.MSG2;
                if (msg < MSG.MSG3)
                {
                    for (int i = 1; i <= _countColumns; i++)
                    {
                        //ColumnHeader viewColumn = new ColumnHeader
                        //                              {
                        //                                  Text = i + " [" + (i*_min) + "]",
                        //                                  TextAlign = HorizontalAlignment.Center,
                        //                                  Width = 65
                        //
                        //                              };
                        //listViewProgramChecks.Columns.Add(viewColumn);
                        ColumnHeader viewColumn;
                        //выполняется проверка, достаточно ли расчитано "след.выполнений"
                        //что бы заполнить их данными названия колонок
                        if (mc.NextPerformances.Count >= i)
                        {
                            //Если кол-во расчитанных выполнений достаточно для заполнения
                            //названия тек. колонки, то название колонки берется из ресурса "след. выполнения"
                            int performanceSource =
                                Convert.ToInt32(mc.NextPerformances[i - 1].PerformanceSource.GetSubresource(mc.Resource));
                            MaintenanceNextPerformance mnp = mc.NextPerformances[i - 1] as MaintenanceNextPerformance;
                            if (mnp != null)
                            {
                                string checkName = mnp.PerformanceGroup != null?mnp.PerformanceGroup.GetGroupName() : i.ToString();

                                viewColumn = new ColumnHeader
                                {
                                    Text      = checkName + " [" + performanceSource + "]",
                                    TextAlign = HorizontalAlignment.Center,
                                    Width     = 85
                                };
                            }
                            else
                            {
                                viewColumn = new ColumnHeader
                                {
                                    Text      = i + " [" + performanceSource + "]",
                                    TextAlign = HorizontalAlignment.Center,
                                    Width     = 85
                                };
                            }
                        }
                        else
                        {
                            //Если кол-во расчитанных выполнений недостаточно
                            //то название колонки расчитывается на освоне ресурса последнего выполнения
                            //данного чека и номера тек. колонки
                            viewColumn = new ColumnHeader
                            {
                                Text      = i + " [" + (i * _min) + "]",
                                TextAlign = HorizontalAlignment.Center,
                                Width     = 85
                            };
                        }
                        listViewProgramChecks.Columns.Add(viewColumn);
                    }
                }
                else
                {
                    MaintenanceCheckComplianceGroup mccg = mcc.GetLastComplianceCheckGroup(mc.Schedule, mc.ParentAircraftId,
                                                                                           mc.Grouping, mc.Resource);
                    if (mccg == null)
                    {
                        for (int i = 1; i <= _countColumns; i++)
                        {
                            MaintenanceNextPerformance mnp = mc.NextPerformances[i - 1] as MaintenanceNextPerformance;
                            string checkName = mnp != null && mnp.PerformanceGroup != null
                                ? mnp.PerformanceGroup.GetGroupName()
                                : "";

                            ColumnHeader viewColumn = new ColumnHeader
                            {
                                Text      = checkName + " [" + (i * _min) + "]",
                                TextAlign = HorizontalAlignment.Center,
                                Width     = 65
                            };
                            listViewProgramChecks.Columns.Add(viewColumn);
                        }
                    }
                    else
                    {
                        MaintenanceCheck mic = mccg.GetMinIntervalCheck();
                        for (int i = 1; i <= _countColumns; i++)
                        {
                            ColumnHeader viewColumn;
                            //выполняется проверка, достаточно ли расчитано "след.выполнений"
                            //что бы заполнить их данными названия колонок
                            if (mic.NextPerformances.Count >= i)
                            {
                                //Если кол-во расчитанных выполнений достаточно для заполнения
                                //названия тек. колонки, то название колонки берется из ресурса "след. выполнения"
                                MaintenanceNextPerformance mnp = mc.NextPerformances[i - 1] as MaintenanceNextPerformance;
                                string checkName = mnp != null && mnp.PerformanceGroup != null
                                    ? mnp.PerformanceGroup.GetGroupName()
                                    : "";

                                int performanceSource =
                                    Convert.ToInt32(mic.NextPerformances[i - 1].PerformanceSource.GetSubresource(mic.Resource));
                                viewColumn = new ColumnHeader
                                {
                                    Text      = checkName + " [" + performanceSource + "]",
                                    TextAlign = HorizontalAlignment.Center,
                                    Width     = 85
                                };
                            }
                            else
                            {
                                //Если кол-во расчитанных выполнений недостаточно
                                //то название колонки расчитывается на освоне ресурса последнего выполнения
                                //данного чека и номера тек. колонки
                                int lastPerformaceSource =
                                    Convert.ToInt32(mic.LastPerformance.CalculatedPerformanceSource.GetSubresource(mic.Resource));
                                if (lastPerformaceSource == 0)
                                {
                                    lastPerformaceSource =
                                        Convert.ToInt32(mic.LastPerformance.OnLifelength.GetSubresource(mic.Resource));
                                }

                                viewColumn = new ColumnHeader
                                {
                                    Text      = " [" + (lastPerformaceSource + i * _min) + "]",
                                    TextAlign = HorizontalAlignment.Center,
                                    Width     = 85
                                };
                            }
                            listViewProgramChecks.Columns.Add(viewColumn);
                        }
                    }
                }
                mcc.Clear();
            }
            else
            {
                _countColumns = 2;
                //Если чеки НЕ группируются по части порогового значения
                //то выводится ресурс пред. и след. выполнения
                column = new ColumnHeader {
                    Text = "Last", TextAlign = HorizontalAlignment.Left, Width = 100
                };
                listViewProgramChecks.Columns.Add(column);
                column = new ColumnHeader {
                    Text = "Next", TextAlign = HorizontalAlignment.Left, Width = 100
                };
                listViewProgramChecks.Columns.Add(column);
            }
        }
Esempio n. 14
0
        private void AddToWorkPackageItemClick(object sender, EventArgs e)
        {
            if (listViewCompliance.SelectedItems.Count <= 0 ||
                _currentAircraft == null)
            {
                return;
            }

            WorkPackage wp = (WorkPackage)((ToolStripMenuItem)sender).Tag;

            if (MessageBox.Show("Add item to Work Package: " + wp.Title + "?", "", MessageBoxButtons.YesNo, MessageBoxIcon.Question) ==
                DialogResult.Yes)
            {
                List <NextPerformance> nextPerformances =
                    listViewCompliance.SelectedItems
                    .Cast <ListViewItem>()
                    .Where(lvi => lvi.Tag is NextPerformance)
                    .Select(lvi => lvi.Tag as NextPerformance)
                    .ToList();
                List <NextPerformance> bindedDirectivesPerformances = new List <NextPerformance>();
                foreach (NextPerformance wpItem in nextPerformances)
                {
                    if (wpItem is MaintenanceNextPerformance)
                    {
                        MaintenanceNextPerformance mnp = wpItem as MaintenanceNextPerformance;
                        if (mnp.PerformanceGroup.Checks.Count > 0)
                        {
                            foreach (MaintenanceCheck mc in mnp.PerformanceGroup.Checks)
                            {
                                foreach (MaintenanceDirective mpd in mc.BindMpds.Where(mpd => mpd.MaintenanceCheck != null &&
                                                                                       mpd.MaintenanceCheck.ItemId == mc.ItemId))
                                {
                                    NextPerformance performance =
                                        mpd.NextPerformances.FirstOrDefault(p => p.PerformanceDate != null &&
                                                                            p.PerformanceDate.Value.Date == wpItem.PerformanceDate.Value.Date) ??
                                        mpd.NextPerformances.LastOrDefault(p => p.PerformanceDate != null &&
                                                                           p.PerformanceDate < wpItem.PerformanceDate) ??
                                        mpd.NextPerformances.FirstOrDefault(p => p.PerformanceDate != null &&
                                                                            p.PerformanceDate > wpItem.PerformanceDate);

                                    if (performance == null)
                                    {
                                        continue;
                                    }
                                    if (nextPerformances.Count(wpi => wpi.Parent != null && wpi.Parent == mpd) == 0)
                                    {
                                        bindedDirectivesPerformances.Add(performance);
                                    }
                                }
                            }
                        }
                        else if (mnp.Parent is MaintenanceCheck)
                        {
                            MaintenanceCheck mc = mnp.Parent as MaintenanceCheck;
                            foreach (MaintenanceDirective mpd in mc.BindMpds.Where(mpd => mpd.MaintenanceCheck != null &&
                                                                                   mpd.MaintenanceCheck.ItemId == mc.ItemId))
                            {
                                NextPerformance performance =
                                    mpd.NextPerformances.FirstOrDefault(p => p.PerformanceDate != null &&
                                                                        p.PerformanceDate.Value.Date == wpItem.PerformanceDate.Value.Date) ??
                                    mpd.NextPerformances.LastOrDefault(p => p.PerformanceDate != null &&
                                                                       p.PerformanceDate < wpItem.PerformanceDate) ??
                                    mpd.NextPerformances.FirstOrDefault(p => p.PerformanceDate != null &&
                                                                        p.PerformanceDate > wpItem.PerformanceDate);

                                if (performance == null)
                                {
                                    continue;
                                }
                                if (nextPerformances.Count(wpi => wpi.Parent != null && wpi.Parent == mpd) == 0)
                                {
                                    bindedDirectivesPerformances.Add(performance);
                                }
                            }
                        }
                    }
                    else if (wpItem.Parent is MaintenanceCheck)
                    {
                        MaintenanceCheck mc = wpItem.Parent as MaintenanceCheck;
                        foreach (MaintenanceDirective mpd in mc.BindMpds.Where(mpd => mpd.MaintenanceCheck != null &&
                                                                               mpd.MaintenanceCheck.ItemId == mc.ItemId))
                        {
                            NextPerformance performance =
                                mpd.NextPerformances.FirstOrDefault(p => p.PerformanceDate != null &&
                                                                    p.PerformanceDate.Value.Date == wpItem.PerformanceDate.Value.Date) ??
                                mpd.NextPerformances.LastOrDefault(p => p.PerformanceDate != null &&
                                                                   p.PerformanceDate < wpItem.PerformanceDate) ??
                                mpd.NextPerformances.FirstOrDefault(p => p.PerformanceDate != null &&
                                                                    p.PerformanceDate > wpItem.PerformanceDate);

                            if (performance == null)
                            {
                                continue;
                            }
                            if (nextPerformances.Count(wpi => wpi.Parent != null && wpi.Parent == mpd) == 0)
                            {
                                bindedDirectivesPerformances.Add(performance);
                            }
                        }
                    }
                }
                nextPerformances.AddRange(bindedDirectivesPerformances);

                if (nextPerformances.Count == 0)
                {
                    MessageBox.Show("Not select next compliance to adding", (string)new GlobalTermsProvider()["SystemName"],
                                    MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    return;
                }
                try
                {
                    string message;

                    if (!GlobalObjects.WorkPackageCore.AddToWorkPakage(nextPerformances,
                                                                       wp.ItemId,
                                                                       _currentAircraft,
                                                                       out message))
                    {
                        MessageBox.Show(message, (string)new GlobalTermsProvider()["SystemName"],
                                        MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return;
                    }

                    foreach (NextPerformance np in nextPerformances)
                    {
                        np.BlockedByPackage = wp;
                        UpdateItemColor(np);
                    }

                    if (MessageBox.Show("Items added successfully. Open work package?", (string)new GlobalTermsProvider()["SystemName"],
                                        MessageBoxButtons.YesNo, MessageBoxIcon.Information, MessageBoxDefaultButton.Button2)
                        == DialogResult.Yes)
                    {
                        ReferenceEventArgs refArgs = new ReferenceEventArgs();
                        refArgs.TypeOfReflection = ReflectionTypes.DisplayInNew;
                        refArgs.DisplayerText    = _currentAircraft + "." + wp.Title;
                        refArgs.RequestedEntity  = new WorkPackageScreen(wp);
                        InvokeDisplayerRequested(refArgs);
                    }
                }
                catch (Exception ex)
                {
                    Program.Provider.Logger.Log("error while create Work Package", ex);
                }
            }
        }
Esempio n. 15
0
        /// <summary>
        /// Возвращает группу следующих чеков заданного типа, который должны быть выполнены до назначенного ресурса lifeLenghtSourcе
        /// если вернет null то значит входные данные неверны
        /// </summary>
        /// <param name="checkInput"></param>
        /// <param name="lastComplianceCheck"></param>
        /// <param name="lifeLenghtSource"></param>
        /// <returns></returns>
        public static MaintenanceCheckGroupByType GetNextCheckBySourceDifference(this IEnumerable <MaintenanceCheck> checkInput, MaintenanceCheck lastComplianceCheck, int?lifeLenghtSource)
        {
            if (lifeLenghtSource == null || lifeLenghtSource.Value == 0 || lastComplianceCheck == null)
            {
                return(null);
            }
            //сортировка коллекции по типу Shedule;
            MaintenanceCheckCollection sourceCollection =
                new MaintenanceCheckCollection(checkInput.Where(c => c.Schedule == lastComplianceCheck.Schedule).ToList());
            //поиск минимального шага
            int?minStep = lastComplianceCheck.Interval.Days;

            if (minStep == null)
            {
                return(null);
            }

            List <MaintenanceCheckGroupByType> checksGroups =
                new List <MaintenanceCheckGroupByType>(sourceCollection.GroupingCheckByType(minStep, lastComplianceCheck.Schedule));

            if (checksGroups.Count == 0)
            {
                return(null);
            }

            return(GetCheckPacketBySource(checksGroups, lifeLenghtSource, minStep, lastComplianceCheck));
        }
Esempio n. 16
0
        protected override List <CustomCell> GetListViewSubItems(NextPerformance item)
        {
            var   subItems = new List <CustomCell>();
            Color tcnColor = radGridView1.ForeColor;
            int   index;

            if (item is MaintenanceNextPerformance)
            {
                MaintenanceCheck mc = item.Parent as MaintenanceCheck;
                if (mc != null && mc.GetPergormanceGroupWhereCheckIsSenior().FirstOrDefault() != null)
                {
                    index = mc.GetPergormanceGroupWhereCheckIsSenior().First() == item
                                                ? 0
                                                : item.Parent.NextPerformances.IndexOf(item);
                }
                else
                {
                    index = item.Parent.NextPerformances.IndexOf(item);
                }
            }
            else
            {
                index = item.Parent.NextPerformances.IndexOf(item);
            }
            string timesString = index == 0 ? item.Parent.TimesToString : "#" + (index + 1);
            int    times       = index == 0 ? item.Parent.Times : index + 1;
            double manHours    = item.Parent is IEngineeringDirective ? ((IEngineeringDirective)item.Parent).ManHours : 0;
            double cost        = item.Parent is IEngineeringDirective ? ((IEngineeringDirective)item.Parent).Cost : 0;
            var    author      = GlobalObjects.CasEnvironment.GetCorrector(item);
            var    title       = item.Title;
            var    card        = "";
            var    description = item.Description;

            if (item.Parent is Directive directive)
            {
                if (directive.DirectiveType == DirectiveType.SB)
                {
                    title = directive.ServiceBulletinNo;
                }
                else if (directive.DirectiveType == DirectiveType.EngineeringOrders)
                {
                    title = directive.EngineeringOrders;
                }
                card = directive.EngineeringOrders;
            }
            else if (item.Parent is MaintenanceDirective d)
            {
                if (!d.HasTaskCardFile)
                {
                    tcnColor = Color.MediumVioletRed;
                }
                card = d.TaskCardNumber;
            }
            else if (item.Parent is ComponentDirective c)
            {
                description = item.Title;
                title       = c.MaintenanceDirective?.TaskNumberCheck ?? "";
                card        = c.MaintenanceDirective?.TaskCardNumber ?? "";
            }

            var temp = "";

            if (item.Parent is IMtopCalc)
            {
                temp = $"Check: {item.Group}-{item.ParentCheck.Name} ({item.ParentCheck.NextPerformances.FirstOrDefault(i => i.Group == item.Group)?.PerformanceSource})";
            }
            else
            {
                temp = $"{ListViewGroupHelper.GetGroupString(item)} | Date: {item.PerformanceDate?.ToString(new GlobalTermsProvider()["DateFormat"].ToString())}";
            }

            subItems.Add(CreateRow(temp, item.ParentCheck.NextPerformances.FirstOrDefault(i => i.Group == item.Group)?.PerformanceSource));
            subItems.Add(CreateRow(title, title, tcnColor));
            subItems.Add(CreateRow(card, card, tcnColor));
            subItems.Add(CreateRow(description, description));
            subItems.Add(CreateRow(item.WorkType, item.WorkType));
            subItems.Add(CreateRow(item.PerformanceDate == null ? "N/A" : SmartCore.Auxiliary.Convert.GetDateFormat((DateTime)item.PerformanceDate), item.PerformanceDate));

            //item.PerformanceSource?.Resemble(item.Parent.Threshold.FirstPerformanceSinceNew);

            subItems.Add(CreateRow(item.PerformanceSource?.ToString(), item.PerformanceSource));
            if (item.Parent is IMtopCalc)
            {
                var d = item.Parent as IMtopCalc;
                d.PhaseRepeat?.Resemble(item.Parent.Threshold.RepeatInterval);
                subItems.Add(CreateRow(d.PhaseThresh?.ToString(), d.PhaseThresh));
                subItems.Add(CreateRow(d.PhaseRepeat?.ToString(), d.PhaseRepeat));
            }
            else
            {
                subItems.Add(CreateRow(item.Parent.Threshold.RepeatInterval.ToString(), item.Parent.Threshold.RepeatInterval));
            }
            subItems.Add(CreateRow(item.Remains.ToString(), item.Remains));
            subItems.Add(CreateRow(item.Parent.LastPerformance?.OnLifelength.ToString(), item.Parent.LastPerformance));
            subItems.Add(CreateRow(item.KitsToString, item.Kits?.Count));
            subItems.Add(CreateRow(manHours.ToString(), manHours));
            subItems.Add(CreateRow(cost.ToString(), cost));
            subItems.Add(CreateRow("", ""));
            subItems.Add(CreateRow("", ""));
            subItems.Add(CreateRow(item.Parent.SmartCoreObjectType.ToString(), item.Parent.SmartCoreObjectType));
            subItems.Add(CreateRow(item.ATAChapter?.ToString(), item.ATAChapter));
            subItems.Add(CreateRow(timesString, times));
            subItems.Add(CreateRow(item.MaintenanceCheck != null ? item.MaintenanceCheck.ToString() : "", item.MaintenanceCheck));
            subItems.Add(CreateRow(author, author));

            return(subItems);
        }
Esempio n. 17
0
        /// <summary>
        /// Вернет пакет чеков заданного типа, которые хотя бы раз должны быть выполнены до заданного ресурса
        /// Исключит из пакета те чеки, которые по группе выполнения будут совпадать с выполненными чеками
        /// </summary>
        private static MaintenanceCheckGroupByType GetCheckPacketBySource(List <MaintenanceCheckGroupByType> groupChecks,
                                                                          int?lifeLenghtResource,
                                                                          int?minStep, MaintenanceCheck lastComplianceCheck)
        {
            if (lifeLenghtResource == null ||
                lifeLenghtResource == 0 ||
                groupChecks == null ||
                minStep == null)
            {
                return(null);
            }
            int intervalGroupNum, countCompliance;
            MaintenanceCheckGroupByType group = new MaintenanceCheckGroupByType(groupChecks[0].Checks[0].Schedule);
            //список чеков, с которым в последствии будет производится сравнения на группу последнего выполнения

            //Вычисление разницы ресурсов
            int differentOfSource = lifeLenghtResource.Value -
                                    Convert.ToInt32(lastComplianceCheck.LastPerformance.OnLifelength.Days);
            //Вычисление количества просроченных групп
            int countOfOverdueGroup = differentOfSource / minStep.Value;
            //Вычисление максимального ресурса
            int maxSource = (lastComplianceCheck.LastPerformance.NumGroup + countOfOverdueGroup) *
                            Convert.ToInt32(lastComplianceCheck.Interval.Hours);

            //Максимальный ресурс и дальшенйшие вычисления производятся по часам,
            //т.к. их значение более точно, чем значение дней

            //Формирование пакета чеков
            foreach (MaintenanceCheckGroupByType groupCheck in groupChecks)
            {
                foreach (MaintenanceCheck check in groupCheck.Checks)
                {
                    //Вычисление количества, сколько раз должен выполнится чек
                    countCompliance =
                        (maxSource -
                         (maxSource % Convert.ToInt32(check.Interval.Hours))) /
                        Convert.ToInt32(check.Interval.Hours);
                    if (countCompliance != 0)
                    {
                        //чек выолняется хотя бы раз до заданного ресурса
                        //вычисление группы, на которой должен выполнится чек
                        intervalGroupNum =
                            (maxSource -
                             (maxSource % Convert.ToInt32(check.Interval.Hours))) /
                            Convert.ToInt32(lastComplianceCheck.Interval.Hours);
                        //включение чека в пакет
                        check.ComplianceGroupNum = intervalGroupNum;
                        group.Checks.Add(check);
                    }
                }
            }

            if (group.Checks.Count == 0)
            {
                return(null);
            }
            //исключение из пакета тех чеков, чья группа выполнения совпадает
            //с группой последнего выполнения заданого чека
            foreach (MaintenanceCheck maintenanceCheck in group.Checks)
            {
                if (maintenanceCheck.LastPerformance != null &&
                    maintenanceCheck.LastPerformance.NumGroup == maintenanceCheck.ComplianceGroupNum)
                {
                    group.Checks.Remove(maintenanceCheck);
                }
            }
            //заполнение дополнительных данных по группе выполнения
            differentOfSource                    -= differentOfSource % Convert.ToInt32(lastComplianceCheck.Interval.Days);
            group.GroupComplianceNum              = lastComplianceCheck.LastPerformance.NumGroup + countOfOverdueGroup;
            group.GroupComplianceDate             = lastComplianceCheck.LastPerformance.RecordDate.AddDays(differentOfSource);
            group.GroupComplianceLifelength       = new Lifelength(lastComplianceCheck.LastPerformance.OnLifelength);
            group.GroupComplianceLifelength.Days += differentOfSource;
            return(group);
        }
Esempio n. 18
0
        protected override void SortItems(int columnIndex)
        {
            if (OldColumnIndex != columnIndex)
            {
                SortMultiplier = -1;
            }
            if (SortMultiplier == 1)
            {
                SortMultiplier = -1;
            }
            else
            {
                SortMultiplier = 1;
            }
            itemsListView.Items.Clear();
            OldColumnIndex = columnIndex;

            List <ListViewItem> resultList = new List <ListViewItem>();

            if (columnIndex != 6)
            {
                //SetGroupsToItems(columnIndex);

                //ListViewItemList.Sort(new BaseListViewComparer(columnIndex, SortMultiplier));
                //добавление остальных подзадач
                foreach (ListViewItem item in ListViewItemList)
                {
                    resultList.Add(item);
                    NextPerformance np = (NextPerformance)item.Tag;
                    //if (np.Parent is MaintenanceCheck && ((MaintenanceCheck)np.Parent).Grouping)
                    //{
                    //	MaintenanceCheck mc = (MaintenanceCheck)np.Parent;
                    //	List<MaintenanceNextPerformance> performances = mc.GetPergormanceGroupWhereCheckIsSenior();
                    //	if (performances == null || performances.Count == 1) continue;
                    //	for (int i = 1; i < performances.Count; i++)
                    //	{
                    //		ListViewItem temp = new ListViewItem(GetListViewSubItems(performances[i]), null)
                    //		{
                    //			Tag = performances[i],
                    //			Group = item.Group
                    //		};
                    //		resultList.Add(temp);
                    //	}
                    //}
                    if (np.Parent is MaintenanceDirective)
                    {
                        var directive = (MaintenanceDirective)np.Parent;
                        if (directive.MtopNextPerformances == null || directive.MtopNextPerformances.Count <= 1)
                        {
                            continue;
                        }
                        for (int i = 1; i < directive.MtopNextPerformances.Count; i++)
                        {
                            ListViewItem temp = new ListViewItem(GetListViewSubItems(directive.MtopNextPerformances[i]), null)
                            {
                                Tag   = directive.MtopNextPerformances[i],
                                Group = item.Group
                            };
                            resultList.Add(temp);
                        }
                    }
                    else
                    {
                        //первая подзадача описывает саму родитескую задачу, повторно ее добавлять ненадо
                        if (np.Parent.NextPerformances == null || np.Parent.NextPerformances.Count <= 1)
                        {
                            continue;
                        }
                        for (int i = 1; i < np.Parent.NextPerformances.Count; i++)
                        {
                            ListViewItem temp = new ListViewItem(GetListViewSubItems(np.Parent.NextPerformances[i]), null)
                            {
                                Tag   = np.Parent.NextPerformances[i],
                                Group = item.Group
                            };
                            resultList.Add(temp);
                        }
                    }
                }
            }
            else
            {
                foreach (ListViewItem item in ListViewItemList)
                {
                    resultList.Add(item);
                    NextPerformance np = (NextPerformance)item.Tag;
                    if (np.Parent is MaintenanceCheck && ((MaintenanceCheck)np.Parent).Grouping)
                    {
                        MaintenanceCheck mc = (MaintenanceCheck)np.Parent;
                        List <MaintenanceNextPerformance> performances = mc.GetPergormanceGroupWhereCheckIsSenior();
                        if (performances == null || performances.Count == 1)
                        {
                            continue;
                        }
                        for (int i = 1; i < performances.Count; i++)
                        {
                            ListViewItem temp = new ListViewItem(GetListViewSubItems(performances[i]), null)
                            {
                                Tag   = performances[i],
                                Group = item.Group
                            };
                            resultList.Add(temp);
                        }
                    }
                    else
                    {
                        //первая подзадача описывает саму родитескую задачу, повторно ее добавлять ненадо
                        if (np.Parent.NextPerformances == null || np.Parent.NextPerformances.Count <= 1)
                        {
                            continue;
                        }
                        for (int i = 1; i < np.Parent.NextPerformances.Count; i++)
                        {
                            ListViewItem temp = new ListViewItem(GetListViewSubItems(np.Parent.NextPerformances[i]), null)
                            {
                                Tag = np.Parent.NextPerformances[i],
                            };
                            resultList.Add(temp);
                        }
                    }
                }

                resultList.Sort(new DirectiveListViewComparer(columnIndex, SortMultiplier));
                itemsListView.Groups.Clear();
                //foreach (ListViewItem item in resultList)
                //{
                //    DateTime date = new DateTime(1950, 1, 1);
                //    if (item.Tag is NextPerformance)
                //    {
                //        NextPerformance np = (NextPerformance)item.Tag;
                //        if (np.PerformanceDate != null)
                //            date = np.PerformanceDate.Value.Date;
                //    }

                //    string temp = date.Date > new DateTime(1950, 1, 1).Date ? SmartCore.Auxiliary.Convert.GetDateFormat(date.Date) : "";
                //    itemsListView.Groups.Add(temp, temp);
                //    item.Group = itemsListView.Groups[temp];
                //}

                //Группировка элементов по датам выполнения
                IEnumerable <IGrouping <DateTime, ListViewItem> > groupedItems =
                    resultList.Where(lvi => lvi.Tag != null &&
                                     lvi.Tag is NextPerformance)
                    .GroupBy(lvi => Convert.ToDateTime(((NextPerformance)lvi.Tag).PerformanceDate).Date);
                foreach (var groupedItem in groupedItems)
                {
                    //Собрание всех выполнений на данную дату в одну коллекцию
                    var performances = groupedItem.Select(lvi => lvi.Tag as NextPerformance).ToList();

                    var temp = ListViewGroupHelper.GetGroupStringByPerformanceDate(performances, groupedItem.Key.Date);

                    itemsListView.Groups.Add(temp, temp);
                    foreach (var item in groupedItem)
                    {
                        item.Group = itemsListView.Groups[temp];
                    }
                }
                //SetGroupsToItems();
            }

            SetGroupsToItems(resultList, columnIndex);
            itemsListView.Items.AddRange(resultList.OrderBy(lvi => Convert.ToDateTime(((NextPerformance)lvi.Tag).PerformanceDate).Date).ToArray());
        }
Esempio n. 19
0
 public List <MaintenanceCheckComplianceGroup> GetGroupsWhereCheckIsSenior(MaintenanceCheck check)
 {
     return(_checkGroupItems.Where(g => g.GetMaxIntervalCheck() != null && g.GetMaxIntervalCheck() == check).ToList());
 }
Esempio n. 20
0
        /// <summary>
        /// Возвращает DisplayerParams для MaintenanceCheck
        /// </summary>
        public static DisplayerParams GetMaintenanceCheckScreen(MaintenanceCheck maintenanceCheck)
        {
            string pagecaption = maintenanceCheck.ParentAircraft.RegistrationNumber + ". Maintenance Program";

            return(DisplayerParams.CreateScreenParams(ReflectionTypes.DisplayInNew, pagecaption, new MaintenanceScreen(maintenanceCheck.ParentAircraft)));
        }
Esempio n. 21
0
 ///<summary>
 ///</summary>
 public CompliancePDFItem(MaintenanceCheck maintenanceCheck)
     : this()
 {
     _currentCheck = maintenanceCheck;
     UpdateInformation();
 }