Beispiel #1
0
        public static string GenerateForOrder(Guid order_id, Guid product_id, DateTime gen_date)
        {
            using (ConfigurationTreeProvider provider = new ConfigurationTreeProvider())
            {
                // получаем разузлованный состав для данной главной детали
                DataSet tree = provider.GetList(FormGridView.ConfigurationTree, product_id, UserID, new List<SearchExpression>());

                // удаляем все существующие даты для данного изделия и данного приказа
                var subprod_dictNomenIDs = new List<Guid>();
                foreach (DataRow row in tree.Tables[0].Rows)
                {
                    subprod_dictNomenIDs.Add((Guid)row["_dictNomenID"]);
                }
                using (ProductProvider pprovider = new ProductProvider())
                {
                    subprod_dictNomenIDs.Add(pprovider.GetProduct(product_id)._dictNomenID.Value);
                }

                var datesForDelete = provider.TechnDates.Where(
                    it => subprod_dictNomenIDs.Contains(it._dictNomenID)
                    && it.OrderArticleID == order_id);

                provider.TechnDates.DeleteAllOnSubmit(datesForDelete);
                provider.SubmitChanges();

                // создаём новые записи для данного приказа
                foreach (Guid subprod_dictNomenID in subprod_dictNomenIDs.Distinct())
                {
                    provider.TechnDates.InsertOnSubmit(new TechnDate()
                    {
                        OrderArticleID = order_id,
                        _dictNomenID = subprod_dictNomenID,
                        gen_date = gen_date
                    });
                }

                provider.SubmitChanges();
            }
            return new PostResult("ok", 0).ToString();
        }
