Ejemplo n.º 1
0
        /*Валидирует файл содержащий партии (id и nomenclatuer id)
         * если в файле партий есть id которого небыло в файле с материалами выбрасывается исключение*/
        public static bool validatePartiesFile(string filePath)
        {
            Excel xlsxfile = new Excel();

            xlsxfile.FileOpen(filePath);
            Nomenclatures.validateColumnsInFile(columnsInParties, xlsxfile.Rows);
            Regex regex = new Regex(@"[0-9]+$");

            for (int i = 1; i < xlsxfile.Rows.Count; i++)
            {
                if (!Nomenclatures.validate(regex, xlsxfile.Rows[i][1]))
                {
                    throw new NomenclaturesException($"Не верное id материала, ожидается:\n 'Числовое значение в столбце nomenclature id'\n получено:\n Имя: {xlsxfile.Rows[i][1]}\n Строка: {i}");
                }
                if (!Nomenclatures.checkMaterialInParties(xlsxfile.Rows[i][1]))
                {
                    throw new DataIntegrityException($"Не найден данный id в списке материалов:\n получено:\n id: {xlsxfile.Rows[i][1]}\n Строка: {i}");
                }
                if (!Nomenclatures.canMaterialProcessedOrNot(xlsxfile.Rows[i][1]))
                {
                    throw new DataIntegrityException($"Ни одна из загруженных машин не обрабатывает материал {viewMaterialById(xlsxfile.Rows[i][1])} :\n получено:\n id: {xlsxfile.Rows[i][1]}\n Название: {viewMaterialById(xlsxfile.Rows[i][1])} \n Строка: {i}");
                }
            }
            return(true);
        }
Ejemplo n.º 2
0
 //Вывод партии в ListView
 public static void renderPartiesInListView(ListView lv)
 {
     for (int i = 1; i < Nomenclatures.parties.Count; i++)
     {
         ListViewItem lvi = new ListViewItem(Nomenclatures.parties[i][0]);
         lvi.SubItems.Add(Nomenclatures.viewMaterialById(Nomenclatures.parties[i][1]));
         lv.Items.Add(lvi);
     }
 }
Ejemplo n.º 3
0
 private void button3_Click(object sender, EventArgs e)
 {
     if (Nomenclatures.ovens.Count == 0 || Nomenclatures.materials.Count == 0)
     {
         MessageBox.Show("Пожалуйста, сначала выберите файл с именами, идентификаторами машин, а так-же файл с материалами",
                         "Недостаточно данных", MessageBoxButtons.OK, MessageBoxIcon.Stop);
         return;
     }
     Nomenclatures.openSpecificationsFile();
 }
Ejemplo n.º 4
0
 private void button1_Click(object sender, EventArgs e)
 {
     if (Nomenclatures.materials.Count == 0 || Nomenclatures.ovens.Count == 0 || Nomenclatures.ovensSpecifications.Count == 0)
     {
         MessageBox.Show("Пожалуйста, сначала загрузите файлы с данными о материалах и машинах",
                         "Недостаточно данных", MessageBoxButtons.OK, MessageBoxIcon.Stop);
         return;
     }
     Nomenclatures.openPartiesFile(listView1);
 }
Ejemplo n.º 5
0
        //Валидирует файл содержащий название материала и его id
        public static bool validateMaterialsFile(string filePath)
        {
            Excel xlsxfile = new Excel();

            xlsxfile.FileOpen(filePath);
            Nomenclatures.validateColumnsInFile(columnsInMaterials, xlsxfile.Rows);
            Regex regex = new Regex(@"[А-Яа-я]+\s?[А-Яа-я]*$");

            for (int i = 1; i < xlsxfile.Rows.Count; i++)
            {
                if (!Nomenclatures.validate(regex, xlsxfile.Rows[i][1]))
                {
                    throw new NomenclaturesException($"Не верное имя сырья, ожидается:\n 'Одно или два слова на кирилице разделенных пробелом или переносом строки'\n получено:\n Имя: {xlsxfile.Rows[i][1]}\n Строка: {i}");
                }
            }
            return(true);
        }
