// Записать партию в план обработки машины
        public int AssignJob(parties p)
        {
            int iTime = getTimeForProcessingById(p.nomenclatures.idNomenclatures);

            if (iTime != -1)
            {
                currentLoad += iTime;
                arrWorks.Add(p);
                return(0);
            }
            return(-1);
        }
        private void fillingArraysOfDataParties(string fileName)
        {
            lParties = new List <parties>();

            ExcelPackage   ep          = new ExcelPackage(new FileInfo(fileName));
            ExcelWorksheet ws          = ep.Workbook.Worksheets[1];
            int            countRow    = ws.Dimension.End.Row;
            int            countColumn = ws.Dimension.End.Column;

            for (int rowNum = 2; rowNum <= countRow; rowNum++)
            {
                int idNom = findNomenclatureByID(Int32.Parse(ws.Cells[rowNum, 2].Value.ToString()));
                if (idNom != -1)
                {
                    parties p = new parties(Int32.Parse(ws.Cells[rowNum, 1].Value.ToString()), ((nomenclatures)arrNomenclatures[idNom]));
                    lParties.Add(p);
                }
            }
        }
Beispiel #3
0
        public int timeStart;             // Время начала этапа

        public workSchedule(parties parties, machineTools machineTools, int timeStart)
        {
            this.parties      = parties;
            this.machineTools = machineTools;
            this.timeStart    = timeStart;
        }
        private void экспортРезультатаToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (arrSchedule != null)
            {
                logger.Info("Выгружаем результат");
                SaveFileDialog sfd = new SaveFileDialog();
                sfd.Filter = "Лист Microsoft Excel (.xlsx) |*.xlsx";
                if (sfd.ShowDialog() == DialogResult.OK)
                {
                    string fn = sfd.FileName;
                    Console.WriteLine(fn);

                    // Проверяем существует файл или нет
                    if (File.Exists(fn))
                    {
                        try
                        {
                            // Удаляем находку
                            File.Delete(fn);
                        }
                        catch (Exception ex)
                        {
                            logger.Error(String.Format("Внимание! Не удалось создать файл для записи результатов. Возможно, файл открыт в другой программе, или недостаточно прав для записи. Ошибка: {0}", ex.Message));
                            MessageBox.Show("Внимание! Не удалось создать файл для записи результатов. Возможно, файл открыт в другой программе, или недостаточно прав для записи.", "Файл не создан", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        }
                    }

                    ExcelPackage ep    = new ExcelPackage(new FileInfo(fn));
                    var          sheet = ep.Workbook.Worksheets.Add("Расписание обработки партий");

                    // Вывод результатов (общая таблица планирования)
                    sheet.Cells[1, 1].Value = "Номер партии";
                    sheet.Cells[2, 1].Value = "Номенклатура";
                    sheet.Cells[3, 1].Value = "Оборудование";
                    sheet.Cells[4, 1].Value = "Начало этапа обработки";
                    sheet.Cells[5, 1].Value = "Конец этапа обработки";

                    for (int i = 0; i < arrSchedule.Count; i++)
                    {
                        sheet.Cells[1, i + 2].Value = ((workSchedule)arrSchedule[i]).parties.idParties;
                        sheet.Cells[2, i + 2].Value = ((workSchedule)arrSchedule[i]).parties.nomenclatures.nameNomenclatures;
                        sheet.Cells[3, i + 2].Value = ((workSchedule)arrSchedule[i]).machineTools.getName();
                        sheet.Cells[4, i + 2].Value = ((workSchedule)arrSchedule[i]).timeStart;
                        sheet.Cells[5, i + 2].Value = ((workSchedule)arrSchedule[i]).timeStart + ((workSchedule)arrSchedule[i]).machineTools.getTimeForProcessingById(((workSchedule)arrSchedule[i]).parties.nomenclatures.idNomenclatures);
                    }

                    // Дополнительно в отдельные страницы впишем графики загрузки каждой машины
                    foreach (machineTools mt in arrTools)
                    {
                        string sheetName = String.Format("Расписание \"{0}\"", mt.getName());

                        var sheetTools = ep.Workbook.Worksheets.Add(sheetName);
                        sheetTools.Cells[1, 1].Value = "Номер партии";
                        sheetTools.Cells[2, 1].Value = "Номенклатура";
                        sheetTools.Cells[3, 1].Value = "Оборудование";
                        sheetTools.Cells[4, 1].Value = "Начало этапа обработки";
                        sheetTools.Cells[5, 1].Value = "Конец этапа обработки";

                        int t = 0;
                        for (int j = 0; j < mt.arrWorks.Count; ++j)
                        {
                            parties p = (parties)(mt.arrWorks[j]);
                            sheetTools.Cells[1, j + 2].Value = p.idParties;
                            sheetTools.Cells[2, j + 2].Value = p.nomenclatures.nameNomenclatures;
                            sheetTools.Cells[3, j + 2].Value = t;
                            sheetTools.Cells[4, j + 2].Value = (t += mt.getTimeForProcessingById(p.nomenclatures.idNomenclatures));
                        }
                    }

                    try
                    {
                        FileInfo fi = new FileInfo(fn);
                        ep.SaveAs(fi);
                        logger.Info(String.Format("Файл успешно выгружен: {0}", fi.FullName));
                        MessageBox.Show("Файл успешно сохранен.", "Файл создан", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    catch (Exception ex)
                    {
                        logger.Error(String.Format("Внимание! Не удалось создать файл для записи результатов. Возможно, файл открыт в другой программе, или недостаточно прав для записи. Ошибка: {0}", ex.Message));
                        MessageBox.Show("Внимание! Не удалось создать файл для записи результатов. Возможно, файл открыт в другой программе, или недостаточно прав для записи.", "Файл не создан", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }
                }
            }
            else
            {
                logger.Error(String.Format("Для экспорта данных, необходимо сначало сделать \"Расчет\"!"));
                MessageBox.Show("Для экспорта данных, необходимо сначало сделать \"Расчет\"!", "Файл не создан", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }