Пример #1
0
        protected virtual void AddForecastToDataSet(MaintenanceProgramDataSet destinationDataSet)
        {
            var avgUtilizationCycles = _forecastData != null ? _forecastData.AverageUtilization.Cycles : 0;
            var avgUtilizationHours  = _forecastData != null ? _forecastData.AverageUtilization.Hours : 0;
            var avgUtilizationType   = _forecastData != null
                                            ? _forecastData.AverageUtilization.SelectedInterval.ToString()
                                            : "";

            var forecastCycles = _forecastData != null
                ? _forecastData.ForecastLifelength.Cycles != null ? (int)_forecastData.ForecastLifelength.Cycles : 0
                : 0;
            var forecastHours = _forecastData != null
                ? _forecastData.ForecastLifelength.Hours != null ? (int)_forecastData.ForecastLifelength.Hours : 0
                : 0;
            var forecastDays = _forecastData != null
                ? _forecastData.ForecastLifelength.Days != null ? (int)_forecastData.ForecastLifelength.Days : 0
                : 0;
            var forecastDate = _forecastData != null
                ? _forecastData.ForecastDate.ToString(new GlobalTermsProvider()["DateFormat"].ToString())
                : "";

            destinationDataSet.ForecastTable.AddForecastTableRow(avgUtilizationCycles,
                                                                 avgUtilizationHours,
                                                                 avgUtilizationType,
                                                                 forecastCycles,
                                                                 forecastHours,
                                                                 forecastDays,
                                                                 forecastDate);
        }
Пример #2
0
        /// <summary>
        /// Добавление дополнительной информации
        /// </summary>
        /// <param name="destinationDateSet"></param>
        private void AddAdditionalDataToDataSet(MaintenanceProgramDataSet destinationDateSet)
        {
            string reportFooter         = new GlobalTermsProvider()["ReportFooter"].ToString();
            string reportFooterPrepared = new GlobalTermsProvider()["ReportFooterPrepared"].ToString();
            string reportFooterLink     = new GlobalTermsProvider()["ProductWebsite"].ToString();

            destinationDateSet.AdditionalDataTAble.AddAdditionalDataTAbleRow(_reportTitle, OperatorLogotype, _filterSelection?"Schedule":"Unschedule", DateAsOf, reportFooter, reportFooterPrepared, reportFooterLink);
        }
Пример #3
0
        /// <summary>
        /// Построить источник данных (DataSet) для вывода в отчет
        /// </summary>
        /// <returns></returns>
        public virtual MaintenanceProgramDataSet GenerateDataSet()
        {
            MaintenanceProgramDataSet dataset = new MaintenanceProgramDataSet();

            AddAircraftToDataset(dataset);
            AddDirectivesToDataSet(dataset);
            AddAdditionalDataToDataSet(dataset);
            AddForecastToDataSet(dataset);
            return(dataset);
        }
Пример #4
0
        /// <summary>
        /// Добавляется элемент в таблицу данных
        /// </summary>
        /// <param name="destinationDataSet">Таблица, в которую добавляется элемент</param>
        private void AddAircraftToDataset(MaintenanceProgramDataSet destinationDataSet)
        {
            if (_reportedAircraft == null)
            {
                return;
            }

            var reportAircraftLifeLenght = GlobalObjects.CasEnvironment.Calculator.GetCurrentFlightLifelength(_reportedAircraft);

            var    manufactureDate    = _reportedAircraft.ManufactureDate.ToString(new GlobalTermsProvider()["DateFormat"].ToString());
            var    serialNumber       = ReportedAircraft.SerialNumber;
            var    model              = _reportedAircraft.Model.ToString();
            var    sinceNewHours      = reportAircraftLifeLenght.Hours != null ? (int)reportAircraftLifeLenght.Hours : 0;
            var    sinceNewCycles     = reportAircraftLifeLenght.Cycles != null ? (int)reportAircraftLifeLenght.Cycles : 0;
            var    registrationNumber = ReportedAircraft.RegistrationNumber;
            int    averageUtilizationHours;
            int    averageUtilizationCycles;
            string averageUtilizationType;

            if (_forecastData == null)
            {
                var aircraftFrame      = GlobalObjects.ComponentCore.GetBaseComponentById(_reportedAircraft.AircraftFrameId);
                var averageUtilization = GlobalObjects.AverageUtilizationCore.GetAverageUtillization(aircraftFrame);

                averageUtilizationHours  = (int)averageUtilization.Hours;
                averageUtilizationCycles = (int)averageUtilization.Cycles;
                averageUtilizationType   = averageUtilization.SelectedInterval == UtilizationInterval.Dayly ? "Day" : "Month";
            }
            else
            {
                averageUtilizationHours  = (int)_forecastData.AverageUtilization.Hours;
                averageUtilizationCycles = (int)_forecastData.AverageUtilization.Cycles;
                averageUtilizationType   =
                    _forecastData.AverageUtilization.SelectedInterval == UtilizationInterval.Dayly ? "Day" : "Month";
            }

            var lineNumber     = (ReportedAircraft).LineNumber;
            var variableNumber = (ReportedAircraft).VariableNumber;

            destinationDataSet.AircraftDataTable.AddAircraftDataTableRow(serialNumber,
                                                                         manufactureDate,
                                                                         sinceNewHours,
                                                                         sinceNewCycles,
                                                                         registrationNumber, model, lineNumber, variableNumber,
                                                                         averageUtilizationHours, averageUtilizationCycles, averageUtilizationType);
        }
