private List <OneRow> GetRandomData(List <OneRow> samples, Dictionary <int, string> parameterNames, int defectParameterID) { List <OneRow> trainData = new List <OneRow>(); int countOfRandomData = GetCount(samples.Count); List <int> trainItemID = new List <int>(); Random rand = new Random((int)DateTime.Now.Ticks); for (int i = 0; i < countOfRandomData;) { int j = rand.Next(0, samples.Count); while (!trainItemID.Contains(j)) { trainItemID.Add(j); i++; } } trainItemID.Sort(); foreach (var row in trainItemID) { OneRow findRowWithParameters = new OneRow(); findRowWithParameters.Date = samples[row].Date; findRowWithParameters.Output[defectParameterID] = samples[row].Output[defectParameterID]; findRowWithParameters.OutputBool[defectParameterID] = samples[row].OutputBool[defectParameterID]; foreach (KeyValuePair <int, string> parameterName in parameterNames) { findRowWithParameters.Input[parameterName.Key] = samples[row].Input[parameterName.Key]; } trainData.Add(findRowWithParameters); } return(trainData); }
public MnemonicScheme() { //Выбор языка меню if (!string.IsNullOrEmpty(Properties.Settings.Default.Languages)) { System.Threading.Thread.CurrentThread.CurrentUICulture = System.Globalization.CultureInfo.GetCultureInfo(Properties.Settings.Default.Languages); System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.GetCultureInfo(Properties.Settings.Default.Languages); } InitializeComponent(); //TODO: Если данных нету в файле будет ошибка. Нужно сделать try/catch. Когда будет не лень. if (TrainData.Train.Count != 0) { int parameterID = new int(); //Считываем первый элемент OneRow sample = TrainData.Train.First(); // Обращение к первому элементу коллекции (В будущем по времени будем искать -- онлайн) TextBoxFeeling(sample, parameterID); // заполнение значений в текстбоксах текущими значениями технологических параметров parameterID = FindIDInDictionary(OPC_IA_shnek_K02.Name); // Поиск параметра в локальной базе данных // OPC_IA_shnek_K02.Text = Convert.ToString(sample.Input[parameterID]) + ConvertName(OPC_IA_shnek_K02.Name); parameterID = FindIDInDictionary(OPC_I_voronka_K02.Name); OPC_I_voronka_K02.Text = Convert.ToString(sample.Input[parameterID]) + ConvertName(OPC_I_voronka_K02.Name); parameterID = FindIDInDictionary(OPC_V_shnek_K02.Name); OPC_V_shnek_K02.Text = Convert.ToString(sample.Input[parameterID]) + ConvertName(OPC_V_shnek_K02.Name); parameterID = FindIDInDictionary(OPC_V_voronka_K02.Name); OPC_V_voronka_K02.Text = Convert.ToString(sample.Input[parameterID]) + ConvertName(OPC_V_voronka_K02.Name); CalculateCP(); } else { MessageBox.Show(Localization.MyStrings.DataNotGiven); } }
public ManualUpdateSTK(string[] STKData, int Year) { List <STKDB> NewSTKManual = new List <STKDB>(); foreach (string OneRow in STKData) { string[] ToAdd = OneRow.Split('\t'); if (ToAdd.Length != 1 && ToAdd.Length == 4) { var NewRow = new STKDB { ANC = ToAdd[0], Description = ToAdd[1], IDCO = ToAdd[2], Year = Year, Month = 0, Day = 0, Value = Convert.ToDouble(ToAdd[3]), }; NewSTKManual.Add(NewRow); } } if (NewSTKManual != null) { STKController.AddManualUpdate(NewSTKManual); } }
public ActionResult DoBet(OneRow row) { if (row != null) { ViewBag.Title = "Ставка"; return(View(row)); } else { return(HttpNotFound()); } }
private void GetPoints(ref decimal pointX, OneRow data, ref decimal pointY) { foreach (var item in ListDelete.Items) { int parameterID = XMLWork.FindIDWithName(item.ToString(), Properties.Settings.Default.Languages); pointX = pointX * data.Input[parameterID]; //234 232 } foreach (var item in ListDeleteError.Items) { int parameterID = XMLWork.FindIDWithName(item.ToString(), Properties.Settings.Default.Languages); pointY = pointY * data.Input[parameterID]; //234 232 } }
public void NewTree(TreeNode root, OneRow item, Dictionary <string, Tuple <decimal, decimal> > l) { if (root.attribute.values != null) { for (int i = 0; i < root.attribute.values.Count; i++) { if ((root.attribute.values[i].Item1 <= item.Input[root.attribute.AttributeName]) && ((root.attribute.values[i].Item2) >= item.Input[root.attribute.AttributeName])) { var borderValues = new Tuple <decimal, decimal>(root.attribute.values[i].Item1, root.attribute.values[i].Item2); l.Add(root.attributeName, borderValues); TreeNode childNode = root.getChildByBranchName(root.attribute.values[i]); NewTree(childNode, item, l); } } } }
public void Tree(TreeNode root, OneRow item, ref int positive) { if (root.attribute.values != null) { for (int i = 0; i < root.attribute.values.Count; i++) { if ((root.attribute.values[i].Item1 <= item.Input[root.attribute.AttributeName]) && ((root.attribute.values[i].Item2) >= item.Input[root.attribute.AttributeName])) { TreeNode childNode = root.getChildByBranchName(root.attribute.values[i]); Tree(childNode, item, ref positive); } } } else if (root.attribute.values == null) { if ((bool)root.attribute.LabelName == item.OutputBool[0]) { positive = positive + 1; } } }
public void TreeWithAddParameter(TreeNode root, OneRow item, List <string> parameters) { try { if (root.attribute.values != null) { for (int i = 0; i < root.attribute.values.Count; i++) { if ((root.attribute.values[i].Item1 <= item.Input[root.attribute.AttributeName]) && ((root.attribute.values[i].Item2) >= item.Input[root.attribute.AttributeName])) { parameters.Add(root.attributeName); TreeNode childNode = root.getChildByBranchName(root.attribute.values[i]); TreeWithAddParameter(childNode, item, parameters); } } } } catch { // ignored } }
private void calculate_Click(object sender, EventArgs e) { if (gridControl1.RowCount == 0) { MessageBox.Show("Нету значений"); } else { OneRow row = new OneRow(); if (TrainData.Train.Count != 0) { foreach (OneRow oneRow in TrainData.Train) { row = oneRow; break; } //TODO: Поставить нормальное определение времени ProductionTime time = new ProductionTime(row.Input[60], row.Input[73], row.Input[87]); decimal timeProduct = 0.0M; for (int i = gridControl1.RowCount - 1; i >= 0; i--) { if (i > 23) { //decimal s = Convert.ToDecimal(gridView1.GetRowCellValue(i, gridView1.Columns[1])); decimal s = Convert.ToDecimal((gridControl1.DataSource as DataTable).Rows[i].ItemArray[1]); timeProduct += s / time.TemperingVelocity; if (i == 24) { decimal convertedTime = timeProduct * 60; time.SetTempTime(convertedTime); } } else if (i > 3 && i <= 23) { //decimal s = Convert.ToDecimal(gridView1.GetRowCellValue(i, gridView1.Columns[1])); decimal s = Convert.ToDecimal((gridControl1.DataSource as DataTable).Rows[i].ItemArray[1]); timeProduct += s / time.TakeOffVelocity; if (i == 4) { decimal convertedTime = timeProduct * 60; time.SetTakeOffTime(convertedTime); } } else { //decimal s = Convert.ToDecimal(gridView1.GetRowCellValue(i, gridView1.Columns[1])); decimal s = Convert.ToDecimal((gridControl1.DataSource as DataTable).Rows[i].ItemArray[1]); timeProduct += s / time.CalenderVelocity; if (i == 0) { decimal convertedTime = timeProduct * 60; time.SetCalenderTime(convertedTime); time.SetExtruderTime(ProductionTime.CalenderTime); } } } } else { MessageBox.Show("Все очень плохо! Выборка не собрана"); } } //gridView1.GetRowCellValue(0, gridView1.Columns[1]); }
private void PrintNode_Color(TreeNode test_tree, List <IndexVertex> vertex, int index, string groupParamName, OneRow test_item, int deep) { if (test_tree.attribute.values != null) { for (int i = 0; i < test_tree.attribute.values.Count; i++) { if (test_tree.attribute.AttributeName != -1) { newValue = test_item.Input[test_tree.attribute.AttributeName]; } if ((newValue >= test_tree.attribute.values[i].Item1) && (newValue <= test_tree.attribute.values[i].Item2) && (deep == current_deep)) { TreeNode childNode = test_tree.getChildByBranchName(test_tree.attribute.values[i]); if (childNode.attributeName != groupParamName) { vertex.Add(new IndexVertex(XMLWork.FindNameWithScada(test_tree.attributeName, language) + "\n" + childNode.Positive + "|" + childNode.Negative, index, test_tree.attribute.values[i], Brushes.Yellow)); int number = vertex.Count; current_deep++; PrintNode_Color(childNode, vertex, number - 1, groupParamName, test_item, deep + 1); current_deep--; } } else { TreeNode childNode = test_tree.getChildByBranchName(test_tree.attribute.values[i]); if (childNode.attributeName != groupParamName) { vertex.Add(new IndexVertex(XMLWork.FindNameWithScada(test_tree.attributeName, language) + "\n" + childNode.Positive + "|" + childNode.Negative, index, test_tree.attribute.values[i], Brushes.White)); int number = vertex.Count; current_deep++; PrintNode_Color(childNode, vertex, number - 1, groupParamName, test_item, deep); current_deep--; } } } } }
public GraphControl(bool v_neuro, int caseNumb, object test_value, string groupParam, object test_item, string language) { this.language = language; TreeNode test_tree = (TreeNode)test_value; Graph = new PocGraph(true); List <IndexVertex> currentVerices = new List <IndexVertex>(); switch (caseNumb) { case 1: { #region Full_tree+group currentVerices.Add(new IndexVertex(XMLWork.FindNameWithScada(test_tree.attributeName, language), -1, null, Brushes.Yellow)); // PrintNode(test_tree, currentVerices, 0); PrintNode_group(test_tree, currentVerices, 0, groupParam); foreach (IndexVertex vertex in currentVerices) { Graph.AddVertex(vertex.vertex); } for (int i = 1; i < currentVerices.Count; i++) { AddNewGraphEdge(currentVerices[currentVerices[i].index].vertex, currentVerices[i].vertex, currentVerices[i].d1); } break; #endregion } case 2: { #region Short+group currentVerices.Add(new IndexVertex(XMLWork.FindNameWithScada(test_tree.attributeName, language) + "\n" + test_tree.Positive + "|" + test_tree.Negative, -1, null, Brushes.Brown)); Shortest_TreeGroup(test_tree, currentVerices, 0, groupParam); foreach (IndexVertex vertex in currentVerices) { Graph.AddVertex(vertex.vertex); } for (int i = 1; i < currentVerices.Count; i++) { AddNewGraphEdge(currentVerices[currentVerices[i].index].vertex, currentVerices[i].vertex, currentVerices[i].d1); } break; #endregion } case 3: { #region podsvetka if (Graph != null) { Graph.Clear(); } currentVerices.Add(new IndexVertex(XMLWork.FindNameWithScada(test_tree.attributeName, language), -1, null, Brushes.Yellow)); // PrintNode(test_tree, currentVerices, 0); OneRow test_items = (OneRow)test_item; PrintNode_Color(test_tree, currentVerices, 0, groupParam, test_items, 0); foreach (IndexVertex vertex in currentVerices) { Graph.AddVertex(vertex.vertex); } for (int i = 1; i < currentVerices.Count; i++) { AddNewGraphEdge(currentVerices[currentVerices[i].index].vertex, currentVerices[i].vertex, currentVerices[i].d1); } break; #endregion } case 4: { if (Graph != null) { Graph.Clear(); } Tuple <decimal, decimal> d1 = new Tuple <decimal, decimal>(1.0m, 1.0m); currentVerices.Add(new IndexVertex("Настройки OCS неверны?", 0, d1, Brushes.White)); currentVerices.Add(new IndexVertex("Слишком высокая температура смеси?", 0, d1, Brushes.White)); currentVerices.Add(new IndexVertex("Неправильная форма расплава?", 1, d1, Brushes.White)); currentVerices.Add(new IndexVertex("Выглядит блестяще-черными/красно коричневыми?", 2, d1, Brushes.White)); currentVerices.Add(new IndexVertex("Точки выглядят матово-черными?", 3, d1, Brushes.White)); currentVerices.Add(new IndexVertex("Черные точки по краям?", 4, d1, Brushes.White)); currentVerices.Add(new IndexVertex("Сделать запись QRQC", 5, d1, Brushes.Green)); currentVerices.Add(new IndexVertex("Сообщить мастеру", 6, d1, Brushes.Orange)); currentVerices.Add(new IndexVertex("Настроить OCS", 0, d1, Brushes.Green)); currentVerices.Add(new IndexVertex("Снизить температуру смеси в горячем смесителе или время пребывания в горячем смесителе", 1, d1, Brushes.Green)); currentVerices.Add(new IndexVertex("Расплав должен вытекать наружу, подогнать контризгиб. Следить за профилем.", 2, d1, Brushes.Green)); currentVerices.Add(new IndexVertex("Снижать скорость пока пленка не станет чистой", 3, d1, Brushes.Green)); currentVerices.Add(new IndexVertex("Увеличить стабилизатор не больше допустимого (1.1%)", 11, d1, Brushes.Green)); currentVerices.Add(new IndexVertex("Остановить линию", 4, d1, Brushes.Red)); currentVerices.Add(new IndexVertex("Почистить нож, головку и корпус кнеттера", 13, d1, Brushes.Green)); currentVerices.Add(new IndexVertex("Остановить линию", 5, d1, Brushes.Red)); currentVerices.Add(new IndexVertex("Почистить щетки запорные кольца", 15, d1, Brushes.Green)); foreach (IndexVertex vertex in currentVerices) { Graph.AddVertex(vertex.vertex); } for (int i = 1; i < currentVerices.Count; i++) { AddNewGraphEdge(currentVerices[currentVerices[i].index].vertex, currentVerices[i].vertex, currentVerices[i].d1); } AddNewGraphEdge(currentVerices[8].vertex, currentVerices[6].vertex, d1); AddNewGraphEdge(currentVerices[9].vertex, currentVerices[6].vertex, d1); AddNewGraphEdge(currentVerices[10].vertex, currentVerices[6].vertex, d1); AddNewGraphEdge(currentVerices[12].vertex, currentVerices[6].vertex, d1); AddNewGraphEdge(currentVerices[14].vertex, currentVerices[6].vertex, d1); AddNewGraphEdge(currentVerices[16].vertex, currentVerices[6].vertex, d1); break; } } }
//Сбор данных private void dataAcq_Click(object sender, EventArgs e) { if (ListDelete.Items.Count != 0) { Stopwatch sw = new Stopwatch(); sw.Start(); TrainData.Train.Clear(); measurementses.Clear(); Dictionary <string, int> newElements = new Dictionary <string, int>(); if (ListDelete.Items.Count != 0) { //Сохранения имен параметров и их ID в справочник newElements foreach (var item in ListDelete.Items) { string t = item.ToString(); int j = elements.Where(s => s.Key == t).Single().Value; newElements.Add(t, j); //Работа с локальной базой данных(сохранения данных туда) XMLWork.AddRow(j, t); } } var stream = File.Open(path.Text, FileMode.Open, FileAccess.Read); var eReader = ExcelReaderFactory.CreateOpenXmlReader(stream); bool check = true; try { _counter = 0; while (eReader.Read()) // Одну строку пропускаем с общей информацией { ++_counter; break; } DateTime lastTime = new DateTime(); while (eReader.Read()) // Считывание информации с EXCEL файла { var date = eReader.GetDateTime(0); var time = eReader.GetDateTime(1); TimeSpan ts = new TimeSpan(time.Hour, time.Minute, time.Second); date = date + ts; if (_counter == 1) { lastTime = date; } else { if (lastTime == date) { continue; } lastTime = date; } Measurements measurements; foreach (var value in newElements) { Decimal parValue; var val = Convert.ToString(eReader.GetValue(value.Value)); val = val.Trim(); if (val == "") { parValue = -1; } else { var extA = Convert.ToString(eReader.GetValue(value.Value)).Replace(",", "."); try { parValue = Decimal.Parse(extA, NumberStyles.Float, _formatProvider); } catch (Exception exe) { throw new Exception("Invalid value format in row " + _counter, exe); } measurements = new Measurements(parValue, date, value.Key, value.Value); // созеания измерения measurementses.Add(measurements); // и добавление его в коллекцию } } ++_counter; } } catch (Exception ex) { MessageBox.Show(ex.ToString()); } finally { eReader.Close(); } try { List <OneRow> dataSet = new List <OneRow>(); var uniqueTimestamp = measurementses.OrderBy(o => o.TimeStamp).Select(o => o.TimeStamp).Distinct(); OneRow lastRow = new OneRow(); // Отделение технологических параметров от показателей качество. //TODO: сделать отдельную колонку в бд, в которой хранить краткую информацию о расположении датчика относительно производственной линии foreach (DateTime dateTime in uniqueTimestamp) { var moveData = measurementses.Where( o => ((dateTime == o.TimeStamp) && (!o.ParameterName.StartsWith("Def")))) .ToDictionary(o => o.ParID, s => s.Value); // Добавление технологических параметров в дикшионари //температуры для усадки var temperatureData = measurementses.Where(o => ((dateTime == o.TimeStamp) && (o.ParameterName.Contains("XT")))) .ToDictionary(o => o.ParameterName, s => s.Value); //скорости для усадки var velocityData = measurementses.Where(o => ((dateTime == o.TimeStamp) && (o.ParameterName.Contains("XV")))) .ToDictionary(o => o.ParameterName, s => s.Value); OneRow row = new OneRow(); row.Input = moveData; row.Temperatures = temperatureData; row.Velocities = velocityData; if (row.Input.Count >= 1) { row.Date = dateTime; var dataOutput = measurementses.Where( o => ((dateTime == o.TimeStamp) && (o.ParameterName.StartsWith("Def")))) .ToDictionary(o => o.ParID, s => s.Value); row.Output = dataOutput; dataSet.Add(row); // Добавление показателя качества в ОЗУ } lastRow = row; } var datas = measurementses.Where(o => dataSet.First().Date == o.TimeStamp) .ToDictionary(o => o.ParID, s => s.ParameterName); TrainData.GetData(); foreach (KeyValuePair <int, string> keyValuePair in datas) { if (!TrainData.Pairs.ContainsKey(keyValuePair.Value)) { TrainData.Pairs.Add(keyValuePair.Value, keyValuePair.Value); } } TrainData.nameParameter = datas; TrainData.Train = dataSet; // Присвоение статической переменной данных } catch (InvalidOperationException iex) { var parameters = measurementses.Where(o => !o.ParameterName.StartsWith("Def")).ToArray(); if (parameters.Count() == 0) { MessageBox.Show( Localization.MyStrings.QualityParameters); } else { MessageBox.Show(iex.ToString()); } } catch (Exception ex) { MessageBox.Show(ex.ToString()); } sw.Stop(); var parametersInput = measurementses.Where(o => o.ParameterName.StartsWith("Def")).ToArray(); if (parametersInput.Count() == 0) { MessageBox.Show( Localization.MyStrings.RegimeParameters, Localization.MyStrings.Warning); } MessageBox.Show(Localization.MyStrings.TimeParameters + sw.Elapsed); string pathToShrinkage = System.AppDomain.CurrentDomain.BaseDirectory + "\\Shrinkage.xml"; if (File.Exists(pathToShrinkage)) { File.Delete(pathToShrinkage); } } else { MessageBox.Show(Localization.MyStrings.SelectedParameters); } }
public void LoadFromDB() { values = null; normalise = null; weights = null; normaliseRandom = null; listParameter.Clear(); values = new decimal[ListDelete.Items.Count, TrainData.Train.Count]; normalise = new decimal[ListDelete.Items.Count, TrainData.Train.Count]; normaliseRandom = new decimal[ListDelete.Items.Count, TrainData.Train.Count]; weights = new decimal[ListDelete.Items.Count, Convert.ToInt32(numberOfNeurons.Text)]; dimensionOfVector.Text = Convert.ToString(ListDelete.Items.Count); int count = 0; foreach (var item in ListDelete.Items) { int parameterID = XMLWork.FindIDWithName(item.ToString(), Properties.Settings.Default.Languages); OneRow row = TrainData.Train.First(); decimal value = 0.0M; if (row.Input.ContainsKey(parameterID)) { value = row.Input[parameterID]; } else if (row.Output.ContainsKey(parameterID)) { value = row.Output[parameterID]; } listParameter.Add(count, new ParameterCharacteristics(item.ToString(), value, value, value, 0.0M, 0.0M)); count++; } if (TrainData.Train.Count > 0) { int j = 0; //Вычисление среднего значения каждого атрибута выборки + сумма, минимум и максимум также вычисляются foreach (OneRow row in TrainData.Train) { for (int i = 0; i < listParameter.Count; i++) { try { int parameterID = XMLWork.FindIDWithName(listParameter[i].ParameterName, Properties.Settings.Default.Languages); if (row.Input.ContainsKey(parameterID)) { values[i, j] = row.Input[parameterID]; } else if (row.Output.ContainsKey(parameterID)) { values[i, j] = row.Output[parameterID]; } if (values[i, j] < listParameter[i].Min) { listParameter[i].Min = values[i, j]; } if (values[i, j] > listParameter[i].Max) { listParameter[i].Max = values[i, j]; } listParameter[i].Sum += values[i, j]; } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } j++; } //Поиск среднего значения по выборке for (int i = 0; i < listParameter.Count; i++) { listParameter[i].Mean = listParameter[i].Sum / Convert.ToDecimal(TrainData.Train.Count); j = 0; decimal differenceSquares = 0.0M; foreach (OneRow row in TrainData.Train) { differenceSquares += ((values[i, j] - listParameter[i].Mean) * (values[i, j] - listParameter[i].Mean)); j++; } listParameter[i].Deviation = differenceSquares / (decimal)(TrainData.Train.Count - 1); } //Нормализация данных for (int i = 0; i < listParameter.Count; i++) { for (int k = 0; k < TrainData.Train.Count; k++) { if (listParameter[i].Max - listParameter[i].Min != 0) { normalise[i, k] = Normalisation.NormaliseWithDeviation(values[i, k], listParameter[i].Mean, listParameter[i].Deviation); } else { normalise[i, k] = 0.0M; } } } } else { MessageBox.Show(Localization.MyStrings.Absent, Localization.MyStrings.Warning); } // int step = TrainData.Train.Count / Convert.ToInt32(numberOfNeurons.Text); //Здесь задаются начальные значения весов /* * for (int j = 0, n = 0; j < TrainData.Train.Count; j = j + step, n++) * { * if (n < Convert.ToInt32(numberOfNeurons.Text)) * { * for (int i = 0; i < listParameter.Count; i++) * weights[i,n] = normalise[i,j]; * } * }*/ Random rand = new Random((int)(DateTime.Now.Ticks)); for (int j = 0; j < Convert.ToInt32(numberOfNeurons.Text); j++) { for (int k = 0; k < listParameter.Count; k++) { weights[k, j] = Randomise.RandomDecimal(rand); } } }
public static bool Load(string[] NewTable) { var PNCForm = MainProgram.Self.actionView.PNCListView; DataTable PNCTable = PNCForm.GetDataTable(); if (PNCTable.Columns.Count <= 1) { PNCTable.Columns.Clear(); PNCTable.Columns.Add("PNC"); PNCTable.Columns.Add("OLD ANC"); PNCTable.Columns.Add("OLD Q"); PNCTable.Columns.Add("NEW ANC"); PNCTable.Columns.Add("NEW Q"); PNCTable.Columns.Add("OLD STK"); PNCTable.Columns.Add("NEW STK"); PNCTable.Columns.Add("Delta"); } if (PNCTable.Rows.Count > 0) { DialogResult Result = MessageBox.Show("Do you want replease exist PNC List?", "Warning!", MessageBoxButtons.YesNo); if (Result == DialogResult.Yes) { PNCTable.Rows.Clear(); } else { DialogResult Result2 = MessageBox.Show("Do you want Add to exist PNC List?", "Warning!", MessageBoxButtons.YesNo); if (Result2 == DialogResult.No) { return(false); } } } //Sprawdzenie czy dane są prawidłowo przygotowane przez użytkownika if (!ProtectionData(NewTable[0])) { return(false); } foreach (string OneRow in NewTable) { string[] SpecificRow = OneRow.Split(';'); if (SpecificRow.Length != 1) { DataRow NewRow = PNCTable.NewRow(); NewRow["PNC"] = SpecificRow[0]; if (SpecificRow[1] != string.Empty) { NewRow["OLD ANC"] = "ECCC(" + SpecificRow[1] + ")"; } PNCTable.Rows.Add(NewRow); int Limit = (SpecificRow.Length - 4) / 2; for (int counter = 2; counter <= Limit; counter++) { NewRow = PNCTable.NewRow(); NewRow["OLD ANC"] = SpecificRow[counter]; NewRow["OLD Q"] = SpecificRow[counter + 1]; NewRow["NEW ANC"] = SpecificRow[counter + Limit + 1]; NewRow["NEW Q"] = SpecificRow[counter + Limit + 2]; if (!(NewRow["OLD ANC"].ToString() == string.Empty && NewRow["NEW ANC"].ToString() == string.Empty)) { PNCTable.Rows.Add(NewRow); } counter++; } } } DataTable PNCTableDuplicate = PNCTable.Clone(); bool CanAdd = false; foreach (DataRow Row in PNCTable.Rows) { if (Row["PNC"].ToString() != string.Empty) { if (!PNCTableDuplicate.AsEnumerable().Any(u => u.Field <string>("PNC") == Row["PNC"].ToString())) //if (!PNCTableDuplicate.AsEnumerable().Any(u => u.ToString() == Row[0].ToString())) { PNCTableDuplicate.Rows.Add(Row.ItemArray); CanAdd = true; } else { CanAdd = false; } } else { if (CanAdd) { PNCTableDuplicate.Rows.Add(Row.ItemArray); } } } if (!PNCSpecSTK.Find(PNCTableDuplicate)) { return(false); } return(true); }
private void Pb_AddData_Close_Click(object sender, EventArgs e) { //Action action = new Action(); Cursor.Current = Cursors.WaitCursor; string[] row = tb_AddData_Data.Text.Split(new[] { Environment.NewLine }, StringSplitOptions.None); int DuplicateCount = 0; bool IFCalc = false; if (row[0] != "") { if (Jak == "PNC") { DataGridView dg_PNC = (DataGridView)MainProgram.Self.TabControl.Controls.Find("dg_PNC", true).First(); if (dg_PNC.Rows.Count > 1) { DialogResult result = MessageBox.Show("Do you want replace all PNC in this Action ?", "Warning!", MessageBoxButtons.YesNo); if (result == DialogResult.Yes) { dg_PNC.Rows.Clear(); dg_PNC.Columns.Clear(); dg_PNC.Columns.Add("PNC", "PNC"); dg_PNC.Columns["PNC"].Width = 63; dg_PNC.Columns["PNC"].SortMode = DataGridViewColumnSortMode.NotSortable; IFCalc = true; } else if (result == DialogResult.No) { DialogResult result2 = MessageBox.Show("Do you want add this PNC to exisitng PNC for this Action ?", "Warning!", MessageBoxButtons.YesNo); if (result2 == DialogResult.Yes) { IFCalc = true; } else if (result2 == DialogResult.No) { IFCalc = false; } } } else { dg_PNC.Rows.Clear(); dg_PNC.Columns.Clear(); dg_PNC.Columns.Add("PNC", "PNC"); dg_PNC.Columns["PNC"].Width = 63; dg_PNC.Columns["PNC"].SortMode = DataGridViewColumnSortMode.NotSortable; IFCalc = true; } if (IFCalc) { foreach (string OneRow in row) { if (OneRow != "") { var Row = dg_PNC.Rows.Cast <DataGridViewRow>().Where(u => u.Cells["PNC"].Value.ToString().Equals(OneRow)).FirstOrDefault(); if (Row == null) { dg_PNC.Rows.Add(OneRow); } else { DuplicateCount++; } } } } this.Close(); Cursor.Current = Cursors.Default; if (DuplicateCount > 0) { MessageBox.Show($"Was remove {DuplicateCount} Duplicate Value", "Duplicate counter"); } return; } if (Jak == "PNCSpec") { DataGridView dg_PNC = (DataGridView)MainProgram.Self.TabControl.Controls.Find("dg_PNC", true).First(); if (dg_PNC.Rows.Count > 1) { DialogResult result = MessageBox.Show("Do you want replace all PNC in this Action ?", "Warning!", MessageBoxButtons.YesNo); if (result == DialogResult.Yes) { dg_PNC.Rows.Clear(); dg_PNC.Columns.Clear(); dg_PNC.Columns.Add("PNC", "PNC"); dg_PNC.Columns.Add("OLD ANC", "OLD ANC"); dg_PNC.Columns.Add("OLD Q", "Q"); dg_PNC.Columns.Add("NEW ANC", "NEW ANC"); dg_PNC.Columns.Add("NEW Q", "Q"); dg_PNC.Columns["PNC"].Width = 80; dg_PNC.Columns["OLD ANC"].Width = 65; dg_PNC.Columns["OLD ANC"].DefaultCellStyle.ForeColor = Color.Red; dg_PNC.Columns["OLD Q"].Width = 35; dg_PNC.Columns["OLD Q"].DefaultCellStyle.ForeColor = Color.Red; dg_PNC.Columns["NEW ANC"].Width = 65; dg_PNC.Columns["NEW ANC"].DefaultCellStyle.ForeColor = Color.Green; dg_PNC.Columns["NEW Q"].Width = 35; dg_PNC.Columns["NEW Q"].DefaultCellStyle.ForeColor = Color.Green; dg_PNC.Columns["PNC"].SortMode = DataGridViewColumnSortMode.NotSortable; dg_PNC.Columns["OLD ANC"].SortMode = DataGridViewColumnSortMode.NotSortable; dg_PNC.Columns["OLD Q"].SortMode = DataGridViewColumnSortMode.NotSortable; dg_PNC.Columns["NEW ANC"].SortMode = DataGridViewColumnSortMode.NotSortable; dg_PNC.Columns["NEW Q"].SortMode = DataGridViewColumnSortMode.NotSortable; IFCalc = true; } else if (result == DialogResult.No) { DialogResult result2 = MessageBox.Show("Do you want add this PNC to exisitng PNC for this Action ?", "Warning!", MessageBoxButtons.YesNo); if (result2 == DialogResult.Yes) { IFCalc = true; } else if (result2 == DialogResult.No) { IFCalc = false; } } } else { dg_PNC.Rows.Clear(); dg_PNC.Columns.Clear(); dg_PNC.Columns.Add("PNC", "PNC"); dg_PNC.Columns.Add("OLD ANC", "OLD ANC"); dg_PNC.Columns.Add("OLD Q", "Q"); dg_PNC.Columns.Add("NEW ANC", "NEW ANC"); dg_PNC.Columns.Add("NEW Q", "Q"); dg_PNC.Columns["PNC"].Width = 80; dg_PNC.Columns["OLD ANC"].Width = 65; dg_PNC.Columns["OLD ANC"].DefaultCellStyle.ForeColor = Color.Red; dg_PNC.Columns["OLD Q"].Width = 35; dg_PNC.Columns["OLD Q"].DefaultCellStyle.ForeColor = Color.Red; dg_PNC.Columns["NEW ANC"].Width = 65; dg_PNC.Columns["NEW ANC"].DefaultCellStyle.ForeColor = Color.Green; dg_PNC.Columns["NEW Q"].Width = 35; dg_PNC.Columns["NEW Q"].DefaultCellStyle.ForeColor = Color.Green; dg_PNC.Columns["PNC"].SortMode = DataGridViewColumnSortMode.NotSortable; dg_PNC.Columns["OLD ANC"].SortMode = DataGridViewColumnSortMode.NotSortable; dg_PNC.Columns["OLD Q"].SortMode = DataGridViewColumnSortMode.NotSortable; dg_PNC.Columns["NEW ANC"].SortMode = DataGridViewColumnSortMode.NotSortable; dg_PNC.Columns["NEW Q"].SortMode = DataGridViewColumnSortMode.NotSortable; IFCalc = true; } if (IFCalc) { foreach (string SingleRow in row) { if (SingleRow == string.Empty) { continue; } string[] SelectedRow = SingleRow.Split(';'); string PNC = SelectedRow[0]; string ECCC = string.Empty; int Limit = ((SelectedRow.Length - 3) / 2); if (SelectedRow[1].ToString() != string.Empty) { ECCC = "ECCC(" + SelectedRow[1] + ")"; } dg_PNC.Rows.Add(PNC, ECCC, string.Empty); dg_PNC.Rows[dg_PNC.Rows.Count - 1].DefaultCellStyle.BackColor = Color.LightBlue; dg_PNC.Rows[dg_PNC.Rows.Count - 1].DefaultCellStyle.Font = new Font(dg_PNC.Font, FontStyle.Bold); dg_PNC.Rows[dg_PNC.Rows.Count - 1].Cells[1].Style.Font = new Font(dg_PNC.Font, FontStyle.Regular); dg_PNC.Rows[dg_PNC.Rows.Count - 1].Cells[1].Style.Font = new Font("Tahoma", 10F, GraphicsUnit.Pixel); for (int counter2 = 2; counter2 < Limit + 2; counter2++) { if (SelectedRow[counter2] != string.Empty || SelectedRow[counter2 + Limit + 1] != string.Empty) { dg_PNC.Rows.Add(string.Empty, SelectedRow[counter2], SelectedRow[counter2 + 1], SelectedRow[counter2 + Limit + 1], SelectedRow[counter2 + Limit + 2]); } counter2++; } } } this.Close(); Cursor.Current = Cursors.Default; return; } } else { this.Close(); Cursor.Current = Cursors.Default; return; } if (Jak == "BU" || Jak == "EA1" || Jak == "EA2" || Jak == "EA3") { NumericUpDown Admin_Year = (NumericUpDown)MainProgram.Self.TabControl.Controls.Find("num_Admin_YearQuantity", true).First(); CheckBox cb_AdminPNC = (CheckBox)MainProgram.Self.TabControl.Controls.Find("cb_AdminPNC", true).First(); CheckBox cb_AdminANC = (CheckBox)MainProgram.Self.TabControl.Controls.Find("cb_AdminANC", true).First(); DataTable Baza = new DataTable(); DataRow FoundRow; int ile; if (cb_AdminANC.Checked) { Data_Import.Singleton().Load_TxtToDataTable2(ref Baza, "ANC"); } if (cb_AdminPNC.Checked) { Data_Import.Singleton().Load_TxtToDataTable2(ref Baza, "PNC"); } switch (Jak) { case "BU": ile = 1; break; case "EA1": ile = 3; break; case "EA2": ile = 6; break; case "EA3": ile = 9; break; default: return; } if (Baza.Columns.Contains(Jak + "/12/" + Admin_Year.Text)) { for (int counter = ile; counter <= 12; counter++) { Baza.Columns.Remove(Jak + "/" + counter + "/" + Admin_Year.Text); } } for (int counter = ile; counter <= 12; counter++) { Baza.Columns.Add(new DataColumn(Jak + "/" + counter + "/" + Admin_Year.Text)); } foreach (string OneRow in row) { string[] row2 = OneRow.Split('\t'); if (row2[0] != "") { if (cb_AdminANC.Checked) { FoundRow = Baza.Select(string.Format("BUANC LIKE '%{0}%'", row2[0])).FirstOrDefault(); } else { FoundRow = Baza.Select(string.Format("BUPNC LIKE '%{0}%'", row2[0])).FirstOrDefault(); } int zmienna; if (FoundRow != null) { zmienna = ile; for (int counter = 1; counter <= (13 - ile); counter++) { FoundRow[Jak + "/" + zmienna + "/" + Admin_Year.Text] = row2[counter]; zmienna++; } } else { DataRow NewRow = Baza.NewRow(); NewRow[0] = row2[0]; zmienna = ile; for (int counter = 1; counter <= (13 - ile); counter++) { NewRow[Jak + "/" + zmienna + "/" + Admin_Year.Text] = row2[counter]; zmienna++; } Baza.Rows.Add(NewRow); } } } if (cb_AdminANC.Checked) { Data_Import.Singleton().Save_DataTableToTXT2(ref Baza, "ANC"); } if (cb_AdminPNC.Checked) { Data_Import.Singleton().Save_DataTableToTXT2(ref Baza, "PNC"); } this.Close(); Cursor.Current = Cursors.Default; return; } if (Jak == "AddMonthANC" || Jak == "AddMonthPNC") { NumericUpDown Admin_Year = (NumericUpDown)MainProgram.Self.TabControl.Controls.Find("num_Admin_YearMonth", true).First(); NumericUpDown Admin_Month = (NumericUpDown)MainProgram.Self.TabControl.Controls.Find("num_Admin_QuantityMonth", true).First(); DataTable Quantity = new DataTable(); DataRow FoundRow; string Miesiac = Admin_Month.Value.ToString() + "/" + Admin_Year.Value.ToString(); if (Jak == "AddMonthANC") { Data_Import.Singleton().Load_TxtToDataTable2(ref Quantity, "ANCMonth"); } if (Jak == "AddMonthPNC") { Data_Import.Singleton().Load_TxtToDataTable2(ref Quantity, "PNCMonth"); } if (Quantity.Columns.Contains(Miesiac)) { Quantity.Columns.Remove(Miesiac); } Quantity.Columns.Add(new DataColumn(Miesiac)); foreach (string OneRow in row) { string[] NewValue = OneRow.Split('\t'); if (NewValue[0] != "") { if (Jak == "AddMonthANC") { FoundRow = Quantity.Select(string.Format("ANC LIKE '%{0}%'", NewValue[0])).FirstOrDefault(); } else { FoundRow = Quantity.Select(string.Format("PNC LIKE '%{0}%'", NewValue[0])).FirstOrDefault(); } if (FoundRow != null) { FoundRow[Miesiac] = NewValue[1]; } else { DataRow NewRow = Quantity.NewRow(); NewRow[0] = NewValue[0]; NewRow[Miesiac] = NewValue[1]; Quantity.Rows.Add(NewRow); } } } if (Jak == "AddMonthANC") { Data_Import.Singleton().Save_DataTableToTXT2(ref Quantity, "ANCMonth"); } if (Jak == "AddMonthPNC") { Data_Import.Singleton().Save_DataTableToTXT2(ref Quantity, "PNCMonth"); } this.Close(); Cursor.Current = Cursors.Default; return; } }
/// <summary> /// Заполнения значений технологических параметров для всех textBox'ов /// </summary> /// <param name="sample"></param> /// <param name="parameterID"></param> private void TextBoxFeeling(OneRow sample, int parameterID) { //Добавление всех значений каландрового вала foreach (var textBoxControl in calenderRollPanel.Controls) { var t = textBoxControl as TextBox; if (t != null) { parameterID = FindIDInDictionary(t.Name); t.Text = Convert.ToString(sample.Input[parameterID]) + ConvertName(t.Name); } } //Добавление всех значений съемных валов foreach (var textBoxControl in takeOffRollPanel.Controls) { var t = textBoxControl as TextBox; if (t != null) { parameterID = FindIDInDictionary(t.Name); t.Text = Convert.ToString(sample.Input[parameterID]) + ConvertName(t.Name); } } //Добавление всех значений темперирующих валов foreach (var textBoxControl in temperingRollPanel.Controls) { var t = textBoxControl as TextBox; if (t != null) { parameterID = FindIDInDictionary(t.Name); t.Text = Convert.ToString(sample.Input[parameterID]) + ConvertName(t.Name); } } //Добавление всех значений стадии намотки foreach (var textBoxControl in winder.Controls) { var t = textBoxControl as TextBox; if (t != null) { parameterID = FindIDInDictionary(t.Name); t.Text = Convert.ToString(sample.Input[parameterID]) + ConvertName(t.Name); } } //Показатели качества добавляются сюда foreach (var textBoxControl in qualityPanel.Controls) { var t = textBoxControl as TextBox; if ((t != null) && (!t.Name.EndsWith("LCL") || !t.Name.EndsWith("UCL") || !t.Name.EndsWith("CP"))) { string name = t.Name.Replace("_", "."); try { parameterID = FindIDInDictionary(name); t.Text = Convert.ToString(sample.Output[parameterID]) + ConvertName(t.Name); } catch (Exception ex) { //усадку не ищем в базе, а считаем } } } }