Ejemplo n.º 6
0
        //Валидирует файл с записями о названиях и id машин
        public static bool validateMachineToolsFile(string filePath)
        {
            Excel xlsxfile = new Excel();

            xlsxfile.FileOpen(filePath);
            Nomenclatures.validateColumnsInFile(columnsInOvensIdName, xlsxfile.Rows);
            Regex regex = new Regex(@"Печь [0-9]");

            for (int i = 1; i < xlsxfile.Rows.Count; i++)
            {
                if (!Nomenclatures.validate(regex, xlsxfile.Rows[i][1]))
                {
                    throw new NomenclaturesException($"Не верное имя печи, ожидается:\n 'Печь [номер] (например: Печь 7)'\n получено:\n Имя: {xlsxfile.Rows[i][1]}\n Строка: {i}");
                }
            }
            return(true);
        }
Ejemplo n.º 7
0
        //Валидирует файл содержащий характеристики печей
        public static bool validateSpecificationFile(string filePath)
        {
            Excel xlsxfile = new Excel();

            xlsxfile.FileOpen(filePath);
            Nomenclatures.validateColumnsInFile(columnsInOvensSpecifications, xlsxfile.Rows);
            Regex regex = new Regex(@"[0-9]+$");

            for (int j = 0; j < xlsxfile.Rows[0].Count; j++)
            {
                for (int i = 1; i < xlsxfile.Rows.Count; i++)
                {
                    if (!Nomenclatures.validate(regex, xlsxfile.Rows[i][j]))
                    {
                        throw new NomenclaturesException($"Ожидается числовое значение в столбце {xlsxfile.Rows[0][j]}, \n получено:\n id: {xlsxfile.Rows[i][j]}\n Строка: {i}");
                    }
                }
            }
            return(true);
        }
Ejemplo n.º 8
0
 //Открыть файл с именами машин
 public static void openMachineToolsFile(ListView lv)
 {
     try
     {
         Nomenclatures.setOvensByFile(lv);
     }
     catch (NomenclaturesException ex)
     {
         MessageBox.Show("Ошибка структуры файла:\n" + ex.Message, "Ошибка структуры файла",
                         MessageBoxButtons.OK, MessageBoxIcon.Stop);
     }
     catch (System.IO.IOException ex)
     {
         MessageBox.Show("Ошибка доступа к файлу:\n" + ex.Message, "Ошибка доступа",
                         MessageBoxButtons.OK, MessageBoxIcon.Stop);
     }
     catch (DataIntegrityException ex)
     {
         MessageBox.Show("Ошибка целостности данных:\n" + ex.Message, "Нарушение целостности данных",
                         MessageBoxButtons.OK, MessageBoxIcon.Stop);
     }
 }
Ejemplo n.º 9
0
 //Метод сохраняющий материалы в переменную materials
 public static void setMaterialsByFile(ListView lv, ListView lvp)
 {
     if (materials.Count == 0)
     {
         OpenFileDialog openFile = new OpenFileDialog();
         openFile.Filter = "Excel files(*.xlsx)|*.xlsx";
         if (openFile.ShowDialog() == DialogResult.OK)
         {
             Nomenclatures.validateMaterialsFile(openFile.FileName);
             Excel xlsxfile = Nomenclatures.openXslxFile(openFile.FileName);
             materials.AddRange(xlsxfile.Rows);
             Nomenclatures.renderMaterialsInListView(lv);
         }
     }
     else
     {
         DialogResult result = MessageBox.Show("Вы уже загружали ранее файл с описанием материалов, хотите ли вы перезаписать данные?(При перезаписи данные о партии будут сброшены, для сохранения целостности данных)"
                                               , "Подтвердите действие"
                                               , MessageBoxButtons.OKCancel
                                               , MessageBoxIcon.Warning
                                               );
         if (result == DialogResult.OK)
         {
             OpenFileDialog openFile = new OpenFileDialog();
             openFile.Filter = "Excel files(*.xlsx)|*.xlsx";
             if (openFile.ShowDialog() == DialogResult.OK)
             {
                 Nomenclatures.validateMaterialsFile(openFile.FileName);
                 Nomenclatures.parties.Clear();
                 Nomenclatures.materials.Clear();
                 lvp.Items.Clear();
                 lv.Items.Clear();
                 Excel xlsxfile = Nomenclatures.openXslxFile(openFile.FileName);
                 materials.AddRange(xlsxfile.Rows);
                 Nomenclatures.renderMaterialsInListView(lv);
             }
         }
     }
 }