Beispiel #2
0
        public static string GetTechConsist(Guid prod_id, Guid order_id)
        {
            using (ConfigurationTreeProvider provider = new ConfigurationTreeProvider())
            {
                // главный продукт (чья дата берётся как основная в случае по приказу)
                Product product = null;
                using (ProductProvider productProvider = new ProductProvider())
                {
                    product = productProvider.GetProduct(prod_id);
                }

                // для стандартных продуктов всегда берётся карта актуальная на текущий момент
                // для приказного продукта
                // * если карточка приказная - на текущий момент
                // * если карточка стандартная - на момент создания продукта
                //   !! в новой редакции, берётся не дата создания продукта, а дата из
                //   колонки [TechnDates].[gen_date]
                DateTime currentDT = DateTime.Now;
                DateTime actualDT = Guid.Empty.Equals(order_id) ? currentDT : product.CreatedDate;

                // Получаем разузлованный состав
                List<transfer> list = new List<transfer>();
                DataSet data = provider.GetListWithKmh(prod_id, order_id, actualDT, currentDT);

                // добавляем самую верхнюю деталь
                /*transfer tran = new transfer();
                tran.prod_id = product.ID;
                tran.prod_pn1 = product._dictNomen.pn1;
                tran.prod_pn2 = product._dictNomen.pn2;

                #region attachKMH
                // получаем приказную актуальную карту
                Specification_1 order_kmh = null;
                try
                {
                    if (!Guid.Empty.Equals(order_id))
                    {
                        order_kmh = (from kmh in provider.Specification_1s
                                 where kmh.OrderArticleID == order_id
                                 && kmh._Product_ID == product._dictNomenID
                                 && kmh.StartDT <= currentDT
                                 && kmh.FinishDT > currentDT
                                 select kmh).Single();
                    }
                }
                catch {}

                // получеам стандартную актуальную карту
                Specification_1 stand_kmh = null;
                try
                {
                    stand_kmh = (from kmh in provider.Specification_1s
                                 where kmh.OrderArticleID == null
                                 && kmh._Product_ID == product._dictNomenID
                                 && kmh.StartDT <= actualDT
                                 && kmh.FinishDT > actualDT
                                 select kmh).Single();
                }
                catch {}

                if (!Guid.Empty.Equals(order_id) && order_kmh != null)
                {
                    FillKmh(order_kmh, tran, currentDT);
                }
                else if (stand_kmh != null)
                {
                    FillKmh(stand_kmh, tran, currentDT);
                }
                #endregion*/

                // получаем маршрут по применяемости
                /*try
                {
                    var route = (from r in provider.Specification_3s
                                 where r._Material_ID == product._dictNomenID
                                 && r._Product_ID == Guid.Empty
                                 && r.StartDT <= currentDT
                                 && r.FinishDT > currentDT
                                 select r).Single();
                    tran.route = route.Route;
                    tran.route_changed = true;
                } catch { }

                list.Add(tran);*/

                try
                {
                    #region getch result of query
                    foreach (DataRow row in data.Tables[0].Rows)
                    {
                        transfer tran = new transfer();

                        tran.unit_id = row.Field<Guid>("unitID");
                        tran.unit_pn1 = row.Field<string>("unitPn1");
                        tran.unit_pn2 = row.Field<string>("unitPn2");

                        tran.prod_id = row.Field<Guid>("prodID");
                        tran.prod_pn1 = row.Field<string>("prodPn1");
                        tran.prod_pn2 = row.Field<string>("prodPn2");

                        tran.level = row.Field<int>("Level");
                        tran.count = row.Field<decimal>("Quantity");
                        tran.group_exchange = row.Field<int?>("GroupToChange");
                        tran.number_exchange = row.Field<int?>("GroupNumber");

                        // дата добавления в состав должна быть только у приказных составов
                        tran.added_date = row.Field<DateTime?>("gen_date");

                        /*#region attachKMH
                        // получаем приказную актуальную карту
                        order_kmh = null;
                        try
                        {
                            if (!Guid.Empty.Equals(order_id))
                            {
                                order_kmh = (from kmh in provider.Specifications
                                         where kmh.tn == 1
                                         && kmh.OrderArticleID == order_id
                                         && kmh._Product_ID == row.Field<Guid>("prodNomenID")
                                         && kmh.StartDT < currentDT
                                         && kmh.FinishDT > currentDT
                                         select kmh).Single();
                            }
                        }
                        catch {}

                        // получеам стандартную актуальную карту
                        stand_kmh = null;
                        try
                        {
                            stand_kmh = (from kmh in provider.Specifications
                                         where kmh.tn == 1
                                         && kmh.OrderArticleID == null
                                         && kmh._Product_ID == row.Field<Guid>("prodNomenID")
                                         && kmh.StartDT < actualDT
                                         && kmh.FinishDT > actualDT
                                         select kmh).Single();
                        }
                        catch {}

                        if (!Guid.Empty.Equals(order_id) && order_kmh != null)
                        {
                            FillKmh(order_kmh, tran, currentDT);
                        }
                        else if (stand_kmh != null)
                        {
                            FillKmh(stand_kmh, tran, currentDT);
                        }
                        #endregion*/
                        FillKmhByRow(provider, row, tran, currentDT);

                        list.Add(tran);
                    }
                    #endregion
                }
                catch (Exception e)
                {
                    string tmpMessage = e.Message;
                }

                Dictionary<Guid,string> PVDs = provider._dictPVDs.AsEnumerable().ToDictionary(i => i.ID, i => i.pvdn);
                Dictionary<Guid, string> UMs = provider._dictUMs.AsEnumerable().ToDictionary(i => i.ID, i => i.umn1);
                Dictionary<Guid, string> SFs = provider._dictSFs.AsEnumerable().ToDictionary(i => i.ID, i => i.sfn);

                foreach (var item in list)
                {
                    try
                    {

                        item.pvd = item.pvd_id.HasValue ? PVDs[item.pvd_id.Value] : "";
                        item.um = item.um_id.HasValue ? UMs[item.um_id.Value] : "";
                        item.sf = item.sf_id.HasValue ? SFs[item.sf_id.Value] : "";
                    }
                    catch { };

                }

                JavaScriptSerializer serializer = new JavaScriptSerializer();
                // some fix, because setting in web.config not always working as good
                serializer.MaxJsonLength = 50000000;
                return serializer.Serialize(list);
            }
        }
Beispiel #3
0
        private void BindGrid()
        {
            DataSet data = null;
            ConfigurationTreeProvider provider = null;
            List<GridColumn> columns = new List<GridColumn>();
            try
            {
                provider = new ConfigurationTreeProvider();
                if (provider != null)
                {
                    Aspect.Domain.Product prod = provider.GetProduct(this.ProductID);
                    if (prod == null) return;
                    this.Title = HeaderLiteral.Text = string.Format(HeaderLiteral.Text, prod.PublicName, prod.Version == null ? string.Empty : prod.Version.ToString());
                    HeaderDateLiteral.Text = string.Format(HeaderDateLiteral.Text, DateTime.Now.ToShortDateString(), DateTime.Now.ToLongTimeString());
                    //Response.Write(provider.getQuery(new Guid(node.Value), this.User.ID, this.OrderExpression, this.SearchConditions));
                    //return;
                    data = provider.GetList(this.RequestClassificationTreeID, this.ProductID, this.User.ID, this.SearchConditions);
                    if (ShowSelected && !String.IsNullOrEmpty(SelectedProductsHidden.Value))
                    {
                        string[] ids = SelectedProductsHidden.Value.Split(',').Select(s => string.Format("CONVERT('{0}','System.Guid')", s)).ToArray();
                        data.Tables[0].DefaultView.RowFilter = string.Format("ID in ({0})", string.Join(",", ids));
                    }
                    columns = provider.GetGridColumns(this.User.ID, this.RequestClassificationTreeID, FieldPlaceHolder.Grid);
                }

            }
            finally
            {
                if (provider != null) provider.Dispose();
            }
            if (data != null && data.Tables.Count > 0)
            {
                ProductGrid.DataSource = data.Tables[0].DefaultView;
                ProductGrid.DataBind();

                if (data.Tables[0].Rows.Count > 0)
                {
                    string pid = data.Tables[0].Rows[0][Common.IDColumnTitle].ToString();
                    string function = string.Format("<script language=JavaScript>onGridViewRowSelectedCallback('{0}','{1}', document.getElementById('{2}'));</script>", pid, this.RequestClassificationTreeID, ProductGrid.Rows[0].ClientID);
                    this.ClientScript.RegisterStartupScript(this.GetType(), "mainview", function);
                }

                this.AppendGridHeader(columns);
            }
        }
