/// <summary>
        /// Получить экземпляры этого класса для определенного типа дефекта
        /// </summary>
        /// <param name="cDefect"></param>
        /// <param name="cGrConstr"></param>
        /// <returns></returns>
        internal static List <Ais7DefectParamValue> ReturnDefectParameters(int cDefect, int cGrConstr)
        {
            // Запрос получения списка параметров дефекта
            var query =
                "select * from s_defparamvalue " +
                "left outer join s_defparam on s_defparam.c_defparam=s_defparamvalue.c_defparam " +
                "left outer join s_unit_dimension on s_unit_dimension.c_unit_dimen=s_defparamvalue.c_unit_dimen " +
                $"where c_defect={cDefect} and c_gr_constr={cGrConstr} " +
                "order by c_unit_dimen, n";
            // Получения таблицы
            var reader           = SqliteReader.SelectQueryReader(query, out var conn);
            var defectParameters = new List <Ais7DefectParamValue>();

            // Пока есть строки - читаем
            if (reader != null && reader.HasRows)
            {
                while (reader.Read())
                {
                    var parameter = new Ais7DefectParamValue
                    {
                        Name     = reader.GetString(reader.GetOrdinal("N_DEFPARAM")),
                        Category = !reader.IsDBNull(reader.GetOrdinal("CATEGORY"))
                                                ? reader.GetInt16(reader.GetOrdinal("CATEGORY"))
                                                : (short)(-1),
                        CDefParam  = reader.GetInt16(reader.GetOrdinal("C_DEFPARAM")),
                        IsQual     = reader.IsDBNull(reader.GetOrdinal("C_UNIT_DIMEN")),
                        B          = !reader.IsDBNull(reader.GetOrdinal("B")) ? reader.GetInt16(reader.GetOrdinal("B")) : (short)-1,
                        D          = !reader.IsDBNull(reader.GetOrdinal("D")) ? reader.GetInt16(reader.GetOrdinal("D")) : (short)-1,
                        R          = !reader.IsDBNull(reader.GetOrdinal("R")) ? reader.GetInt16(reader.GetOrdinal("R")) : (short)-1,
                        G          = !reader.IsDBNull(reader.GetOrdinal("B")) && reader.GetBoolean(reader.GetOrdinal("B")),
                        ValueStart = !reader.IsDBNull(reader.GetOrdinal("MIN_VALUE"))
                                                ? reader.GetDouble(reader.GetOrdinal("MIN_VALUE"))
                                                : double.NaN,
                        ValueEnd = !reader.IsDBNull(reader.GetOrdinal("MAX_VALUE"))
                                                ? reader.GetDouble(reader.GetOrdinal("MAX_VALUE"))
                                                : double.NaN,
                        MinParamValue = !reader.IsDBNull(reader.GetOrdinal("MIN_V"))
                                                ? reader.GetDouble(reader.GetOrdinal("MIN_V"))
                                                : 0,
                        MaxParamValue = !reader.IsDBNull(reader.GetOrdinal("MAX_V"))
                                                ? reader.GetDouble(reader.GetOrdinal("MAX_V"))
                                                : double.MaxValue,
                        SnUnit = !reader.IsDBNull(reader.GetOrdinal("SN_UNIT_DIME"))
                                                ? reader.GetString(reader.GetOrdinal("SN_UNIT_DIME"))
                                                : null
                    };
                    parameter.B1 = parameter.B;
                    parameter.D1 = parameter.D;
                    parameter.R1 = parameter.R;
                    parameter.G1 = parameter.G;


                    defectParameters.Add(parameter);
                }
            }
            // Закрываем подключение к БД
            reader?.Close();
            conn.Close();
            return(defectParameters);
        }
Exemplo n.º 2
0
        /// <inheritdoc />
        /// <summary>
        /// Перечень конструкций для данной ноды
        /// </summary>
        /// <param name="cIsso"></param>
        /// <returns></returns>
        public override Ais7ConstrItem[] ConstrList(int cIsso)
        {
            // Если у нас нет номеров конструкций
            if (!IsForConstr)
            {
                return new Ais7ConstrItem[] { }
            }
            ;
            var ttName      = TableName;
            var cc          = new List <Ais7ConstrItem>();
            var forceToMake = false;
            var constrName  = NGrConstr;

            if (allAvailableTables.ToList().IndexOf(TableName) != -1)
            {
                ttName = "I_PS";

                constrName  = "Пролетное строение";
                forceToMake = true;
            }

            if (!forceToMake && (ParentNode == null || ParentNode.ParentNode != null))
            {
                return ParentNode != null?ParentNode.ConstrList(cIsso) : new Ais7ConstrItem[]
                {
                }
            }
            ;
            var driver                  = Ais7DataTableDriver.Create(ttName);
            SqliteConnection conn       = null;
            SqliteDataReader dataReader = null;

            try
            {
                dataReader = SqliteReader.SelectQueryReader(driver.GetSql($"c_isso={cIsso}"), out conn);

                if (!dataReader.HasRows)
                {
                    return(cc.ToArray());
                }
                while (dataReader.Read())
                {
                    cc.Add(Ais7ConstrItem.Create(constrName, dataReader.GetInt16(0)));
                }
            }
            catch (SQLiteException ex)
            {
                Debug.WriteLine($"Ошибка при получении списка конструктивов: {ex.Message}, StackTrace: {ex.StackTrace}");
            }
            finally
            {
                dataReader?.Close();
                dataReader?.Dispose();

                conn?.Close();
                conn?.Dispose();
            }

            return(cc.ToArray());
        }
        public Ais7DefectParamValue(int cDefParam)
        {
            var query = "select p.c_defparam, N_DEFPARAM, CATEGORY, case when pv.c_unit_dimen='' then 1 else 0 end as IsQual, SN_UNIT_DIME " +
                        "from S_DEFPARAM p left outer join S_DEFPARAMVALUE pv on pv.C_DEFPARAM = p.C_DEFPARAM " +
                        $"left outer join S_UNIT_DIMENSION u on u.C_UNIT_DIMEN = pv.c_unit_dimen where p.C_DEFPARAM={cDefParam} limit 1";
            var reader = SqliteReader.SelectQueryReader(query, out var conn);

            if (reader != null && reader.HasRows)
            {
                reader.Read();
                Name     = reader.GetString(reader.GetOrdinal("N_DEFPARAM"));
                Category = reader["CATEGORY"] == DBNull.Value ? (short)-1 : Convert.ToInt16(reader["CATEGORY"]);
                IsQual   = Convert.ToInt32(reader["IsQual"]) == 1;
                SnUnit   = IsQual ? "" : Convert.ToString(reader["SN_UNIT_DIME"]);
            }
            reader?.Close();
            conn.Close();
        }