예제 #1
0
        private void btnOK_Click(object sender, EventArgs e)
        {
            number = maskedTbNumber.Text.Replace(',', '.');
            PelengEntities pe = new PelengEntities();

            if (number.EndsWith("0"))
            {
                var specs = (from m in pe.Сборки
                             where m.НомерСборки == number
                             select m);
                if (specs.Count() == 0)
                {
                    MessageBox.Show("Спецификация с таким номером не существует!", "Внимание!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    this.DialogResult = DialogResult.None;
                }
            }
            else
            {
                var specs = (from m in pe.Детали
                             where m.НомерДетали == number
                             select m);
                if (specs.Count() == 0)
                {
                    MessageBox.Show("Спецификация с таким номером не существует!", "Внимание!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    this.DialogResult = DialogResult.None;
                }
            }
        }
예제 #2
0
        private void btnSave_Click(object sender, EventArgs e)
        {
            PelengEntities pe  = new PelengEntities();
            var            det = (from m in pe.Детали
                                  where (m.НомерДетали == this.ParentForm.Text)
                                  select m);
            var mat = (from m in pe.Материалы
                       where (m.НаименованиеМатериала == tbMat.Text)
                       select m);

            if (det.Count() != 0)
            {
                det.First().ВыходДеталей = (int)numericUpDown1.Value;
                det.First().НормаРасхода = double.Parse(mtbRate.Text);
                det.First().МатериалID   = mat.First().МатериалID;
                if (maskedTextBox2.Visible)
                {
                    det.First().ДлинаЗаготовки  = double.Parse(maskedTextBox2.Text);
                    det.First().ШиринаЗаготовки = double.Parse(maskedTextBox1.Text);
                }
                else
                {
                    det.First().ДлинаЗаготовки  = double.Parse(maskedTextBox1.Text);
                    det.First().ШиринаЗаготовки = null;
                }
                pe.SaveChanges();
            }
            else
            {
                if (((specificationWork)ParentForm).WayID != 0 & ((specificationWork)ParentForm).ItemName != "")
                {
                    Детали d = new Детали();
                    d.Наименование = ((specificationWork)ParentForm).ItemName;
                    d.НомерДетали  = this.ParentForm.Text;
                    d.МаршрутID    = ((specificationWork)ParentForm).WayID;
                    d.МатериалID   = ((Материалы)tbMat.Tag).МатериалID;
                    d.ВыходДеталей = (int)numericUpDown1.Value;
                    d.НормаРасхода = double.Parse(mtbRate.Text);
                    if (maskedTextBox2.Visible)
                    {
                        d.ДлинаЗаготовки  = double.Parse(maskedTextBox2.Text);
                        d.ШиринаЗаготовки = double.Parse(maskedTextBox1.Text);
                    }
                    else
                    {
                        d.ДлинаЗаготовки  = double.Parse(maskedTextBox1.Text);
                        d.ШиринаЗаготовки = null;
                    }
                    pe.AddToДетали(d);
                    pe.SaveChanges();
                }
                else
                {
                    MessageBox.Show("Необходимо правильно заполнить все поля в разделе с основной информацией", "Внимание!",
                                    MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                }
            }
        }
예제 #3
0
        private void typeTwo(Excel.Worksheet sheet, Dictionary <string, Dictionary <string, int> > dt)
        {
            PelengEntities pe = new PelengEntities();
            int            c = 1, row = 7;

            addExcelCell(sheet, 3, 1, "Полная входимость с цепочкой", "Times New Roman", 16, true);
            addExcelCell(sheet, 6, 1, "№", "Times New Roman", 14, true);
            addExcelCell(sheet, 6, 2, "Входимость", "Times New Roman", 14, true);
            addExcelCell(sheet, 6, 5, "Номер изделия", "Times New Roman", 14, true);
            addExcelCell(sheet, 6, 3, "Кол-во", "Times New Roman", 14, true);
            addExcelCell(sheet, 6, 4, "Общее кол-во", "Times New Roman", 14, true);
            (sheet.get_Range("A6", "E6") as Excel.Range).Borders[Excel.XlBordersIndex.xlEdgeLeft].LineStyle       = Excel.XlLineStyle.xlDouble;
            (sheet.get_Range("A6", "E6") as Excel.Range).Borders[Excel.XlBordersIndex.xlEdgeBottom].LineStyle     = Excel.XlLineStyle.xlDouble;
            (sheet.get_Range("A6", "E6") as Excel.Range).Borders[Excel.XlBordersIndex.xlEdgeTop].LineStyle        = Excel.XlLineStyle.xlDouble;
            (sheet.get_Range("A6", "E6") as Excel.Range).Borders[Excel.XlBordersIndex.xlEdgeRight].LineStyle      = Excel.XlLineStyle.xlDouble;
            (sheet.get_Range("A6", "E6") as Excel.Range).Borders[Excel.XlBordersIndex.xlInsideVertical].LineStyle = Excel.XlLineStyle.xlDouble;

            foreach (string s in dt.Keys)
            {
                var assembly = (from m in pe.Сборки
                                where m.НомерСборки == s
                                select m);
                int firstRow = row;
                int fullN    = 0;
                foreach (string way in dt[s].Keys)
                {
                    addExcelCell(sheet, row, 1, c++.ToString(), "Times New Roman", 14, true);
                    addExcelCell(sheet, row, 2, way, "Times New Roman", 14, true);
                    addExcelCell(sheet, row, 3, dt[s][way].ToString(), "Times New Roman", 14, true);
                    fullN += dt[s][way];
                    for (int i = 1; i <= 5; i++)
                    {
                        (sheet.Cells[row, i] as Excel.Range).Borders[Excel.XlBordersIndex.xlEdgeLeft].LineStyle       = Excel.XlLineStyle.xlDouble;
                        (sheet.Cells[row, i] as Excel.Range).Borders[Excel.XlBordersIndex.xlEdgeBottom].LineStyle     = Excel.XlLineStyle.xlDouble;
                        (sheet.Cells[row, i] as Excel.Range).Borders[Excel.XlBordersIndex.xlEdgeTop].LineStyle        = Excel.XlLineStyle.xlDouble;
                        (sheet.Cells[row, i] as Excel.Range).Borders[Excel.XlBordersIndex.xlEdgeRight].LineStyle      = Excel.XlLineStyle.xlDouble;
                        (sheet.Cells[row, i] as Excel.Range).Borders[Excel.XlBordersIndex.xlInsideVertical].LineStyle = Excel.XlLineStyle.xlDouble;
                    }
                    Excel.Range cellOne, cellTwo;
                    cellOne = sheet.Cells[firstRow, 5];
                    cellTwo = sheet.Cells[row, 5];
                    sheet.get_Range(cellOne, cellTwo).Merge();
                    (sheet.Cells[row, 5] as Excel.Range).VerticalAlignment   = Excel.XlHAlign.xlHAlignCenter;
                    (sheet.Cells[row, 5] as Excel.Range).HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
                    cellOne = sheet.Cells[firstRow, 4];
                    cellTwo = sheet.Cells[row, 4];
                    sheet.get_Range(cellOne, cellTwo).Merge();
                    (sheet.Cells[row, 4] as Excel.Range).VerticalAlignment   = Excel.XlHAlign.xlHAlignCenter;
                    (sheet.Cells[row, 4] as Excel.Range).HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
                    addExcelCell(sheet, row, 5, s, "Times New Roman", 14, true);
                    row++;
                }
                addExcelCell(sheet, firstRow, 4, fullN.ToString(), "Times New Roman", 14, true);
                sheet.Columns.AutoFit();
                ((Excel.Range)sheet.Columns["A"]).ColumnWidth = 5;
            }
        }
예제 #4
0
        private void btnChoose_Click(object sender, EventArgs e)
        {
            material.НаименованиеМатериала = dataGridView1.CurrentRow.Cells[0].Value.ToString();
            PelengEntities pe   = new PelengEntities();
            var            mats = (from m in pe.Материалы
                                   where m.НаименованиеМатериала == material.НаименованиеМатериала
                                   select m);

            material = mats.Single();
        }
예제 #5
0
        private void btnOK_Click(object sender, EventArgs e)
        {
            string addNumber = maskedTbNumber.Text.Replace(',', '.');

            add.Количество = (int)numericUpDown1.Value;
            PelengEntities pe         = new PelengEntities();
            var            assemblies = (from m in pe.Сборки
                                         where m.НомерСборки == addNumber
                                         select m);
            List <string> inAssemblies = new List <string>();

            listAssembly(add.НомерСборки, inAssemblies);
            if (assemblies.Count() != 0)
            {
                if (addNumber == add.НомерСборки)
                {
                    string message = "Сборка " + addNumber + " не может входить сама в себя!";
                    MessageBox.Show(message, "Внимание!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    this.DialogResult = DialogResult.None;
                }
                else if (!inAssemblies.Contains(addNumber))
                {
                    add.НомерВхСборки = addNumber;
                }
                else
                {
                    string message = "Сборка " + addNumber + " не может входить в сборку " + add.НомерСборки + " !";
                    MessageBox.Show(message, "Внимание!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    this.DialogResult = DialogResult.None;
                }
            }
            else
            {
                if (MessageBox.Show("Спецификация с таким номером не существует.\nСоздать данную спецификацию?", "Внимание!",
                                    MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.Yes)
                {
                    specificationWork specWork = new specificationWork(addNumber);
                    if (specWork.ShowDialog(this.ParentForm) == DialogResult.OK)
                    {
                        add.НомерВхСборки = addNumber;
                        this.DialogResult = DialogResult.OK;
                    }
                    else
                    {
                        this.DialogResult = DialogResult.Cancel;
                    }
                }
                else
                {
                    this.DialogResult = DialogResult.None;
                }
            }
        }
예제 #6
0
        private void tsBtnAdd_Click(object sender, EventArgs e)
        {
            PelengEntities pe = new PelengEntities();
            var            currentAssembly = (from m in pe.Сборки
                                              where m.НомерСборки == number
                                              select m);

            if (currentAssembly.Count() == 0)
            {
                if (MessageBox.Show("Текущая спецификация не внесена в базу.\nСохранить данную спецификацию?", "Внимание!",
                                    MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.No)
                {
                    return;
                }
                else
                {
                    if (btnSave.Enabled)
                    {
                        btnSave_Click(sender, e);
                    }
                    else
                    {
                        MessageBox.Show("Необходимо правильно заполнить все поля", "Внимание!",
                                        MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                        tabSpecification.SelectedTab = tabMain;
                        return;
                    }
                }
            }
            addAssembly add = new addAssembly(number);

            if (add.ShowDialog(this) == DialogResult.OK)
            {
                bool exist = false;
                foreach (DataGridViewRow dr in dataGridView1.Rows)
                {
                    if (dr.Cells[0].Value.ToString() == add.AddAssembly.НомерВхСборки)
                    {
                        exist = true;
                        break;
                    }
                }
                if (!exist)
                {
                    pelengDataSet.ВходящиеСборки.Rows.Add(add.AddAssembly.НомерВхСборки, add.AddAssembly.Количество, number);
                }
            }
        }
예제 #7
0
 private void tsBtnEdit_Click(object sender, EventArgs e)
 {
     if (dataGridView1.SelectedCells.Count != 0)
     {
         int            index   = dataGridView1.SelectedCells[0].RowIndex;
         string         current = dataGridView1.Rows[index].Cells[0].Value.ToString();
         int            k       = (int)dataGridView1.Rows[index].Cells[1].Value;
         addAssembly    add     = new addAssembly(number, current, k);
         PelengEntities pe      = new PelengEntities();
         if (add.ShowDialog(this) == DialogResult.OK)
         {
             if (add.AddAssembly.НомерВхСборки == current && add.AddAssembly.Количество == k)
             {
                 return;
             }
             if (add.AddAssembly.НомерВхСборки == current)
             {
                 dataGridView1.Rows[index].Cells[1].Value = add.AddAssembly.Количество;
             }
             else
             {
                 bool exist    = false;
                 int  newIndex = 0;
                 foreach (DataGridViewRow dr in dataGridView1.Rows)
                 {
                     if (dr.Cells[0].Value.ToString() == add.AddAssembly.НомерВхСборки)
                     {
                         exist    = true;
                         newIndex = dr.Index;
                     }
                 }
                 if (!exist)
                 {
                     dataGridView1.Rows.RemoveAt(index);
                     pelengDataSet.ВходящиеСборки.Rows.Add(add.AddAssembly.НомерВхСборки, add.AddAssembly.Количество, number);
                 }
                 else
                 {
                     dataGridView1.Rows[newIndex].Cells[1].Value = add.AddAssembly.Количество;
                     dataGridView1.Rows.RemoveAt(index);
                 }
             }
         }
     }
 }
예제 #8
0
        private void typeOne(Excel.Worksheet sheet, Dictionary <string, Dictionary <string, int> > dt)
        {
            PelengEntities pe = new PelengEntities();
            int            c = 1, row = 7;

            addExcelCell(sheet, 3, 1, "Полная входимость без цепочки", "Times New Roman", 16, true);
            addExcelCell(sheet, 6, 1, "№", "Times New Roman", 14, true);
            addExcelCell(sheet, 6, 2, "Номер изделия", "Times New Roman", 14, true);
            addExcelCell(sheet, 6, 3, "Наименование", "Times New Roman", 14, true);
            addExcelCell(sheet, 6, 4, "Кол-во", "Times New Roman", 14, true);
            (sheet.get_Range("A6", "D6") as Excel.Range).Borders[Excel.XlBordersIndex.xlEdgeLeft].LineStyle       = Excel.XlLineStyle.xlDouble;
            (sheet.get_Range("A6", "D6") as Excel.Range).Borders[Excel.XlBordersIndex.xlEdgeBottom].LineStyle     = Excel.XlLineStyle.xlDouble;
            (sheet.get_Range("A6", "D6") as Excel.Range).Borders[Excel.XlBordersIndex.xlEdgeTop].LineStyle        = Excel.XlLineStyle.xlDouble;
            (sheet.get_Range("A6", "D6") as Excel.Range).Borders[Excel.XlBordersIndex.xlEdgeRight].LineStyle      = Excel.XlLineStyle.xlDouble;
            (sheet.get_Range("A6", "D6") as Excel.Range).Borders[Excel.XlBordersIndex.xlInsideVertical].LineStyle = Excel.XlLineStyle.xlDouble;

            foreach (string s in dt.Keys)
            {
                var assembly = (from m in pe.Сборки
                                where m.НомерСборки == s
                                select m);
                int fullN = 0;
                foreach (string way in dt[s].Keys)
                {
                    fullN += dt[s][way];
                    for (int i = 1; i <= 4; i++)
                    {
                        (sheet.Cells[row, i] as Excel.Range).Borders[Excel.XlBordersIndex.xlEdgeLeft].LineStyle       = Excel.XlLineStyle.xlDouble;
                        (sheet.Cells[row, i] as Excel.Range).Borders[Excel.XlBordersIndex.xlEdgeBottom].LineStyle     = Excel.XlLineStyle.xlDouble;
                        (sheet.Cells[row, i] as Excel.Range).Borders[Excel.XlBordersIndex.xlEdgeTop].LineStyle        = Excel.XlLineStyle.xlDouble;
                        (sheet.Cells[row, i] as Excel.Range).Borders[Excel.XlBordersIndex.xlEdgeRight].LineStyle      = Excel.XlLineStyle.xlDouble;
                        (sheet.Cells[row, i] as Excel.Range).Borders[Excel.XlBordersIndex.xlInsideVertical].LineStyle = Excel.XlLineStyle.xlDouble;
                    }
                }
                addExcelCell(sheet, row, 1, c++.ToString(), "Times New Roman", 14, true);
                addExcelCell(sheet, row, 2, s, "Times New Roman", 14, true);
                addExcelCell(sheet, row, 3, assembly.First().Наименование, "Times New Roman", 14, true);
                addExcelCell(sheet, row, 4, fullN.ToString(), "Times New Roman", 14, true);
                row++;
                sheet.Columns.AutoFit();
                ((Excel.Range)sheet.Columns["A"]).ColumnWidth = 5;
            }
        }
예제 #9
0
        private void btnCompute_Click(object sender, EventArgs e)
        {
            computeRate    rateForm = new computeRate();
            Детали         det      = new Детали();
            PelengEntities pe       = new PelengEntities();
            var            mat      = (from m in pe.Материалы
                                       where (m.МатериалID == det.МатериалID)
                                       select m);

            if (rateForm.ShowDialog(this) == DialogResult.OK)
            {
                det          = rateForm.Det;
                mtbRate.Text = det.НормаРасхода.ToString();
                epA.Clear();
                epB.Clear();
                epX.Clear();
                if (det.ШиринаЗаготовки.HasValue)
                {
                    maskedTextBox1.Text    = det.ШиринаЗаготовки.ToString();
                    maskedTextBox2.Text    = det.ДлинаЗаготовки.ToString();
                    maskedTextBox2.Visible = true;
                    label6.Visible         = true;
                    lbType.Visible         = false;
                }
                else
                {
                    maskedTextBox1.Text    = det.ДлинаЗаготовки.ToString();
                    maskedTextBox2.Visible = false;
                    label6.Visible         = false;
                    lbType.Visible         = true;
                    lbType.Text            = "\u00d8";
                }
                numericUpDown1.Value   = det.ВыходДеталей;
                lbGabarit.Text         = mat.First().Габарит.ToString();
                tbMat.Text             = mat.First().НаименованиеМатериала;
                tbMat.Tag              = mat.First();
                label5.Visible         = true;
                maskedTextBox1.Visible = true;
            }
        }
예제 #10
0
        private void tbWay_TextChanged(object sender, EventArgs e)
        {
            if (tbWay.TextLength > 84)
            {
                epWay.SetError(tbWay, "Слишком длинный маршрут!");
                Validate();
                return;
            }
            string []      subWays  = tbWay.Text.Split('-');
            bool           rightWay = false;
            PelengEntities pe       = new PelengEntities();
            List <string>  listWays = (from m in pe.Подразделения
                                       select m.НомерПодразделения).ToList();

            foreach (string s in subWays)
            {
                if (s.Length == 0)
                {
                    continue;
                }
                if (listWays.Contains(s))
                {
                    rightWay = true;
                }
                else
                {
                    rightWay = false;
                    break;
                }
            }
            if (rightWay)
            {
                epWay.Clear();
            }
            else
            {
                epWay.SetError(tbWay, "Ошибка в кодировке подразделения!");
            }
            Validate();
        }
예제 #11
0
        private void listAssembly(string number, List <string> assemblies)
        {
            PelengEntities pe             = new PelengEntities();
            List <string>  newAssemblies  = new List <string>();
            var            listAssemblies = (from m in pe.ВходящиеСборки
                                             where m.НомерВхСборки == number
                                             select m);

            foreach (var l in listAssemblies)
            {
                if (!assemblies.Contains(l.НомерСборки))
                {
                    newAssemblies.Add(l.НомерСборки);
                }
            }
            assemblies.AddRange(newAssemblies);
            if (newAssemblies.Count != 0)
            {
                foreach (string s in newAssemblies)
                {
                    listAssembly(s, assemblies);
                }
            }
        }
예제 #12
0
        private void btnSave_Click(object sender, EventArgs e)
        {
            if (tbWay.Text.StartsWith("-"))
            {
                tbWay.Text = tbWay.Text.Remove(0, 1);
            }
            if (tbWay.Text.EndsWith("-"))
            {
                tbWay.Text = tbWay.Text.Remove(tbWay.TextLength - 1);
            }
            PelengEntities pe  = new PelengEntities();
            var            det = (from m in pe.Детали
                                  where (m.НомерДетали == number)
                                  select m);
            var sb = (from m in pe.Сборки
                      where (m.НомерСборки == number)
                      select m);
            Dictionary <int, string> waysDiction = new Dictionary <int, string>();
            var grouped = from p in pe.Маршруты
                          orderby p.МаршрутID
                          group p by p.МаршрутID into grp
                          select new { ID = grp.Key, objWay = grp };

            foreach (var w in grouped.ToList())
            {
                string s = "";
                foreach (var r in w.objWay)
                {
                    s += r.НомерПодразделения + "-";
                }
                s = s.Remove(s.Length - 1);
                waysDiction.Add(w.ID, s);
            }
            int numberWay = 0;

            foreach (int n in waysDiction.Keys)
            {
                if (tbWay.Text == waysDiction[n])
                {
                    numberWay = n;
                    break;
                }
            }
            string[] subWays = tbWay.Text.Split('-');
            if (numberWay == 0)
            {
                int z = 1;
                foreach (string s in subWays)
                {
                    pe.Маршруты.AddObject(new Маршруты {
                        МаршрутID = waysDiction.Count + 1, ПорядковыйНомер = z++, НомерПодразделения = s
                    });
                }
                pe.SaveChanges();
                waysDiction.Add(numberWay = waysDiction.Count + 1, tbWay.Text);
            }
            tbWay.AutoCompleteCustomSource.AddRange(waysDiction.Values.ToArray());
            if (det.Count() != 0)
            {
                det.First().Наименование = tbName.Text;
                det.First().МаршрутID    = numberWay;
                pe.SaveChanges();
            }
            else if (sb.Count() != 0)
            {
                sb.First().Наименование = tbName.Text;
                sb.First().МаршрутID    = numberWay;
                pe.SaveChanges();
            }
            else if (number.EndsWith("0"))
            {
                Сборки assembly = new Сборки();
                assembly.Наименование = tbName.Text;
                assembly.МаршрутID    = numberWay;
                assembly.НомерСборки  = number;
                pe.Сборки.AddObject(assembly);
                pe.SaveChanges();
            }
            else
            {
                tabSpecification.SelectedTab = tabMaterial;
            }
            currentName       = tbName.Text;
            currentWay        = tbWay.Text;
            this.DialogResult = DialogResult.OK;
        }
예제 #13
0
        public specificationWork(string number)
            : this()
        {
            this.number = this.Text = tbNumber.Text = number;
            PelengEntities pe  = new PelengEntities();
            var            det = (from m in pe.Детали
                                  where (m.НомерДетали == number)
                                  select m);
            var sb = (from m in pe.Сборки
                      where (m.НомерСборки == number)
                      select m);
            int way = 0;

            if (det.Count() != 0)
            {
                tbName.Text       = currentName = det.First().Наименование;
                way               = det.First().МаршрутID;
                btnSave.Enabled   = true;
                this.DialogResult = DialogResult.OK;
            }
            else if (sb.Count() != 0)
            {
                tbName.Text       = currentName = sb.First().Наименование;
                way               = sb.First().МаршрутID;
                btnSave.Enabled   = true;
                this.DialogResult = DialogResult.OK;
            }
            else
            {
                btnSave.Enabled   = false;
                this.DialogResult = DialogResult.OK;
            }
            if (way != 0)
            {
                var ways = (from m in pe.Маршруты
                            where (m.МаршрутID == way)
                            select m).ToList();
                foreach (var w in ways)
                {
                    tbWay.Text += w.НомерПодразделения + "-";
                }
                tbWay.Text = currentWay = tbWay.Text.Remove(tbWay.Text.Length - 1);
            }
            var grouped = from p in pe.Маршруты
                          orderby p.МаршрутID
                          group p by p.МаршрутID into grp
                          select new { ID = grp.Key, objWay = grp };
            Dictionary <int, string> waysDiction = new Dictionary <int, string>();

            foreach (var w in grouped.ToList())
            {
                string s = "";
                foreach (var r in w.objWay)
                {
                    s += r.НомерПодразделения + "-";
                }
                s = s.Remove(s.Length - 1);
                waysDiction.Add(w.ID, s);
            }
            tbWay.AutoCompleteMode   = AutoCompleteMode.SuggestAppend;
            tbWay.AutoCompleteSource = AutoCompleteSource.CustomSource;
            tbWay.AutoCompleteCustomSource.AddRange(waysDiction.Values.ToArray());
        }
예제 #14
0
        private void tabSpecification_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (tabSpecification.SelectedTab == tabAssembly)
            {
                if (number.EndsWith("0"))
                {
                    входящиеСборкиTableAdapter.Fill(pelengDataSet.ВходящиеСборки, number);
                }
                else
                {
                    tsBtnAdd.Enabled        = false;
                    tsBtnDelete.Enabled     = false;
                    tsBtnEdit.Enabled       = false;
                    btnSaveAssembly.Enabled = false;
                }
            }

            if (tabSpecification.SelectedTab == tabMain)
            {
                tbNumber.Text = number;
                tbName_TextChanged(sender, e);
                tbWay_TextChanged(sender, e);
            }

            if (tabSpecification.SelectedTab == tabMaterial)
            {
                if (!number.EndsWith("0"))
                {
                    ItemMaterial im = new ItemMaterial();
                    im.Dock = System.Windows.Forms.DockStyle.Fill;
                    PelengEntities pe  = new PelengEntities();
                    var            det = (from m in pe.Детали
                                          where (m.НомерДетали == number)
                                          select m);
                    if (det.Count() != 0)
                    {
                        foreach (Детали d in det)
                        {
                            im.Length   = d.ДлинаЗаготовки;
                            im.Rate     = d.НормаРасхода;
                            im.Material = d.Материалы;
                            im.Gabarit  = d.Материалы.Габарит;
                            im.N        = d.ВыходДеталей;
                            if (d.ШиринаЗаготовки.HasValue)
                            {
                                im.Weight = d.ШиринаЗаготовки.Value;
                            }
                        }
                    }
                    else
                    {
                        Детали d = new Детали();
                        d.НомерДетали    = number;
                        d.Наименование   = tbName.Text;
                        d.Материалы      = im.Material;
                        d.ДлинаЗаготовки = im.Length;
                    }
                    tabMaterial.Controls.Add(im);
                }
            }
        }
예제 #15
0
        private void listRate(float a, float b, float c, int n, float x)
        {
            listView1.Items.Clear();
            PelengEntities pe       = new PelengEntities();
            var            matsDiam = (from m in pe.Материалы
                                       where ((m.Профили.ВидПрофиля.Contains("Круг") || m.Профили.ВидПрофиля.Contains("Пруток")) &&
                                              m.МаркиМатериала.НаименованиеМарки == cbMark.SelectedValue)
                                       orderby m.Габарит
                                       select m).ToList <Материалы>();
            var matsList = (from m in pe.Материалы
                            where ((!m.Профили.ВидПрофиля.Contains("Круг") & !m.Профили.ВидПрофиля.Contains("Пруток")) &&
                                   m.МаркиМатериала.НаименованиеМарки == cbMark.SelectedValue)
                            orderby m.Габарит
                            select m).ToList <Материалы>();

            if (cbProfile.SelectedIndex == 1)
            {
                diam = computeDiam(a, b);
            }
            else
            {
                diam = a;
            }
            List <Детали> listDet = new List <Детали>();

            foreach (var m in matsDiam)
            {
                if (m.Габарит >= allowanceDiam(diam))
                {
                    listDet.Add(new Детали()
                    {
                        ДлинаЗаготовки = (int)((c + 2 + calcCut(m.Габарит)) * n + x + 0.6F),
                        ВыходДеталей   = n,
                        МатериалID     = m.МатериалID,
                        НормаРасхода   = Math.Round(m.МаркиМатериала.Плотность / 1E6 * Math.PI * m.Габарит * m.Габарит / 4 * ((int)((c + 2 + calcCut(m.Габарит)) * n + x + 0.6F) + calcCutX(m.Габарит)) / n, 4)
                    });
                    break;
                }
            }
            if (cbProfile.SelectedIndex == 1)
            {
                diam = computeDiam(a, c);
                foreach (var m in matsDiam)
                {
                    if (m.Габарит >= allowanceDiam(diam))
                    {
                        listDet.Add(new Детали()
                        {
                            ДлинаЗаготовки = (int)((b + 2 + calcCut(m.Габарит)) * n + x + 0.6F),
                            ВыходДеталей   = n,
                            МатериалID     = m.МатериалID,
                            НормаРасхода   = Math.Round(m.МаркиМатериала.Плотность / 1E6 * Math.PI * m.Габарит * m.Габарит / 4 * ((int)((b + 2 + calcCut(m.Габарит)) * n + x + 0.6F) + calcCutX(m.Габарит)) / n, 4)
                        });
                        break;
                    }
                }
                diam = computeDiam(c, b);
                foreach (var m in matsDiam)
                {
                    if (m.Габарит >= allowanceDiam(diam))
                    {
                        listDet.Add(new Детали()
                        {
                            ДлинаЗаготовки = (int)((a + 2 + calcCut(m.Габарит)) * n + x + 0.6F),
                            ВыходДеталей   = n,
                            МатериалID     = m.МатериалID,
                            НормаРасхода   = Math.Round(m.МаркиМатериала.Плотность / 1E6 * Math.PI * m.Габарит * m.Габарит / 4 * ((int)((a + 2 + calcCut(m.Габарит)) * n + x + 0.6F) + calcCutX(m.Габарит)) / n, 4)
                        });
                        break;
                    }
                }
            }
            foreach (var m in matsList)     //расчёт единичных заготовок из листа
            {
                if (m.Габарит >= allowanceList(a))
                {
                    if (cbProfile.SelectedIndex == 0)
                    {
                        b = a;
                    }
                    int weight, length;
                    if ((m.Длина > m.Ширина) & (c > b))
                    {
                        weight = (int)((b + calcCutList(m.Габарит)) + 0.6F);
                        length = (int)((c + calcCutList(m.Габарит)) + 0.6F);
                        if ((m.Ширина >= b) & (m.Ширина < weight))
                        {
                            weight = m.Ширина.Value;
                        }
                        if ((m.Длина >= c) & (m.Длина < length))
                        {
                            length = m.Длина.Value;
                        }
                    }
                    else
                    {
                        weight = (int)((c + calcCutList(m.Габарит)) + 0.6F);
                        length = (int)((b + calcCutList(m.Габарит)) + 0.6F);
                        if ((m.Ширина >= c) & (m.Ширина < weight))
                        {
                            weight = m.Ширина.Value;
                        }
                        if ((m.Длина >= b) & (m.Длина < length))
                        {
                            length = m.Длина.Value;
                        }
                    }

                    if ((m.Ширина >= weight) & (m.Длина >= length))
                    {
                        listDet.Add(new Детали()
                        {
                            ДлинаЗаготовки  = length,
                            ШиринаЗаготовки = weight,
                            ВыходДеталей    = 1,
                            МатериалID      = m.МатериалID,
                            НормаРасхода    = Math.Round((m.МаркиМатериала.Плотность / 1E6 * m.Габарит * ((int)((b + calcCutList(m.Габарит)) + 0.6F) + calcCutXList(m.Габарит)) * ((int)((c + calcCutList(m.Габарит)) + 0.6F) + calcCutXList(m.Габарит))), 4)
                        });
                    }
                    break;
                }
            }
            listDet.Sort();
            listView1.BeginUpdate();
            foreach (Детали detal in listDet)
            {
                var mat = (from m in pe.Материалы
                           where m.МатериалID == detal.МатериалID
                           select m).ToList <Материалы>();
                ListViewItem lvi;
                listView1.Items.Add(lvi = new ListViewItem(new string[] { mat.First().Ширина.HasValue?mat.First().Габарит + " x " + detal.ШиринаЗаготовки + " x " + detal.ДлинаЗаготовки:"\u00d8 " + mat.First().Габарит + " x " + detal.ДлинаЗаготовки,
                                                                          detal.НормаРасхода.ToString(), detal.ВыходДеталей.ToString(), mat.First().НаименованиеМатериала }));
                lvi.Tag = detal;
            }
            listView1.EndUpdate();
            if (listView1.Items.Count != 0)
            {
                btnSelect.Enabled = true;
                listView1.Focus();
                listView1.Items[0].Selected = true;
            }
            else
            {
                btnSelect.Enabled = false;
            }
        }
예제 #16
0
        private void ведомостьВходимостиToolStripMenuItem_Click(object sender, EventArgs e)
        {
            reportItemEnter report = new reportItemEnter();

            if (report.ShowDialog(this) == DialogResult.OK)
            {
                PelengEntities pe = new PelengEntities();
                string         name;
                List <Dictionary <string, int> > fullList = new List <Dictionary <string, int> >();
                List <string> needRead = new List <string>();

                if (report.Number.EndsWith("0"))
                {
                    var specs = (from m in pe.Сборки
                                 where m.НомерСборки == report.Number
                                 select m).First();
                    name = specs.Наименование;
                    var inAssembly = (from m in pe.ВходящиеСборки
                                      where m.НомерВхСборки == report.Number
                                      select m).ToList();
                    foreach (ВходящиеСборки vs in inAssembly)
                    {
                        Dictionary <string, int> dt = new Dictionary <string, int>();
                        dt.Add(vs.НомерСборки, vs.Количество);
                        fullList.Add(dt);
                        needRead.Add(vs.НомерСборки);
                    }
                }
                else
                {
                    var specs = (from m in pe.Детали
                                 where m.НомерДетали == report.Number
                                 select m).First();
                    name = specs.Наименование;
                    var inAssembly = (from m in pe.СборкиДетали
                                      where m.НомерДетали == report.Number
                                      select m).ToList();
                    foreach (СборкиДетали d in inAssembly)
                    {
                        Dictionary <string, int> dt = new Dictionary <string, int>();
                        dt.Add(d.НомерСборки, d.Количество);
                        fullList.Add(dt);
                        needRead.Add(d.НомерСборки);
                    }
                }

                while (needRead.Count != 0)
                {
                    string s = needRead[0];
                    for (int i = 0; i < fullList.Count; i++)
                    {
                        if (fullList[i].Last().Key == s)
                        {
                            var newAssembly = (from m in pe.ВходящиеСборки
                                               where m.НомерВхСборки == s
                                               select m).ToList();
                            int c = 0;
                            IDictionary <string, int> dt = new Dictionary <string, int>();
                            foreach (string key in fullList[i].Keys)
                            {
                                dt.Add(key, fullList[i][key]);
                            }
                            foreach (ВходящиеСборки vs in newAssembly)
                            {
                                c++;
                                if (c > 1)
                                {
                                    dt.Add(vs.НомерСборки, vs.Количество);
                                    fullList.Add(new Dictionary <string, int>(dt));
                                    dt.Remove(vs.НомерСборки);
                                }
                                else
                                {
                                    fullList[i].Add(vs.НомерСборки, vs.Количество);
                                }
                                needRead.Add(vs.НомерСборки);
                            }
                        }
                    }
                    needRead.Remove(s);
                }

                Dictionary <string, int> dtTypeNull = new Dictionary <string, int>();
                Dictionary <string, Dictionary <string, int> > listDtOne = new Dictionary <string, Dictionary <string, int> >();

                foreach (Dictionary <string, int> dt in fullList)
                {
                    string str = report.Number;
                    int    n   = 1;
                    foreach (string s in dt.Keys)
                    {
                        str += " (" + dt[s] + ") --> " + s;
                        n   *= dt[s];
                    }
                    if (report.TypeReport == 0)
                    {
                        if (!dtTypeNull.ContainsKey(dt.First().Key))
                        {
                            dtTypeNull.Add(dt.First().Key, dt.First().Value);
                        }
                    }
                    else
                    {
                        if (!listDtOne.ContainsKey(dt.Last().Key))
                        {
                            Dictionary <string, int> lastDt = new Dictionary <string, int>();
                            lastDt.Add(str, n);
                            listDtOne.Add(dt.Last().Key, lastDt);
                        }
                        else
                        {
                            listDtOne[dt.Last().Key].Add(str, n);
                        }
                    }
                    n = 1;
                }


                Excel.Application application = new Excel.Application();
                Object            missing     = Type.Missing;
                //добавили книгу
                application.Workbooks.Add(missing);
                Excel.Worksheet sheet = (Excel.Worksheet)application.ActiveSheet;
                if (report.TypeReport == 0)
                {
                    if (dtTypeNull.Count != 0)
                    {
                        typeNull(sheet, dtTypeNull);
                    }
                    else
                    {
                        addExcelCell(sheet, 3, 1, "Первичная входимость", "Times New Roman", 16, true);
                        if (report.Number.EndsWith("0"))
                        {
                            addExcelCell(sheet, 6, 1, "Данная сборка не входит ни в одно изделие!", "Times New Roman", 14, true);
                        }
                        else
                        {
                            addExcelCell(sheet, 6, 1, "Данная деталь не входит ни в одно изделие!", "Times New Roman", 14, true);
                        }
                    }
                }
                else if (report.TypeReport == 1)
                {
                    if (listDtOne.Count != 0)
                    {
                        typeOne(sheet, listDtOne);
                    }
                    else
                    {
                        addExcelCell(sheet, 3, 1, "Полная входимость без цепочки", "Times New Roman", 16, true);
                        if (report.Number.EndsWith("0"))
                        {
                            addExcelCell(sheet, 6, 1, "Данная сборка не входит ни в одно изделие!", "Times New Roman", 14, true);
                        }
                        else
                        {
                            addExcelCell(sheet, 6, 1, "Данная деталь не входит ни в одно изделие!", "Times New Roman", 14, true);
                        }
                    }
                }
                else
                {
                    if (listDtOne.Count != 0)
                    {
                        typeTwo(sheet, listDtOne);
                    }
                    else
                    {
                        addExcelCell(sheet, 3, 1, "Полная входимость с цепочкой", "Times New Roman", 16, true);
                        if (report.Number.EndsWith("0"))
                        {
                            addExcelCell(sheet, 6, 1, "Данная сборка не входит ни в одно изделие!", "Times New Roman", 14, true);
                        }
                        else
                        {
                            addExcelCell(sheet, 6, 1, "Данная деталь не входит ни в одно изделие!", "Times New Roman", 14, true);
                        }
                    }
                }
                addExcelCell(sheet, 1, 1, System.DateTime.Now.ToString(), "Times New Roman", 12, true);
                addExcelCell(sheet, 4, 1, report.Number + " " + name, "Times New Roman", 16, true);
                (sheet.get_Range("A3", "D3") as Excel.Range).Borders[Excel.XlBordersIndex.xlEdgeBottom].LineStyle = Excel.XlLineStyle.xlDouble;
                application.Visible = true;
            }
        }