示例#1
0
        private string PairProfileNameByProfileName(string profileName, out TemperatureCondition temperatureCondition)
        {
            //вычисление пары для profileName
            string result = profileName;

            switch (TemperatureConditionByProfileName(result))
            {
            case TemperatureCondition.RT:
                //меняем в profName RT на TM
                result = Regex.Replace(result, "RT", "TM", RegexOptions.IgnoreCase);
                temperatureCondition = TemperatureCondition.TM;
                break;

            case TemperatureCondition.TM:
                //меняем TM на RT
                result = Regex.Replace(result, "TM", "RT", RegexOptions.IgnoreCase);
                temperatureCondition = TemperatureCondition.RT;
                break;

            default:
                result = string.Empty;
                temperatureCondition = TemperatureCondition.None;
                break;
            }

            return(result);
        }
示例#2
0
        public DataViewModel(int RTdevID, string RTdevType, TemperatureCondition RTtemperatureCondition, int TMdevID, string TMdevType, TemperatureCondition TMtemperatureCondition) : base()
        {
            SqlConnection Connection = CreateConnection();

            this.RT = new DataTableParameters();
            this.RT.Load(Connection, RTdevID, RTdevType, RTtemperatureCondition);

            this.TM = new DataTableParameters();
            this.TM.Load(Connection, TMdevID, TMdevType, TMtemperatureCondition);
        }
示例#3
0
        private TemperatureCondition TemperatureConditionByProfileName(string profileName)
        {
            TemperatureCondition result = TemperatureCondition.None;

            if (profileName.Trim() != string.Empty)
            {
                string profileNameUpper = profileName.ToUpper();

                result = profileNameUpper.Contains("RT") ? TemperatureCondition.RT : profileNameUpper.Contains("TM") ? TemperatureCondition.TM : TemperatureCondition.None;
            }

            return(result);
        }
示例#4
0
        public void Load(SqlConnection connection, int devID, string devType, TemperatureCondition temperatureCondition, string profileID, string profileName, DateTime tsZeroTime, string groupName, string item, string code, string constructive, int averageCurrent, int deviceClass, string equipment, string user, string status, string reason)
        {
            this.Load(connection, devID, devType, temperatureCondition);

            //запоминаем идентификационную информацию
            this.DevID                = devID;
            this.ProfileName          = profileName;
            this.ProfileID            = profileID;
            this.TemperatureCondition = temperatureCondition;
            this.GroupName            = groupName;
            this.Code      = code;
            this.Equipment = equipment;
            this.User      = user;
        }
示例#5
0
        private List <DataTableParameters> ListOfDeviceParameters()
        {
            //формирует список списков параметров по текущему отображаемому списку изделий
            if (Connection.State != ConnectionState.Open)
            {
                Connection.Open();
            }

            List <DataTableParameters> result = new List <DataTableParameters>();

            try
            {
                foreach (System.Data.DataRowView drv in dgDevices.ItemsSource)
                {
                    object[] itemArray = drv.Row.ItemArray;

                    int                  devID                = DevID(itemArray);
                    string               profileID            = ProfileID(itemArray);
                    DateTime             tsZeroTime           = TsZeroTime(itemArray);
                    string               groupName            = GroupName(itemArray);
                    string               item                 = Item(itemArray);
                    string               code                 = Code(itemArray);
                    string               profileName          = ProfileName(itemArray);
                    string               deviceType           = DeviceType(itemArray);
                    string               constructive         = Constructive(itemArray);
                    int                  averageCurrent       = AverageCurrent(itemArray);
                    int                  deviceClass          = DeviceClass(itemArray);
                    string               equipment            = Equipment(itemArray);
                    string               user                 = User(itemArray);
                    string               status               = Status(itemArray);
                    string               reason               = Reason(itemArray);
                    TemperatureCondition temperatureCondition = TemperatureConditionByProfileName(profileName);

                    DataTableParameters p = new DataTableParameters();

                    result.Add(p);
                    p.Load(Connection, devID, deviceType, temperatureCondition, profileID, profileName, tsZeroTime, groupName, item, code, constructive, averageCurrent, deviceClass, equipment, user, status, reason);
                }
            }

            finally
            {
                Connection.Close();
            }

            return(result);
        }
