Beispiel #1
0
        /// <summary>
        /// Расчитать выходные-нормативные значения для задачи "Расчет ТЭП"
        ///  , сохранить значения во временной таблице для возможности предварительного просмотра результата
        /// </summary>
        public void Calculate(TaskCalculate.TYPE type)
        {
            int err               = -1
            , iRegDbConn          = -1;
            DataTable tableOrigin = null
            , tableCalcRes        = null;

            TaskTepCalculate.ListDATATABLE listDataTables = null;

            // регистрация соединения с БД
            RegisterDbConnection(out iRegDbConn);

            if (!(iRegDbConn < 0))
            {
                switch (IdTask)
                {
                case ID_TASK.TEP:
                    // подготовить таблицы для расчета
                    listDataTables = prepareTepCalculateValues(type, out err);
                    if (err == 0)
                    {
                        // произвести вычисления
                        switch (type)
                        {
                        case TaskCalculate.TYPE.OUT_TEP_NORM_VALUES:
                            tableOrigin  = listDataTables.FindDataTable(TaskCalculate.INDEX_DATATABLE.OUT_NORM_VALUES);
                            tableCalcRes = (m_taskCalculate as TaskTepCalculate).CalculateNormative(listDataTables);
                            break;

                        case TaskCalculate.TYPE.OUT_VALUES:
                            tableCalcRes = (m_taskCalculate as TaskTepCalculate).CalculateMaket(listDataTables);
                            break;

                        default:
                            break;
                        }
                        // сохранить результаты вычисления
                        saveResult(tableOrigin, tableCalcRes, out err);
                    }
                    else
                    {
                        Logging.Logg().Error(@"HandlerDbTaskCalculate::Calculate () - при подготовке данных для расчета...", Logging.INDEX_MESSAGE.NOT_SET);
                    }
                    break;

                default:
                    Logging.Logg().Error(@"HandlerDbTaskCalculate::Calculate () - неизвестный тип задачи расчета...", Logging.INDEX_MESSAGE.NOT_SET);
                    break;

                case ID_TASK.AUTOBOOK:

                    break;
                }
            }
            else
            {
                Logging.Logg().Error(@"HandlerDbTaskCalculate::Calculate () - при регистрации соединения...", Logging.INDEX_MESSAGE.NOT_SET);
            }

            // отмена регистрации БД - только, если регистрация произведена в текущем контексте
            if (!(iRegDbConn > 0))
            {
                UnRegisterDbConnection();
            }
            else
            {
                ;
            }
        }
Beispiel #2
0
        /// <summary>
        /// Подготовить таблицы для проведения расчета
        /// </summary>
        /// <param name="err">Признак ошибки при выполнении функции</param>
        /// <returns>Массив таблиц со значенями для расчета</returns>
        private TaskTepCalculate.ListDATATABLE prepareTepCalculateValues(TaskCalculate.TYPE type, out int err)
        {
            TaskTepCalculate.ListDATATABLE listRes = new TaskTepCalculate.ListDATATABLE();
            err = -1;

            //long idSession = -1;
            DataTable tableVal = null;

            if (isRegisterDbConnection == true)
            {
                // проверить наличие сессии
                if (_Session.m_Id > 0)
                {
                    // получить таблицу со значеняими нормативных графиков
                    tableVal = GetDataTable(INDEX_DBTABLE_NAME.FTABLE, out err);
                    listRes.Add(new TaskTepCalculate.DATATABLE()
                    {
                        m_indx = TaskTepCalculate.INDEX_DATATABLE.FTABLE, m_table = tableVal.Copy()
                    });
                    // получить описание входных парметров в алгоритме расчета
                    tableVal = Select(GetQueryParameters(TaskCalculate.TYPE.IN_VALUES), out err);
                    listRes.Add(new TaskTepCalculate.DATATABLE()
                    {
                        m_indx = TaskTepCalculate.INDEX_DATATABLE.IN_PARAMETER, m_table = tableVal.Copy()
                    });
                    // получить входные значения для сессии
                    tableVal = GetValuesVar(TaskCalculate.TYPE.IN_VALUES, out err);
                    listRes.Add(new TaskTepCalculate.DATATABLE()
                    {
                        m_indx = TaskTepCalculate.INDEX_DATATABLE.IN_VALUES, m_table = tableVal.Copy()
                    });

                    if (IdTask == ID_TASK.TEP)
                    {
                        // получить описание выходных-нормативных парметров в алгоритме расчета
                        tableVal = Select(GetQueryParameters(TaskCalculate.TYPE.OUT_TEP_NORM_VALUES), out err);
                        listRes.Add(new TaskTepCalculate.DATATABLE()
                        {
                            m_indx = TaskTepCalculate.INDEX_DATATABLE.OUT_NORM_PARAMETER, m_table = tableVal.Copy()
                        });
                        // получить выходные-нормативные значения для сессии
                        tableVal = GetValuesVar(TaskCalculate.TYPE.OUT_TEP_NORM_VALUES, out err);
                        listRes.Add(new TaskTepCalculate.DATATABLE()
                        {
                            m_indx = TaskTepCalculate.INDEX_DATATABLE.OUT_NORM_VALUES, m_table = tableVal.Copy()
                        });
                    }
                    else
                    {
                        ;
                    }

                    if (type == TaskCalculate.TYPE.OUT_VALUES)
                    {// дополнительно получить описание выходных-нормативных параметров в алгоритме расчета
                        tableVal = Select(GetQueryParameters(TaskCalculate.TYPE.OUT_VALUES), out err);
                        listRes.Add(new TaskTepCalculate.DATATABLE()
                        {
                            m_indx = TaskTepCalculate.INDEX_DATATABLE.OUT_PARAMETER, m_table = tableVal.Copy()
                        });
                        // получить выходные значения для сессии
                        tableVal = GetValuesVar(TaskCalculate.TYPE.OUT_VALUES, out err);
                        listRes.Add(new TaskTepCalculate.DATATABLE()
                        {
                            m_indx = TaskTepCalculate.INDEX_DATATABLE.OUT_VALUES, m_table = tableVal.Copy()
                        });
                    }
                    else
                    {
                        ;
                    }
                }
                else
                {
                    Logging.Logg().Error(@"HandlerDbTaskCalculate::prepareTepCalculateValues () - при получении идентифкатора сессии расчета...", Logging.INDEX_MESSAGE.NOT_SET);
                }
            }
            else
            {
                ; // ошибка при регистрации соединения с БД
            }
            return(listRes);
        }