Esempio n. 1
0
        public static FullApplicationRow ConvertRowInfoToFullApplicationRow(GridViewRowInfo row)
        {
            FullApplicationRow res = new FullApplicationRow();

            res.ProductCode = (long)row.Cells[0].Value;
            res.PackageDetails = (long)row.Cells[1].Value;
            res.Count = Convert.ToInt32(row.Cells[2].Value);

            return res;
        }
Esempio n. 2
0
 /// <summary>
 /// Создание таблицы "Полная применяемость" и ее заполнение 
 /// </summary>
 /// <param name="data">Данные, для вставки в таблицу</param>
 public static void CreateAndFillFullApplicationTable(FullApplicationRow[] data)
 {
     CreateTableFullApplication();
     FillFullApplicationTable(data);
     IsItFATable = true;
 }
Esempio n. 3
0
 public static DatabaseLib.ParametersCollection ConvertFullApplicationRowToParameters(FullApplicationRow row)
 {
     DatabaseLib.ParametersCollection par = new DatabaseLib.ParametersCollection();
     par.Add("ProductCode", row.ProductCode, DbType.UInt64);
     par.Add("PackageDetails", row.PackageDetails, DbType.UInt64);
     par.Add("Count", row.Count, DbType.UInt32);
     return par;
 }
Esempio n. 4
0
 /// <summary>
 /// Заполнение данными таблицы "Полная применяемость"
 /// </summary>
 /// <param name="data">Данные, для вставки в таблицу</param>
 public static void FillFullApplicationTable(FullApplicationRow[] data)
 {
     DatabaseLib.ParametersCollection[] Pars = new DatabaseLib.ParametersCollection[data.Length];
     for (int i = 0; i < data.Length; i++)
     {
         Pars[i] = Converter.ConvertFullApplicationRowToParameters(data[i]);
     }
     dbf.InsertMany("FullApplication", Pars);
 }
Esempio n. 5
0
 /// <summary>
 /// Подсчет количества деталей в изделии
 /// </summary>
 /// <returns>Возвращает сассив с данными об изделиях и их составе</returns>
 public FullApplicationRow[] CalculateFullApplication()
 {
     FullApplicationRow[] Data = new FullApplicationRow[0];
     int i;
     for (i = 0; i < Root.Length; i++) // просматриваем по деревьям
     {
         GoIntoTree(Root[i], ref Data, 1); // подсчитаем для одного изделия
     }
     IsCalculated = true;
     return Data;
 }
Esempio n. 6
0
        /// <summary>
        /// Проверка на существование в массиве сведений о текущей детали
        /// </summary>
        /// <param name="node">Текущий узел (описывает данные текущей детали)</param>
        /// <param name="Data">Массив со сведениями о деталях</param>
        /// <returns>Возвращает True, если деталь уже имеет описание в массиве, в противном случае False</returns>
        private bool IsItDetail(TreeNode node, FullApplicationRow[] Data)
        {
            bool flag = false;

            for (int i = 0; i < Data.Length; i++)
            {
                if (node.PRootCode == Data[i].ProductCode && node.PProductCodeWhat == Data[i].PackageDetails)
                {
                    flag = true;
                    break;
                }
            }

            return flag;
        }
Esempio n. 7
0
 /// <summary>
 /// Вставка данных о детали в массив данных для таблицы ПП
 /// </summary>
 /// <param name="node">Вставляемый узел (данные для вставки)</param>
 /// <param name="Data">Собственно сам массив с данными</param>
 /// <param name="count">Счетчик единиц (накапливаемый)</param>
 private void InsertNodeDataToFAData(TreeNode node, ref FullApplicationRow[] Data, int count)
 {
     // проверим, есть ли уже в массиве запись для данной детали
     if (!IsItDetail(node, Data))
     {
         Array.Resize(ref Data, Data.Length + 1);
         Data[Data.Length - 1].ProductCode = node.PRootCode;
         Data[Data.Length - 1].PackageDetails = node.PProductCodeWhat;
         Data[Data.Length - 1].Count = node.PCount * count;
     }
     else // если есть уже запись для данной детали
     {
         for (int i = 0; i < Data.Length; i++)
             if (node.PRootCode == Data[i].ProductCode && node.PProductCodeWhat == Data[i].PackageDetails)
             {
                 Data[i].Count += node.PCount * count; // увеличим количество существующих деталей
                 break;
             }
     }
 }
Esempio n. 8
0
 /// <summary>
 /// Рекурсивный метод обхода дерева для подсчета состава изделия
 /// </summary>
 /// <param name="root">Корневой узел для обхода</param>
 /// <param name="Data">Массив сведений о составе изделия</param>
 /// <param name="count">Счетчик единиц (накапливаемый)</param>
 private void GoIntoTree(TreeNode root, ref FullApplicationRow[] Data, int count)
 {
     // просматриваем дочерние узлы текушего узла root
     for (int i = 0; i < root.GetNodesCount(); i++)
     {
         // проверям, деталь ли это
         if (root[i].GetNodesCount() == 0)
         {
             InsertNodeDataToFAData(root[i], ref Data, count);
         }
         else // если не деталь смотрим для текущего узла
         {
             GoIntoTree(root[i], ref Data, root[i].PCount * count);
         }
     }
 }