示例#6
0
        private void BuildData()
        {
            DataRowView row = dgDevices.SelectedItem as DataRowView;

            if (row != null)
            {
                object[] itemArray = row.Row.ItemArray;

                int    selDevID   = DevID(itemArray);
                string selDevType = DeviceType(itemArray);
                TemperatureCondition selTemperatureCondition = TemperatureConditionByProfileName(ProfileName(itemArray));

                string pairProfileName;
                int    pairDevID;
                TemperatureCondition pairTemperatureCondition;

                bool foundedPair = CalcPairData(ProfileName(itemArray), GroupName(itemArray), Code(itemArray), out pairProfileName, out pairDevID, out pairTemperatureCondition);

                DataViewModel vm = null;
                switch (selTemperatureCondition)
                {
                case TemperatureCondition.RT:
                    lbRTProfileName.Content = ProfileName(itemArray);
                    vm = new DataViewModel(selDevID, selDevType, selTemperatureCondition, pairDevID, selDevType, pairTemperatureCondition);
                    lbTMProfileName.Content = foundedPair ? pairProfileName : string.Empty;
                    break;

                case TemperatureCondition.TM:
                    lbTMProfileName.Content = ProfileName(itemArray);
                    vm = new DataViewModel(pairDevID, selDevType, pairTemperatureCondition, selDevID, selDevType, selTemperatureCondition);
                    lbRTProfileName.Content = foundedPair ? pairProfileName : string.Empty;
                    break;

                case TemperatureCondition.None:
                    vm = new DataViewModel();
                    break;
                }

                this.DataContext = vm;

                //вычисляем сколько записей стоит ниже текущей выбранной
                int selectedRowNum = dgDevices.Items.IndexOf(dgDevices.SelectedItem) + 1;
                int bottomRecords  = dgDevices.Items.Count - selectedRowNum;
                lbBottomRecordCount.Content = string.Format("({0})", bottomRecords.ToString());
            }
        }
示例#7
0
        public void Paint(Excel.Application exelApp, Excel.Worksheet sheet, int rowNumBeg, int rowNumEnd, int colunmBeg, int columnEnd, TemperatureCondition temperatureCondition)
        {
            if ((exelApp != null) || (sheet != null))
            {
                const int xlSolid     = 1;
                const int xlAutomatic = -4105;

                const int xlThemeColorAccent1 = 5;
                const int xlThemeColorAccent2 = 6;
                const int xlThemeColorDark1   = 1;

                int color;

                switch (temperatureCondition)
                {
                case TemperatureCondition.RT:
                    color = xlThemeColorAccent1;
                    break;

                case TemperatureCondition.TM:
                    color = xlThemeColorAccent2;
                    break;

                default:
                    color = xlThemeColorDark1;
                    break;
                }

                //вычисляем адреса начала и конца выведенного блока данных по изделию
                string addrBeg = xlRCtoA1(rowNumBeg, colunmBeg);
                string addrEnd = xlRCtoA1(rowNumEnd, columnEnd);

                Range range = exelApp.get_Range(addrBeg, addrEnd);

                range.Interior.Pattern             = xlSolid;
                range.Interior.PatternColorIndex   = xlAutomatic;
                range.Interior.ThemeColor          = color;
                range.Interior.TintAndShade        = 0.799981688894314;
                range.Interior.PatternTintAndShade = 0;
            }
        }
示例#8
0
        private void LoadConditions(SqlConnection connection, int devID, string deviceType, TemperatureCondition temperatureCondition)
        {
            //избирательная (в зависимости от типа теста) загрузка значений conditions для принятого devID
            string SQLText = "SELECT TT.TEST_TYPE_NAME, C.COND_NAME, PC.VALUE" +
                             " FROM PROF_COND AS PC" +
                             "  INNER JOIN PROFILES AS PR ON (PC.PROF_ID=PR.PROF_ID)" +
                             "  INNER JOIN DEVICES AS D ON ((D.PROFILE_ID=PR.PROF_GUID) AND" +
                             "                              (D.DEV_ID=@DevID))" +
                             "  INNER JOIN PROF_TEST_TYPE AS PTT ON (PC.PROF_TESTTYPE_ID=PTT.PTT_ID)" +
                             "  INNER JOIN TEST_TYPE AS TT ON (PTT.TEST_TYPE_ID=TT.TEST_TYPE_ID)" +
                             "  INNER JOIN CONDITIONS C ON (PC.COND_ID=C.COND_ID)" +
                             " ORDER BY PTT.PTT_ID";

            SqlCommand   command = new SqlCommand(SQLText, connection);
            SqlParameter DevID   = new SqlParameter("DevID", SqlDbType.Int);

            DevID.Value = devID;
            command.Parameters.Add(DevID);

            if (connection.State != ConnectionState.Open)
            {
                connection.Open();
            }

            try
            {
                SqlDataReader reader = command.ExecuteReader();

                while (reader.Read())
                {
                    //запоминаем тип теста
                    int index = reader.GetOrdinal("TEST_TYPE_NAME");
                    var z     = reader.GetValue(index);
                    TestParametersType testType;

                    if (TryParseTestParametersType(z.ToString(), out testType))
                    {
                        //получаем список условий, которые надо показать
                        List <string> conditions = ConditionNamesByDeviceType(testType, deviceType, temperatureCondition);

                        if ((conditions != null) && (conditions.Count > 0))
                        {
                            //запоминаем имя условия
                            index = reader.GetOrdinal("COND_NAME");
                            z     = reader.GetValue(index);
                            string conditionName = z.ToString().TrimEnd();

                            //проверяем вхождение текущего условия в список условий, который требуется показать для текущего типа теста
                            if (conditions.IndexOf(conditionName) != -1)
                            {
                                //формируем столбец
                                int columnIndex = this.NewColumn(ConditionName(conditionName));

                                //запоминаем значение условия
                                index = reader.GetOrdinal("VALUE");
                                z     = reader.GetValue(index);
                                string v = z.ToString();

                                double d;
                                switch (double.TryParse(v, out d))
                                {
                                case true:
                                    string s = (Math.Abs(d % 1) <= (Double.Epsilon * 100)) ? ((int)d).ToString() : d.ToString("0.0");
                                    this.Rows[0][columnIndex] = s;
                                    break;

                                default:
                                    this.Rows[0][columnIndex] = v;
                                    break;
                                }

                                //ед. измерения у условия в БД нет - используем свой словарь
                                this.Rows[1][columnIndex] = ConditionUnitMeasure(conditionName);
                            }
                        }
                    }
                }
            }

            finally
            {
                connection.Close();
            }
        }