Beispiel #4
0
        private void BindGrid()
        {
            DataSet data = null;
            ConfigurationTreeProvider provider = null;
            List<GridColumn> columns = new List<GridColumn>();
            try
            {
                provider = new ConfigurationTreeProvider();
                if (provider != null)
                {
                    Aspect.Domain.Product prod = provider.GetProduct(this.ProductID);
                    if (prod == null) return;
                    this.Title = HeaderLiteral.Text = string.Format(HeaderLiteral.Text, prod.PublicName, prod.Version == null ? string.Empty : prod.Version.ToString());
                    HeaderDateLiteral.Text = string.Format(HeaderDateLiteral.Text, DateTime.Now.ToShortDateString(), DateTime.Now.ToLongTimeString());
                    //Response.Write(provider.getQuery(new Guid(node.Value), this.User.ID, this.OrderExpression, this.SearchConditions));
                    //return;
                    data = provider.GetList(this.RequestClassificationTreeID, this.ProductID, this.User.ID, this.SearchConditions);
                    if (ShowSelected && !String.IsNullOrEmpty(SelectedProductsHidden.Value))
                    {
                        string[] ids = SelectedProductsHidden.Value.Split(',').Select(s => string.Format("CONVERT('{0}','System.Guid')", s)).ToArray();
                        data.Tables[0].DefaultView.RowFilter = string.Format("ID in ({0})", string.Join(",", ids));
                    }
                    columns = provider.GetGridColumns(this.User.ID, this.RequestClassificationTreeID, FieldPlaceHolder.Grid);
                }

            }
            finally
            {
                if (provider != null) provider.Dispose();
            }
            if (data != null && data.Tables.Count > 0)
            {
                //ProductGrid.DataSource = data.Tables[0].DefaultView;
                //ProductGrid.DataBind();

                Stack<Ext.Net.TreeNodeCollection> stackRoots = new Stack<Ext.Net.TreeNodeCollection>();
                Ext.Net.TreeNodeCollection currentRoot = (ProductTree.Root.First() as Ext.Net.TreeNode).Nodes;
                int? prevLevel = null, curLevel = null;

                foreach (DataRow row in data.Tables[0].Rows)
                {
                    curLevel = Convert.ToInt32(row["Level"]);
                    if (!prevLevel.HasValue) prevLevel = curLevel;

                    Ext.Net.TreeNode node = new Ext.Net.TreeNode();
                    node.Checked = Ext.Net.ThreeStateBool.False;
                    foreach(GridColumn column in columns)
                    {
                        node.CustomAttributes.Add(new Ext.Net.ConfigItem(column.DataItem.Replace('.', '_'), row[column.DataItem].ToString(), Ext.Net.ParameterMode.Value));
                    }
                    node.CustomAttributes.Add(new Ext.Net.ConfigItem("ProductID", row["ID"].ToString(), Ext.Net.ParameterMode.Value));
                    if (curLevel > prevLevel)
                    {
                        stackRoots.Push(currentRoot);
                        currentRoot = (currentRoot.Last() as Ext.Net.TreeNode).Nodes;
                    }
                    if (curLevel < prevLevel)
                    {
                        currentRoot = stackRoots.Pop();
                    }
                    currentRoot.Add(node);
                    prevLevel = curLevel;
                }

                if (data.Tables[0].Rows.Count > 0)
                {
                    string function = String.Format("Ext.namespace('App'); App.cid = '{0}'; ", this.RequestClassificationTreeID);
                    ResourceManager1.AddAfterClientInitScript(function);
                }

                this.AppendGridHeader(columns);
            }
        }