Ejemplo n.º 10
0
 //Метод сохраняющий спецификации машин в переменную ovensSpecifications
 public static void setOvensSpecifications()
 {
     if (ShopPlanner.shop.Count == 0)
     {
         OpenFileDialog openFile = new OpenFileDialog();
         openFile.Filter = "Excel files(*.xlsx)|*.xlsx";
         if (openFile.ShowDialog() == DialogResult.OK)
         {
             Nomenclatures.validateSpecificationFile(openFile.FileName);
             Excel xlsxfile = Nomenclatures.openXslxFile(openFile.FileName);
             Nomenclatures.ovensSpecifications.AddRange(xlsxfile.Rows);
             ShopPlanner.constructShop();
             MessageBox.Show("Характеристики загруженны, цэх успешно создан");
         }
     }
     else
     {
         DialogResult result = MessageBox.Show("Спецификации машин уже загружены, хотите обновить?"
                                               , "Подтвердите действие"
                                               , MessageBoxButtons.OKCancel
                                               , MessageBoxIcon.Warning
                                               );
         if (result == DialogResult.OK)
         {
             OpenFileDialog openFile = new OpenFileDialog();
             openFile.Filter = "Excel files(*.xlsx)|*.xlsx";
             if (openFile.ShowDialog() == DialogResult.OK)
             {
                 Nomenclatures.validateSpecificationFile(openFile.FileName);
                 Nomenclatures.ovensSpecifications.Clear();
                 Excel xlsxfile = Nomenclatures.openXslxFile(openFile.FileName);
                 Nomenclatures.ovensSpecifications.AddRange(xlsxfile.Rows);
                 ShopPlanner.shop.Clear();
                 ShopPlanner.constructShop();
                 MessageBox.Show("Характеристики загруженны, цэх успешно создан");
             }
         }
     }
 }
Ejemplo n.º 11
0
 //Метод сохраняющий печи в переменную parties
 public static void setOvensByFile(ListView lv)
 {
     if (ovens.Count == 0)
     {
         OpenFileDialog openFile = new OpenFileDialog();
         openFile.Filter = "Excel files(*.xlsx)|*.xlsx";
         if (openFile.ShowDialog() == DialogResult.OK)
         {
             Nomenclatures.validateMachineToolsFile(openFile.FileName);
             Excel xlsxfile = Nomenclatures.openXslxFile(openFile.FileName);
             ovens.AddRange(xlsxfile.Rows);
             machineTools.renderOvensInListView(lv);
         }
     }
     else
     {
         DialogResult result = MessageBox.Show("Вы уже загружали ранее файл с идентификаторма машин, хотите ли вы перезаписать данные?(Сведения о машинах будут сброшены, для сохранения целостности данных)"
                                               , "Подтвердите действие"
                                               , MessageBoxButtons.OKCancel
                                               , MessageBoxIcon.Warning
                                               );
         if (result == DialogResult.OK)
         {
             OpenFileDialog openFile = new OpenFileDialog();
             openFile.Filter = "Excel files(*.xlsx)|*.xlsx";
             if (openFile.ShowDialog() == DialogResult.OK)
             {
                 Nomenclatures.validateMachineToolsFile(openFile.FileName);
                 Nomenclatures.ovens.Clear();
                 Nomenclatures.ovensSpecifications.Clear();
                 lv.Items.Clear();
                 Excel xlsxfile = Nomenclatures.openXslxFile(openFile.FileName);
                 ovens.AddRange(xlsxfile.Rows);
                 machineTools.renderOvensInListView(lv);
             }
         }
     }
 }
Ejemplo n.º 12
0
 //Открыть файл с описание и id материалов
 public static void openMaterialsFile(ListView lv, ListView lvp)
 {
     try
     {
         Nomenclatures.setMaterialsByFile(lv, lvp);
     }
     //toDo узнать можно ли как-то обертку в try - catch вынести в функцию или сократить для избежания использования повторного кода
     catch (NomenclaturesException ex)
     {
         MessageBox.Show("Ошибка структуры файла:\n" + ex.Message, "Ошибка структуры файла",
                         MessageBoxButtons.OK, MessageBoxIcon.Stop);
     }
     catch (System.IO.IOException ex)
     {
         MessageBox.Show("Ошибка доступа к файлу:\n" + ex.Message, "Ошибка доступа",
                         MessageBoxButtons.OK, MessageBoxIcon.Stop);
     }
     catch (DataIntegrityException ex)
     {
         MessageBox.Show("Ошибка целостности данных:\n" + ex.Message, "Нарушение целостности данных",
                         MessageBoxButtons.OK, MessageBoxIcon.Stop);
     }
 }
