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(); }
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); } }
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); } }
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); } }