Пример #5
0
        /// <summary>
        /// Добавление директив в таблицу данных
        /// </summary>
        /// <param name="dataset">Таблица, в которую добавляются данные</param>
        protected virtual void AddDirectivesToDataSet(MaintenanceProgramDataSet dataset)
        {
            List <MaintenanceCheck>            checks = new List <MaintenanceCheck>(_reportedDirectives.ToArray());
            List <MaintenanceCheckGroupByType> groups = new List <MaintenanceCheckGroupByType>();
            int groupId = 0;

            var v = from liminationItem in checks
                    where liminationItem.Schedule == _filterSelection
                    group liminationItem by liminationItem.CheckType.FullName
                    into fileGroup
                    orderby fileGroup.Key
                    select fileGroup;

            foreach (IGrouping <string, MaintenanceCheck> grouping in v)
            {
                MaintenanceCheckGroupByType g = new MaintenanceCheckGroupByType(_filterSelection);
                groups.Add(g);
                foreach (MaintenanceCheck liminationItem in grouping)
                {
                    g.Checks.Add(liminationItem);
                    liminationItem.Tag = groupId;
                    groupId++;
                }
            }

            groups.OrderBy(g => g.MinInterval());


            int min, max, countGroups;

            for (int i = 0; i < groups.Count; i++)
            {
                if (_filterSelection)
                {
                    min = groups[i].MinInterval();
                    max = i != groups.Count - 1 ? groups[i + 1].MinInterval() : groups[i].MaxInterval();
                    //Вычисление количества групп выполнения для данного типа чеков (A,B or C)
                    countGroups = max / min;
                    //Вычисление интервала выполнения для каждой группы выполнения
                    //если интервал, на котором должен выполнится чек равени интервалу группы
                    //то чек посещается в даннуб группу выполнения
                    for (int j = 0; j < countGroups; j++)
                    {
                        int interval = min * (j + 1);
                        foreach (MaintenanceCheck liminationItem in groups[i].Checks)
                        {
                            if (interval % liminationItem.Interval.Hours == 0)
                            {
                                dataset.ItemsTable.AddItemsTableRow(interval, (int)liminationItem.Tag, liminationItem.Name, "X");
                            }
                        }
                        if (i <= 0)
                        {
                            continue;
                        }
                        //Если просматривается не базовая группа (groups[0])
                        //то в набор данных должны быть включены все предыдущие группы чеков
                        for (int k = 0; k < i; k++)
                        {
                            interval = min * (j + 1);
                            int localInterval = k != groups.Count - 1 ? groups[k + 1].MinInterval() : groups[k].MaxInterval();
                            foreach (MaintenanceCheck liminationItem in groups[k].Checks)
                            {
                                if (localInterval % liminationItem.Interval.Hours == 0)
                                {
                                    dataset.ItemsTable.AddItemsTableRow(interval, (int)liminationItem.Tag, liminationItem.Name, "X");
                                }
                                else
                                {
                                    dataset.ItemsTable.AddItemsTableRow(interval, (int)liminationItem.Tag, liminationItem.Name, "[X]");
                                }
                            }
                        }
                    }
                }
                else
                {
                    min = groups[i].MinInterval();
                    max = i != groups.Count - 1 ? groups[i + 1].MinInterval() : groups[i].MaxInterval();
                    //Вычисление количества групп выполнения для данного типа чеков (A,B or C)
                    countGroups = max / min;
                    //Вычисление интервала выполнения для каждой группы выполнения
                    //если интервал, на котором должен выполнится чек равен интервалу группы
                    //то чек посещается в данную группу выполнения
                    for (int j = 0; j < countGroups; j++)
                    {
                        int interval = min * (j + 1);

                        foreach (MaintenanceCheck liminationItem in groups[i].Checks)
                        {
                            if (interval % liminationItem.Interval.Days == 0)
                            {
                                dataset.ItemsTable.AddItemsTableRow(interval, (int)liminationItem.Tag, liminationItem.Name, "X");
                            }
                        }
                        if (i <= 0)
                        {
                            continue;
                        }
                        //Если просматривается не базовая группа (groups[0])
                        //то в набор данных должны быть включены все предыдущие группы чеков
                        for (int k = 0; k < i; k++)
                        {
                            interval = min * (j + 1);
                            int localInterval = k != groups.Count - 1 ? groups[k + 1].MinInterval() : groups[k].MaxInterval();
                            foreach (MaintenanceCheck liminationItem in groups[k].Checks)
                            {
                                if (localInterval % liminationItem.Interval.Days == 0)
                                {
                                    dataset.ItemsTable.AddItemsTableRow(interval, (int)liminationItem.Tag, liminationItem.Name, "X");
                                }
                                else
                                {
                                    dataset.ItemsTable.AddItemsTableRow(interval, (int)liminationItem.Tag, liminationItem.Name, "[X]");
                                }
                            }
                        }
                    }
                }
            }
        }