示例#9
0
        private List <string> ConditionNamesByDeviceType(TestParametersType testType, string deviceType, TemperatureCondition temperatureCondition)
        {
            List <string> result = null;

            if ((deviceType != null) && (deviceType != string.Empty))
            {
                result = new List <string>();

                string firstSimbol = deviceType.Substring(0, 1).ToUpper();

                switch (testType)
                {
                case TestParametersType.StaticLoses:
                    //тиристор, диод
                    if ((firstSimbol == "Т") || (firstSimbol == "Д"))
                    {
                        if (temperatureCondition == TemperatureCondition.RT)
                        {
                            //комнатная температура
                            result.Add("SL_ITM");     //в БД это же условие используется как IFM
                        }

                        if (temperatureCondition == TemperatureCondition.TM)
                        {
                            //горячее измерение
                            result.Add("SL_ITM");     //в БД это же условие используется как IFM
                        }
                    }
                    break;

                case TestParametersType.Bvt:
                    //тиристор
                    if (firstSimbol == "Т")
                    {
                        if (temperatureCondition == TemperatureCondition.RT)
                        {
                            //комнатная температура
                            //временно нет
                        }

                        if (temperatureCondition == TemperatureCondition.TM)
                        {
                            //горячее измерение
                            result.Add("BVT_VD");
                            result.Add("BVT_VR");
                        }
                    }

                    //диод
                    if (firstSimbol == "Д")
                    {
                        if (temperatureCondition == TemperatureCondition.RT)
                        {
                            //комнатная температура
                            //временно нет
                        }

                        if (temperatureCondition == TemperatureCondition.TM)
                        {
                            //горячее измерение
                            result.Add("BVT_VR");
                        }
                    }

                    break;

                case TestParametersType.Gate:
                case TestParametersType.Commutation:
                case TestParametersType.Clamping:
                case TestParametersType.Dvdt:
                case TestParametersType.ATU:
                case TestParametersType.RAC:
                case TestParametersType.IH:
                case TestParametersType.RCC:
                case TestParametersType.Sctu:
                    break;

                case TestParametersType.QrrTq:
                    if (firstSimbol == "Т")
                    {
                        //тиристор
                        if (temperatureCondition == TemperatureCondition.RT)
                        {
                            //комнатная температура
                            //измеряется только в TM
                        }

                        if (temperatureCondition == TemperatureCondition.TM)
                        {
                            //горячее измерение
                            result.Add("QrrTq_DCFallRate");     //скорость спада
                        }
                    }

                    if (firstSimbol == "Д")
                    {
                        //диод
                        if (temperatureCondition == TemperatureCondition.RT)
                        {
                            //комнатная температура
                            //измеряется только в TM
                        }

                        if (temperatureCondition == TemperatureCondition.TM)
                        {
                            //горячее измерение
                            result.Add("QrrTq_DCFallRate");     //скорость спада
                        }
                    }

                    break;
                }
            }

            return(result);
        }
示例#10
0
 public void Load(SqlConnection connection, int devID, string devType, TemperatureCondition temperatureCondition)
 {
     this.LoadConditions(connection, devID, devType, temperatureCondition);
     this.LoadMeasuredParameters(connection, devID);
 }
示例#11
0
        private bool CalcPairData(string profName, string GroupName, string Code, out string ProfileName, out int devID, out TemperatureCondition temperatureCondition)
        {
            ProfileName = this.PairProfileNameByProfileName(profName, out temperatureCondition);
            string profileName = ProfileName;

            DataView dv = (DataView)dgDevices.ItemsSource;

            //ищем в dv первую попавшуюся запись с вычисленным кодом профиля profileName, номером ПЗ GroupName и номером ГП (ППЭ) Code
            var results = from DataRowView rowView in dv
                          where (
                (rowView.Row.Field <string>("PROF_NAME").ToUpper() == profileName.ToUpper()) &&
                (rowView.Row.Field <string>("GROUP_NAME") == GroupName) &&
                (rowView.Row.Field <string>("CODE") == Code)
                )
                          select rowView.Row;

            DataRow row = results.FirstOrDefault();

            switch (row == null)
            {
            case true:
                //ничего не нашли
                devID = -1;
                return(false);

            default:
                devID = row.Field <int>("DEV_ID");
                return(true);
            }
        }