Ejemplo n.º 13
0
 //Метод сохраняющий партии в переменную parties
 public static void setPartiesByFile(ListView lv)
 {
     if (parties.Count == 0)
     {
         OpenFileDialog openFile = new OpenFileDialog();
         openFile.Filter = "Excel files(*.xlsx)|*.xlsx";
         if (openFile.ShowDialog() == DialogResult.OK)
         {
             Nomenclatures.validatePartiesFile(openFile.FileName);
             Excel xlsxfile = Nomenclatures.openXslxFile(openFile.FileName);
             parties.AddRange(xlsxfile.Rows);
             Nomenclatures.renderPartiesInListView(lv);
         }
     }
     else
     {
         DialogResult result = MessageBox.Show("Вы уже загружали ранее файл с партиями, хотите ли вы перезаписать данные?"
                                               , "Подтвердите действие"
                                               , MessageBoxButtons.OKCancel
                                               , MessageBoxIcon.Warning
                                               );
         if (result == DialogResult.OK)
         {
             OpenFileDialog openFile = new OpenFileDialog();
             openFile.Filter = "Excel files(*.xlsx)|*.xlsx";
             if (openFile.ShowDialog() == DialogResult.OK)
             {
                 Nomenclatures.validatePartiesFile(openFile.FileName);
                 Nomenclatures.parties.Clear();
                 lv.Items.Clear();
                 Excel xlsxfile = Nomenclatures.openXslxFile(openFile.FileName);
                 parties.AddRange(xlsxfile.Rows);
                 Nomenclatures.renderPartiesInListView(lv);
             }
         }
     }
 }
Ejemplo n.º 14
0
        //Рендер формы с спецификациями машин
        public static TabControl renderFormWithOvensSpecifications()
        {
            //Создание tabControl объекта на форме
            TabControl tabControl1 = new TabControl();

            tabControl1.Location = new Point(5, 5);
            tabControl1.Size     = new Size(386, 200);

            for (int i = 0; i < shop.Count; i++)
            {
                //Создание страницы у tabControl
                TabPage page1 = new TabPage();
                page1.Text = machineTools.getOvenNameById(ShopPlanner.shop[i].id);

                //Создание listView внутри таба
                ListView lv = new ListView();
                lv.Size     = new Size(352, 150);
                lv.Location = new Point(5, 5);
                lv.View     = View.Details;
                lv.Columns.Add("id", -2);
                lv.Columns.Add("Имя", -2);
                lv.Columns.Add("Материал", -2);
                lv.Columns.Add("Время обработки", -2);
                ListViewItem lvi = new ListViewItem(new string[] { shop[i].id, shop[i].name, Nomenclatures.viewMaterialById(shop[i].materialsTimes[0][1]), shop[i].materialsTimes[0][2] + " мин" });
                lv.Items.Add(lvi);
                for (int j = 1; j < shop[i].materialsTimes.Count; j++)
                {
                    ListViewItem lviMaterials = new ListViewItem(new string[] { "", "", Nomenclatures.viewMaterialById(shop[i].materialsTimes[j][1]), shop[i].materialsTimes[j][2] + " мин" });
                    lv.Items.Add(lviMaterials);
                }
                tabControl1.Controls.Add(page1);
                page1.Controls.Add(lv);
            }
            return(tabControl1);
        }
Ejemplo n.º 15
0
 private void button4_Click(object sender, EventArgs e)
 {
     Nomenclatures.openMaterialsFile(listView2, listView1);
 }
Ejemplo n.º 16
0
 private void button2_Click(object sender, EventArgs e)
 {
     Nomenclatures.openMachineToolsFile(listView3);
 }
Ejemplo n.º 17
0
 public void renderStatistic()
 {
     this.Controls.Add(ShopPlanner.renderFormWithStatisticAboutBatch(Nomenclatures.setStatisticAboutBatch()));
 }
Ejemplo n.º 18
0
 private void button1_Click(object sender, EventArgs e)
 {
     Nomenclatures.saveStatInXlsxFile();
 }